"""Views & Visualization — event registrations.

Modules can subscribe to these events to react to view, dashboard, and chart
lifecycle changes without coupling to the visualization package directly.
"""

from __future__ import annotations

from simorgh.apps.events.bus import register_event


def register_all() -> None:
    register_event(
        "visualization.view_created",
        description="A new view configuration was created.",
        payload_keys=("tenant_id", "view_id", "entity_name", "view_type"),
    )
    register_event(
        "visualization.view_updated",
        description="An existing view configuration was updated.",
        payload_keys=("tenant_id", "view_id", "entity_name", "view_type"),
    )
    register_event(
        "visualization.view_deleted",
        description="A view configuration was deleted.",
        payload_keys=("tenant_id", "view_id", "entity_name", "view_type"),
    )
    register_event(
        "visualization.dashboard_created",
        description="A new dashboard was created.",
        payload_keys=("tenant_id", "dashboard_id", "name"),
    )
    register_event(
        "visualization.dashboard_updated",
        description="An existing dashboard was updated.",
        payload_keys=("tenant_id", "dashboard_id", "name"),
    )
    register_event(
        "visualization.dashboard_deleted",
        description="A dashboard was deleted.",
        payload_keys=("tenant_id", "dashboard_id", "name"),
    )
    register_event(
        "visualization.chart_created",
        description="A new chart configuration was created.",
        payload_keys=("tenant_id", "chart_id", "entity_name", "chart_type"),
    )
    register_event(
        "visualization.chart_updated",
        description="An existing chart configuration was updated.",
        payload_keys=("tenant_id", "chart_id", "entity_name", "chart_type"),
    )
    register_event(
        "visualization.chart_deleted",
        description="A chart configuration was deleted.",
        payload_keys=("tenant_id", "chart_id", "entity_name", "chart_type"),
    )
    register_event(
        "visualization.widget_added",
        description="One or more widgets were added/updated on a dashboard.",
        payload_keys=("tenant_id", "dashboard_id", "widget_id", "widget_type", "widget_count"),
    )
