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

from typing import Literal, Optional, Union
from uuid import UUID

from pydantic import Field

from .base_model import BaseModel


class StartChatTurn(BaseModel):
    start_chat_turn: Union[
        "StartChatTurnStartChatTurnUnauthenticatedError",
        "StartChatTurnStartChatTurnError",
        "StartChatTurnStartChatTurnNotFoundError",
        "StartChatTurnStartChatTurnInputValidationError",
        "StartChatTurnStartChatTurnPlanError",
        "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 StartChatTurnStartChatTurnNotFoundError(BaseModel):
    typename__: Literal["NotFoundError"] = Field(alias="__typename")
    resource_type: str = Field(alias="resourceType")
    resource_id: Optional[str] = Field(alias="resourceId")
    message: str


class StartChatTurnStartChatTurnInputValidationError(BaseModel):
    typename__: Literal["InputValidationError"] = Field(alias="__typename")


class StartChatTurnStartChatTurnPlanError(BaseModel):
    typename__: Literal["PlanError"] = Field(alias="__typename")


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


StartChatTurn.model_rebuild()
