from abc import ABC, abstractmethod

from costrouter.models import CostTier


class BaseRouter(ABC):
    @abstractmethod
    def classify(self, messages: list[dict]) -> tuple[CostTier, float, float]:
        """Classify prompt complexity.

        Returns (tier, confidence, screener_cost).
        """
        ...

    @abstractmethod
    async def aclassify(self, messages: list[dict]) -> tuple[CostTier, float, float]:
        """Async version of classify."""
        ...
