from __future__ import annotations
from dataclasses import dataclass, field
from .covered_enumeration import CoveredEnumeration
from .deck_component_version_structure import DeckComponentVersionStructure
from .deck_entrance_couples_rel_structure import DeckEntranceCouplesRelStructure
from .deck_entrance_usages_rel_structure import DeckEntranceUsagesRelStructure
from .deck_entrances_rel_structure import DeckEntrancesRelStructure
from .deck_space_capacities_rel_structure import DeckSpaceCapacitiesRelStructure
from .deck_space_ref_structure import DeckSpaceRefStructure
from .deck_windows_rel_structure import DeckWindowsRelStructure
from .type_of_deck_space_ref import TypeOfDeckSpaceRef

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


@dataclass(slots=True, kw_only=True)
class DeckSpaceVersionStructure(DeckComponentVersionStructure):
    class Meta:
        name = "DeckSpace_VersionStructure"

    covered: None | CoveredEnumeration = field(
        default=None,
        metadata={
            "name": "Covered",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    air_conditioned: None | bool = field(
        default=None,
        metadata={
            "name": "AirConditioned",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    smoking_allowed: None | bool = field(
        default=None,
        metadata={
            "name": "SmokingAllowed",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    type_of_deck_space_ref: None | TypeOfDeckSpaceRef = field(
        default=None,
        metadata={
            "name": "TypeOfDeckSpaceRef",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    parent_deck_space_ref: None | DeckSpaceRefStructure = field(
        default=None,
        metadata={
            "name": "ParentDeckSpaceRef",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    deck_entrances: None | DeckEntrancesRelStructure = field(
        default=None,
        metadata={
            "name": "deckEntrances",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    deck_entrance_couples: None | DeckEntranceCouplesRelStructure = field(
        default=None,
        metadata={
            "name": "deckEntranceCouples",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    deck_entrance_usages: None | DeckEntranceUsagesRelStructure = field(
        default=None,
        metadata={
            "name": "deckEntranceUsages",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    deck_windows: None | DeckWindowsRelStructure = field(
        default=None,
        metadata={
            "name": "deckWindows",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    total_capacity: None | int = field(
        default=None,
        metadata={
            "name": "TotalCapacity",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )
    deck_space_capacities: None | DeckSpaceCapacitiesRelStructure = field(
        default=None,
        metadata={
            "name": "deckSpaceCapacities",
            "type": "Element",
            "namespace": "http://www.netex.org.uk/netex",
        }
    )