/**
 * Violation domain effects.
 *
 * Effect ordering in apply-effects.ts:
 *   1. pause-vendor-deals (DB UPDATE deals ACTIVE → PAUSED for vendor)
 *   2. set-account-state  (DB UPDATE vendor.accountState)
 *   3. insert-admin-action (audit row)
 *   4. send-policy-email   (best-effort)
 */

export type AdminActionKind = 'FREEZE' | 'UNFREEZE' | 'BAN';
export type PolicyEmailAction = 'WARNING' | 'FREEZE' | 'BAN';

export type ViolationEffect =
  | {
      kind: 'pause-vendor-deals';
      vendorId: string;
    }
  | {
      kind: 'set-account-state';
      vendorId: string;
      nextState: 'ACTIVE' | 'FROZEN' | 'BANNED';
    }
  | {
      kind: 'insert-admin-action';
      adminId: string;
      vendorId: string;
      action: AdminActionKind;
      note: string;
    }
  | {
      kind: 'send-policy-email';
      vendorId: string;
      action: PolicyEmailAction;
      reason: string;
      nextSteps: string;
    };
