# Generated by ariadne-codegen
# Source: exponent/core/graphql/operations

from typing import Literal, Union

from pydantic import Field

from .base_model import BaseModel


class StartChatTurn(BaseModel):
    start_chat_turn: Union[
        "StartChatTurnStartChatTurnUnauthenticatedError",
        "StartChatTurnStartChatTurnError",
        "StartChatTurnStartChatTurnChatNotFoundError",
        "StartChatTurnStartChatTurnInvalidChatInputError",
        "StartChatTurnStartChatTurnRateLimitError",
        "StartChatTurnStartChatTurnContextLimitExceededError",
        "StartChatTurnStartChatTurnUserInvitePendingError",
        "StartChatTurnStartChatTurnCheckpointError",
        "StartChatTurnStartChatTurnLLMProviderError",
        "StartChatTurnStartChatTurnOutOfCreditsError",
        "StartChatTurnStartChatTurnChat",
    ] = Field(alias="startChatTurn", discriminator="typename__")


class StartChatTurnStartChatTurnUnauthenticatedError(BaseModel):
    typename__: Literal["UnauthenticatedError"] = Field(alias="__typename")
    message: str


class StartChatTurnStartChatTurnError(BaseModel):
    typename__: Literal["Error"] = Field(alias="__typename")


class StartChatTurnStartChatTurnChatNotFoundError(BaseModel):
    typename__: Literal["ChatNotFoundError"] = Field(alias="__typename")
    message: str


class StartChatTurnStartChatTurnInvalidChatInputError(BaseModel):
    typename__: Literal["InvalidChatInputError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnRateLimitError(BaseModel):
    typename__: Literal["RateLimitError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnContextLimitExceededError(BaseModel):
    typename__: Literal["ContextLimitExceededError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnUserInvitePendingError(BaseModel):
    typename__: Literal["UserInvitePendingError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnCheckpointError(BaseModel):
    typename__: Literal["CheckpointError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnLLMProviderError(BaseModel):
    typename__: Literal["LLMProviderError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnOutOfCreditsError(BaseModel):
    typename__: Literal["OutOfCreditsError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnChat(BaseModel):
    typename__: Literal["Chat"] = Field(alias="__typename")
    chat_uuid: str = Field(alias="chatUuid")


StartChatTurn.model_rebuild()
