/**
 * Club domain events — discriminated union (FDS §6.7).
 *
 *   ensure_membership_requested:
 *     - if no row exists       → INACTIVE→ACTIVE create
 *     - if INACTIVE row exists → reactivate
 *     - if ACTIVE row exists   → no-op
 *
 * Pure module: no imports from @/server/db, do-client, outbox-producer, payments, fetch.
 */

export type ClubMembershipState = 'NEW' | 'INACTIVE' | 'ACTIVE';

export type EnsureMembershipRequestedEvent = {
  kind: 'ensure_membership_requested';
  userId: string;
  vendorId: string;
  joinedViaOrderLineId: string;
  at: Date;
};

export type ClubEvent = EnsureMembershipRequestedEvent;
