"""
STT provider factory.

Usage:
    from stt import get_stt_provider
    provider = get_stt_provider("sarvam", api_key="sk_...")
    result = provider.transcribe(audio_url, callid)
"""
from __future__ import annotations

from .base import BaseSTT, STTResult

__all__ = ["BaseSTT", "STTResult", "get_stt_provider"]

_REGISTRY: dict[str, type[BaseSTT]] = {}


def _register(name: str):
    def decorator(cls: type[BaseSTT]):
        _REGISTRY[name.lower()] = cls
        return cls
    return decorator


def get_stt_provider(provider: str, api_key: str) -> BaseSTT:
    """Instantiate and return a named STT provider.

    Parameters
    ----------
    provider:
        Provider name — currently ``"sarvam"``.  Future: ``"deepgram"``,
        ``"whisper"``, etc.
    api_key:
        The provider's API / subscription key.

    Raises
    ------
    ValueError
        If *provider* is not registered.
    """
    name = (provider or "").strip().lower()

    # Lazy-load providers so only the installed SDK is imported
    if name == "sarvam":
        from .sarvam import SarvamSTT
        return SarvamSTT(api_key=api_key)

    raise ValueError(
        f"Unknown STT provider '{provider}'. "
        f"Available: sarvam"
    )
