# 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_reply: Union[
        "StartChatTurnStartChatReplyUnauthenticatedError",
        "StartChatTurnStartChatReplyError",
        "StartChatTurnStartChatReplyChatNotFoundError",
        "StartChatTurnStartChatReplyInvalidChatInputError",
        "StartChatTurnStartChatReplyRateLimitError",
        "StartChatTurnStartChatReplyContextLimitExceededError",
        "StartChatTurnStartChatReplyUserInvitePendingError",
        "StartChatTurnStartChatReplyCheckpointError",
        "StartChatTurnStartChatReplyLLMProviderError",
        "StartChatTurnStartChatReplyOutOfCreditsError",
        "StartChatTurnStartChatReplyChat",
    ] = Field(alias="startChatReply", discriminator="typename__")


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


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


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


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


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


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


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


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


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


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


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


StartChatTurn.model_rebuild()
