"""Event names dispatched by the module lifecycle."""

from __future__ import annotations

from simorgh.apps.events.bus import register_event

register_event(
    "modules.installed",
    description="A module manifest has been installed for a tenant.",
    payload_keys=("tenant_id", "module", "version"),
)
register_event(
    "modules.enabled",
    description="A previously disabled module has been enabled for a tenant.",
    payload_keys=("tenant_id", "module", "version"),
)
register_event(
    "modules.disabled",
    description="An enabled module has been disabled for a tenant.",
    payload_keys=("tenant_id", "module", "version"),
)
register_event(
    "modules.upgraded",
    description="A module has been upgraded to a new version for a tenant.",
    payload_keys=("tenant_id", "module", "from_version", "to_version"),
)
register_event(
    "modules.rolled_back",
    description="A module install/upgrade has been rolled back for a tenant.",
    payload_keys=("tenant_id", "module", "to_version"),
)
register_event(
    "modules.feature_flag_changed",
    description="A feature flag value changed for a tenant or user.",
    payload_keys=("tenant_id", "module", "flag", "enabled"),
)
register_event(
    "modules.feature_granted",
    description="A feature entitlement was granted (admin or auto-include).",
    payload_keys=("tenant_id", "module", "feature", "source"),
)
register_event(
    "modules.feature_revoked",
    description="A feature entitlement was revoked.",
    payload_keys=("tenant_id", "module", "feature"),
)
register_event(
    "modules.feature_purchased",
    description="A tenant or user purchased a paid feature.",
    payload_keys=("tenant_id", "module", "feature"),
)
register_event(
    "modules.feature_toggled",
    description="An entitled feature was toggled on or off.",
    payload_keys=("tenant_id", "module", "feature", "enabled"),
)
