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

from __future__ import annotations

import typing

from .named_test_case_chat_history_variable_value import NamedTestCaseChatHistoryVariableValue
from .named_test_case_error_variable_value import NamedTestCaseErrorVariableValue
from .named_test_case_function_call_variable_value import NamedTestCaseFunctionCallVariableValue
from .named_test_case_json_variable_value import NamedTestCaseJsonVariableValue
from .named_test_case_number_variable_value import NamedTestCaseNumberVariableValue
from .named_test_case_search_results_variable_value import NamedTestCaseSearchResultsVariableValue
from .named_test_case_string_variable_value import NamedTestCaseStringVariableValue


class NamedTestCaseVariableValue_String(NamedTestCaseStringVariableValue):
    type: typing.Literal["STRING"] = "STRING"

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


class NamedTestCaseVariableValue_Number(NamedTestCaseNumberVariableValue):
    type: typing.Literal["NUMBER"] = "NUMBER"

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


class NamedTestCaseVariableValue_Json(NamedTestCaseJsonVariableValue):
    type: typing.Literal["JSON"] = "JSON"

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


class NamedTestCaseVariableValue_ChatHistory(NamedTestCaseChatHistoryVariableValue):
    type: typing.Literal["CHAT_HISTORY"] = "CHAT_HISTORY"

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


class NamedTestCaseVariableValue_SearchResults(NamedTestCaseSearchResultsVariableValue):
    type: typing.Literal["SEARCH_RESULTS"] = "SEARCH_RESULTS"

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


class NamedTestCaseVariableValue_Error(NamedTestCaseErrorVariableValue):
    type: typing.Literal["ERROR"] = "ERROR"

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


class NamedTestCaseVariableValue_FunctionCall(NamedTestCaseFunctionCallVariableValue):
    type: typing.Literal["FUNCTION_CALL"] = "FUNCTION_CALL"

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


NamedTestCaseVariableValue = typing.Union[
    NamedTestCaseVariableValue_String,
    NamedTestCaseVariableValue_Number,
    NamedTestCaseVariableValue_Json,
    NamedTestCaseVariableValue_ChatHistory,
    NamedTestCaseVariableValue_SearchResults,
    NamedTestCaseVariableValue_Error,
    NamedTestCaseVariableValue_FunctionCall,
]
