UNPKG

@payai/x402

Version:

PayAI-distributed wrapper for @x402/core v2

207 lines (204 loc) 8.93 kB
import { P as PaymentPayload, a as PaymentRequirements, V as VerifyResponse, S as SettleResponse, N as Network, b as SchemeNetworkFacilitator, F as FacilitatorExtension } from '../mechanisms-CDlcy1I8.js'; /** * Facilitator Hook Context Interfaces */ interface FacilitatorVerifyContext { paymentPayload: PaymentPayload; requirements: PaymentRequirements; } interface FacilitatorVerifyResultContext extends FacilitatorVerifyContext { result: VerifyResponse; } interface FacilitatorVerifyFailureContext extends FacilitatorVerifyContext { error: Error; } interface FacilitatorSettleContext { paymentPayload: PaymentPayload; requirements: PaymentRequirements; } interface FacilitatorSettleResultContext extends FacilitatorSettleContext { result: SettleResponse; } interface FacilitatorSettleFailureContext extends FacilitatorSettleContext { error: Error; } /** * Facilitator Hook Type Definitions */ type FacilitatorBeforeVerifyHook = (context: FacilitatorVerifyContext) => Promise<void | { abort: true; reason: string; }>; type FacilitatorAfterVerifyHook = (context: FacilitatorVerifyResultContext) => Promise<void>; type FacilitatorOnVerifyFailureHook = (context: FacilitatorVerifyFailureContext) => Promise<void | { recovered: true; result: VerifyResponse; }>; type FacilitatorBeforeSettleHook = (context: FacilitatorSettleContext) => Promise<void | { abort: true; reason: string; }>; type FacilitatorAfterSettleHook = (context: FacilitatorSettleResultContext) => Promise<void>; type FacilitatorOnSettleFailureHook = (context: FacilitatorSettleFailureContext) => Promise<void | { recovered: true; result: SettleResponse; }>; /** * Facilitator client for the x402 payment protocol. * Manages payment scheme registration, verification, and settlement. */ declare class x402Facilitator { private readonly registeredFacilitatorSchemes; private readonly extensions; private beforeVerifyHooks; private afterVerifyHooks; private onVerifyFailureHooks; private beforeSettleHooks; private afterSettleHooks; private onSettleFailureHooks; /** * Registers a scheme facilitator for the current x402 version. * Networks are stored and used for getSupported() - no need to specify them later. * * @param networks - Single network or array of networks this facilitator supports * @param facilitator - The scheme network facilitator to register * @returns The x402Facilitator instance for chaining */ register(networks: Network | Network[], facilitator: SchemeNetworkFacilitator): x402Facilitator; /** * Registers a scheme facilitator for x402 version 1. * Networks are stored and used for getSupported() - no need to specify them later. * * @param networks - Single network or array of networks this facilitator supports * @param facilitator - The scheme network facilitator to register * @returns The x402Facilitator instance for chaining */ registerV1(networks: Network | Network[], facilitator: SchemeNetworkFacilitator): x402Facilitator; /** * Registers a protocol extension. * * @param extension - The extension object to register * @returns The x402Facilitator instance for chaining */ registerExtension(extension: FacilitatorExtension): x402Facilitator; /** * Gets the list of registered extension keys. * * @returns Array of extension key strings */ getExtensions(): string[]; /** * Gets a registered extension by key. * * @param key - The extension key to look up * @returns The extension object, or undefined if not registered */ getExtension<T extends FacilitatorExtension = FacilitatorExtension>(key: string): T | undefined; /** * Register a hook to execute before facilitator payment verification. * Can abort verification by returning { abort: true, reason: string } * * @param hook - The hook function to register * @returns The x402Facilitator instance for chaining */ onBeforeVerify(hook: FacilitatorBeforeVerifyHook): x402Facilitator; /** * Register a hook to execute after successful facilitator payment verification (isValid: true). * This hook is NOT called when verification fails (isValid: false) - use onVerifyFailure for that. * * @param hook - The hook function to register * @returns The x402Facilitator instance for chaining */ onAfterVerify(hook: FacilitatorAfterVerifyHook): x402Facilitator; /** * Register a hook to execute when facilitator payment verification fails. * Called when: verification returns isValid: false, or an exception is thrown during verification. * Can recover from failure by returning { recovered: true, result: VerifyResponse } * * @param hook - The hook function to register * @returns The x402Facilitator instance for chaining */ onVerifyFailure(hook: FacilitatorOnVerifyFailureHook): x402Facilitator; /** * Register a hook to execute before facilitator payment settlement. * Can abort settlement by returning { abort: true, reason: string } * * @param hook - The hook function to register * @returns The x402Facilitator instance for chaining */ onBeforeSettle(hook: FacilitatorBeforeSettleHook): x402Facilitator; /** * Register a hook to execute after successful facilitator payment settlement. * * @param hook - The hook function to register * @returns The x402Facilitator instance for chaining */ onAfterSettle(hook: FacilitatorAfterSettleHook): x402Facilitator; /** * Register a hook to execute when facilitator payment settlement fails. * Can recover from failure by returning { recovered: true, result: SettleResponse } * * @param hook - The hook function to register * @returns The x402Facilitator instance for chaining */ onSettleFailure(hook: FacilitatorOnSettleFailureHook): x402Facilitator; /** * Gets supported payment kinds, extensions, and signers. * Uses networks registered during register() calls - no parameters needed. * Returns flat array format for backward compatibility with V1 clients. * * @returns Supported response with kinds as array (with version in each element), extensions, and signers */ getSupported(): { kinds: Array<{ x402Version: number; scheme: string; network: string; extra?: Record<string, unknown>; }>; extensions: string[]; signers: Record<string, string[]>; }; /** * Verifies a payment payload against requirements. * * @param paymentPayload - The payment payload to verify * @param paymentRequirements - The payment requirements to verify against * @returns Promise resolving to the verification response */ verify(paymentPayload: PaymentPayload, paymentRequirements: PaymentRequirements): Promise<VerifyResponse>; /** * Settles a payment based on the payload and requirements. * * @param paymentPayload - The payment payload to settle * @param paymentRequirements - The payment requirements for settlement * @returns Promise resolving to the settlement response */ settle(paymentPayload: PaymentPayload, paymentRequirements: PaymentRequirements): Promise<SettleResponse>; /** * Builds a FacilitatorContext from the registered extensions map. * Passed to mechanism verify/settle so they can access extension capabilities. * * @returns A FacilitatorContext backed by this facilitator's registered extensions */ private buildFacilitatorContext; /** * Internal method to register a scheme facilitator. * * @param x402Version - The x402 protocol version * @param networks - Array of concrete networks this facilitator supports * @param facilitator - The scheme network facilitator to register * @returns The x402Facilitator instance for chaining */ private _registerScheme; /** * Derives a wildcard pattern from an array of networks. * If all networks share the same namespace, returns wildcard pattern. * Otherwise returns the first network for exact matching. * * @param networks - Array of networks * @returns Derived pattern for matching */ private derivePattern; } export { type FacilitatorAfterSettleHook, type FacilitatorAfterVerifyHook, type FacilitatorBeforeSettleHook, type FacilitatorBeforeVerifyHook, type FacilitatorOnSettleFailureHook, type FacilitatorOnVerifyFailureHook, type FacilitatorSettleContext, type FacilitatorSettleFailureContext, type FacilitatorSettleResultContext, type FacilitatorVerifyContext, type FacilitatorVerifyFailureContext, type FacilitatorVerifyResultContext, x402Facilitator };