/** Application authorization for the native USDG/RHC signing client. */ export declare const RHC_PAYMENT_NETWORK = "eip155:4663"; export declare const RHC_PAYMENT_ASSET = "0x5fc5360d0400a0fd4f2af552add042d716f1d168"; export declare class PaymentPolicyError extends Error { constructor(message: string); } export interface PaymentProposal { readonly url: string; readonly network: typeof RHC_PAYMENT_NETWORK; readonly scheme: "exact"; readonly asset: typeof RHC_PAYMENT_ASSET; readonly payTo: string; readonly amount: string; readonly maxTimeoutSeconds: number; } export interface PaymentPolicy { /** Trusted recipient obtained independently of the HTTP 402 challenge. */ payTo: string; /** USDG atomic units (6 decimals); decimal string or bigint, never float. */ maxAmountAtomic: string | bigint; /** Lifetime authorization budget for this client instance, shared by concurrent calls. */ maxTotalAmountAtomic: string | bigint; /** Whole keyless request deadline, including policy/signing. Default 30 seconds. */ timeoutMs?: number; /** Maximum signed authorization lifetime, 1–300 seconds. Default 60. */ authorizationTtlSeconds?: number; /** Optional additional approval. Only literal true approves; built-in checks still apply. */ beforePayment?: (proposal: Readonly) => boolean | Promise; } export declare function paymentUrl(value: string): URL; /** A reserved amount is released only before a signer has been invoked. */ export declare class PaymentBudget { readonly timeoutMs: number; readonly authorizationTtlSeconds: number; private readonly payTo; private readonly maxAmount; private readonly maxTotal; private readonly approve?; private used; constructor(policy: PaymentPolicy | undefined); /** Reserved plus signer-attempted amount; not a claim about settled on-chain spend. */ get authorizedAmountAtomic(): string; select(challenge: unknown, url: string): Readonly; reserve(proposal: Readonly): { signerInvoked(): void; release(): void; }; checkApproval(proposal: Readonly, signal: AbortSignal): Promise; } /** Observe the losing promise too; a timed-out signer must never trigger a later send. */ export declare function withinDeadline(promise: Promise, signal: AbortSignal): Promise; //# sourceMappingURL=payment-policy.d.ts.map