"""Enums for CleverAgents domain models."""

from enum import StrEnum


class ModelPublisher(StrEnum):
    """Model publisher enumeration."""

    OPENAI = "ModelPublisherOpenAI"
    ANTHROPIC = "ModelPublisherAnthropic"
    GOOGLE = "ModelPublisherGoogle"
    DEEPSEEK = "ModelPublisherDeepSeek"
    PERPLEXITY = "ModelPublisherPerplexity"
    QWEN = "ModelPublisherQwen"
    MISTRAL = "ModelPublisherMistral"


class ModelErrKind(StrEnum):
    """Model error kind enumeration."""

    OVERLOADED = "ErrOverloaded"
    CONTEXT_TOO_LONG = "ErrContextTooLong"
    RATE_LIMITED = "ErrRateLimited"
    SUBSCRIPTION_QUOTA_EXHAUSTED = "ErrSubscriptionQuotaExhausted"
    OTHER = "ErrOther"
    CACHE_SUPPORT = "ErrCacheSupport"


class FallbackType(StrEnum):
    """Fallback type enumeration."""

    ERROR = "FallbackTypeError"
    CONTEXT = "FallbackTypeContext"
    PROVIDER = "FallbackTypeProvider"


class ModelProvider(StrEnum):
    """Model provider enumeration."""

    OPENROUTER = "ModelProviderOpenRouter"
    OPENAI = "ModelProviderOpenAI"
    ANTHROPIC = "ModelProviderAnthropic"
    ANTHROPIC_CLAUDE_MAX = "ModelProviderAnthropicClaudeMax"
    GOOGLE_AI_STUDIO = "ModelProviderGoogleAIStudio"
    GOOGLE_VERTEX = "ModelProviderGoogleVertex"
    AZURE_OPENAI = "ModelProviderAzureOpenAI"
    DEEPSEEK = "ModelProviderDeepSeek"
    PERPLEXITY = "ModelProviderPerplexity"
    AMAZON_BEDROCK = "ModelProviderAmazonBedrock"
