"""Central provider driver registry."""

from __future__ import annotations

from .base import ProviderDriver


class DriverRegistry:
    def __init__(self) -> None:
        self._drivers: dict[str, ProviderDriver] = {}

    def register(self, name: str, driver: ProviderDriver) -> None:
        if not name or name in self._drivers:
            raise ValueError(f"Driver already registered: {name}")
        self._drivers[name] = driver

    def get(self, name: str) -> ProviderDriver:
        try:
            return self._drivers[name]
        except KeyError as exc:
            raise LookupError(f"Unsupported messaging driver: {name}") from exc

    def names(self) -> tuple[str, ...]:
        return tuple(sorted(self._drivers))
