from typing import Optional


class EpcApiError(Exception):
    """Base for all EPC client errors."""


class EpcNotFoundError(EpcApiError):
    """Raised when the API returns 404."""


class EpcRateLimitError(EpcApiError):
    """Raised when the API returns 429 and all retries are exhausted."""

    def __init__(self, message: str, retry_after: Optional[float] = None) -> None:
        super().__init__(message)
        self.retry_after = retry_after
