export interface PurchaseVerifyResponse {
  verified?: boolean;
  picksGranted?: number;
  productType?: string;
  error?: string;
}

export function isVerifiedPurchaseResponse(value: unknown): value is PurchaseVerifyResponse & { verified: true } {
  return Boolean(value && typeof value === 'object' && (value as PurchaseVerifyResponse).verified === true);
}

export function stripPurchaseReturnParams(urlString: string): string {
  const url = new URL(urlString, 'http://localhost');
  ['purchase', 'transId', 'session_id', 'invoiceNumber'].forEach((key) => {
    url.searchParams.delete(key);
  });
  const search = url.searchParams.toString();
  return `${url.pathname}${search ? `?${search}` : ''}${url.hash}`;
}
