# 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 Advanced Navigation Attributes.
"""
from typing import List, Mapping

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


@deprecated(version="2.30.0", reason="please use class TopologyAttributes instead")
class AdvancedNavigationAttributes(BaseAttributesBinding):
    """
    Bindings for the HMC Advanced Navigation 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:advanced-navigation-attributes_v2:
            {hmc_schema_version}"""  # noqa: E241
        ]

    @classmethod
    def object_types(cls) -> Mapping[str, type]:
        """
        :return: the types of attributes supported by this binding
        """

        return {
            "black_spot": Attribute,
            "grade_category": Attribute,
            "overtaking_restriction": Attribute,
            "protected_overtaking": Attribute,
            "railway_crossing": Attribute,
            "special_speed_situation": Attribute,
            "speed_limit": Attribute,
            "traffic_signal": Attribute,
            "traffic_sign": Attribute,
            "variable_speed_limit": Attribute,
            "variable_speed_sign": Attribute,
            "scenic": Attribute,
            "recreational_vehicle_restriction": Attribute,
            "vehicle_checkpoint": Attribute,
        }
