"""Hospitality event type contracts (publish-only) — Phase 12.0."""
from __future__ import annotations

import enum


class HospitalityEventType(str, enum.Enum):
    VENUE_CREATED = "hospitality.venue.created"
    VENUE_UPDATED = "hospitality.venue.updated"
    BRANCH_CREATED = "hospitality.branch.created"
    BRANCH_UPDATED = "hospitality.branch.updated"
    DINING_AREA_CREATED = "hospitality.dining_area.created"
    TABLE_CREATED = "hospitality.table.created"
    MENU_CREATED = "hospitality.menu.created"
    MENU_UPDATED = "hospitality.menu.updated"
    MENU_CATEGORY_CREATED = "hospitality.menu_category.created"
    MENU_ITEM_CREATED = "hospitality.menu_item.created"
    BUNDLE_DEFINITION_CREATED = "hospitality.bundle_definition.created"
    TENANT_BUNDLE_ACTIVATED = "hospitality.tenant_bundle.activated"
    TENANT_BUNDLE_DEACTIVATED = "hospitality.tenant_bundle.deactivated"
    FEATURE_TOGGLE_UPSERTED = "hospitality.feature_toggle.upserted"
    ROLE_CREATED = "hospitality.role.created"
    PERMISSION_CREATED = "hospitality.permission.created"
    CONFIGURATION_CREATED = "hospitality.configuration.created"
    CONFIGURATION_UPDATED = "hospitality.configuration.updated"
    HOSPITALITY_EVENT_CREATED = "hospitality.hospitality_event.created"
    SETTING_UPSERTED = "hospitality.setting.upserted"

    # Phase 12.1 — Digital Menu Catalog
    ALLERGEN_CREATED = "hospitality.allergen.created"
    MODIFIER_GROUP_CREATED = "hospitality.modifier_group.created"
    MODIFIER_OPTION_CREATED = "hospitality.modifier_option.created"
    MENU_ITEM_MODIFIER_LINKED = "hospitality.menu_item_modifier.linked"
    MENU_ITEM_ALLERGEN_LINKED = "hospitality.menu_item_allergen.linked"
    AVAILABILITY_WINDOW_CREATED = "hospitality.availability_window.created"
    MENU_MEDIA_REF_CREATED = "hospitality.menu_media_ref.created"
    MENU_LOCALIZATION_UPSERTED = "hospitality.menu_localization.upserted"

    # Phase 12.2 — QR Menu & QR Ordering shells
    QR_CODE_CREATED = "hospitality.qr_code.created"
    QR_MENU_SESSION_CREATED = "hospitality.qr_menu_session.created"
    QR_ORDERING_SESSION_CREATED = "hospitality.qr_ordering_session.created"
    QR_ORDERING_SESSION_SUBMITTED = "hospitality.qr_ordering_session.submitted"
    CART_CREATED = "hospitality.cart.created"
    CART_LINE_ADDED = "hospitality.cart_line.added"

    # Phase 12.3 — Table Service & Reservations
    RESERVATION_CREATED = "hospitality.reservation.created"
    RESERVATION_STATUS_CHANGED = "hospitality.reservation.status_changed"
    TABLE_ASSIGNMENT_CREATED = "hospitality.table_assignment.created"
    SERVICE_REQUEST_CREATED = "hospitality.service_request.created"
    WAITLIST_ENTRY_CREATED = "hospitality.waitlist_entry.created"

    # Phase 12.4 — POS Lite
    POS_REGISTER_CREATED = "hospitality.pos_register.created"
    POS_SHIFT_OPENED = "hospitality.pos_shift.opened"
    POS_SHIFT_CLOSED = "hospitality.pos_shift.closed"
    POS_TICKET_CREATED = "hospitality.pos_ticket.created"
    POS_TICKET_VOIDED = "hospitality.pos_ticket.voided"
    POS_TICKET_LINE_ADDED = "hospitality.pos_ticket_line.added"

    # Phase 12.5 — POS Pro
    POS_PAYMENT_RECORDED = "hospitality.pos_payment.recorded"
    POS_DISCOUNT_APPLIED = "hospitality.pos_discount.applied"
    POS_TAX_LINE_ADDED = "hospitality.pos_tax_line.added"
    POS_FLOOR_PLAN_CREATED = "hospitality.pos_floor_plan.created"
    POS_STATION_CREATED = "hospitality.pos_station.created"

    # Phase 12.6 — Kitchen
    KITCHEN_STATION_CREATED = "hospitality.kitchen_station.created"
    KITCHEN_TICKET_CREATED = "hospitality.kitchen_ticket.created"
    KITCHEN_TICKET_STATUS_CHANGED = "hospitality.kitchen_ticket.status_changed"
    KITCHEN_TICKET_ITEM_ADDED = "hospitality.kitchen_ticket_item.added"

    # Phase 12.7 — Connectors
    CONNECTOR_REGISTRATION_CREATED = "hospitality.connector_registration.created"
    CONNECTOR_DISPATCH_CREATED = "hospitality.connector_dispatch.created"
    CONNECTOR_DISPATCH_STATUS_CHANGED = "hospitality.connector_dispatch.status_changed"

    # Phase 12.8 — Analytics
    ANALYTICS_REPORT_DEFINITION_CREATED = "hospitality.analytics_report_definition.created"
    ANALYTICS_SNAPSHOT_REFRESHED = "hospitality.analytics_snapshot.refreshed"
