# 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.

"""
Constants for the HMC.
"""


class Constant:
    """Constants needed across the code."""

    address_extracter = "address_extracter"
    partition_id = "partition_id"
    place_extracter = "place_extracter"
    supplier_extracter = "supplier_extracter"


class FieldName:
    """HMC Field Name Constants."""

    accessors = "accessors"
    additional_data = "additional_data"
    address_relation = "address_relation"
    air_conditioning = "air_conditioning"
    alt_category = "alt_category"
    alternate_geometry = "alternate_geometry"
    area_type = "area_type"
    beer_selection = "beer_selection"
    bounding_box = "bounding_box"
    category = "category"
    catering = "catering"
    childrens_menu = "childrens_menu"
    cooking_types = "cooking_types"
    conference_hall = "conference_hall"
    contact_info = "contact_info"
    country_code = "country_code"
    currency_type = "currency_type"
    day_of_week = "day_of_week"
    delivery = "delivery"
    dress_code = "dress_code"
    elevators = "elevators"
    escalators = "escalators"
    family_friendly = "family_friendly"
    geometry = "geometry"
    handicap_accessible = "handicap_accessible"
    handicap_rooms = "handicap_rooms"
    hot_tub = "hot_tub"
    id = "id"
    label = "label"
    level_information = "level_information"
    location_type = "location_type"
    name = "name"
    name_type = "name_type"
    onsite_heart_defribillator = "onsite_heart_defribillator"
    payment_type = "payment_type"
    political_geometry = "political_geometry"
    political_view_name_replacement = "political_view_name_replacement"
    political_view_action = "political_view_action"
    primary = "primary"
    qualifier = "qualifier"
    relationship = "relationship"
    representation = "representation"
    reservation_required = "reservation_required"
    restrooms_available = "restrooms_available"
    sauna = "sauna"
    seating_capacity = "seating_capacity"
    seating_options = "seating_options"
    security_guard = "security_guard"
    segment_anchor_side = "segment_anchor_side"
    spa = "spa"
    specialties = "specialties"
    sports_infrastructure = "sports_infrastructure"
    status = "status"
    smoking = "smoking"
    swimming = "swimming"
    swimming_pool = "swimming_pool"
    swimming_pool_indoor = "swimming_pool_indoor"
    swimming_pool_outdoor = "swimming_pool_outdoor"
    takeout = "takeout"
    television = "television"
    type = "type"
    valid_unnamed = "valid_unnamed"
    value = "value"
    verified = "verified"
    within_location_ref = "within_location_ref"
    wine_selection = "wine_selection"

    postal_code = "postal_code"
    city = "city"
    state = "state"
    county = "county"
    region = "region"
    district = "district"
    area = "area"
    street = "street"
    house = "house"
    building = "building"
    building_unit = "building_unit"
    level_name = "level_name"
    unit_name = "unit_name"
    postal_mapping = "postal_mapping"
    state_code = "state_code"
    country_code = "country_code"
    location_address_type = "location_address_type"
    source_type = "source_type"

    high_canopy = "high_canopy"
    idle_reduction_system = "idle_reduction_system"
    number_of_showers = "number_of_showers"
    showers = "showers"
    truck_parking = "truck_parking"
    truck_scales = "truck_scales"
    truck_service = "truck_service"
    truck_wash = "truck_wash"
    truck_secure_parking = "truck_secure_parking"
    truck_night_parking_only = "truck_night_parking_only"
    truck_stop = "truck_stop"

    biodiesel = "biodiesel"
    cng = "cng"
    diesel = "diesel"
    diesel_with_additives = "diesel_with_additives"
    e85 = "e85"
    e10 = "e10"
    ethanol = "ethanol"
    ethanol_with_additives = "ethanol_with_additives"
    gasoline = "gasoline"
    high_volume_pumps = "high_volume_pumps"
    hydrogen = "hydrogen"
    lpg = "lpg"
    midgrade = "midgrade"
    pay_at_pump = "pay_at_pump"
    premium = "premium"
    premium_with_additives = "premium_with_additives"
    regular = "regular"
    regular_with_additives = "regular_with_additives"
    lng = "lng"
    biodiesel_grade = "biodiesel_grade"
    diesel_additive = "diesel_additive"
    diesel_additive_type = "diesel_additive_type"
    hydrogen_pressure = "hydrogen_pressure"
    match_level = "match_level"

    supplier = "supplier"
    author = "author"
    place = "place"
    external_identifier = "external_identifier"
    contact_information = "contact_information"
    operating_time = "operating_time"
    feedback = "feedback"
    payment = "payment"
    relationship_attribute = "relationship_attribute"
    capacity_attribute = "capacity_attribute"
    internet_connection_attribute = "internet_connection_attribute"
    price_range = "price_range"
    spoken_language = "spoken_language"
    qr_code_attribute = "qr_code_attribute"
    verification_attribute = "verification_attribute"
    media_reference_attribute = "media_reference_attribute"
    media_reference = "media_reference"
    quality_score = "quality_score"
    place_access_attribute = "place_access_attribute"
    alcohol_service_attribute = "alcohol_service_attribute"
    amenities_attribute = "amenities_attribute"
    basic_info_attribute = "basic_info_attribute"
    other_information = "other_information"
    electric_charge_attribute = "electric_charge_attribute"
    hotel_attribute = "hotel_attribute"
    location_information = "location_information"
    parking_attribute = "parking_attribute"
    restaurant_attribute = "restaurant_attribute"
    transit_attribute = "transit_attribute"
    vehicle_services_attribute = "vehicle_services_attribute"
    address = "address"
    location = "location"
    truck_attribute = "truck_attribute"
    fuel_type_attribute = "fuel_type_attribute"
    social_signal = "social_signal"
    port_attribute = "port_attribute"
    safety_camera = "safety_camera"
    black_spot = "black_spot"
    match_level_attribute = "match_level_attribute"
    affiliation_attribute = "affiliation_attribute"
    office_type_attribute = "office_type_attribute"
    note_type_attribute = "note_type_attribute"
    place_category_confidence_attribute = "place_category_confidence_attribute"
    popularity_attribute = "popularity_attribute"
    vendor_url_attribute = "vendor_url_attribute"


class ObjectType:
    """HMC Object Type Name Constants."""

    supplier = FieldName.supplier
    author = FieldName.author
    place = FieldName.place
    external_identifier = FieldName.external_identifier
    contact_information = FieldName.contact_information
    operating_time = FieldName.operating_time
    feedback = FieldName.feedback
    payment = FieldName.payment
    relationship_attribute = FieldName.relationship_attribute
    capacity_attribute = FieldName.capacity_attribute
    internet_connection_attribute = FieldName.internet_connection_attribute
    price_range = FieldName.price_range
    spoken_language = FieldName.spoken_language
    qr_code_attribute = FieldName.qr_code_attribute
    verification_attribute = FieldName.verification_attribute
    media_reference_attribute = FieldName.media_reference_attribute
    quality_score = FieldName.quality_score
    place_access_attribute = FieldName.place_access_attribute
    alcohol_service_attribute = FieldName.alcohol_service_attribute
    amenities_attribute = FieldName.amenities_attribute
    basic_info_attribute = FieldName.basic_info_attribute
    other_information = FieldName.other_information
    electric_charge_attribute = FieldName.electric_charge_attribute
    hotel_attribute = FieldName.hotel_attribute
    location_information = FieldName.location_information
    parking_attribute = FieldName.parking_attribute
    restaurant_attribute = FieldName.restaurant_attribute
    transit_attribute = FieldName.transit_attribute
    vehicle_services_attribute = FieldName.vehicle_services_attribute
    address = FieldName.address
    location = FieldName.location
    truck_attribute = FieldName.truck_attribute
    fuel_type_attribute = FieldName.fuel_type_attribute
    social_signal = FieldName.social_signal
    port_attribute = FieldName.port_attribute
    safety_camera = FieldName.safety_camera
    black_spot = FieldName.black_spot
    match_level_attribute = FieldName.match_level_attribute
    affiliation_attribute = FieldName.affiliation_attribute
    office_type_attribute = FieldName.office_type_attribute
    note_type_attribute = FieldName.note_type_attribute
    place_category_confidence_attribute = FieldName.place_category_confidence_attribute
    popularity_attribute = FieldName.popularity_attribute
    vendor_url_attribute = FieldName.vendor_url_attribute
