"""CRM event definitions."""

from __future__ import annotations

from simorgh.apps.events.bus import register_event


def register_all() -> None:
    """Register all CRM domain events into the event bus registry."""

    # Lead events
    register_event(
        "crm.lead.created",
        description="A new lead was created.",
        payload_keys=("lead_id", "tenant_id", "owner_id"),
    )
    register_event(
        "crm.lead.qualified",
        description="A lead was qualified into an opportunity.",
        payload_keys=("lead_id", "opportunity_id", "tenant_id", "actor_id"),
    )
    register_event(
        "crm.lead.lost",
        description="A lead was marked as lost.",
        payload_keys=("lead_id", "tenant_id", "actor_id"),
    )

    # Opportunity events
    register_event(
        "crm.opportunity.created",
        description="A new opportunity was created.",
        payload_keys=("opportunity_id", "tenant_id", "owner_id"),
    )
    register_event(
        "crm.opportunity.stage_changed",
        description="An opportunity was moved to a different pipeline stage.",
        payload_keys=("opportunity_id", "stage_id", "tenant_id", "actor_id"),
    )
    register_event(
        "crm.opportunity.won",
        description="An opportunity was marked as won.",
        payload_keys=("opportunity_id", "tenant_id", "actor_id"),
    )
    register_event(
        "crm.opportunity.lost",
        description="An opportunity was marked as lost.",
        payload_keys=("opportunity_id", "tenant_id", "actor_id"),
    )
