"""Approval Engine domain event definitions."""

from __future__ import annotations

from simorgh.apps.events.bus import register_event


def register_all() -> None:
    """Register all Approval Engine domain events into the event bus registry."""

    register_event(
        "approval.requested",
        description="A new approval request was submitted.",
        payload_keys=("approval_request_id", "requested_by_id", "tenant_id"),
    )
    register_event(
        "approval.approved",
        description="An approval request was fully approved.",
        payload_keys=("approval_request_id", "tenant_id"),
    )
    register_event(
        "approval.rejected",
        description="An approval request was rejected.",
        payload_keys=("approval_request_id", "tenant_id"),
    )
    register_event(
        "approval.returned",
        description="An approval request was returned for changes.",
        payload_keys=("approval_request_id", "tenant_id"),
    )
    register_event(
        "approval.expired",
        description="An approval request expired before a decision was made.",
        payload_keys=("approval_request_id", "tenant_id"),
    )
    register_event(
        "approval.cancelled",
        description="An approval request was cancelled.",
        payload_keys=("approval_request_id", "cancelled_by_id", "tenant_id"),
    )
    register_event(
        "approval.step_decided",
        description="An approval step was decided.",
        payload_keys=("approval_request_id", "step_id", "decision", "decided_by_id", "tenant_id"),
    )
