from simorgh.apps.modules.registry import (
    CapabilitySpec,
    FeatureFlagSpec,
    FeatureSpec,
    ModuleManifest,
    register_module,
)

register_module(
    ModuleManifest(
        name="escalation_engine",
        version=1,
        label_key="escalation_engine.module_label",
        domain="platform",
        description="Escalation Engine — cross-module escalation management "
        "with time-based, rule-based, hierarchy-based, and role-based escalation "
        "across assignments, approvals, tasks, and workflow steps",
        capabilities=(
            CapabilitySpec(slug="management", label_key="escalation_engine.capabilities.management",
                          description="Escalation rules and tracking", icon="alert-circle"),
        ),
        features=(
            FeatureSpec(
                code="management.escalation_rule_management",
                label_key="escalation_engine.features.rule_management",
                scope="tenant",
                default_enabled=True,
                description="Create and manage escalation rules with configurable triggers and targets",
            ),
            FeatureSpec(
                code="management.escalation_instance_tracking",
                label_key="escalation_engine.features.instance_tracking",
                scope="tenant",
                default_enabled=True,
                description="Track escalation instances per entity with multi-level support",
            ),
            FeatureSpec(
                code="management.escalation_hierarchy",
                label_key="escalation_engine.features.hierarchy",
                scope="tenant",
                default_enabled=True,
                description="Hierarchy-based escalation up the organizational chain",
            ),
            FeatureSpec(
                code="management.escalation_time_based",
                label_key="escalation_engine.features.time_based",
                scope="tenant",
                default_enabled=True,
                description="Time-based automatic escalation triggers",
            ),
        ),
        feature_flags=(
            FeatureFlagSpec(
                name="allow_multi_level_escalation",
                label_key="escalation_engine.ff.allow_multi_level_escalation",
                default=True,
                scope="tenant",
            ),
            FeatureFlagSpec(
                name="allow_event_based_escalation",
                label_key="escalation_engine.ff.allow_event_based_escalation",
                default=False,
                scope="tenant",
            ),
        ),
        permissions=(
            "escalation_engine.rule.view",
            "escalation_engine.rule.create",
            "escalation_engine.rule.update",
            "escalation_engine.rule.delete",
            "escalation_engine.instance.view",
            "escalation_engine.instance.escalate",
            "escalation_engine.instance.resolve",
            "escalation_engine.instance.cancel",
            "escalation_engine.log.view",
        ),
        events=(
            "escalation.triggered",
            "escalation.escalated",
            "escalation.resolved",
            "escalation.cancelled",
        ),
    )
)
