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)
}