package service // ProposalEventKind names a proposal lifecycle event. The values equal the // graph WebhookEvent enum values so the surface maps them without a table. type ProposalEventKind string const ( EventProposalOpened ProposalEventKind = "PROPOSAL_OPENED" EventProposalMerged ProposalEventKind = "PROPOSAL_MERGED" EventProposalRejected ProposalEventKind = "PROPOSAL_REJECTED" ) // EventSink receives proposal lifecycle events for out-of-band delivery // (webhooks). It is optional: a Service with no sink emits nothing. The sink // must not block — implementations enqueue and return. type EventSink interface { ProposalEvent(kind ProposalEventKind, p Proposal) }