import { PublicClient } from 'viem'; import { PaymentRequirementsSchema, PaymentPayloadSchema } from '@wtflabs/x402/types'; export { PaymentPayloadSchema, PaymentRequirementsSchema } from '@wtflabs/x402/types'; import { z } from 'zod'; /** * 支持的支付方式 */ type PaymentMethod = "eip3009" | "permit" | "permit2" | "permit2-witness"; /** * Token 支付能力检测结果 */ interface TokenPaymentCapabilities { /** Token 地址 */ address: string; /** 支持的支付方式列表 */ supportedMethods: PaymentMethod[]; /** 详细检测结果 */ details: { /** 是否支持 EIP-3009 (transferWithAuthorization) */ hasEIP3009: boolean; /** 是否支持 EIP-2612 (permit) */ hasPermit: boolean; /** 是否支持 Permit2 (通用授权) */ hasPermit2Approval: boolean; }; } /** * 完整的 Token 检测结果(包含 name 和 version) */ interface TokenDetectionResult extends TokenPaymentCapabilities { /** Token 名称 */ name: string; /** Token version(用于 EIP-712 签名) */ version: string; } /** * Logger 接口 */ interface Logger { log: (message: string) => void; error: (message: string, error?: unknown) => void; } /** * TokenDetector 配置选项 */ interface TokenDetectorOptions { /** 自定义 logger,默认使用 console */ logger?: Logger | null; } /** * Token 检测器 - 带缓存功能的 SDK * * 主要用于 x402-server,也可以独立使用 */ declare class TokenDetector { /** 缓存存储 (chainId:address -> TokenDetectionResult) */ private cache; /** viem PublicClient */ private client; /** Logger 实例 */ private logger; /** * 构造函数 * * @param client - viem PublicClient * @param options - 可选配置 */ constructor(client: PublicClient, options?: TokenDetectorOptions); /** * 完整检测(同时获取支付能力和 Token 信息) * 优先从缓存读取,缓存未命中时执行检测并缓存结果 * * @param tokenAddress - Token 地址 * @returns 完整的检测结果 */ detect(tokenAddress: string): Promise; /** * 获取推荐的支付方式 * 优先级:eip3009 > permit > permit2 * * @param tokenAddress - Token 地址 * @returns 推荐的支付方式 */ getRecommendedMethod(tokenAddress: string): Promise<"eip3009" | "permit" | "permit2" | null>; /** * 批量初始化(预热缓存) * 并行检测多个 Token 并缓存结果 * * @param tokenAddresses - Token 地址列表 * @returns 检测结果数组 */ initialize(tokenAddresses: string[]): Promise; /** * 清除缓存 * * @param tokenAddress - 可选,指定要清除的 Token 地址 */ clearCache(tokenAddress?: string): Promise; /** * 获取缓存统计 * * @returns 缓存统计信息 */ getCacheStats(): { size: number; keys: string[]; }; /** * 生成缓存键 * * @param tokenAddress - Token 地址 * @returns 缓存键 */ private getCacheKey; } /** * Facilitator 等待策略 */ type WaitUntil = "simulated" | "submitted" | "confirmed"; /** * Facilitator 配置选项 */ interface FacilitatorConfig { /** * 商家地址 (收款地址,支持 EIP 7702) */ recipientAddress: string; /** * 等待策略 * - "simulated": 仅模拟交易 (最快) * - "submitted": 等待交易提交 * - "confirmed": 等待链上确认 (最安全,默认) */ waitUntil?: WaitUntil; /** * Facilitator API 基础 URL (可选) */ baseUrl?: string; /** * API 密钥 (可选) */ apiKey?: string; } /** * 支付负载 */ interface PaymentPayload$1 { x402Version: number; scheme: string; network: string; payload: any; } /** * 支付要求 */ interface PaymentRequirements$1 { scheme: string; network: string; maxAmountRequired: string; resource: string; description: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; asset: string; extra?: Record; } /** * 验证响应 */ interface VerifyResponse { success: boolean; payer?: string; error?: string; errorMessage?: string; } /** * 结算响应 */ interface SettleResponse { success: boolean; transaction?: string; network?: string; error?: string; errorMessage?: string; receipt?: any; } /** * 支持的支付类型响应 */ interface SupportedResponse { kinds: Array<{ x402Version: number; scheme: string; network: string; extra?: Record; }>; } /** * Facilitator 类 * 用于处理支付验证和结算 * * @example * ```typescript * const facilitator = new Facilitator({ * recipientAddress: "0x1234...", * waitUntil: "confirmed", // 可选 * }); * * // 验证支付 * const verifyResult = await facilitator.verify( * paymentPayload, * paymentRequirements * ); * * // 结算支付 * const settleResult = await facilitator.settle( * paymentPayload, * paymentRequirements * ); * * // 获取支持的支付类型 * const supported = await facilitator.supported(); * ``` */ declare class Facilitator { private config; private authHeaders; constructor(config: FacilitatorConfig); /** * 获取 recipient 地址 */ get recipientAddress(): string; /** * 获取等待策略 */ get waitUntil(): WaitUntil; /** * 验证支付 * @param payload 支付负载 * @param requirements 支付要求 * @returns 验证结果 */ verify(payload: PaymentPayload$1, requirements: PaymentRequirements$1): Promise; /** * 结算支付 * @param payload 支付负载 * @param requirements 支付要求 * @param waitUntil 可选的等待策略,覆盖配置中的默认值 * @returns 结算结果 */ settle(payload: PaymentPayload$1, requirements: PaymentRequirements$1, waitUntil?: WaitUntil): Promise; /** * 获取支持的支付类型 * @param filters 可选的过滤条件 * @returns 支持的支付类型列表 */ supported(filters?: { chainId?: number; tokenAddress?: string; }): Promise; /** * 获取完整配置 */ getConfig(): Required; } /** * CreateRequirementsConfig Schema * * @example * ```typescript * const config = { * asset: "0x1234567890abcdef1234567890abcdef12345678", * maxAmountRequired: "1000", * }; * ``` * * @returns CreateRequirementsConfigSchema */ declare const CreateRequirementsConfigSchema: z.ZodObject<{ asset: z.ZodString; maxAmountRequired: z.ZodEffects; network: z.ZodOptional>; scheme: z.ZodOptional>; outputSchema: z.ZodOptional>; extra: z.ZodOptional>; paymentType: z.ZodOptional>; resource: z.ZodUnion<[z.ZodOptional, z.ZodLiteral<"">]>; description: z.ZodOptional; mimeType: z.ZodOptional; maxTimeoutSeconds: z.ZodOptional; autoDetect: z.ZodOptional; }, "strip", z.ZodTypeAny, { asset: string; maxAmountRequired: string; network?: "base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "solana-devnet" | "solana" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "bsc" | "bsc-testnet" | undefined; scheme?: "exact" | undefined; outputSchema?: Record | undefined; extra?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | "auto" | undefined; resource?: string | undefined; description?: string | undefined; mimeType?: string | undefined; maxTimeoutSeconds?: number | undefined; autoDetect?: boolean | undefined; }, { asset: string; maxAmountRequired: string; network?: "base-sepolia" | "base" | "avalanche-fuji" | "avalanche" | "iotex" | "solana-devnet" | "solana" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "bsc" | "bsc-testnet" | undefined; scheme?: "exact" | undefined; outputSchema?: Record | undefined; extra?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | "auto" | undefined; resource?: string | undefined; description?: string | undefined; mimeType?: string | undefined; maxTimeoutSeconds?: number | undefined; autoDetect?: boolean | undefined; }>; type CreateRequirementsConfig = z.infer; /** * PaymentRequirements Schema * * @example * ```typescript * const requirements = { * x402Version: 1, * scheme: "exact", * network: "ethereum-mainnet", * maxAmountRequired: "1000", * payTo: "0x1234567890abcdef1234567890abcdef12345678", * asset: "0x1234567890abcdef1234567890abcdef12345678", * maxTimeoutSeconds: 300, * resource: "https://api.example.com/data", * description: "API access", * mimeType: "application/json", * paymentType: "permit", * extra: { * relayer: "0x1234567890abcdef1234567890abcdef12345678", * name: "API access", * version: "1.0.0", * }, * }; * ``` * * @returns PaymentRequirementsSchema */ type PaymentRequirements = z.infer; /** * PaymentPayload Schema * * @example * ```typescript * const payload = { * x402Version: 1, * scheme: "exact", * network: "ethereum-mainnet", * payload: { * maxAmountRequired: "1000", * asset: "0x1234567890abcdef1234567890abcdef12345678", * recipient: "0x1234567890abcdef1234567890abcdef12345678", * nonce: "1234567890abcdef1234567890abcdef12345678", * expiration: 1715000000, * }, * }; * ``` */ type PaymentPayload = z.infer; /** * Response402 Schema */ declare const Response402Schema: z.ZodObject<{ x402Version: z.ZodLiteral<1>; accepts: z.ZodArray; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; maxAmountRequired: z.ZodEffects; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional>; payTo: z.ZodUnion<[z.ZodString, z.ZodString]>; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodUnion<[z.ZodString, z.ZodString]>; paymentType: z.ZodOptional>; extra: z.ZodOptional>; }, "strip", z.ZodTypeAny, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }>, "many">; error: z.ZodOptional; errorStage: z.ZodOptional>; }, "strip", z.ZodTypeAny, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }>; type Response402 = z.infer; /** * InitResult Schema */ declare const InitResultSchema: z.ZodDiscriminatedUnion<"success", [z.ZodObject<{ success: z.ZodLiteral; }, "strip", z.ZodTypeAny, { success: true; }, { success: true; }>, z.ZodObject<{ success: z.ZodLiteral; error: z.ZodString; }, "strip", z.ZodTypeAny, { error: string; success: false; }, { error: string; success: false; }>]>; type InitResult = z.infer; /** * ProcessResult Schema */ declare const ProcessResultSchema: z.ZodDiscriminatedUnion<"success", [z.ZodObject<{ success: z.ZodLiteral; status: z.ZodLiteral<200>; data: z.ZodObject<{ payer: z.ZodString; txHash: z.ZodString; }, "strip", z.ZodTypeAny, { payer: string; txHash: string; }, { payer: string; txHash: string; }>; }, "strip", z.ZodTypeAny, { status: 200; success: true; data: { payer: string; txHash: string; }; }, { status: 200; success: true; data: { payer: string; txHash: string; }; }>, z.ZodObject<{ success: z.ZodLiteral; status: z.ZodLiteral<402>; errorStage: z.ZodEnum<["parse", "verify"]>; response: z.ZodObject<{ x402Version: z.ZodLiteral<1>; accepts: z.ZodArray; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; maxAmountRequired: z.ZodEffects; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional>; payTo: z.ZodUnion<[z.ZodString, z.ZodString]>; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodUnion<[z.ZodString, z.ZodString]>; paymentType: z.ZodOptional>; extra: z.ZodOptional>; }, "strip", z.ZodTypeAny, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }>, "many">; error: z.ZodOptional; errorStage: z.ZodOptional>; }, "strip", z.ZodTypeAny, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }>; }, "strip", z.ZodTypeAny, { status: 402; errorStage: "parse" | "verify"; success: false; response: { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }; }, { status: 402; errorStage: "parse" | "verify"; success: false; response: { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }; }>, z.ZodObject<{ success: z.ZodLiteral; status: z.ZodLiteral<500>; errorStage: z.ZodLiteral<"settle">; response: z.ZodObject<{ x402Version: z.ZodLiteral<1>; accepts: z.ZodArray; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; maxAmountRequired: z.ZodEffects; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional>; payTo: z.ZodUnion<[z.ZodString, z.ZodString]>; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodUnion<[z.ZodString, z.ZodString]>; paymentType: z.ZodOptional>; extra: z.ZodOptional>; }, "strip", z.ZodTypeAny, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }>, "many">; error: z.ZodOptional; errorStage: z.ZodOptional>; }, "strip", z.ZodTypeAny, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }>; error: z.ZodString; }, "strip", z.ZodTypeAny, { status: 500; error: string; errorStage: "settle"; success: false; response: { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }; }, { status: 500; error: string; errorStage: "settle"; success: false; response: { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }; }>]>; type ProcessResult = z.infer; /** * ParsedPayment Schema */ declare const ParsedPaymentSchema: z.ZodObject<{ payload: z.ZodObject<{ x402Version: z.ZodEffects; scheme: z.ZodEnum<["exact"]>; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; payload: z.ZodUnion<[z.ZodDiscriminatedUnion<"authorizationType", [z.ZodObject<{ authorizationType: z.ZodLiteral<"eip3009">; signature: z.ZodString; authorization: z.ZodObject<{ from: z.ZodString; to: z.ZodString; value: z.ZodEffects, string, string>; validAfter: z.ZodEffects; validBefore: z.ZodEffects; nonce: z.ZodString; }, "strip", z.ZodTypeAny, { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }, { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }>; }, "strip", z.ZodTypeAny, { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; }, { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; }>, z.ZodObject<{ authorizationType: z.ZodLiteral<"permit">; signature: z.ZodString; authorization: z.ZodObject<{ owner: z.ZodString; spender: z.ZodString; value: z.ZodEffects, string, string>; deadline: z.ZodEffects; nonce: z.ZodEffects; }, "strip", z.ZodTypeAny, { value: string; nonce: string; owner: string; spender: string; deadline: string; }, { value: string; nonce: string; owner: string; spender: string; deadline: string; }>; }, "strip", z.ZodTypeAny, { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; }, { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; }>, z.ZodObject<{ authorizationType: z.ZodLiteral<"permit2">; signature: z.ZodString; authorization: z.ZodObject<{ owner: z.ZodString; spender: z.ZodString; token: z.ZodString; amount: z.ZodEffects, string, string>; deadline: z.ZodEffects; nonce: z.ZodEffects; to: z.ZodOptional; }, "strip", z.ZodTypeAny, { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }, { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }>; }, "strip", z.ZodTypeAny, { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; }, { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; }>]>, z.ZodObject<{ transaction: z.ZodString; }, "strip", z.ZodTypeAny, { transaction: string; }, { transaction: string; }>]>; }, "strip", z.ZodTypeAny, { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }, { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }>; requirements: z.ZodObject<{ scheme: z.ZodEnum<["exact"]>; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; maxAmountRequired: z.ZodEffects; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional>; payTo: z.ZodUnion<[z.ZodString, z.ZodString]>; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodUnion<[z.ZodString, z.ZodString]>; paymentType: z.ZodOptional>; extra: z.ZodOptional>; }, "strip", z.ZodTypeAny, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }>; }, "strip", z.ZodTypeAny, { payload: { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }; requirements: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }; }, { payload: { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }; requirements: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }; }>; type ParsedPayment = z.infer; /** * ParseResult Schema */ declare const ParseResultSchema: z.ZodDiscriminatedUnion<"success", [z.ZodObject<{ success: z.ZodLiteral; data: z.ZodObject<{ payload: z.ZodObject<{ x402Version: z.ZodEffects; scheme: z.ZodEnum<["exact"]>; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; payload: z.ZodUnion<[z.ZodDiscriminatedUnion<"authorizationType", [z.ZodObject<{ authorizationType: z.ZodLiteral<"eip3009">; signature: z.ZodString; authorization: z.ZodObject<{ from: z.ZodString; to: z.ZodString; value: z.ZodEffects, string, string>; validAfter: z.ZodEffects; validBefore: z.ZodEffects; nonce: z.ZodString; }, "strip", z.ZodTypeAny, { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }, { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }>; }, "strip", z.ZodTypeAny, { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; }, { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; }>, z.ZodObject<{ authorizationType: z.ZodLiteral<"permit">; signature: z.ZodString; authorization: z.ZodObject<{ owner: z.ZodString; spender: z.ZodString; value: z.ZodEffects, string, string>; deadline: z.ZodEffects; nonce: z.ZodEffects; }, "strip", z.ZodTypeAny, { value: string; nonce: string; owner: string; spender: string; deadline: string; }, { value: string; nonce: string; owner: string; spender: string; deadline: string; }>; }, "strip", z.ZodTypeAny, { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; }, { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; }>, z.ZodObject<{ authorizationType: z.ZodLiteral<"permit2">; signature: z.ZodString; authorization: z.ZodObject<{ owner: z.ZodString; spender: z.ZodString; token: z.ZodString; amount: z.ZodEffects, string, string>; deadline: z.ZodEffects; nonce: z.ZodEffects; to: z.ZodOptional; }, "strip", z.ZodTypeAny, { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }, { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }>; }, "strip", z.ZodTypeAny, { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; }, { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; }>]>, z.ZodObject<{ transaction: z.ZodString; }, "strip", z.ZodTypeAny, { transaction: string; }, { transaction: string; }>]>; }, "strip", z.ZodTypeAny, { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }, { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }>; requirements: z.ZodObject<{ scheme: z.ZodEnum<["exact"]>; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; maxAmountRequired: z.ZodEffects; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional>; payTo: z.ZodUnion<[z.ZodString, z.ZodString]>; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodUnion<[z.ZodString, z.ZodString]>; paymentType: z.ZodOptional>; extra: z.ZodOptional>; }, "strip", z.ZodTypeAny, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }>; }, "strip", z.ZodTypeAny, { payload: { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }; requirements: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }; }, { payload: { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }; requirements: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }; }>; }, "strip", z.ZodTypeAny, { success: true; data: { payload: { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }; requirements: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }; }; }, { success: true; data: { payload: { scheme: "exact"; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; x402Version: number; payload: { signature: string; authorization: { from: string; to: string; value: string; validAfter: string; validBefore: string; nonce: string; }; authorizationType: "eip3009"; } | { signature: string; authorization: { value: string; nonce: string; owner: string; spender: string; deadline: string; }; authorizationType: "permit"; } | { signature: string; authorization: { nonce: string; owner: string; spender: string; deadline: string; amount: string; token: string; to?: string | undefined; }; authorizationType: "permit2"; } | { transaction: string; }; }; requirements: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }; }; }>, z.ZodObject<{ success: z.ZodLiteral; response402: z.ZodObject<{ x402Version: z.ZodLiteral<1>; accepts: z.ZodArray; network: z.ZodEnum<["base-sepolia", "base", "avalanche-fuji", "avalanche", "iotex", "solana-devnet", "solana", "sei", "sei-testnet", "polygon", "polygon-amoy", "peaq", "bsc", "bsc-testnet"]>; maxAmountRequired: z.ZodEffects; resource: z.ZodString; description: z.ZodString; mimeType: z.ZodString; outputSchema: z.ZodOptional>; payTo: z.ZodUnion<[z.ZodString, z.ZodString]>; maxTimeoutSeconds: z.ZodNumber; asset: z.ZodUnion<[z.ZodString, z.ZodString]>; paymentType: z.ZodOptional>; extra: z.ZodOptional>; }, "strip", z.ZodTypeAny, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }, { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }>, "many">; error: z.ZodOptional; errorStage: z.ZodOptional>; }, "strip", z.ZodTypeAny, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }, { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }>; }, "strip", z.ZodTypeAny, { success: false; response402: { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }; }, { success: false; response402: { x402Version: 1; accepts: { scheme: "exact"; description: string; asset: string; maxAmountRequired: string; network: "base-sepolia" | "avalanche-fuji" | "base" | "avalanche" | "sei" | "sei-testnet" | "polygon" | "polygon-amoy" | "peaq" | "iotex" | "bsc" | "bsc-testnet" | "solana-devnet" | "solana"; resource: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; outputSchema?: Record | undefined; paymentType?: "permit" | "eip3009" | "permit2" | undefined; extra?: Record | undefined; }[]; error?: string | undefined; errorStage?: "parse" | "verify" | "settle" | undefined; }; }>]>; type ParseResult = z.infer; /** * VerifyResult Schema */ declare const VerifyResultSchema: z.ZodDiscriminatedUnion<"success", [z.ZodObject<{ success: z.ZodLiteral; payer: z.ZodString; }, "strip", z.ZodTypeAny, { success: true; payer: string; }, { success: true; payer: string; }>, z.ZodObject<{ success: z.ZodLiteral; error: z.ZodString; }, "strip", z.ZodTypeAny, { error: string; success: false; }, { error: string; success: false; }>]>; type VerifyResult = z.infer; /** * SettleResult Schema */ declare const SettleResultSchema: z.ZodDiscriminatedUnion<"success", [z.ZodObject<{ success: z.ZodLiteral; txHash: z.ZodString; network: z.ZodString; }, "strip", z.ZodTypeAny, { network: string; success: true; txHash: string; }, { network: string; success: true; txHash: string; }>, z.ZodObject<{ success: z.ZodLiteral; error: z.ZodString; }, "strip", z.ZodTypeAny, { error: string; success: false; }, { error: string; success: false; }>]>; type SettleResult = z.infer; /** * X402Server 配置选项 */ interface X402ServerConfig { /** Viem PublicClient (必填) */ client: PublicClient; /** Facilitator 实例 (必填) */ facilitator: Facilitator; /** 网络名称,默认从 client 自动检测 */ network?: string; } /** * X402 Server * * 服务端 SDK,用于处理支付验证和结算 * * @example * ```typescript * // 1. 创建 facilitator * const facilitator = new Facilitator({ * recipientAddress: "0x1234...", * waitUntil: "confirmed", * }); * * // 2. 创建 server * const server = new X402Server({ * client: viemClient, * facilitator, * }); * * // 3. 可选:预热缓存 * await server.initialize([tokenAddress]); * * // 4. 创建支付要求 * const requirements = await server.createRequirements({ * asset: tokenAddress, * maxAmountRequired: "1000", * }); * * // 5. 处理支付 * const result = await server.process(paymentHeader, requirements); * ``` */ declare class X402Server { private client; private detector; private facilitator; private network; /** * 构造函数 * * @param config - Server 配置 */ constructor(config: X402ServerConfig); /** * 可选的初始化 - 预热缓存 * * @param tokens - 要预热的 token 地址列表 * @returns 初始化结果 */ initialize(tokens: string[]): Promise; /** * 创建支付要求 * * @param config - 配置选项 * @returns 支付要求 */ createRequirements(config: CreateRequirementsConfig): Promise; /** * 完整的支付处理流程 * parse → verify → settle 一步到位 * * @param paymentHeader - X-PAYMENT header 的值 (Base64) * @param expectedRequirements - 期望的支付要求 * @returns 处理结果 */ process(paymentHeader: string | undefined, expectedRequirements: PaymentRequirements): Promise; /** * 解析支付头 * * @param paymentHeader - X-PAYMENT header 的值 * @param expectedRequirements - 期望的支付要求 * @returns 解析结果 */ parse(paymentHeader: string | undefined, expectedRequirements: PaymentRequirements): ParseResult; /** * 验证支付签名 * * @param parsed - 解析后的支付数据 * @returns 验证结果 */ verify(parsed: ParsedPayment): Promise; /** * 结算支付 * * @param parsed - 解析后的支付数据 * @returns 结算结果 */ settle(parsed: ParsedPayment): Promise; /** * 生成 402 响应 * * @param requirements - 支付要求 * @param error - 可选的错误信息 * @param errorStage - 可选的错误阶段 * @returns 402 响应对象 */ get402Response(requirements: PaymentRequirements, error?: string, errorStage?: "parse" | "verify" | "settle"): Response402; /** * 清除缓存 * * @param token - 可选,指定要清除的 token 地址 */ clearCache(token?: string): Promise; /** * 获取缓存统计 * * @returns 缓存统计信息 */ getCacheStats(): { size: number; keys: string[]; }; /** * 获取 facilitator 实例(供外部访问) * * @returns Facilitator 实例 */ getFacilitator(): Facilitator; /** * 获取 detector 实例(供外部访问) * * @returns TokenDetector 实例 */ getDetector(): TokenDetector; /** * 获取 client 实例(供外部访问) * * @returns PublicClient 实例 */ getClient(): PublicClient; /** * 获取网络名称 * * @returns 网络名称 */ private getNetworkName; } /** * Express 中间件 for x402 Payment Protocol */ /** * Express-like Request 接口 * 定义最小化的类型,避免直接依赖 express */ interface ExpressRequest { headers: Record; body?: unknown; params?: Record; query?: Record; x402?: { payer: string; txHash: string; }; } /** * Express-like Response 接口 */ interface ExpressResponse { status(code: number): this; json(body: unknown): this; } /** * Express-like NextFunction 类型 */ type ExpressNextFunction = (error?: Error) => void; /** * Express 中间件配置选项 */ interface ExpressMiddlewareOptions { /** X402Server 实例 */ server: X402Server; /** 获取 token 地址的函数 */ getToken: (req: ExpressRequest) => string | Promise; /** 获取金额的函数 */ getAmount: (req: ExpressRequest) => string | Promise; /** 可选:获取额外配置的函数 */ getConfig?: (req: ExpressRequest) => Partial | Promise>; /** 可选:自定义错误处理 */ onError?: (error: Error, req: ExpressRequest, res: ExpressResponse) => void; /** 可选:自定义 402 响应处理 */ on402?: (req: ExpressRequest, res: ExpressResponse, response402: Response402) => void; /** 可选:支付成功后的回调 */ onPaymentSuccess?: (req: ExpressRequest, payer: string, txHash: string) => void | Promise; } /** * 创建 Express 中间件 * * @param options - 中间件配置 * @returns Express 中间件函数 * * @example * ```typescript * const middleware = createExpressMiddleware({ * server, * getToken: (req) => req.body.token || USDC, * getAmount: (req) => calculatePrice(req.body), * }); * * app.post("/api/resource", middleware, (req, res) => { * // Payment already verified and settled * const { payer, txHash } = req.x402; * res.json({ data: "resource", payer, txHash }); * }); * ``` */ declare function createExpressMiddleware(options: ExpressMiddlewareOptions): (req: ExpressRequest, res: ExpressResponse, next: ExpressNextFunction) => Promise; /** * Hono 中间件 for x402 Payment Protocol */ /** * Hono-like Request 接口 */ interface HonoRequest { header(name: string): string | undefined; json(): Promise; query(name: string): string | undefined; } /** * Hono-like Context 接口 */ interface HonoContext { req: HonoRequest; json(body: unknown, status?: number): Response; set(key: string, value: unknown): void; get(key: string): unknown; } /** * Hono-like Next 函数 */ type HonoNext = () => Promise; /** * Hono 中间件函数类型 */ type HonoMiddlewareHandler = (c: HonoContext, next: HonoNext) => Promise; /** * Hono 中间件配置选项 */ interface HonoMiddlewareOptions { /** X402Server 实例 */ server: X402Server; /** 获取 token 地址的函数 */ getToken: (c: HonoContext) => string | Promise; /** 获取金额的函数 */ getAmount: (c: HonoContext) => string | Promise; /** 可选:获取额外配置的函数 */ getConfig?: (c: HonoContext) => Partial | Promise>; /** 可选:自定义错误处理 */ onError?: (error: Error, c: HonoContext) => Response | Promise; /** 可选:自定义 402 响应处理 */ on402?: (c: HonoContext, response402: Response402) => Response | Promise; /** 可选:支付成功后的回调 */ onPaymentSuccess?: (c: HonoContext, payer: string, txHash: string) => void | Promise; } /** * 创建 Hono 中间件 * * @param options - 中间件配置 * @returns Hono 中间件函数 * * @example * ```typescript * const middleware = createHonoMiddleware({ * server, * getToken: (c) => c.req.query("token") || USDC, * getAmount: async (c) => { * const body = await c.req.json(); * return calculatePrice(body.complexity); * }, * }); * * app.post("/api/resource", middleware, (c) => { * // Payment already verified and settled * const { payer, txHash } = c.get("x402"); * return c.json({ data: "resource", payer, txHash }); * }); * ``` */ declare function createHonoMiddleware(options: HonoMiddlewareOptions): HonoMiddlewareHandler; /** * 解码 Base64 字符串 * * @param base64 - Base64 编码的字符串 * @returns 解码后的字符串 */ declare function decodeBase64(base64: string): string; /** * 编码为 Base64 字符串 * * @param str - 要编码的字符串 * @returns Base64 编码的字符串 */ declare function encodeBase64(str: string): string; export { type CreateRequirementsConfig, CreateRequirementsConfigSchema, type ExpressMiddlewareOptions, type HonoMiddlewareOptions, type InitResult, InitResultSchema, type ParseResult, ParseResultSchema, type ParsedPayment, ParsedPaymentSchema, type PaymentPayload, type PaymentRequirements, type ProcessResult, ProcessResultSchema, type Response402, Response402Schema, type SettleResult, SettleResultSchema, type VerifyResult, VerifyResultSchema, type WaitUntil, X402Server, type X402ServerConfig, createExpressMiddleware, createHonoMiddleware, decodeBase64, encodeBase64 };