UNPKG

@wtflabs/x402-facilitator

Version:

X402 Payment Facilitator for handling payment settlements

164 lines (161 loc) 3.75 kB
/** * Facilitator 等待策略 */ type WaitUntil = "simulated" | "submitted" | "confirmed"; /** * Facilitator 配置选项 */ interface FacilitatorConfig { /** * 商家地址 (收款地址,支持 EIP 7702) */ recipientAddress: string; /** * 中继地址 (可选,默认使用内置 WTF Facilitator) */ relayer?: string; /** * 等待策略 * - "simulated": 仅模拟交易 (最快) * - "submitted": 等待交易提交 * - "confirmed": 等待链上确认 (最安全,默认) */ waitUntil?: WaitUntil; /** * Facilitator API 基础 URL (可选) */ baseUrl?: string; /** * API 密钥 (可选) */ apiKey?: string; } /** * 支付负载 */ interface PaymentPayload { x402Version: number; scheme: string; network: string; payload: any; } /** * 支付要求 */ interface PaymentRequirements { scheme: string; network: string; maxAmountRequired: string; resource: string; description: string; mimeType: string; payTo: string; maxTimeoutSeconds: number; asset: string; extra?: Record<string, any>; } /** * 验证响应 */ interface VerifyResponse { success: boolean; payer?: string; error?: string; errorMessage?: string; } /** * 结算响应 */ interface SettleResponse { success: boolean; transactionHash?: string; network?: string; error?: string; errorMessage?: string; receipt?: any; } /** * 支持的支付类型响应 */ interface SupportedResponse { kinds: Array<{ x402Version: number; scheme: string; network: string; extra?: Record<string, any>; }>; } /** * Facilitator 类 * 用于处理支付验证和结算 * * @example * ```typescript * const facilitator = new Facilitator({ * recipientAddress: "0x1234...", * relayer: "0x5678...", // 可选 * 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); /** * 获取 relayer 地址 */ get relayer(): string; /** * 获取 recipient 地址 */ get recipientAddress(): string; /** * 获取等待策略 */ get waitUntil(): WaitUntil; /** * 验证支付 * @param payload 支付负载 * @param requirements 支付要求 * @returns 验证结果 */ verify(payload: PaymentPayload, requirements: PaymentRequirements): Promise<VerifyResponse>; /** * 结算支付 * @param payload 支付负载 * @param requirements 支付要求 * @param waitUntil 可选的等待策略,覆盖配置中的默认值 * @returns 结算结果 */ settle(payload: PaymentPayload, requirements: PaymentRequirements, waitUntil?: WaitUntil): Promise<SettleResponse>; /** * 获取支持的支付类型 * @param filters 可选的过滤条件 * @returns 支持的支付类型列表 */ supported(filters?: { chainId?: number; tokenAddress?: string; }): Promise<SupportedResponse>; /** * 获取完整配置 */ getConfig(): Required<FacilitatorConfig>; } export { Facilitator, type FacilitatorConfig, type PaymentPayload, type PaymentRequirements, type SettleResponse, type SupportedResponse, type VerifyResponse, type WaitUntil };