# 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 .v_1_asset_reefer_response_reefer_stats_alarms_1 import V1AssetReeferResponseReeferStatsAlarms1
from .v_1_asset_reefer_response_reefer_stats_engine_hours import V1AssetReeferResponseReeferStatsEngineHours
from .v_1_asset_reefer_response_reefer_stats_fuel_percentage import V1AssetReeferResponseReeferStatsFuelPercentage
from .v_1_asset_reefer_response_reefer_stats_power_status import V1AssetReeferResponseReeferStatsPowerStatus
from .v_1_asset_reefer_response_reefer_stats_return_air_temp import V1AssetReeferResponseReeferStatsReturnAirTemp
from .v_1_asset_reefer_response_reefer_stats_set_point import V1AssetReeferResponseReeferStatsSetPoint


class V1AssetReeferResponseReeferStats(UniversalBaseModel):
    alarms: typing.Optional[typing.List[V1AssetReeferResponseReeferStatsAlarms1]] = pydantic.Field(default=None)
    """
    Reefer alarms
    """

    engine_hours: typing_extensions.Annotated[
        typing.Optional[typing.List[V1AssetReeferResponseReeferStatsEngineHours]],
        FieldMetadata(alias="engineHours"),
        pydantic.Field(alias="engineHours", description="Engine hours of the reefer"),
    ] = None
    fuel_percentage: typing_extensions.Annotated[
        typing.Optional[typing.List[V1AssetReeferResponseReeferStatsFuelPercentage]],
        FieldMetadata(alias="fuelPercentage"),
        pydantic.Field(alias="fuelPercentage", description="Fuel percentage of the reefer"),
    ] = None
    power_status: typing_extensions.Annotated[
        typing.Optional[typing.List[V1AssetReeferResponseReeferStatsPowerStatus]],
        FieldMetadata(alias="powerStatus"),
        pydantic.Field(alias="powerStatus", description="Power status of the reefer"),
    ] = None
    return_air_temp: typing_extensions.Annotated[
        typing.Optional[typing.List[V1AssetReeferResponseReeferStatsReturnAirTemp]],
        FieldMetadata(alias="returnAirTemp"),
        pydantic.Field(alias="returnAirTemp", description="Return air temperature of the reefer"),
    ] = None
    set_point: typing_extensions.Annotated[
        typing.Optional[typing.List[V1AssetReeferResponseReeferStatsSetPoint]],
        FieldMetadata(alias="setPoint"),
        pydantic.Field(alias="setPoint", description="Set point temperature of the reefer"),
    ] = 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
