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

from typing import Any, List, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import (
    ContentTypes,
    ConversationRoleTypes,
    EntityState,
    FileTypes,
    ModelServiceTypes,
)


class PromptSpecifications(BaseModel):
    prompt_specifications: Optional[
        List[Optional["PromptSpecificationsPromptSpecifications"]]
    ] = Field(alias="promptSpecifications")


class PromptSpecificationsPromptSpecifications(BaseModel):
    specification: Optional["PromptSpecificationsPromptSpecificationsSpecification"]
    messages: Optional[
        List[Optional["PromptSpecificationsPromptSpecificationsMessages"]]
    ]
    error: Optional[str]


class PromptSpecificationsPromptSpecificationsSpecification(BaseModel):
    id: str


class PromptSpecificationsPromptSpecificationsMessages(BaseModel):
    role: ConversationRoleTypes
    author: Optional[str]
    message: str
    citations: Optional[
        List[Optional["PromptSpecificationsPromptSpecificationsMessagesCitations"]]
    ]
    tokens: int
    throughput: Optional[float]
    completion_time: Optional[Any] = Field(alias="completionTime")
    timestamp: Any
    model_service: Optional[ModelServiceTypes] = Field(alias="modelService")
    model: Optional[str]


class PromptSpecificationsPromptSpecificationsMessagesCitations(BaseModel):
    content: Optional[
        "PromptSpecificationsPromptSpecificationsMessagesCitationsContent"
    ]
    index: Optional[int]
    text: Optional[str]
    start_time: Optional[Any] = Field(alias="startTime")
    end_time: Optional[Any] = Field(alias="endTime")
    page_number: Optional[int] = Field(alias="pageNumber")
    frame_number: Optional[int] = Field(alias="frameNumber")


class PromptSpecificationsPromptSpecificationsMessagesCitationsContent(BaseModel):
    id: str
    name: str
    state: EntityState
    type: Optional[ContentTypes]
    file_type: Optional[FileTypes] = Field(alias="fileType")
    file_name: Optional[str] = Field(alias="fileName")
    original_date: Optional[Any] = Field(alias="originalDate")
    uri: Optional[Any]


PromptSpecifications.model_rebuild()
PromptSpecificationsPromptSpecifications.model_rebuild()
PromptSpecificationsPromptSpecificationsMessages.model_rebuild()
PromptSpecificationsPromptSpecificationsMessagesCitations.model_rebuild()
