# Copyright (C) 2021-2022 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 Bicycle Attributes.
"""
from typing import List, Mapping

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


class BicycleAttributes(BaseAttributesBinding):
    """
    Bindings for the HMC Bicycle 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:bicycle-attributes_v2:{hmc_schema_version}"
        ]

    @classmethod
    def object_types(cls) -> Mapping[str, type]:
        """
        :return: the types of attributes supported by this binding
        """
        return {
            "bicycle_access_override": Attribute,
            "bicycle_protection_type": Attribute,
            "bicycle_travel_direction_override": Attribute,
            "dedicated_bicycle_path": Attribute,
            "bicycle_path": Attribute,
            "bicycle_access_verified": Attribute,
        }
