"""Domain signals emitted by the SME-Hub onboarding subprocess (SP1).

Receivers are intentionally external — M&EL listens for `smehub_baseline_initialised`
and downstream submodules (incubation, linkage, investment) listen for the
verification signals to update directories and matchmaking caches.
"""
import django.dispatch

# User registration -------------------------------------------------------
smehub_user_registered = django.dispatch.Signal()
"""kwargs: registration (RegistrationRecord), email (str), role (str)"""

smehub_email_verified = django.dispatch.Signal()
"""kwargs: user (CustomUser), registration (RegistrationRecord)"""

# Entrepreneur lifecycle -------------------------------------------------
smehub_entrepreneur_submitted = django.dispatch.Signal()
"""kwargs: profile (EntrepreneurProfile)"""

smehub_entrepreneur_verified = django.dispatch.Signal()
"""kwargs: profile (EntrepreneurProfile), by_user (CustomUser)"""

smehub_entrepreneur_rejected = django.dispatch.Signal()
"""kwargs: profile (EntrepreneurProfile), by_user (CustomUser), reason (str)"""

smehub_entrepreneur_more_info_requested = django.dispatch.Signal()
"""kwargs: profile (EntrepreneurProfile), by_user (CustomUser), message (str)"""

# Business lifecycle -----------------------------------------------------
smehub_business_registered = django.dispatch.Signal()
"""kwargs: business (Business)"""

smehub_business_verified = django.dispatch.Signal()
"""kwargs: business (Business), by_user (CustomUser)"""

smehub_business_rejected = django.dispatch.Signal()
"""kwargs: business (Business), by_user (CustomUser), reason (str)"""

smehub_business_revoked = django.dispatch.Signal()
"""kwargs: business (Business), by_user (CustomUser), reason (str)"""

# AIH affiliation & M&E baseline ----------------------------------------
smehub_aih_affiliation_recorded = django.dispatch.Signal()
"""kwargs: business (Business), affiliation (AIHAffiliation)"""

smehub_baseline_initialised = django.dispatch.Signal()
"""Emitted exactly once per business when the M&E baseline is locked.

kwargs: business (Business), baseline (BusinessBaseline), entrepreneur (EntrepreneurProfile)
"""

# Mentor / Investor / ServiceProvider / Partner / Buyer profiles ---------
smehub_role_profile_verified = django.dispatch.Signal()
"""kwargs: profile (any of the role profile models), by_user (CustomUser)"""

smehub_role_profile_rejected = django.dispatch.Signal()
"""kwargs: profile, by_user (CustomUser), reason (str)"""

# Innovation lifecycle (Phase 6.1) ---------------------------------------
smehub_innovation_drafted = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser)"""

smehub_innovation_submitted = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser)"""

smehub_innovation_evaluator_assigned = django.dispatch.Signal()
"""kwargs: innovation (Innovation), assignment (EvaluatorAssignment), by_user (CustomUser)"""

smehub_innovation_vetting_started = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser)"""

smehub_innovation_scored = django.dispatch.Signal()
"""kwargs: innovation (Innovation), vetting_record (VettingRecord), evaluator (CustomUser)"""

smehub_innovation_revisions_requested = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser), feedback (str)"""

smehub_innovation_approved = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser)"""

smehub_innovation_rejected = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser), reason (str)"""

smehub_innovation_published = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser)"""

smehub_innovation_withdrawn = django.dispatch.Signal()
"""kwargs: innovation (Innovation), by_user (CustomUser), reason (str)"""
