import type { ArkmeBillingPaymentAction, ArkmeBillingOrderSnapshot, ArkmeBillingPaymentMethod, ArkmeBillingProduct, ArkmeBillingOrderStatus } from '../types.js'; export interface ArkmeCheckoutAttempt { productId: string; paymentMethod: ArkmeBillingPaymentMethod; clientRequestId: string; } type ArkmeBillingCrypto = Pick & Partial>; export declare function createBillingClientRequestId(source?: ArkmeBillingCrypto): string; export declare function selectDefaultBillingProduct(products: ArkmeBillingProduct[]): ArkmeBillingProduct | undefined; export declare function billingPaymentAvailable(product: ArkmeBillingProduct | undefined, paymentMethod: ArkmeBillingPaymentMethod): boolean; export declare function activateBillingPaymentAction(action: ArkmeBillingPaymentAction | undefined, openURL: (url: string) => void): boolean; export declare function createBillingOrderWithProcessingRetry(attempt: ArkmeCheckoutAttempt, createOrder: (input: ArkmeCheckoutAttempt) => Promise, wait?: (millis: number) => Promise): Promise; export declare function checkoutAttempt(previous: ArkmeCheckoutAttempt | undefined, productId: string, paymentMethod: ArkmeBillingPaymentMethod, createId: () => string): ArkmeCheckoutAttempt; export declare function checkoutAttemptAfterOrder(attempt: ArkmeCheckoutAttempt | undefined, status: ArkmeBillingOrderStatus): ArkmeCheckoutAttempt | undefined; export type ArkmeBillingOrderScreen = ArkmeBillingOrderStatus; export declare function billingOrderScreen(order: Pick, nowMillis: number): ArkmeBillingOrderScreen; export declare function billingQrDataUrl(content: string | undefined): string; interface ArkmeBillingOrderPollerOptions { readStatus(orderId: string): Promise; onUpdate(order: ArkmeBillingOrderSnapshot): void; onError(error: unknown, retry: ArkmeBillingPollRetry): void; onExpired?(): void; intervalMillis?: number; now?: () => number; } export interface ArkmeBillingPollRetry { willRetry: boolean; retryInMillis?: number; } export declare class ArkmeBillingOrderPoller { private readonly options; private timer; private generation; private refresh; private readonly intervalMillis; private readonly now; constructor(options: ArkmeBillingOrderPollerOptions); start(orderId: string, expiresAtMillis: number, requestedIntervalMillis?: number, initialStatus?: ArkmeBillingOrderStatus): void; refreshNow(): void; stop(): void; } export {}; //# sourceMappingURL=arkme-billing.d.ts.map