# Generated by ariadne-codegen
# Source: ./documents

from typing import Any, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import ModelServiceTypes, ModelTypes


class QueryModels(BaseModel):
    models: Optional["QueryModelsModels"]


class QueryModelsModels(BaseModel):
    results: Optional[list["QueryModelsModelsResults"]]


class QueryModelsModelsResults(BaseModel):
    uri: Optional[Any]
    name: str
    type: Optional[ModelTypes]
    service_type: Optional[ModelServiceTypes] = Field(alias="serviceType")
    model: Optional[str]
    model_type: Optional[str] = Field(alias="modelType")
    description: Optional[str]
    available_on: Optional[list[Optional[str]]] = Field(alias="availableOn")
    features: Optional["QueryModelsModelsResultsFeatures"]
    metadata: Optional["QueryModelsModelsResultsMetadata"]


class QueryModelsModelsResultsFeatures(BaseModel):
    key_features: Optional[list[Optional[str]]] = Field(alias="keyFeatures")
    strengths: Optional[list[Optional[str]]]
    use_cases: Optional[list[Optional[str]]] = Field(alias="useCases")


class QueryModelsModelsResultsMetadata(BaseModel):
    reasoning: Optional[bool]
    multilingual: Optional[bool]
    multimodal: Optional[bool]
    knowledge_cutoff: Optional[Any] = Field(alias="knowledgeCutoff")
    prompt_cost_per_million: Optional[float] = Field(alias="promptCostPerMillion")
    completion_cost_per_million: Optional[float] = Field(
        alias="completionCostPerMillion"
    )
    embeddings_cost_per_million: Optional[float] = Field(
        alias="embeddingsCostPerMillion"
    )
    reranking_cost_per_million: Optional[float] = Field(alias="rerankingCostPerMillion")
    context_window_tokens: Optional[int] = Field(alias="contextWindowTokens")
    max_output_tokens: Optional[int] = Field(alias="maxOutputTokens")
    deprecated: Optional[bool]
    deprecation_date: Optional[Any] = Field(alias="deprecationDate")


QueryModels.model_rebuild()
QueryModelsModels.model_rebuild()
QueryModelsModelsResults.model_rebuild()
