# 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_request import NamedTestCaseChatHistoryVariableValueRequest
from .named_test_case_error_variable_value_request import NamedTestCaseErrorVariableValueRequest
from .named_test_case_function_call_variable_value_request import NamedTestCaseFunctionCallVariableValueRequest
from .named_test_case_json_variable_value_request import NamedTestCaseJsonVariableValueRequest
from .named_test_case_number_variable_value_request import NamedTestCaseNumberVariableValueRequest
from .named_test_case_search_results_variable_value_request import NamedTestCaseSearchResultsVariableValueRequest
from .named_test_case_string_variable_value_request import NamedTestCaseStringVariableValueRequest


class NamedTestCaseVariableValueRequest_String(NamedTestCaseStringVariableValueRequest):
    type: typing.Literal["STRING"] = "STRING"

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


class NamedTestCaseVariableValueRequest_Number(NamedTestCaseNumberVariableValueRequest):
    type: typing.Literal["NUMBER"] = "NUMBER"

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


class NamedTestCaseVariableValueRequest_Json(NamedTestCaseJsonVariableValueRequest):
    type: typing.Literal["JSON"] = "JSON"

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


class NamedTestCaseVariableValueRequest_ChatHistory(NamedTestCaseChatHistoryVariableValueRequest):
    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 NamedTestCaseVariableValueRequest_SearchResults(NamedTestCaseSearchResultsVariableValueRequest):
    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 NamedTestCaseVariableValueRequest_Error(NamedTestCaseErrorVariableValueRequest):
    type: typing.Literal["ERROR"] = "ERROR"

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


class NamedTestCaseVariableValueRequest_FunctionCall(NamedTestCaseFunctionCallVariableValueRequest):
    type: typing.Literal["FUNCTION_CALL"] = "FUNCTION_CALL"

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


NamedTestCaseVariableValueRequest = typing.Union[
    NamedTestCaseVariableValueRequest_String,
    NamedTestCaseVariableValueRequest_Number,
    NamedTestCaseVariableValueRequest_Json,
    NamedTestCaseVariableValueRequest_ChatHistory,
    NamedTestCaseVariableValueRequest_SearchResults,
    NamedTestCaseVariableValueRequest_Error,
    NamedTestCaseVariableValueRequest_FunctionCall,
]
