// ─── Webhook Event Map ────────────────────────────────────────────────────────
// Defines the canonical set of outbound webhook event names and provides a
// translation map from internal camelCase socket events to dot-style webhook
// event names.

export const WEBHOOK_EVENTS = [
  'client.created',
  'client.updated',
  'client.archived',
  'client.merged',
  'interest.created',
  'interest.stage_changed',
  'interest.berth_linked',
  'interest.berth_unlinked',
  'interest.berth_link_updated',
  'berth.status_changed',
  'berth.updated',
  'document.sent',
  'document.signed',
  'document.completed',
  'document.expired',
  'expense.created',
  'expense.updated',
  'invoice.created',
  'invoice.sent',
  'invoice.paid',
  'invoice.overdue',
  'registration.new',
  'yacht.created',
  'yacht.updated',
  'yacht.ownership_transferred',
  'yacht.archived',
  'company.created',
  'company.updated',
  'company.archived',
  'company_membership.added',
  'company_membership.updated',
  'company_membership.ended',
  'berth_tenancy.created',
  'berth_tenancy.activated',
  'berth_tenancy.ended',
  'berth_tenancy.cancelled',
] as const;

export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];

/** Maps internal socket event names to outbound webhook event names. */
export const INTERNAL_TO_WEBHOOK_MAP: Record<string, WebhookEvent> = {
  'client:created': 'client.created',
  'client:updated': 'client.updated',
  'client:archived': 'client.archived',
  'client:merged': 'client.merged',
  'interest:created': 'interest.created',
  'interest:stageChanged': 'interest.stage_changed',
  'interest:berthLinked': 'interest.berth_linked',
  'interest:berthUnlinked': 'interest.berth_unlinked',
  'interest:berthLinkUpdated': 'interest.berth_link_updated',
  'berth:statusChanged': 'berth.status_changed',
  'berth:updated': 'berth.updated',
  'document:sent': 'document.sent',
  'document:signed': 'document.signed',
  'document:completed': 'document.completed',
  'document:expired': 'document.expired',
  'expense:created': 'expense.created',
  'expense:updated': 'expense.updated',
  'invoice:created': 'invoice.created',
  'invoice:sent': 'invoice.sent',
  'invoice:paid': 'invoice.paid',
  'invoice:overdue': 'invoice.overdue',
  'registration:new': 'registration.new',
  'yacht:created': 'yacht.created',
  'yacht:updated': 'yacht.updated',
  'yacht:ownership_transferred': 'yacht.ownership_transferred',
  'yacht:archived': 'yacht.archived',
  'company:created': 'company.created',
  'company:updated': 'company.updated',
  'company:archived': 'company.archived',
  'company_membership:added': 'company_membership.added',
  'company_membership:updated': 'company_membership.updated',
  'company_membership:ended': 'company_membership.ended',
  'berth_tenancy:created': 'berth_tenancy.created',
  'berth_tenancy:activated': 'berth_tenancy.activated',
  'berth_tenancy:ended': 'berth_tenancy.ended',
  'berth_tenancy:cancelled': 'berth_tenancy.cancelled',
};
