"""Domain signals emitted by the SME-Hub showcasing subprocess (SP4).

Every milestone in the showcasing / deal-room lifecycle emits a signal
that M&EL receivers translate into tracking-record updates (FRSME-MEI005,
FRSME-ISD020). The matchmaking refresh code subscribes to relevant events
to invalidate cached recommendations.
"""
import django.dispatch

# Showcase events ---------------------------------------------------------
smehub_showcase_created = django.dispatch.Signal()
"""kwargs: event (ShowcaseEvent), by_user (CustomUser)"""

smehub_showcase_published = django.dispatch.Signal()
"""kwargs: event (ShowcaseEvent), by_user (CustomUser)"""

smehub_showcase_live = django.dispatch.Signal()
"""kwargs: event (ShowcaseEvent), by_user (CustomUser)"""

smehub_showcase_concluded = django.dispatch.Signal()
"""kwargs: event (ShowcaseEvent), by_user (CustomUser)"""

# Innovation challenges ---------------------------------------------------
smehub_challenge_published = django.dispatch.Signal()
"""kwargs: challenge (InnovationChallenge), by_user (CustomUser)"""

smehub_challenge_announced = django.dispatch.Signal()
"""kwargs: challenge (InnovationChallenge), winners (list[ShowcaseApplication])"""

# Showcase applications ---------------------------------------------------
smehub_showcase_application_submitted = django.dispatch.Signal()
"""kwargs: application (ShowcaseApplication)"""

smehub_showcase_participant_confirmed = django.dispatch.Signal()
"""kwargs: application (ShowcaseApplication), by_user (CustomUser)"""

smehub_showcase_application_rejected = django.dispatch.Signal()
"""kwargs: application (ShowcaseApplication), by_user (CustomUser)"""

# Catalogue ---------------------------------------------------------------
smehub_catalogue_published = django.dispatch.Signal()
"""kwargs: entry (InnovationCatalogueEntry), by_user (CustomUser)"""

smehub_catalogue_updated = django.dispatch.Signal()
"""kwargs: entry (InnovationCatalogueEntry), version (int), by_user (CustomUser)"""

# Attendance + scoring ----------------------------------------------------
smehub_attendance_recorded = django.dispatch.Signal()
"""kwargs: attendance (EventAttendance)"""

smehub_pitch_scored = django.dispatch.Signal()
"""kwargs: score (PitchScore)"""

# Deal rooms --------------------------------------------------------------
smehub_deal_room_opened = django.dispatch.Signal()
"""kwargs: deal_room (DealRoom), by_user (CustomUser)"""

smehub_deal_room_message_posted = django.dispatch.Signal()
"""kwargs: message (DealRoomMessage)"""

smehub_deal_room_document_uploaded = django.dispatch.Signal()
"""kwargs: document (DealRoomDocument)"""

smehub_deal_room_expired = django.dispatch.Signal()
"""kwargs: deal_room (DealRoom)"""

smehub_deal_room_closed = django.dispatch.Signal()
"""kwargs: deal_room (DealRoom), by_user (CustomUser), reason (str)"""

smehub_agreement_formalised = django.dispatch.Signal()
"""kwargs: deal_room (DealRoom), agreement (DealAgreement), by_user (CustomUser)"""
