# res4lyf

from .abnorsett_scheduler import ABNorsettScheduler
from .bong_tangent_scheduler import BongTangentScheduler
from .common_sigma_scheduler import CommonSigmaScheduler
from .deis_scheduler_alt import RESDEISMultistepScheduler
from .etdrk_scheduler import ETDRKScheduler
from .gauss_legendre_scheduler import GaussLegendreScheduler
from .langevin_dynamics_scheduler import LangevinDynamicsScheduler
from .lawson_scheduler import LawsonScheduler
from .linear_rk_scheduler import LinearRKScheduler
from .lobatto_scheduler import LobattoScheduler
from .pec_scheduler import PECScheduler
from .radau_iia_scheduler import RadauIIAScheduler
from .res_multistep_scheduler import RESMultistepScheduler
from .res_multistep_sde_scheduler import RESMultistepSDEScheduler
from .res_singlestep_scheduler import RESSinglestepScheduler
from .res_singlestep_sde_scheduler import RESSinglestepSDEScheduler
from .res_unified_scheduler import RESUnifiedScheduler
from .riemannian_flow_scheduler import RiemannianFlowScheduler
from .rungekutta_44s_scheduler import RungeKutta44Scheduler
from .rungekutta_57s_scheduler import RungeKutta57Scheduler
from .rungekutta_67s_scheduler import RungeKutta67Scheduler
from .simple_exponential_scheduler import SimpleExponentialScheduler
from .specialized_rk_scheduler import SpecializedRKScheduler

from .variants import (
    ABNorsett2MScheduler,
    ABNorsett3MScheduler,
    ABNorsett4MScheduler,
    SigmaArcsineScheduler,
    DEIS1MultistepScheduler,
    DEIS2MScheduler,
    DEIS2MultistepScheduler,
    DEIS3MScheduler,
    DEIS3MultistepScheduler,
    DEISUnified1SScheduler,
    DEISUnified2MScheduler,
    DEISUnified3MScheduler,
    SigmaEasingScheduler,
    ETDRK2Scheduler,
    ETDRK3AScheduler,
    ETDRK3BScheduler,
    ETDRK4AltScheduler,
    ETDRK4Scheduler,
    FlowEuclideanScheduler,
    FlowHyperbolicScheduler,
    Lawson2AScheduler,
    Lawson2BScheduler,
    Lawson4Scheduler,
    LinearRK2Scheduler,
    LinearRK3Scheduler,
    LinearRK4Scheduler,
    LinearRKMidpointScheduler,
    LinearRKRalsstonScheduler,
    Lobatto2Scheduler,
    Lobatto3Scheduler,
    Lobatto4Scheduler,
    FlowLorentzianScheduler,
    PEC2H2SScheduler,
    PEC2H3SScheduler,
    RadauIIA2Scheduler,
    RadauIIA3Scheduler,
    RES2MScheduler,
    RES2MSDEScheduler,
    RES2SScheduler,
    RES2SSDEScheduler,
    RES3MScheduler,
    RES3MSDEScheduler,
    RES3SScheduler,
    RES3SSDEScheduler,
    RES5SScheduler,
    RES5SSDEScheduler,
    RES6SScheduler,
    RES6SSDEScheduler,
    RESUnified2MScheduler,
    RESUnified2SScheduler,
    RESUnified3MScheduler,
    RESUnified3SScheduler,
    RESUnified5SScheduler,
    RESUnified6SScheduler,
    SigmaSigmoidScheduler,
    SigmaSineScheduler,
    SigmaSmoothScheduler,
    FlowSphericalScheduler,
    GaussLegendre2SScheduler,
    GaussLegendre3SScheduler,
    GaussLegendre4SScheduler,
)

__all__ = [ # noqa: RUF022
    # Base
    "RESUnifiedScheduler",
    "RESMultistepScheduler",
    "RESMultistepSDEScheduler",
    "RESSinglestepScheduler",
    "RESSinglestepSDEScheduler",
    "RESDEISMultistepScheduler",
    "ETDRKScheduler",
    "LawsonScheduler",
    "ABNorsettScheduler",
    "PECScheduler",
    "BongTangentScheduler",
    "RiemannianFlowScheduler",
    "LangevinDynamicsScheduler",
    "CommonSigmaScheduler",
    "SimpleExponentialScheduler",
    "LinearRKScheduler",
    "LobattoScheduler",
    "RadauIIAScheduler",
    "GaussLegendreScheduler",
    "SpecializedRKScheduler",
    # Variants
    "RES2MScheduler",
    "RES3MScheduler",
    "DEIS2MScheduler",
    "DEIS3MScheduler",
    "RES2MSDEScheduler",
    "RES3MSDEScheduler",
    "RES2SScheduler",
    "RES3SScheduler",
    "RES5SScheduler",
    "RES6SScheduler",
    "RES2SSDEScheduler",
    "RES3SSDEScheduler",
    "RES5SSDEScheduler",
    "RES6SSDEScheduler",
    "ETDRK2Scheduler",
    "ETDRK3AScheduler",
    "ETDRK3BScheduler",
    "ETDRK4Scheduler",
    "ETDRK4AltScheduler",
    "Lawson2AScheduler",
    "Lawson2BScheduler",
    "Lawson4Scheduler",
    "ABNorsett2MScheduler",
    "ABNorsett3MScheduler",
    "ABNorsett4MScheduler",
    "PEC2H2SScheduler",
    "PEC2H3SScheduler",
    "FlowEuclideanScheduler",
    "FlowHyperbolicScheduler",
    "FlowSphericalScheduler",
    "FlowLorentzianScheduler",
    "SigmaSigmoidScheduler",
    "SigmaSineScheduler",
    "SigmaEasingScheduler",
    "SigmaArcsineScheduler",
    "SigmaSmoothScheduler",
    "DEISUnified1SScheduler",
    "DEISUnified2MScheduler",
    "DEISUnified3MScheduler",
    "RESUnified2MScheduler",
    "RESUnified3MScheduler",
    "RESUnified2SScheduler",
    "RESUnified3SScheduler",
    "RESUnified5SScheduler",
    "RESUnified6SScheduler",
    "DEIS1MultistepScheduler",
    "DEIS2MultistepScheduler",
    "DEIS3MultistepScheduler",
    "LinearRK2Scheduler",
    "LinearRK3Scheduler",
    "LinearRK4Scheduler",
    "LinearRKRalsstonScheduler",
    "LinearRKMidpointScheduler",
    "Lobatto2Scheduler",
    "Lobatto3Scheduler",
    "Lobatto4Scheduler",
    "RadauIIA2Scheduler",
    "RadauIIA3Scheduler",
    "GaussLegendre2SScheduler",
    "GaussLegendre3SScheduler",
    "GaussLegendre4SScheduler",
    "RungeKutta44Scheduler",
    "RungeKutta57Scheduler",
    "RungeKutta67Scheduler",
]

BASE = [
    ("RES Unified", RESUnifiedScheduler),
    ("RES Multistep", RESMultistepScheduler),
    ("RES Multistep SDE", RESMultistepSDEScheduler),
    ("RES Singlestep", RESSinglestepScheduler),
    ("RES Singlestep SDE", RESSinglestepSDEScheduler),
    ("DEIS Multistep", RESDEISMultistepScheduler),
    ("ETDRK", ETDRKScheduler),
    ("Lawson", LawsonScheduler),
    ("ABNorsett", ABNorsettScheduler),
    ("PEC", PECScheduler),
    ("Common Sigma", CommonSigmaScheduler),
    ("Riemannian Flow", RiemannianFlowScheduler),
    ("Specialized RK", SpecializedRKScheduler),
]

SIMPLE = [
    ("Bong Tangent", BongTangentScheduler),
    ("Langevin Dynamics", LangevinDynamicsScheduler),
    ("Simple Exponential", SimpleExponentialScheduler),
]

VARIANTS = [
    ("RES 2M", RES2MScheduler),
    ("RES 3M", RES3MScheduler),
    ("DEIS 2M", DEIS2MScheduler),
    ("DEIS 3M", DEIS3MScheduler),
    ("RES 2M SDE", RES2MSDEScheduler),
    ("RES 3M SDE", RES3MSDEScheduler),
    ("RES 2S", RES2SScheduler),
    ("RES 3S", RES3SScheduler),
    ("RES 5S", RES5SScheduler),
    ("RES 6S", RES6SScheduler),
    ("RES 2S SDE", RES2SSDEScheduler),
    ("RES 3S SDE", RES3SSDEScheduler),
    ("RES 5S SDE", RES5SSDEScheduler),
    ("RES 6S SDE", RES6SSDEScheduler),
    ("ETDRK 2", ETDRK2Scheduler),
    ("ETDRK 3A", ETDRK3AScheduler),
    ("ETDRK 3B", ETDRK3BScheduler),
    ("ETDRK 4", ETDRK4Scheduler),
    ("ETDRK 4 Alt", ETDRK4AltScheduler),
    ("Lawson 2A", Lawson2AScheduler),
    ("Lawson 2B", Lawson2BScheduler),
    ("Lawson 4", Lawson4Scheduler),
    ("ABNorsett 2M", ABNorsett2MScheduler),
    ("ABNorsett 3M", ABNorsett3MScheduler),
    ("ABNorsett 4M", ABNorsett4MScheduler),
    ("PEC 2H2S", PEC2H2SScheduler),
    ("PEC 2H3S", PEC2H3SScheduler),
    ("Euclidean Flow", FlowEuclideanScheduler),
    ("Hyperbolic Flow", FlowHyperbolicScheduler),
    ("Spherical Flow", FlowSphericalScheduler),
    ("Lorentzian Flow", FlowLorentzianScheduler),
    ("Sigmoid Sigma", SigmaSigmoidScheduler),
    ("Sine Sigma", SigmaSineScheduler),
    ("Easing Sigma", SigmaEasingScheduler),
    ("Arcsine Sigma", SigmaArcsineScheduler),
    ("Smoothstep Sigma", SigmaSmoothScheduler),
    ("DEIS Unified 1", DEISUnified1SScheduler),
    ("DEIS Unified 2", DEISUnified2MScheduler),
    ("DEIS Unified 3", DEISUnified3MScheduler),
    ("RES Unified 2M", RESUnified2MScheduler),
    ("RES Unified 3M", RESUnified3MScheduler),
    ("RES Unified 2S", RESUnified2SScheduler),
    ("RES Unified 3S", RESUnified3SScheduler),
    ("RES Unified 5S", RESUnified5SScheduler),
    ("RES Unified 6S", RESUnified6SScheduler),
    ("DEIS Multistep 1", DEIS1MultistepScheduler),
    ("DEIS Multistep 2", DEIS2MultistepScheduler),
    ("DEIS Multistep 3", DEIS3MultistepScheduler),
    ("Linear-RK 2", LinearRK2Scheduler),
    ("Linear-RK 3", LinearRK3Scheduler),
    ("Linear-RK 4", LinearRK4Scheduler),
    ("Linear-RK Ralston", LinearRKRalsstonScheduler),
    ("Linear-RK Midpoint", LinearRKMidpointScheduler),
    ("Lobatto 2", Lobatto2Scheduler),
    ("Lobatto 3", Lobatto3Scheduler),
    ("Lobatto 4", Lobatto4Scheduler),
    ("Radau-IIA 2", RadauIIA2Scheduler),
    ("Radau-IIA 3", RadauIIA3Scheduler),
    ("Gauss-Legendre 2S", GaussLegendre2SScheduler),
    ("Gauss-Legendre 3S", GaussLegendre3SScheduler),
    ("Gauss-Legendre 4S", GaussLegendre4SScheduler),
    ("Runge-Kutta 4/4", RungeKutta44Scheduler),
    ("Runge-Kutta 5/7", RungeKutta57Scheduler),
    ("Runge-Kutta 6/7", RungeKutta67Scheduler),
]
