"""
CALM (Continuous Autoregressive Language Models) Module

Implements the paradigm shift from discrete next-token prediction
to continuous next-vector prediction as described in arxiv:2510.27688.

Key components:
- High-fidelity autoencoder: K tokens → 1 vector with >99.9% reconstruction
- Continuous autoregressive model: Predicts continuous vectors
- Likelihood-free training framework
- Speculative decoding: 2-3x speedup on top of K-token speedup

OPTIMIZATIONS:
- Batched token-vector conversions (no for loops)
- Mixed precision training (FP16)
- KV-cache for efficient generation
- DataLoader support for better batch processing
- Speculative decoding for 16-24x total speedup
"""

from .autoencoder import (
    CALMAutoencoder,
    TokenChunkEncoder,
    TokenChunkDecoder,
    TokenChunkDataset,
    AutoencoderTrainer
)
from .continuous_model import ContinuousAutoregressiveModel
from .likelihood_free import (
    LikelihoodFreeTrainer,
    ContinuousLoss,
    ContinuousSequenceDataset,
    CurriculumScheduler
)
from .speculative import (
    DraftCALMModel,
    SpeculativeCALMDecoder,
    train_draft_model
)

__all__ = [
    # Autoencoder
    'CALMAutoencoder',
    'TokenChunkEncoder',
    'TokenChunkDecoder',
    'TokenChunkDataset',
    'AutoencoderTrainer',

    # Main model
    'ContinuousAutoregressiveModel',

    # Training
    'LikelihoodFreeTrainer',
    'ContinuousLoss',
    'ContinuousSequenceDataset',
    'CurriculumScheduler',

    # Speculative decoding
    'DraftCALMModel',
    'SpeculativeCALMDecoder',
    'train_draft_model',
]
