export type ReferralStatus = 'pending' | 'qualified' | 'rejected' | 'quarantined';
export type ReferralEarnSourceType = 'order_line' | 'purchase';

export type ReferralEvent =
  | {
      kind: 'fraud_blocked';
      referralId: string;
      referrerUserId: string;
      purchaseId: string;
      sourceType: ReferralEarnSourceType;
      at: Date;
    }
  | { kind: 'fraud_held'; referralId: string; at: Date }
  | {
      kind: 'earn_qualified';
      referralId: string;
      refereeUserId: string;
      purchaseId: string;
      amountPaidAgorot: number;
      orderLineId?: string;
    }
  | {
      kind: 'qualified_notification_requested';
      referralId: string;
      referrerUserId: string;
      refereeUserId: string;
      purchaseId: string;
      rewardAgorot: number;
    }
  | {
      kind: 'clawback_executed';
      purchaseId: string;
      refundEventId: string;
      refundFraction: number;
    };
