from .auto_encoder import (
    AutoEncoder,
    AutoEncoderBase,
    BetaVAE,
    ConditionalVAE,
    VariationalAutoEncoder,
)
from .contrastive import BYOL, ContrastiveBase, MoCo, SimCLR
from .diffusion import DDIM, DDPM, DiffusionBase
from .gan import (
    LSGAN,
    WGAN,
    WGANGP,
    GANBase,
    GradientRegularization,
    HingeGAN,
    RaGAN,
    SpectralNormMixin,
    StandardGAN,
)
from .graph import GraphBase, GraphClassification, LinkPrediction, NodeClassification
from .metric_learning import (
    ArcFace,
    CenterLoss,
    ContrastiveLoss,
    MetricLearningBase,
    ProxyNCA,
    TripletLoss,
)
from .reinforcement import DQN, PPO, ActorCritic, ExperienceBuffer, PolicyGradient, RLBase
from .self_supervised import DINO, MAE, BarlowTwins, SelfSupervisedBase, SimSiam, SwAV

__all__ = [
    # AutoEncoder paradigms
    'AutoEncoder',
    'AutoEncoderBase',
    'BetaVAE',
    'ConditionalVAE',
    'VariationalAutoEncoder',
    # GAN paradigms
    'GANBase',
    'StandardGAN',
    'WGAN',
    'WGANGP',
    'LSGAN',
    'HingeGAN',
    'RaGAN',
    'GradientRegularization',
    'SpectralNormMixin',
    # Contrastive Learning paradigms
    'ContrastiveBase',
    'SimCLR',
    'MoCo',
    'BYOL',
    # Diffusion paradigms
    'DiffusionBase',
    'DDPM',
    'DDIM',
    # Graph paradigms
    'GraphBase',
    'NodeClassification',
    'GraphClassification',
    'LinkPrediction',
    # Reinforcement Learning paradigms
    'RLBase',
    'DQN',
    'PolicyGradient',
    'ActorCritic',
    'PPO',
    'ExperienceBuffer',
    # Self-Supervised Learning paradigms
    'SelfSupervisedBase',
    'SwAV',
    'DINO',
    'BarlowTwins',
    'MAE',
    'SimSiam',
    # Metric Learning paradigms
    'MetricLearningBase',
    'TripletLoss',
    'ContrastiveLoss',
    'CenterLoss',
    'ArcFace',
    'ProxyNCA',
]
