# coding: utf-8

from __future__ import annotations
from datetime import date, datetime  # noqa: F401

import re  # noqa: F401
from typing import Any, Dict, List, Optional  # noqa: F401

from pydantic import AnyUrl, BaseModel, EmailStr, Field, validator  # noqa: F401


class ChargeParamEV(BaseModel):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.

    ChargeParamEV - a model defined in OpenAPI

        ev_capa_class: The ev_capa_class of this ChargeParamEV [Optional].
        ev_min_power: The ev_min_power of this ChargeParamEV [Optional].
        ev_target_energy_req: The ev_target_energy_req of this ChargeParamEV [Optional].
        ev_min_energy_req: The ev_min_energy_req of this ChargeParamEV [Optional].
        ev_max_energy_req: The ev_max_energy_req of this ChargeParamEV [Optional].
        ev_own_current_req: The ev_own_current_req of this ChargeParamEV [Optional].
        ev_symm_currents_only: The ev_symm_currents_only of this ChargeParamEV [Optional].
        ev_num_current_phases: The ev_num_current_phases of this ChargeParamEV [Optional].
        ev_target_soc: The ev_target_soc of this ChargeParamEV [Optional].
        ev_abs_price_support: The ev_abs_price_support of this ChargeParamEV [Optional].
    """
    class Config:
        orm_mode = True

    ev_capa_class: Optional[int] = Field(alias="EVCapaClass", default=None)
    ev_min_power: Optional[int] = Field(alias="EVMinPower", default=None)
    ev_target_energy_req: Optional[int] = Field(alias="EVTargetEnergyReq", default=None)
    ev_min_energy_req: Optional[int] = Field(alias="EVMinEnergyReq", default=None)
    ev_max_energy_req: Optional[int] = Field(alias="EVMaxEnergyReq", default=None)
    ev_own_current_req: Optional[bool] = Field(alias="EVOwnCurrentReq", default=None)
    ev_symm_currents_only: Optional[bool] = Field(alias="EVSymmCurrentsOnly", default=None)
    ev_num_current_phases: Optional[int] = Field(alias="EVNumCurrentPhases", default=None)
    ev_target_soc: Optional[int] = Field(alias="EVTargetSoc", default=None)
    ev_abs_price_support: Optional[bool] = Field(alias="EVAbsPriceSupport", default=None)

    @validator("ev_capa_class")
    def ev_capa_class_max(cls, value):
        assert value <= 10
        return value

    @validator("ev_capa_class")
    def ev_capa_class_min(cls, value):
        assert value >= 0
        return value

ChargeParamEV.update_forward_refs()
