"""Domain signals emitted by the SME-Hub linkage subprocess (SP3a).

M&EL listens for the milestone signals (FRSME-MEI004 / FRSME-MPL020).
The marketplace + matchmaking refresh code subscribes to business updates
to invalidate cached recommendations.
"""
import django.dispatch

# Directories ----------------------------------------------------------
smehub_directory_entry_verified = django.dispatch.Signal()
"""kwargs: entry (Partner/ServiceProviderEntry), by_user (CustomUser)"""

# Connections ----------------------------------------------------------
smehub_connection_requested = django.dispatch.Signal()
"""kwargs: connection_request (ConnectionRequest)"""

smehub_connection_accepted = django.dispatch.Signal()
"""kwargs: connection_request (ConnectionRequest), connection (Connection), by_user (CustomUser)"""

smehub_connection_declined = django.dispatch.Signal()
"""kwargs: connection_request (ConnectionRequest), by_user (CustomUser), reason (str)"""

smehub_connection_ended = django.dispatch.Signal()
"""kwargs: connection (Connection), by_user (CustomUser), reason (str)"""

# MoUs ----------------------------------------------------------------
smehub_mou_drafted = django.dispatch.Signal()
"""kwargs: mou (MoU), by_user (CustomUser)"""

smehub_mou_formalised = django.dispatch.Signal()
"""kwargs: mou (MoU), by_user (CustomUser)"""

smehub_mou_amended = django.dispatch.Signal()
"""kwargs: mou (MoU), parent_mou (MoU), by_user (CustomUser)"""

# Advisory ------------------------------------------------------------
smehub_advisory_booked = django.dispatch.Signal()
"""kwargs: session (AdvisorySession)"""

smehub_advisory_completed = django.dispatch.Signal()
"""kwargs: session (AdvisorySession)"""

smehub_advisory_cancelled = django.dispatch.Signal()
"""kwargs: session (AdvisorySession), reason (str)"""

# Recommendation refresh trigger -------------------------------------
smehub_recommendation_refresh_requested = django.dispatch.Signal()
"""Signals that an entrepreneur's matchmaking inputs have changed.

kwargs: entrepreneur (EntrepreneurProfile), trigger (str)
"""
