import { randomUUID } from 'node:crypto';

export const idempotency = {
  customer: (userId: string) => `customer:user:${userId}`,
  purchaseIntent: (purchaseId: string) => `pi:purchase:${purchaseId}`,
  /** Stable per claim — keyed on purchase + amount from claimRefundIntent. */
  refund: (purchaseId: string, amountAgorot: number) => `re:purchase:${purchaseId}:${amountAgorot}`,
  account: (vendorId: string) => `acct:vendor:${vendorId}`,
  accountLink: (vendorId: string) => `link:vendor:${vendorId}:${randomUUID()}`,
  accountSession: (vendorId: string) =>
    `session:vendor:${vendorId}:${Math.floor(Date.now() / 300_000)}`,
  hold: (reservationId: string) => `hold:reservation:${reservationId}`,
  captureHold: (holdId: string) => `cap:hold:${holdId}`,
  releaseHold: (holdId: string) => `cancel:hold:${holdId}`,
  setupIntent: (userId: string) => `si:user:${userId}:${Math.floor(Date.now() / 60_000)}`,
};
