/**
 * Authorize.Net Accept Hosted Payment Integration
 *
 * Uses the Accept Hosted payment form (iframe/redirect) for PCI-compliant checkout.
 * API reference: https://developer.authorize.net/api/reference/index.html
 *
 * Flow:
 * 1. Backend creates a hosted payment page token via getHostedPaymentPageRequest
 * 2. Frontend redirects user to Authorize.Net hosted form
 * 3. On payment completion, Authorize.Net posts a Silent Post webhook
 * 4. Backend also has a verify endpoint as fallback (getTransactionDetails)
 */
declare const AUTHNET_SANDBOX: boolean;
declare const HOSTED_FORM_URL: string;
export declare const PRODUCTS: Record<string, {
    name: string;
    amount: number;
    amountDollars: string;
    picks: number;
    recurring?: boolean;
    intervalMonths?: number;
}>;
/**
 * Create a hosted payment page token for one-time payments.
 * Returns a token that the frontend uses to redirect to Accept Hosted.
 */
export declare function createCheckoutSession(data: {
    userId: string;
    email: string;
    productType: 'single_pick' | 'daily_pass' | 'monthly_pass';
    successUrl: string;
    cancelUrl: string;
    clientTimezone?: string;
    purchaseIp?: string;
    attribution?: any;
}): Promise<{
    token: string;
    formUrl: string;
}>;
/**
 * Verify a transaction by ID using getTransactionDetailsRequest.
 * Called from the /verify endpoint after user returns from checkout.
 */
export declare function verifyTransaction(transactionId: string): Promise<{
    paid: boolean;
    transactionId: string;
    invoiceNumber: string;
    amountCents: number;
    responseCode: string;
} | null>;
/**
 * Look up a pending order by invoice number.
 */
export declare function getPendingOrder(invoiceNumber: string): Promise<{
    user_id: string;
    product_type: string;
    amount_cents: number;
    picks_granted: number;
    client_timezone: string;
    purchase_ip: string;
    status: string;
    attribution: any;
} | null>;
/**
 * Mark a pending order as completed.
 */
export declare function completePendingOrder(invoiceNumber: string, transactionId: string): Promise<void>;
/**
 * Validate Authorize.Net webhook signature (SHA-512 HMAC).
 * Authorize.Net signs webhooks with: SHA512(SIGNATURE_KEY + LOGIN_ID + transId + amount)
 */
export declare function validateWebhookSignature(xSignature: string, transId: string, amount: string): boolean;
/**
 * Parse Authorize.Net Silent Post / Webhook notification body.
 * Silent Post sends form-encoded data; webhooks send JSON.
 */
export declare function parseWebhookPayload(body: any): {
    transactionId: string;
    invoiceNumber: string;
    responseCode: string;
    amount: string;
    userId: string;
    productType: string;
    picksGranted: number;
    clientTimezone: string;
    purchaseIp: string;
} | null;
export { AUTHNET_SANDBOX, HOSTED_FORM_URL };
//# sourceMappingURL=authnet.d.ts.map