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

from __future__ import annotations

import typing

from ....core.pydantic_utilities import pydantic_v1
from .boolean_score import BooleanScore
from .categorical_score import CategoricalScore
from .numeric_score import NumericScore


class Score_Numeric(NumericScore):
    data_type: typing.Literal["NUMERIC"] = pydantic_v1.Field(
        alias="dataType", default="NUMERIC"
    )

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


class Score_Categorical(CategoricalScore):
    data_type: typing.Literal["CATEGORICAL"] = pydantic_v1.Field(
        alias="dataType", default="CATEGORICAL"
    )

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


class Score_Boolean(BooleanScore):
    data_type: typing.Literal["BOOLEAN"] = pydantic_v1.Field(
        alias="dataType", default="BOOLEAN"
    )

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


Score = typing.Union[Score_Numeric, Score_Categorical, Score_Boolean]
