# This file was auto-generated by Fern from our API Definition.

from __future__ import annotations

import typing

import typing_extensions

from .execution_array_vellum_value import ExecutionArrayVellumValue
from .execution_chat_history_vellum_value import ExecutionChatHistoryVellumValue
from .execution_error_vellum_value import ExecutionErrorVellumValue
from .execution_function_call_vellum_value import ExecutionFunctionCallVellumValue
from .execution_json_vellum_value import ExecutionJsonVellumValue
from .execution_number_vellum_value import ExecutionNumberVellumValue
from .execution_search_results_vellum_value import ExecutionSearchResultsVellumValue
from .execution_string_vellum_value import ExecutionStringVellumValue


class ExecutionVellumValue_String(ExecutionStringVellumValue):
    type: typing_extensions.Literal["STRING"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_Number(ExecutionNumberVellumValue):
    type: typing_extensions.Literal["NUMBER"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_Json(ExecutionJsonVellumValue):
    type: typing_extensions.Literal["JSON"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_ChatHistory(ExecutionChatHistoryVellumValue):
    type: typing_extensions.Literal["CHAT_HISTORY"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_SearchResults(ExecutionSearchResultsVellumValue):
    type: typing_extensions.Literal["SEARCH_RESULTS"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_Error(ExecutionErrorVellumValue):
    type: typing_extensions.Literal["ERROR"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_Array(ExecutionArrayVellumValue):
    type: typing_extensions.Literal["ARRAY"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


class ExecutionVellumValue_FunctionCall(ExecutionFunctionCallVellumValue):
    type: typing_extensions.Literal["FUNCTION_CALL"]

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True


ExecutionVellumValue = typing.Union[
    ExecutionVellumValue_String,
    ExecutionVellumValue_Number,
    ExecutionVellumValue_Json,
    ExecutionVellumValue_ChatHistory,
    ExecutionVellumValue_SearchResults,
    ExecutionVellumValue_Error,
    ExecutionVellumValue_Array,
    ExecutionVellumValue_FunctionCall,
]
