import type { DealId, OrderId, OrderLineId, UserId } from '@/server/platform-seams/ids.js';

export type PaymentsFinalizeEffect =
  | {
      kind: 'consume-inventory-reservations';
      holderRefs: [OrderLineId, string];
    }
  | {
      kind: 'confirm-purchase';
      purchaseId: OrderLineId;
      userId?: UserId;
      dealId?: DealId;
    }
  | {
      kind: 'check-sold-out';
      dealId: DealId;
    }
  | {
      kind: 'dispatch-outbox';
    }
  | {
      kind: 'persist-stripe-fee';
      orderId: OrderId;
      stripeFeeAgorot: number | null;
      providerPaymentId: string;
    }
  | {
      kind: 'mark-order-paid';
      orderId: OrderId;
      providerPaymentId: string;
    };
