from __future__ import annotations
from dataclasses import dataclass, field
from decimal import Decimal
from .current_type_enumeration import CurrentTypeEnumeration
from .place_equipment_version_structure import PlaceEquipmentVersionStructure
from .plug_type_enumeration import PlugTypeEnumeration
from .power_coupling_type_enumeration import PowerCouplingTypeEnumeration
from .type_of_plug_ref import TypeOfPlugRef

__NAMESPACE__ = "http://www.netex.org.uk/netex"


@dataclass(slots=True, kw_only=True)
class VehicleChargingEquipmentVersionStructure(PlaceEquipmentVersionStructure):
    class Meta:
        name = "VehicleChargingEquipment_VersionStructure"

    free_recharging: None | bool = field(
        default=None,
        metadata={
            "name": "FreeRecharging",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    reservation_required: None | bool = field(
        default=None,
        metadata={
            "name": "ReservationRequired",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    reservation_url: None | str = field(
        default=None,
        metadata={
            "name": "ReservationUrl",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    plug_type: None | PlugTypeEnumeration = field(
        default=None,
        metadata={
            "name": "PlugType",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    type_of_plug_ref: None | TypeOfPlugRef = field(
        default=None,
        metadata={
            "name": "TypeOfPlugRef",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    maximum_power: None | Decimal = field(
        default=None,
        metadata={
            "name": "MaximumPower",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    grid_voltage: None | Decimal = field(
        default=None,
        metadata={
            "name": "GridVoltage",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    current_type: None | CurrentTypeEnumeration = field(
        default=None,
        metadata={
            "name": "CurrentType",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    power_coupling_type: None | PowerCouplingTypeEnumeration = field(
        default=None,
        metadata={
            "name": "PowerCouplingType",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )