"""Beauty Business event type contracts (publish-only)."""
from __future__ import annotations

import enum


class BeautyBusinessEventType(str, enum.Enum):
    ORGANIZATION_CREATED = "beauty_business.organization.created"
    ORGANIZATION_UPDATED = "beauty_business.organization.updated"
    BRANCH_CREATED = "beauty_business.branch.created"
    BRANCH_UPDATED = "beauty_business.branch.updated"
    EXTERNAL_PROVIDER_REGISTERED = "beauty_business.external_provider.registered"
    EXTERNAL_PROVIDER_UPDATED = "beauty_business.external_provider.updated"
    BOOKING_ENGINE_REGISTERED = "beauty_business.booking_engine.registered"
    BOOKING_ENGINE_UPDATED = "beauty_business.booking_engine.updated"
    CONFIGURATION_CREATED = "beauty_business.configuration.created"
    CONFIGURATION_UPDATED = "beauty_business.configuration.updated"
    SETTING_UPSERTED = "beauty_business.setting.upserted"

    # Phase 14.1 — Booking
    STAFF_SCHEDULE_CREATED = "beauty_business.staff_schedule.created"
    STAFF_AVAILABILITY_CREATED = "beauty_business.staff_availability.created"
    SCHEDULE_EXCEPTION_CREATED = "beauty_business.schedule_exception.created"
    APPOINTMENT_TYPE_CREATED = "beauty_business.appointment_type.created"
    APPOINTMENT_CREATED = "beauty_business.appointment.created"
    APPOINTMENT_UPDATED = "beauty_business.appointment.updated"
    APPOINTMENT_CONFIRMED = "beauty_business.appointment.confirmed"
    APPOINTMENT_CHECKED_IN = "beauty_business.appointment.checked_in"
    APPOINTMENT_STARTED = "beauty_business.appointment.started"
    APPOINTMENT_COMPLETED = "beauty_business.appointment.completed"
    APPOINTMENT_CANCELLED = "beauty_business.appointment.cancelled"
    APPOINTMENT_NO_SHOW = "beauty_business.appointment.no_show"
    APPOINTMENT_STATUS_CHANGED = "beauty_business.appointment.status_changed"
    WAITING_LIST_ENTRY_CREATED = "beauty_business.waiting_list_entry.created"

    # Phase 14.2 — Salon
    TREATMENT_ROOM_CREATED = "beauty_business.treatment_room.created"
    STATION_CREATED = "beauty_business.station.created"
    BRANCH_OPERATING_HOURS_CREATED = "beauty_business.branch_operating_hours.created"
    BRANCH_POLICY_CREATED = "beauty_business.branch_policy.created"

    # Phase 14.3 — Catalog
    SERVICE_CATEGORY_CREATED = "beauty_business.service_category.created"
    SERVICE_CREATED = "beauty_business.service.created"
    SERVICE_VARIANT_CREATED = "beauty_business.service_variant.created"
    BRANCH_SERVICE_ASSIGNMENT_CREATED = "beauty_business.branch_service_assignment.created"
    SERVICE_MEDIA_REF_CREATED = "beauty_business.service_media_ref.created"

    # Phase 14.4 — Customers
    CUSTOMER_PROFILE_CREATED = "beauty_business.customer_profile.created"
    CUSTOMER_PREFERENCE_CREATED = "beauty_business.customer_preference.created"
    VISIT_HISTORY_ENTRY_CREATED = "beauty_business.visit_history_entry.created"
    CUSTOMER_DOCUMENT_REF_CREATED = "beauty_business.customer_document_ref.created"

    # Phase 14.5 — Packages & Memberships
    PACKAGE_DEFINITION_CREATED = "beauty_business.package_definition.created"
    CUSTOMER_PACKAGE_CREATED = "beauty_business.customer_package.created"
    PACKAGE_REDEMPTION_CREATED = "beauty_business.package_redemption.created"
    MEMBERSHIP_PLAN_CREATED = "beauty_business.membership_plan.created"
    CUSTOMER_MEMBERSHIP_CREATED = "beauty_business.customer_membership.created"
    MEMBERSHIP_STATUS_CHANGED = "beauty_business.membership.status_changed"

    # Phase 14.6 — Staff & Commissions
    STAFF_PROFILE_CREATED = "beauty_business.staff_profile.created"
    STAFF_SKILL_CREATED = "beauty_business.staff_skill.created"
    STAFF_CERTIFICATE_CREATED = "beauty_business.staff_certificate.created"
    COMMISSION_RULE_CREATED = "beauty_business.commission_rule.created"
    COMMISSION_ENTRY_CREATED = "beauty_business.commission_entry.created"

    # Phase 14.7 — Marketing & Integrations
    MARKETING_CAMPAIGN_CREATED = "beauty_business.marketing_campaign.created"
    LOYALTY_INTEGRATION_CONFIG_CREATED = "beauty_business.loyalty_integration_config.created"
    COMMUNICATION_INTEGRATION_CONFIG_CREATED = "beauty_business.communication_integration_config.created"
    INTEGRATION_DISPATCH_CREATED = "beauty_business.integration_dispatch.created"
    INTEGRATION_DISPATCH_STATUS_CHANGED = "beauty_business.integration_dispatch.status_changed"

    # Back-compat aliases
    ROUTING_ENGINE_REGISTERED = BOOKING_ENGINE_REGISTERED
    ROUTING_ENGINE_UPDATED = BOOKING_ENGINE_UPDATED
