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

import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ..core.serialization import FieldMetadata
from .fft_spectra_data_point import FftSpectraDataPoint
from .j_1939_d_1_status_data_point import J1939D1StatusDataPoint
from .location_data_point import LocationDataPoint
from .number_data_point import NumberDataPoint
from .string_data_point import StringDataPoint


class DataInputResponseAllOf(UniversalBaseModel):
    fft_spectra_points: typing_extensions.Annotated[
        typing.Optional[typing.List[FftSpectraDataPoint]],
        FieldMetadata(alias="fftSpectraPoints"),
        pydantic.Field(alias="fftSpectraPoints", description="List of FFT spectra data points from the data input."),
    ] = None
    j_1939_d_1_status_points: typing_extensions.Annotated[
        typing.Optional[typing.List[J1939D1StatusDataPoint]],
        FieldMetadata(alias="j1939D1StatusPoints"),
        pydantic.Field(alias="j1939D1StatusPoints", description="List of active J1939D1 statuses."),
    ] = None
    location_points: typing_extensions.Annotated[
        typing.Optional[typing.List[LocationDataPoint]],
        FieldMetadata(alias="locationPoints"),
        pydantic.Field(alias="locationPoints", description="List of location data points from the data input."),
    ] = None
    number_points: typing_extensions.Annotated[
        typing.Optional[typing.List[NumberDataPoint]],
        FieldMetadata(alias="numberPoints"),
        pydantic.Field(alias="numberPoints", description="List of numeric data points from the data input."),
    ] = None
    string_points: typing_extensions.Annotated[
        typing.Optional[typing.List[StringDataPoint]],
        FieldMetadata(alias="stringPoints"),
        pydantic.Field(alias="stringPoints", description="List of string data points from the data input."),
    ] = None

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
