# Copyright (C) 2022-2023 HERE Global B.V. and its affiliate(s).
# All rights reserved.
#
# This software and other materials contain proprietary information
# controlled by HERE and are protected by applicable copyright legislation.
# Any use and utilization of this software and other materials and
# disclosure to any third parties is conditional upon having a separate
# agreement with HERE for the access, use, utilization or disclosure of this
# software. In the absence of such agreement, the use of the software is not
# allowed.

"""
Bindings for the HMC Truck Attributes.
"""
from typing import List, Mapping

from here.content.content import hmc_schema_version
from here.content.hmc2.base_attributes import Attribute, BaseAttributesBinding


class TruckAttributes(BaseAttributesBinding):
    """
    Bindings for the HMC Truck Attributes.
    """

    @classmethod
    def schema_hrn(cls) -> List[str]:
        """
        :return: the HRN of schema this binding can parse and index
        """
        return [f"hrn:here:schema:::com.here.schema.rib:truck-attributes_v2:{hmc_schema_version}"]

    @classmethod
    def object_types(cls) -> Mapping[str, type]:
        """
        :return: the types of attributes supported by this binding
        """
        return {
            "lane_anchor": Attribute,
            "transport_access_restriction": Attribute,
            "transport_preferred_route": Attribute,
            "transport_restricted_driving_manoeuvre": Attribute,
            "transport_special_speed_situation": Attribute,
            "transport_verified_attribute": Attribute,
            "truck_road_type_attribute": Attribute,
        }
