def copaint_config_library(timesteps):
    """CoPaint inpainting configurations"""
    # Friendly names map:
    #  - celebahq_try3   -> short-jump (TT)     : jump_length=5, use_timetravel=True,  num_iteration_optimize_xt=5
    #  - celebahq_noTTJ5 -> short-jump (no TT)  : jump_length=5, use_timetravel=False, num_iteration_optimize_xt=2
    #  - celebahq        -> long-jump (TT)      : jump_length=10, use_timetravel=True, num_iteration_optimize_xt=2
    config_lib = {
        "celebahq_try1": config.Config(default_config_dict={
            "respace_interpolate": False,
            "ddim": {
                "ddim_sigma": 0.0,
                "schedule_params": {
                    "ddpm_num_steps": timesteps,
                    "jump_length": 20,  # 10,
                    "jump_n_sample": 4,  # 2,
                    "num_inference_steps": timesteps,
                    "schedule_type": "linear",
                    "time_travel_filter_type": "none",
                    "use_timetravel": True
                }
            },
            "optimize_xt": {
                "coef_xt_reg": 0.00001,  # 0.0001,
                "coef_xt_reg_decay": 1.05,  # 1.01,
                "filter_xT": False,
                "lr_xt": 0.02,
                "lr_xt_decay": 1.012,
                "mid_interval_num": 1,
                "num_iteration_optimize_xt": 5,
                "optimize_before_time_travel": True,
                "optimize_xt": True,
                "use_adaptive_lr_xt": True,
                "use_smart_lr_xt_decay": True
            },
            "debug": False
        }, use_argparse=False),
        "celebahq_noTTJ5": config.Config(default_config_dict={ # short-jump (no TT)
            "respace_interpolate": False,
            "ddim": {
                "ddim_sigma": 0.0,
                "schedule_params": {
                    "ddpm_num_steps": timesteps,
                    "jump_length": 5, # was 10 before 2025-07
                    "jump_n_sample": 2,
                    "num_inference_steps": timesteps,
                    "schedule_type": "linear",
                    "time_travel_filter_type": "none",
                    "use_timetravel": False,
                }
            },
            "optimize_xt": {
                "coef_xt_reg": 0.0001,
                "coef_xt_reg_decay": 1.01,
                "filter_xT": False,
                "lr_xt": 0.02,
                "lr_xt_decay": 1.012,
                "mid_interval_num": 1,
                "num_iteration_optimize_xt": 2,
                "optimize_before_time_travel": True,
                "optimize_xt": True,
                "use_adaptive_lr_xt": True,
                "use_smart_lr_xt_decay": True
            },
            "debug": False
        }, use_argparse=False),
        "celebahq_noTT2": config.Config(default_config_dict={
            "respace_interpolate": False,
            "ddim": {
                "ddim_sigma": 0.0,
                "schedule_params": {
                    "ddpm_num_steps": timesteps,
                    "jump_length": 10,
                    "jump_n_sample": 2,
                    "num_inference_steps": timesteps,
                    "schedule_type": "linear",
                    "time_travel_filter_type": "none",
                    "use_timetravel": False,
                }
            },
            "optimize_xt": {
                "coef_xt_reg": 0.0001,
                "coef_xt_reg_decay": 1.01,
                "filter_xT": False,
                "lr_xt": 0.02,
                "lr_xt_decay": 1.012,
                "mid_interval_num": 1,
                "num_iteration_optimize_xt": 5,
                "optimize_before_time_travel": True,
                "optimize_xt": True,
                "use_adaptive_lr_xt": True,
                "use_smart_lr_xt_decay": True
            },
            "debug": False
        }, use_argparse=False),
        "celebahq_try3": config.Config(default_config_dict={ # short-jump (TT)
            "respace_interpolate": False,
            "ddim": {
                "ddim_sigma": 0.0,
                "schedule_params": {
                    "ddpm_num_steps": timesteps,
                    "jump_length": 5,  # 10
                    "jump_n_sample": 2,
                    "num_inference_steps": timesteps,
                    "schedule_type": "linear",
                    "time_travel_filter_type": "none",
                    "use_timetravel": True
                }
            },
            "optimize_xt": {
                "coef_xt_reg": 0.0001,
                "coef_xt_reg_decay": 1.01,
                "filter_xT": False,
                "lr_xt": 0.02,
                "lr_xt_decay": 1.012,
                "mid_interval_num": 1,
                "num_iteration_optimize_xt": 5,  # 2,
                "optimize_before_time_travel": True,
                "optimize_xt": True,
                "use_adaptive_lr_xt": True,
                "use_smart_lr_xt_decay": True
            },
            "debug": False
        }, use_argparse=False),
        "celebahq": config.Config(default_config_dict={  # long-jump (TT)
            "respace_interpolate": False,
            "ddim": {
                "ddim_sigma": 0.0,
                "schedule_params": {
                    "ddpm_num_steps": timesteps,
                    "jump_length": 10,
                    "jump_n_sample": 2,
                    "num_inference_steps": timesteps,
                    "schedule_type": "linear",
                    "time_travel_filter_type": "none",
                    "use_timetravel": True
                }
            },
            "optimize_xt": {
                "coef_xt_reg": 0.0001,
                "coef_xt_reg_decay": 1.01,
                "filter_xT": False,
                "lr_xt": 0.02,
                "lr_xt_decay": 1.012,
                "mid_interval_num": 1,
                "num_iteration_optimize_xt": 2,
                "optimize_before_time_travel": True,
                "optimize_xt": True,
                "use_adaptive_lr_xt": True,
                "use_smart_lr_xt_decay": True
            },
            "debug": False
        }, use_argparse=False),
        # "imagenet": config.Config(default_config_dict={
        #     "respace_interpolate": False,
        #     "ddim": {
        #         "ddim_sigma": 0.0,
        #         "schedule_params": {
        #             "ddpm_num_steps": timesteps,
        #             "jump_length": 10,
        #             "jump_n_sample": 2,
        #             "num_inference_steps": 200,
        #             "schedule_type": "linear",
        #             "time_travel_filter_type": "none",
        #             "use_timetravel": True
        #         }
        #     },
        #     "optimize_xt": {
        #         "coef_xt_reg": 0.01,
        #         "coef_xt_reg_decay": 1.0,
        #         "filter_xT": False,
        #         "lr_xt": 0.02,
        #         "lr_xt_decay": 1.012,
        #         "mid_interval_num": 1,
        #         "num_iteration_optimize_xt": 2,
        #         "optimize_before_time_travel": True,
        #         "optimize_xt": True,
        #         "use_adaptive_lr_xt": True,
        #         "use_smart_lr_xt_decay": True
        #     },
        #     "debug": False
        # }, use_argparse=False),
    }
    return config_lib