"""Engine implementations for sageLLM Core.

This module provides built-in engine implementations:
- CPUEngine: CPU-only inference with HuggingFace Transformers
- HFCudaEngine: CUDA inference with HuggingFace Transformers
- AscendEngine: Huawei Ascend NPU (PyTorch-NPU)
- PyTorchEngine: Unified PyTorch engine (auto-detects CUDA/NPU/CPU)
- EmbeddingEngine: Embedding model inference
"""

from __future__ import annotations

from sagellm_core.engines.ascend import AscendEngine, AscendEngineConfig, create_ascend_engine
from sagellm_core.engines.cpu import CPUEngine, create_cpu_engine
from sagellm_core.engines.embedding import EmbeddingEngine, EmbeddingEngineConfig
from sagellm_core.engines.hf_cuda import (
    HFCudaEngine,
    HFCudaEngineInstanceConfig,
    create_hf_cuda_engine,
)
from sagellm_core.engines.pytorch_engine import PyTorchEngine, create_pytorch_engine

# Export aliases for backward compatibility
HFCudaEngineConfig = HFCudaEngineInstanceConfig

__all__ = [
    # Ascend engine
    "AscendEngine",
    "AscendEngineConfig",
    "create_ascend_engine",
    # CPU engine
    "CPUEngine",
    "create_cpu_engine",
    # CUDA engine
    "HFCudaEngine",
    "HFCudaEngineConfig",
    "HFCudaEngineInstanceConfig",
    "create_hf_cuda_engine",
    # PyTorch engine (unified)
    "PyTorchEngine",
    "create_pytorch_engine",
    # Embedding engine
    "EmbeddingEngine",
    "EmbeddingEngineConfig",
]
