"""Custom exceptions for ai-qa-sdk."""


class AIQAError(Exception):
    """Base exception for all ai-qa-sdk errors."""

    pass


class ProviderNotConfiguredError(AIQAError):
    """Raised when an LLM-powered check is run without a configured provider.

    Includes:
    - Which check triggered this
    - Install commands for each provider
    - How to configure with configure()
    - List of checks that work without a provider
    """

    pass


class ProviderAPIError(AIQAError):
    """Raised when the LLM API returns an error.

    Includes:
    - HTTP status code
    - Provider name
    - Suggestion (rate limit? bad key? model not found?)
    """

    pass


class CheckNotFoundError(AIQAError):
    """Raised when an unknown check name is used.

    Includes:
    - The check name that was requested
    - Full list of available checks
    - Hint about @register decorator for custom checks
    """

    pass


class ContextValidationError(AIQAError):
    """Raised when a check requires Context fields that are missing.

    Includes:
    - Which check requires what
    - Which fields are missing
    - Example of correct Context for this check
    """

    pass


class DatasetError(AIQAError):
    """Raised for dataset loading issues."""

    pass


class CacheError(AIQAError):
    """Raised for caching issues (non-fatal, should be caught internally)."""

    pass
