from typing import Dict, List, Type
from providers.base import BaseVideoProvider
from providers.videa import VideaProvider
from providers.vk import VKProvider

_PROVIDERS: Dict[str, Type[BaseVideoProvider]] = {
    "videa": VideaProvider,
    "vk": VKProvider,
}


def get_provider(name: str) -> BaseVideoProvider:
    provider_cls = _PROVIDERS.get(name.lower())
    if not provider_cls:
        raise ValueError(f"Ismeretlen videó szolgáltató: '{name}'. Elérhető: {list_available_providers()}")
    return provider_cls()


def list_available_providers() -> List[str]:
    return list(_PROVIDERS.keys())


def register_provider(name: str, provider_cls: Type[BaseVideoProvider]):
    """Allows adding new providers dynamically in the future."""
    _PROVIDERS[name.lower()] = provider_cls
