import { SchemeNetworkFacilitator, PaymentPayload, PaymentRequirements, VerifyResponse, SettleResponse, Network } from '@payai/x402/types'; import { S as SettlementCache } from '../../settlement-cache-D9gb94wH.js'; import { F as FacilitatorSvmSigner } from '../../signer-BMkbhFYE.js'; import { x402Facilitator } from '@payai/x402/facilitator'; import '@solana/kit'; /** * SVM facilitator implementation for the Exact payment scheme. */ declare class ExactSvmScheme implements SchemeNetworkFacilitator { private readonly signer; readonly scheme = "exact"; readonly caipFamily = "solana:*"; private readonly settlementCache; /** * Creates a new ExactSvmFacilitator instance. * * @param signer - The SVM RPC client for facilitator operations * @param settlementCache - Optional shared settlement cache (one is created if omitted) * @returns ExactSvmFacilitator instance */ constructor(signer: FacilitatorSvmSigner, settlementCache?: SettlementCache); /** * Get mechanism-specific extra data for the supported kinds endpoint. * For SVM, this includes a randomly selected fee payer address. * Random selection distributes load across multiple signers. * * @param _ - The network identifier (unused for SVM) * @returns Extra data with feePayer address */ getExtra(_: string): Record | undefined; /** * Get signer addresses used by this facilitator. * For SVM, returns all available fee payer addresses. * * @param _ - The network identifier (unused for SVM) * @returns Array of fee payer addresses */ getSigners(_: string): string[]; /** * Verifies a payment payload. * * @param payload - The payment payload to verify * @param requirements - The payment requirements * @returns Promise resolving to verification response */ verify(payload: PaymentPayload, requirements: PaymentRequirements): Promise; /** * Settles a payment by submitting the transaction. * Ensures the correct signer is used based on the feePayer specified in requirements. * * @param payload - The payment payload to settle * @param requirements - The payment requirements * @returns Promise resolving to settlement response */ settle(payload: PaymentPayload, requirements: PaymentRequirements): Promise; /** * Verify that the compute limit instruction is valid and within bounds. * * Security: Enforces MAX_COMPUTE_UNIT_LIMIT to prevent attackers from * inflating CU budget at the facilitator's expense (gas amplification attack). * * @param instruction - The compute limit instruction * @param instruction.programAddress - Program address * @param instruction.data - Instruction data bytes */ private verifyComputeLimitInstruction; /** * Verify that the compute price instruction is valid. * * @param instruction - The compute price instruction * @param instruction.programAddress - Program address * @param instruction.data - Instruction data bytes */ private verifyComputePriceInstruction; } /** * Configuration options for registering SVM schemes to an x402Facilitator */ interface SvmFacilitatorConfig { /** * The SVM signer for facilitator operations */ signer: FacilitatorSvmSigner; /** * Networks to register (single network or array of networks) * Examples: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", ["solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"] */ networks: Network | Network[]; } /** * Registers SVM payment schemes to an existing x402Facilitator instance. * * @param facilitator - The x402Facilitator instance to register schemes to * @param config - Configuration for SVM facilitator registration * @returns The facilitator instance for chaining * * @example * ```typescript * // Single network * registerExactSvmScheme(facilitator, { * signer: svmSigner, * networks: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1" // Devnet * }); * * // Multiple networks (will auto-derive solana:* pattern) * registerExactSvmScheme(facilitator, { * signer: svmSigner, * networks: ["solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"] * }); * ``` */ declare function registerExactSvmScheme(facilitator: x402Facilitator, config: SvmFacilitatorConfig): x402Facilitator; export { ExactSvmScheme, type SvmFacilitatorConfig, registerExactSvmScheme };