@dcentralab/d402-client 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/parser.ts","../src/constants.ts","../src/utils.ts","../src/signer.ts","../src/encoder.ts","../src/selector.ts","../src/contracts/abis/sepolia.json","../src/contracts/addresses/proxies.json","../src/contracts/addresses/implementations.json","../src/contracts.ts","../src/wallet.ts","../src/client.ts","../src/index.ts","../src/settlement.ts"],"names":["PaymentError","PaymentAmountExceededError","MissingRequestConfigError","PaymentAlreadyAttemptedError","UnsupportedSchemeError","PaymentVerificationError","Invalid402ResponseError","UnsupportedNetworkError","isAddress","CHAIN_IDS","NETWORKS","TOKEN_ADDRESSES","DEFAULT_VALIDITY_WINDOW_SECONDS","EIP712_TYPES","sepolia","http","createPublicClient","createWalletClient","decodeEventLog","encodeFunctionData","parseAllPaymentRequirements","signD402Payment","encodePayment"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Error classes for D402 payment protocol\n */\n\n/**\n * Base error class for all payment-related errors\n */\nexport class PaymentError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'PaymentError'\n Object.setPrototypeOf(this, PaymentError.prototype)\n }\n}\n\n/**\n * Thrown when payment amount exceeds the configured maximum allowed value\n */\nexport class PaymentAmountExceededError extends PaymentError {\n constructor(\n public amount: bigint,\n public maxAmount: bigint,\n public tokenAddress?: string\n ) {\n super(\n `Payment amount ${amount} ${tokenAddress ? `(token: ${tokenAddress})` : ''} exceeds maximum allowed value ${maxAmount} base units. ` +\n `Note: This comparison does not account for token differences or decimals.`\n )\n this.name = 'PaymentAmountExceededError'\n Object.setPrototypeOf(this, PaymentAmountExceededError.prototype)\n }\n}\n\n/**\n * Thrown when request configuration is missing required fields\n */\nexport class MissingRequestConfigError extends PaymentError {\n constructor(message: string) {\n super(message)\n this.name = 'MissingRequestConfigError'\n Object.setPrototypeOf(this, MissingRequestConfigError.prototype)\n }\n}\n\n/**\n * Thrown when payment has already been attempted for a request\n */\nexport class PaymentAlreadyAttemptedError extends PaymentError {\n constructor(message: string = 'Payment has already been attempted for this request') {\n super(message)\n this.name = 'PaymentAlreadyAttemptedError'\n Object.setPrototypeOf(this, PaymentAlreadyAttemptedError.prototype)\n }\n}\n\n/**\n * Thrown when no supported payment scheme is found in payment requirements\n */\nexport class UnsupportedSchemeError extends PaymentError {\n constructor(\n public availableSchemes: string[],\n message: string = 'No supported payment scheme found'\n ) {\n super(`${message}. Available schemes: ${availableSchemes.join(', ')}`)\n this.name = 'UnsupportedSchemeError'\n Object.setPrototypeOf(this, UnsupportedSchemeError.prototype)\n }\n}\n\n/**\n * Thrown when payment verification fails\n */\nexport class PaymentVerificationError extends PaymentError {\n constructor(message: string) {\n super(message)\n this.name = 'PaymentVerificationError'\n Object.setPrototypeOf(this, PaymentVerificationError.prototype)\n }\n}\n\n/**\n * Thrown when HTTP 402 response is malformed\n */\nexport class Invalid402ResponseError extends PaymentError {\n constructor(message: string) {\n super(message)\n this.name = 'Invalid402ResponseError'\n Object.setPrototypeOf(this, Invalid402ResponseError.prototype)\n }\n}\n\n/**\n * Thrown when network is not supported\n */\nexport class UnsupportedNetworkError extends PaymentError {\n constructor(public network: string) {\n super(`Network '${network}' is not supported`)\n this.name = 'UnsupportedNetworkError'\n Object.setPrototypeOf(this, UnsupportedNetworkError.prototype)\n }\n}\n\n","/**\n * Parse 402 payment requirements from HTTP responses\n */\n\nimport { isAddress } from 'viem'\nimport type { PaymentRequirement, D402Response } from './types'\nimport { Invalid402ResponseError } from './errors'\n\n/**\n * Validate payment requirement has all required fields.\n * \n * @param requirement - Payment requirement to validate\n * @throws {Invalid402ResponseError} If validation fails\n */\nfunction validatePaymentRequirement(requirement: PaymentRequirement): void {\n const requiredFields: (keyof PaymentRequirement)[] = [\n 'scheme',\n 'network',\n 'maxAmountRequired',\n 'payTo',\n 'asset'\n ]\n\n for (const field of requiredFields) {\n if (!requirement[field]) {\n throw new Invalid402ResponseError(\n `Payment requirement missing required field: ${field}`\n )\n }\n }\n\n // Validate maxAmountRequired is numeric string (\n try {\n BigInt(requirement.maxAmountRequired)\n } catch {\n throw new Invalid402ResponseError(\n 'max_amount_required must be an integer encoded as a string'\n )\n }\n\n // Validate addresses using viem (\n if (!isAddress(requirement.payTo, { strict: false })) {\n throw new Invalid402ResponseError(\n `Invalid payTo address format: ${requirement.payTo}`\n )\n }\n\n if (!isAddress(requirement.asset, { strict: false })) {\n throw new Invalid402ResponseError(\n `Invalid asset address format: ${requirement.asset}`\n )\n }\n}\n\n/**\n * Parse payment requirements from HTTP 402 response.\n * \n * When an API returns 402 \"Payment Required\", this function extracts\n * the payment details (amount, token, network) from the response body.\n * \n * @param response - HTTP Response object with status 402\n * @returns First payment requirement from the response\n * @throws {Invalid402ResponseError} If response is not valid 402 or malformed\n * \n * @example\n * ```ts\n * const response = await fetch('https://sentiment-api.com/analyze')\n * \n * if (response.status === 402) {\n * const requirement = await parsePaymentRequirement(response)\n * console.log('Payment required:', requirement.maxAmountRequired, 'wei')\n * console.log('Token:', requirement.asset)\n * console.log('Network:', requirement.network)\n * }\n * ```\n */\nexport async function parsePaymentRequirement(response: Response): Promise<PaymentRequirement> {\n if (response.status !== 402) {\n throw new Invalid402ResponseError(\n `Expected 402 response, got ${response.status}`\n )\n }\n\n let data: D402Response\n try {\n data = await response.json() as D402Response\n } catch (error) {\n throw new Invalid402ResponseError(\n `Failed to parse 402 response JSON: ${error instanceof Error ? error.message : 'unknown error'}`\n )\n }\n\n // Validate required fields\n if (!data.d402Version && data.d402Version !== 0) {\n throw new Invalid402ResponseError('Missing d402Version field in 402 response')\n }\n\n // Handle both formats: array (accepts) or single requirement at root\n let requirements: PaymentRequirement[]\n\n if (data.accepts && Array.isArray(data.accepts)) {\n // Standard format with accepts array\n requirements = data.accepts\n } else if (data.scheme && data.network && data.maxAmountRequired) {\n // Legacy format: payment requirement at root level\n requirements = [data as PaymentRequirement]\n } else {\n throw new Invalid402ResponseError(\n 'Invalid 402 response: missing accepts array or payment requirement fields'\n )\n }\n\n if (requirements.length === 0) {\n throw new Invalid402ResponseError('402 response has empty accepts array')\n }\n\n // Return first requirement (\n const requirement = requirements[0]\n\n // Validate required fields in payment requirement\n validatePaymentRequirement(requirement)\n\n return requirement\n}\n\n/**\n * Parse all payment requirements from 402 response.\n * \n * Similar to parsePaymentRequirement but returns all options instead of just first.\n * Useful when client needs to choose from multiple payment options.\n * \n * @param response - HTTP Response object with status 402\n * @returns Array of all payment requirements\n * @throws {Invalid402ResponseError} If response is invalid\n * \n * @example\n * ```ts\n * const response = await fetch('http://api.example.com')\n * const allOptions = await parseAllPaymentRequirements(response)\n * // Choose based on network, token, etc.\n * const preferred = allOptions.find(r => r.network === 'sepolia')\n * ```\n */\nexport async function parseAllPaymentRequirements(\n response: Response\n): Promise<PaymentRequirement[]> {\n if (response.status !== 402) {\n throw new Invalid402ResponseError(\n `Expected 402 response, got ${response.status}`\n )\n }\n\n let data: D402Response\n try {\n data = await response.json() as D402Response\n } catch (error) {\n throw new Invalid402ResponseError(\n `Failed to parse 402 response JSON: ${error instanceof Error ? error.message : 'unknown error'}`\n )\n }\n\n if (!data.d402Version && data.d402Version !== 0) {\n throw new Invalid402ResponseError('Missing d402Version field in 402 response')\n }\n\n let requirements: PaymentRequirement[]\n\n if (data.accepts && Array.isArray(data.accepts)) {\n requirements = data.accepts\n } else if (data.scheme && data.network && data.maxAmountRequired) {\n requirements = [data as PaymentRequirement]\n } else {\n throw new Invalid402ResponseError(\n 'Invalid 402 response: missing accepts array or payment requirement fields'\n )\n }\n\n // Validate all requirements\n for (const req of requirements) {\n validatePaymentRequirement(req)\n }\n\n return requirements\n}\n\n","/**\n * Network and token constants\n */\n\nimport type { SupportedNetwork } from './types'\n\n/**\n * Chain IDs for supported networks\n */\nexport const CHAIN_IDS: Record<SupportedNetwork, number> = {\n sepolia: 11155111\n} as const\n\n/**\n * Network configuration\n */\nexport const NETWORKS: Record<SupportedNetwork, {\n chainId: number\n name: string\n nativeCurrency: { name: string; symbol: string; decimals: number }\n}> = {\n sepolia: {\n chainId: 11155111,\n name: 'Sepolia Testnet',\n nativeCurrency: { name: 'Sepolia Ether', symbol: 'SEP', decimals: 18 }\n }\n} as const\n\n/**\n * Default USDC token addresses per network\n */\nexport const TOKEN_ADDRESSES: Record<SupportedNetwork, `0x${string}`> = {\n sepolia: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238'\n} as const\n\n/**\n * Default payment validity window (5 minutes)\n */\nexport const DEFAULT_VALIDITY_WINDOW_SECONDS = 300\n\n/**\n * EIP-712 type definitions for PullFundsForSettlement\n */\nexport const EIP712_TYPES = {\n PullFundsForSettlement: [\n { name: 'wallet', type: 'address' },\n { name: 'provider', type: 'address' },\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'requestPath', type: 'string' }\n ]\n} as const\n\n","/**\n * Utility functions for D402 payment processing\n */\n\nimport { TOKEN_ADDRESSES } from './constants'\nimport type { PaymentRequirement, SupportedNetwork } from './types'\nimport { UnsupportedNetworkError } from './errors'\n\n/**\n * Parse a money string or number into atomic units (wei)\n * \n * @param amount - Amount as string (e.g., \"$1.00\", \"1.5\") or number\n * @param decimals - Token decimals (e.g., 6 for USDC, 18 for ETH)\n * @returns Amount in atomic units (wei)\n * \n * @example\n * parseMoney(\"$1.00\", 6) // Returns 1000000n (1 USDC in wei)\n * parseMoney(\"0.5\", 18) // Returns 500000000000000000n (0.5 ETH in wei)\n */\nexport function parseMoney(amount: string | number | bigint, decimals: number): bigint {\n // If already a bigint, return as-is\n if (typeof amount === 'bigint') {\n return amount\n }\n\n // If number, convert to bigint\n if (typeof amount === 'number') {\n return BigInt(Math.floor(amount))\n }\n\n // Handle string\n let amountStr = amount.trim()\n\n // Remove $ prefix if present\n if (amountStr.startsWith('$')) {\n amountStr = amountStr.slice(1)\n }\n\n // Parse the decimal number\n const [whole = '0', fraction = '0'] = amountStr.split('.')\n\n // Pad or truncate fraction to match decimals\n const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals)\n\n // Combine whole and fraction\n const atomicAmount = BigInt(whole + paddedFraction)\n\n return atomicAmount\n}\n\n/**\n * Format atomic units back to human-readable format\n * \n * @param amount - Amount in atomic units (wei)\n * @param decimals - Token decimals\n * @returns Formatted string\n * \n * @example\n * formatMoney(1000000n, 6) // Returns \"1.000000\"\n */\nexport function formatMoney(amount: bigint, decimals: number): string {\n const amountStr = amount.toString().padStart(decimals + 1, '0')\n const whole = amountStr.slice(0, -decimals) || '0'\n const fraction = amountStr.slice(-decimals)\n return `${whole}.${fraction}`\n}\n\n/**\n * Get USDC token address for a given network\n * \n * @param network - Network name\n * @returns USDC token address\n * \n * @throws {UnsupportedNetworkError} If network is not supported\n */\nexport function getUsdcAddress(network: SupportedNetwork): `0x${string}` {\n const address = TOKEN_ADDRESSES[network]\n if (!address) {\n throw new UnsupportedNetworkError(network)\n }\n return address\n}\n\n/**\n * Get chain ID for a given network.\n * \n * This function maps network names to chain IDs for parsing 402 payment requirements\n * from external APIs. It supports many networks that may appear in 402 responses,\n * even if IATP contracts are not deployed on those networks.\n * \n * Note: IATP contracts are currently only deployed on Sepolia. This function exists\n * to handle 402 responses from any API that might support other networks.\n * \n * @param network - Network name or chain ID as string\n * @returns Chain ID as number\n * \n * @throws {UnsupportedNetworkError} If network is not supported\n * \n * @example\n * ```ts\n * getChainId('sepolia') // Returns 11155111\n * getChainId('11155111') // Returns 11155111 (passthrough)\n * getChainId('base') // Returns 8453 (for parsing 402 responses)\n * ```\n */\nexport function getChainId(network: string): number {\n // If network is already a numeric string, return it as number\n const parsed = parseInt(network, 10)\n if (!isNaN(parsed) && parsed.toString() === network) {\n return parsed\n }\n\n // Map network names to chain IDs (for parsing 402 payment requirements)\n // Note: Includes networks beyond where IATP is deployed\n const networkMap: Record<string, number> = {\n 'sepolia': 11155111,\n 'base-sepolia': 84532,\n 'base': 8453,\n 'base-mainnet': 8453,\n 'mainnet': 1,\n 'polygon': 137,\n 'arbitrum-sepolia': 421614,\n 'arbitrum-mainnet': 42161,\n 'avalanche-fuji': 43113,\n 'avalanche': 43114\n }\n\n const chainId = networkMap[network]\n if (!chainId) {\n throw new UnsupportedNetworkError(network)\n }\n\n return chainId\n}\n\n/**\n * Find matching payment requirement from a list\n * \n * @param requirements - List of payment requirements\n * @param scheme - Desired payment scheme (default: \"exact\")\n * @param network - Desired network (optional)\n * @returns Matching payment requirement or undefined\n */\nexport function findMatchingPaymentRequirement(\n requirements: PaymentRequirement[],\n scheme: string = 'exact',\n network?: string\n): PaymentRequirement | undefined {\n return requirements.find(req => {\n const schemeMatches = req.scheme === scheme\n const networkMatches = !network || req.network === network\n return schemeMatches && networkMatches\n })\n}\n\n/**\n * Convert USD amount to USDC atomic units\n * \n * @param usdAmount - Amount in USD (e.g., \"1.00\" or 1.5)\n * @param decimals - USDC decimals (default: 6)\n * @returns Amount in USDC atomic units\n * \n * @example\n * usdToUsdc(\"1.00\") // Returns 1000000n\n * usdToUsdc(1.5) // Returns 1500000n\n */\nexport function usdToUsdc(usdAmount: string | number, decimals: number = 6): bigint {\n return parseMoney(usdAmount, decimals)\n}\n\n/**\n * Generate a random nonce for payment authorization\n * \n * @returns Random 32-byte nonce as hex string\n */\nexport function generateNonce(): `0x${string}` {\n const bytes = new Uint8Array(32)\n crypto.getRandomValues(bytes)\n return `0x${Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('')}`\n}\n\n/**\n * Get current timestamp in seconds\n * \n * @returns Unix timestamp in seconds\n */\nexport function getCurrentTimestamp(): number {\n return Math.floor(Date.now() / 1000)\n}\n\n/**\n * Validate Ethereum address format\n * \n * @param address - Address to validate\n * @returns True if valid Ethereum address\n */\nexport function isValidAddress(address: string): boolean {\n return /^0x[a-fA-F0-9]{40}$/.test(address)\n}\n\n/**\n * Normalize Ethereum address to checksummed format\n * Note: This is a simple lowercase normalization. For full checksum validation, use viem's getAddress()\n * \n * @param address - Address to normalize\n * @returns Normalized address\n */\nexport function normalizeAddress(address: string): `0x${string}` {\n return address.toLowerCase() as `0x${string}`\n}\n\n/**\n * Sleep for specified milliseconds (useful for retries)\n * \n * @param ms - Milliseconds to sleep\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n\n/**\n * Decode X-PAYMENT-RESPONSE header from server\n * \n * @param header - Base64 encoded payment response\n * @returns Decoded payment response\n * \n * @example\n * const response = decodePaymentResponse(responseHeader)\n * console.log(response.success, response.transaction)\n */\nexport function decodePaymentResponse(header: string): {\n success: boolean\n transaction?: string\n network?: string\n payer?: string\n message?: string\n} {\n try {\n // Use native browser APIs - no Buffer needed\n const binString = atob(header)\n const bytes = Uint8Array.from(binString, (m) => m.codePointAt(0)!)\n const decoded = new TextDecoder().decode(bytes)\n return JSON.parse(decoded)\n } catch (error) {\n throw new Error(`Failed to decode payment response: ${error}`)\n }\n}\n\n","/**\n * EIP-712 payment signing utilities\n */\n\nimport type { Account } from 'viem/accounts'\nimport type { PaymentRequirement, SignedPayment } from './types'\nimport { generateNonce, getCurrentTimestamp } from './utils'\nimport { getChainId } from './utils'\nimport { EIP712_TYPES } from './constants'\n\n/**\n * Sign a D402 payment using EIP-712 signature.\n * \n * Signs a payment authorization with the user's wallet (MetaMask/WalletConnect).\n * This creates a PullFundsForSettlement signature that authorizes the payment.\n * \n * The user will see a MetaMask popup to approve the signature.\n * \n * @param params - Signing parameters\n * @param params.operatorAccount - User's account for signing (from wagmi walletClient)\n * @param params.paymentRequirement - Payment requirements from 402 response\n * @param params.iatpWalletAddress - IATPWallet contract address (optional)\n * @param params.requestPath - API request path (optional, uses payment_requirements.resource if not provided)\n * @returns Signed payment ready to encode and send\n * \n * @example\n * ```ts\n * // Get payment requirement from 402 response\n * const requirement = await parsePaymentRequirement(response)\n * \n * // User signs payment (MetaMask popup appears)\n * const signedPayment = await signD402Payment({\n * operatorAccount: walletClient.account, // User's wallet\n * paymentRequirement: requirement,\n * iatpWalletAddress: '0xUserIATPWallet...'\n * })\n * \n * // Encode for X-Payment header\n * const paymentHeader = encodePayment(signedPayment)\n * ```\n */\nexport async function signD402Payment(params: {\n operatorAccount: Account\n paymentRequirement: PaymentRequirement\n iatpWalletAddress?: `0x${string}`\n requestPath?: string\n d402Version?: number\n}): Promise<SignedPayment> {\n const {\n operatorAccount,\n paymentRequirement,\n iatpWalletAddress,\n requestPath,\n d402Version = 1\n } = params\n\n // Get wallet address (IATPWallet contract, or user's EOA if no wallet)\n const consumerWallet = iatpWalletAddress || operatorAccount.address\n\n // Get request path with fallback chain\n let finalRequestPath = requestPath || paymentRequirement.resource || '/mcp'\n\n if (!finalRequestPath || finalRequestPath.trim() === '') {\n finalRequestPath = '/mcp'\n }\n\n // Generate nonce and timestamps for payment authorization\n const nonce = generateNonce()\n const now = getCurrentTimestamp()\n const validAfter = (now - 60).toString() // Valid from 60 seconds ago (clock skew tolerance)\n const validBefore = (now + (paymentRequirement.maxTimeoutSeconds || 300)).toString()\n\n // Get EIP-712 domain info from payment requirement\n const extra = paymentRequirement.extra\n const walletName = extra?.name || 'IATPWallet'\n const walletVersion = extra?.version || '1'\n const chainId = getChainId(paymentRequirement.network)\n\n // Build EIP-712 typed data for PullFundsForSettlement message\n const domain = {\n name: walletName,\n version: walletVersion,\n chainId: chainId,\n verifyingContract: consumerWallet\n } as const\n\n const message = {\n wallet: consumerWallet,\n provider: paymentRequirement.payTo,\n token: paymentRequirement.asset,\n amount: BigInt(paymentRequirement.maxAmountRequired),\n deadline: BigInt(validBefore),\n requestPath: finalRequestPath\n } as const\n\n // Sign payment with EIP-712 (user signs in MetaMask)\n if (!operatorAccount.signTypedData) {\n throw new Error('Account does not support signTypedData')\n }\n\n const signature = await operatorAccount.signTypedData({\n domain,\n types: {\n PullFundsForSettlement: EIP712_TYPES.PullFundsForSettlement\n },\n primaryType: 'PullFundsForSettlement',\n message\n })\n\n // Build signed payment structure\n const signedPayment: SignedPayment = {\n d402Version,\n scheme: paymentRequirement.scheme,\n network: paymentRequirement.network,\n payload: {\n signature,\n authorization: {\n from: consumerWallet,\n to: paymentRequirement.payTo,\n value: paymentRequirement.maxAmountRequired,\n validAfter,\n validBefore,\n nonce,\n requestPath: finalRequestPath\n }\n }\n }\n\n return signedPayment\n}\n\n","/**\n * Base64 encoding/decoding for payment payloads\n */\n\nimport type { SignedPayment } from './types'\n\n/**\n * Safely encode string or bytes to base64 string.\n * \n * Uses native browser APIs (btoa + TextEncoder) - no Buffer needed!\n * \n * @param data - String to encode\n * @returns Base64 encoded string\n * \n * @example\n * ```ts\n * const encoded = safeBase64Encode('{\"foo\": \"bar\"}')\n * // Returns: \"eyJmb28iOiAiYmFyIn0=\"\n * ```\n */\nexport function safeBase64Encode(data: string): string {\n // Use native browser TextEncoder + btoa\n // Works in all modern browsers and Node.js 18+\n const bytes = new TextEncoder().encode(data)\n const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join('')\n return btoa(binString)\n}\n\n/**\n * Safely decode base64 string to utf-8 string.\n * \n * Uses native browser APIs (atob + TextDecoder) - no Buffer needed!\n * \n * @param data - Base64 encoded string\n * @returns Decoded utf-8 string\n * \n * @example\n * ```ts\n * const decoded = safeBase64Decode('eyJmb28iOiAiYmFyIn0=')\n * // Returns: '{\"foo\": \"bar\"}'\n * ```\n */\nexport function safeBase64Decode(data: string): string {\n // Use native browser atob + TextDecoder\n // Works in all modern browsers and Node.js 18+\n const binString = atob(data)\n const bytes = Uint8Array.from(binString, (m) => m.codePointAt(0)!)\n return new TextDecoder().decode(bytes)\n}\n\n/**\n * Encode a signed payment to base64 string for X-Payment header.\n * \n * Takes a signed payment object and encodes it to base64 format\n * that can be sent in the X-Payment HTTP header.\n * \n * @param payment - Signed payment object (from signD402Payment)\n * @returns Base64 encoded string ready for X-Payment header\n * \n * @example\n * ```ts\n * const signedPayment = await signD402Payment({...})\n * const encoded = encodePayment(signedPayment)\n * \n * // Send in HTTP request\n * fetch(url, {\n * headers: { 'X-Payment': encoded }\n * })\n * ```\n */\nexport function encodePayment(payment: SignedPayment): string {\n const jsonString = JSON.stringify(payment)\n return safeBase64Encode(jsonString)\n}\n\n/**\n * Decode a base64 encoded payment string back to payment object.\n * \n * @param encodedPayment - Base64 encoded payment string\n * @returns Decoded payment object\n * \n * @example\n * ```ts\n * const payment = decodePayment(encodedString)\n * console.log(payment.d402Version) // 1\n * ```\n */\nexport function decodePayment(encodedPayment: string): SignedPayment {\n const jsonString = safeBase64Decode(encodedPayment)\n return JSON.parse(jsonString) as SignedPayment\n}\n\n","/**\n * Payment requirements selection logic\n */\n\nimport type { PaymentRequirement } from './types'\nimport { PaymentAmountExceededError, UnsupportedSchemeError } from './errors'\n\n/**\n * Options for selecting payment requirements\n */\nexport interface PaymentSelectorOptions {\n /** Filter by network (e.g., \"base-mainnet\") */\n network?: string\n\n /** Filter by payment scheme (default: \"exact\") */\n scheme?: string\n\n /** Maximum allowed payment amount in base units */\n maxAmount?: bigint\n\n /** Preferred network (will try this first) */\n preferredNetwork?: string\n\n /** Preferred token address */\n preferredToken?: string\n}\n\n/**\n * Select payment requirement from a list based on filters and preferences\n * \n * This function implements the same logic as \n * \n * @param requirements - List of accepted payment requirements from 402 response\n * @param options - Selection options and filters\n * @returns Selected payment requirement\n * \n * @throws {UnsupportedSchemeError} If no matching scheme found\n * @throws {PaymentAmountExceededError} If payment exceeds max amount\n * \n * @example\n * const selected = selectPaymentRequirement(requirements, {\n * scheme: 'exact',\n * network: 'base-mainnet',\n * maxAmount: 1000000n\n * })\n */\nexport function selectPaymentRequirement(\n requirements: PaymentRequirement[],\n options: PaymentSelectorOptions = {}\n): PaymentRequirement {\n const {\n network: networkFilter,\n scheme: schemeFilter = 'exact',\n maxAmount,\n preferredNetwork,\n preferredToken\n } = options\n\n // First pass: try to find preferred match\n if (preferredNetwork || preferredToken) {\n const preferred = findRequirement(requirements, {\n ...options,\n network: preferredNetwork || networkFilter,\n token: preferredToken\n })\n if (preferred) {\n return preferred\n }\n }\n\n // Second pass: find any matching requirement\n const selected = findRequirement(requirements, {\n scheme: schemeFilter,\n network: networkFilter,\n maxAmount\n })\n\n if (selected) {\n return selected\n }\n\n // No match found\n const availableSchemes = [...new Set(requirements.map(r => r.scheme))]\n throw new UnsupportedSchemeError(\n availableSchemes,\n `No payment requirement found matching filters (scheme: ${schemeFilter}, network: ${networkFilter || 'any'})`\n )\n}\n\n/**\n * Internal helper to find a requirement matching filters\n */\nfunction findRequirement(\n requirements: PaymentRequirement[],\n filters: {\n scheme?: string\n network?: string\n token?: string\n maxAmount?: bigint\n }\n): PaymentRequirement | undefined {\n for (const req of requirements) {\n // Check scheme filter\n if (filters.scheme && req.scheme !== filters.scheme) {\n continue\n }\n\n // Check network filter\n if (filters.network && req.network !== filters.network) {\n continue\n }\n\n // Check token filter\n if (filters.token && req.asset !== filters.token) {\n continue\n }\n\n // Check max amount for \"exact\" scheme\n if (req.scheme === 'exact' && filters.maxAmount !== undefined) {\n const requiredAmount = BigInt(req.maxAmountRequired)\n\n if (requiredAmount > filters.maxAmount) {\n throw new PaymentAmountExceededError(\n requiredAmount,\n filters.maxAmount,\n req.asset\n )\n }\n }\n\n // All filters passed\n return req\n }\n\n return undefined\n}\n\n/**\n * Custom payment selector function type\n */\nexport type PaymentSelector = (\n requirements: PaymentRequirement[],\n options?: PaymentSelectorOptions\n) => PaymentRequirement\n\n/**\n * Create a custom payment selector with default options\n * \n * @param defaultOptions - Default options to apply\n * @returns Custom selector function\n * \n * @example\n * const selector = createPaymentSelector({\n * preferredNetwork: 'base-mainnet',\n * maxAmount: 1000000n\n * })\n * \n * const selected = selector(requirements, { scheme: 'exact' })\n */\nexport function createPaymentSelector(\n defaultOptions: PaymentSelectorOptions\n): PaymentSelector {\n return (requirements, options = {}) => {\n return selectPaymentRequirement(requirements, {\n ...defaultOptions,\n ...options\n })\n }\n}\n\n/**\n * Sort payment requirements by preference\n * Useful for UI display or debugging\n * \n * @param requirements - List of requirements\n * @param preferredNetwork - Preferred network name\n * @returns Sorted list (preferred first)\n */\nexport function sortPaymentRequirements(\n requirements: PaymentRequirement[],\n preferredNetwork?: string\n): PaymentRequirement[] {\n return [...requirements].sort((a, b) => {\n // Prefer \"exact\" scheme over others\n if (a.scheme === 'exact' && b.scheme !== 'exact') return -1\n if (a.scheme !== 'exact' && b.scheme === 'exact') return 1\n\n // Prefer specified network\n if (preferredNetwork) {\n if (a.network === preferredNetwork && b.network !== preferredNetwork) return -1\n if (a.network !== preferredNetwork && b.network === preferredNetwork) return 1\n }\n\n // Sort by amount (lower first)\n const amountA = BigInt(a.maxAmountRequired)\n const amountB = BigInt(b.maxAmountRequired)\n if (amountA < amountB) return -1\n if (amountA > amountB) return 1\n\n return 0\n })\n}\n\n","{\n \"sepolia\": {\n \"IATPWallet\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidOperatorAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidOwnerAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProvider\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSettlementLayerAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidTokenAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotAuthorized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotSettlementLayer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlyOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"PendingWithdrawalExists\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"SignatureExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TransferFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WithdrawalAlreadyExecuted\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WithdrawalLockupNotExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WithdrawalRequestNotFound\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"settlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClientInitialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"oldDescription\",\n \"type\": \"string\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"newDescription\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"DescriptionUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"FundsDeposited\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"FundsTransferredToSettlement\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"oldName\",\n \"type\": \"string\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"newName\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"NameUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"oldOperator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOperator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OperatorAddressUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"oldWalletType\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"newWalletType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"WalletTypeUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawalCancelled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WithdrawalExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestedAt\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockTime\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawalRequested\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BONDING_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PROVIDER_ATTESTATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PULL_FUNDS_FOR_SETTLEMENT_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAWAL_LOCKUP_PERIOD\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"cancelWithdrawal\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"description\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"executeWithdrawal\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getAvailableBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWithdrawalRequest\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"requestedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"executed\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct IIATPWallet.WithdrawalRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"unlockTime\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_roleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_settlementLayer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_description\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isMaintainer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"isValidSettlementRequest\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"operatorAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"pullFundsForSettlement\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"requestWithdrawal\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"roleManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract IRoleManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"settlementLayer\",\n \"outputs\": [\n {\n \"internalType\": \"contract IIATPSettlementLayer\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_newWalletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_newName\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_newDescription\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"updateMetadata\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newOperatorAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"updateOperatorAddress\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"validateConsumerSignature\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"validateProviderAttestation\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletType\",\n \"outputs\": [\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"sendToOwner\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"withdrawAllFromSettlement\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawEpochFromSettlement\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawalRequests\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"requestedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"executed\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n ],\n \"RoleManager\": [\n {\n \"inputs\": [],\n \"name\": \"AccessControlBadConfirmation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"neededRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAINTAINER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"maintainer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addMaintainer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDefaultAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMembers\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"congress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"maintainers\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"maintainer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"removeMaintainer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"callerConfirmation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newAdmin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferDefaultAdmin\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n ],\n \"IATPSettlementLayer\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AmountMustBePositive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ArrayLengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"CannotReleaseEpochYet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ConsumerProviderSame\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputeAlreadyFiled\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputeAlreadyResolved\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputeNotFound\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputePeriodExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EmptyArray\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochMustBeNextOne\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochMustBeOne\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidConsumer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidConsumerSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidEpoch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInput\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProvider\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProviderSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidTraiaToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidUtilityAgentFactory\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoFundsToRelease\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoLockedFunds\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotAuthorized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProviderNotRegistered\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestAlreadyProcessed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestNotSettled\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"SignatureAlreadyUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"refillAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"previousBalance\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newBalance\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AutoRefillExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newMaxAutoRefillAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newBalanceThresholdMultiplier\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newAutoRefillMultiplier\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AutoRefillParametersUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ConsumerDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ConsumerWithdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"reason\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"DisputeFiled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"consumerWon\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"resolvedBy\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"DisputeResolved\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"epochDurationSeconds\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"maxEpochsToRelease\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"EpochParametersSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"EpochReleased\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"facilitator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"FacilitatorEarningsWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newFeePercent\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newFeeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"FeeConfigUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"feeCollector\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"feeAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"providerAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"FeesCollected\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newMaxFacilitatorFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MaxFacilitatorFeeUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ProviderWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"consumerRequestCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RequestSettled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"reason\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"RequestSettlementFailed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"oldFactory\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newFactory\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"UtilityAgentFactoryUpdated\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BASIS_POINTS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"BONDING_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochDuration\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochReleaseDelay\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_FEE_PERCENT\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestExpirationTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SETTLEMENT_POINTS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest\",\n \"name\": \"req\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"facilitator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"_settleRequest\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"canReleaseEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"collectFees\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"consumerReputations\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"completed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"failed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"faults\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"score\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"firstSettlementAt\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"consumerRequestCounts\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"reason\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"disputeRequest\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"disputes\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"reason\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"filedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"resolved\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"facilitatorFeeBalances\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"feeBalances\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"feeCollector\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getCurrentEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getDisputeInProgressAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getEpochBalance\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"disputeInProgressBalance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isWithdrawn\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.EpochBalance\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"facilitator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getFacilitatorEarnings\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getFeeBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getLockedBalanceForProvider\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getProviderReputation\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"completed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"failed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"faults\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"score\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"firstSettlementAt\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.Reputation\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getProviderReputationScore\",\n \"outputs\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"\",\n \"type\": \"int256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getUnlockedBalanceForProvider\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_roleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_feeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isMaintainer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"lastWithdrawnEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maxFacilitatorFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"protocolFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"providerEpochBalances\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"disputeInProgressBalance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isWithdrawn\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"providerReputations\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"completed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"failed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"faults\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"score\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"firstSettlementAt\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"consumerWon\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"resolveDispute\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"roleManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract IRoleManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_epochDuration\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_epochReleaseDelay\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setEpochParameters\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_feeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setFeeConfig\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_maxFacilitatorFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setMaxFacilitatorFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_requestExpirationTime\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setRequestExpirationTime\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest\",\n \"name\": \"req\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"settleRequest\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest[]\",\n \"name\": \"serviceRequests\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"settleRequests\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"failedIndices\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"settlements\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest\",\n \"name\": \"settlementRequest\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"enum IIATPSettlementLayer.RequestStatus\",\n \"name\": \"status\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"usedSignatures\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"validatePaymentAmount\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"isValid\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawAllAvailableEpochs\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawEpochToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"tokens\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"withdrawFacilitatorEarnings\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"IATPWalletFactory\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidParameters\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAddress\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newSettlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SettlementLayerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"settlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WalletCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WalletImplementationUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WalletRoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BONDING_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"allWallets\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"createClientWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"createClientWalletFor\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_description\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"createWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_description\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"createWalletFor\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getOperatorWalletCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getOwnerWalletCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTotalWallets\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_offset\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_limit\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getWallets\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"wallets\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"total\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWalletsByOperator\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWalletsByOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasWallet\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_roleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_walletRoleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_settlementLayer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_walletImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isMaintainer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ownerByWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"roleManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract IRoleManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newSettlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSettlementLayer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newWalletImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWalletImplementation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newWalletRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWalletRoleManager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"settlementLayer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalWallets\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletImplementation\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletRoleManager\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"walletsByOperator\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"walletsByOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ]\n }\n}\n","{\n \"sepolia\": {\n \"RoleManager\": \"0x71d388142EA9194e5b51Eee3FEfe3B87D494dd38\",\n \"IATPSettlementLayer\": \"0xAa91081571404d7E2f2B8F12FB2Be092EBe6d2B8\",\n \"IATPWalletFactory\": \"0x0846223D022677C34eea21Bd9aa08f75c8Bd12e1\"\n }\n}\n","{\n \"sepolia\": {\n \"Congress\": \"0x94Fc9eddBd1779542b78eb92F0569762603876e2\",\n \"TraiaCongressMembersRegistry\": \"0x3B685403b195f16D103b42FCf56F848A278d6049\",\n \"IATPWalletImplementation\": \"0x4f9f0E1cD21f7122417A2A13b03c1BE84b7CB37E\",\n \"RoleManagerImplementation\": \"0x585AD85FCFBec3B1503E50b46407bF65d4006560\",\n \"IATPSettlementLayerImplementation\": \"0x0fDd39d323EE3538c800d4A13730eecE3F0bA975\",\n \"IATPWalletFactoryImplementation\": \"0x4AC08c53C7ce1244a458D49A4101C3DC664e2D37\"\n }\n}\n","/**\n * Contract configuration and utilities.\n * \n * Provides access to IATPWallet contract ABIs and deployed addresses.\n * Contract data is bundled directly in the package for reliability.\n */\n\nimport sepoliaAbis from './contracts/abis/sepolia.json'\nimport proxyAddresses from './contracts/addresses/proxies.json'\nimport implementationAddresses from './contracts/addresses/implementations.json'\n\n/**\n * Supported contract names.\n */\nexport enum ContractName {\n IATP_WALLET = 'IATPWallet',\n IATP_WALLET_FACTORY = 'IATPWalletFactory',\n IATP_SETTLEMENT_LAYER = 'IATPSettlementLayer',\n ROLE_MANAGER = 'RoleManager'\n}\n\n/**\n * Supported networks for contract deployments.\n */\nexport type SupportedContractNetwork = 'sepolia'\n\n// Type-safe contract addresses and ABIs\ntype NetworkAbis = {\n [network: string]: {\n [contractName: string]: any[]\n }\n}\n\ntype NetworkAddresses = {\n [network: string]: {\n [contractName: string]: string\n }\n}\n\nconst ABIS: NetworkAbis = {\n sepolia: sepoliaAbis.sepolia || {}\n}\n\nconst PROXY_ADDRESSES: NetworkAddresses = proxyAddresses as NetworkAddresses\nconst IMPL_ADDRESSES: NetworkAddresses = implementationAddresses as NetworkAddresses\n\n/**\n * Get contract address for a given network.\n * \n * @param contractName - Name of the contract (use ContractName enum)\n * @param network - Network name (default: \"sepolia\")\n * @param useProxy - Use proxy address if true, implementation if false (default: true)\n * @returns Contract address as hex string, or null if not found\n * \n * @example\n * ```ts\n * const factoryAddr = getContractAddress(ContractName.IATP_WALLET_FACTORY, 'sepolia')\n * console.log(factoryAddr) // \"0x15D83638E339a0f29283f6B93dC1bb90b8339078\"\n * ```\n */\nexport function getContractAddress(\n contractName: string | ContractName,\n network: SupportedContractNetwork = 'sepolia',\n useProxy: boolean = true\n): string | null {\n const addresses = useProxy ? PROXY_ADDRESSES : IMPL_ADDRESSES\n const networkAddresses = addresses[network]\n\n if (!networkAddresses) {\n return null\n }\n\n return networkAddresses[contractName] || null\n}\n\n/**\n * Get contract ABI for a given network.\n * \n * @param contractName - Name of the contract (use ContractName enum)\n * @param network - Network name (default: \"sepolia\")\n * @returns Contract ABI as array of objects, or null if not found\n * \n * @example\n * ```ts\n * const factoryAbi = getContractAbi(ContractName.IATP_WALLET_FACTORY, 'sepolia')\n * console.log(factoryAbi.length) // Number of ABI entries\n * ```\n */\nexport function getContractAbi(\n contractName: string | ContractName,\n network: SupportedContractNetwork = 'sepolia'\n): any[] | null {\n const networkAbis = ABIS[network]\n\n if (!networkAbis) {\n return null\n }\n\n return networkAbis[contractName] || null\n}\n\n/**\n * Get contract configuration (address and ABI) for a network.\n * \n * @param contractName - Name of the contract\n * @param network - Network name (default: \"sepolia\")\n * @returns Object with address and abi, or null if not found\n * \n * @example\n * ```ts\n * const config = getContractConfig(ContractName.IATP_WALLET_FACTORY, 'sepolia')\n * if (config) {\n * console.log(config.address)\n * console.log(config.abi.length)\n * }\n * ```\n */\nexport function getContractConfig(\n contractName: string | ContractName,\n network: SupportedContractNetwork = 'sepolia'\n): { address: string; abi: any[] } | null {\n const address = getContractAddress(contractName, network)\n const abi = getContractAbi(contractName, network)\n\n if (!address || !abi) {\n return null\n }\n\n return { address, abi }\n}\n\n/**\n * Get all contract addresses for a network.\n * \n * @param network - Network name\n * @returns Object with all contract addresses for the network\n * \n * @example\n * ```ts\n * const addresses = getAllContractAddresses('sepolia')\n * console.log(addresses.IATPWalletFactory)\n * ```\n */\nexport function getAllContractAddresses(\n network: SupportedContractNetwork\n): Record<string, string> {\n return PROXY_ADDRESSES[network] || {}\n}\n\n/**\n * Check if a contract is deployed on a network.\n * \n * @param contractName - Name of the contract\n * @param network - Network name\n * @returns True if contract exists on network\n * \n * @example\n * ```ts\n * if (isContractDeployed(ContractName.IATP_WALLET_FACTORY, 'sepolia')) {\n * // Contract is available\n * }\n * ```\n */\nexport function isContractDeployed(\n contractName: string | ContractName,\n network: SupportedContractNetwork\n): boolean {\n const address = getContractAddress(contractName, network)\n const abi = getContractAbi(contractName, network)\n return address !== null && abi !== null\n}\n\n","/**\n * IATPWallet creation and management\n * \n */\n\nimport { createPublicClient, createWalletClient, http, type Hash, decodeEventLog, type Chain, type Address, type PublicClient, type WalletClient, encodeFunctionData } from 'viem'\nimport { sepolia } from 'viem/chains'\nimport type { Account } from 'viem/accounts'\nimport { getContractConfig, ContractName } from './contracts'\n\n/**\n * Result of wallet creation.\n */\nexport interface WalletCreationResult {\n /** Address of the created IATPWallet contract */\n walletAddress: `0x${string}`\n\n /** Owner address (who created it, also the operator) */\n ownerAddress: `0x${string}`\n\n /** Transaction hash */\n transactionHash: Hash\n\n /** Block number where wallet was created */\n blockNumber: bigint\n\n /** Network where wallet was deployed */\n network: string\n\n /** Chain ID */\n chainId: number\n}\n\n/**\n * Create a new IATPWallet using IATPWalletFactory.\n * \n * Creates an on-chain smart contract wallet where the user is both owner and operator.\n * The user signs all payments themselves with their wallet (MetaMask/WalletConnect).\n * \n * This function:\n * 1. Calls IATPWalletFactory.createWallet(ownerAddress)\n * 2. Sets owner as operator (user signs all payments)\n * 3. Waits for transaction confirmation\n * 4. Extracts wallet address from WalletCreated event\n * 5. Returns wallet address and transaction info\n * \n * @param params - Creation parameters\n * @param params.ownerAccount - Owner's account (will own the wallet)\n * @param params.network - Network to deploy on (default: \"sepolia\")\n * @param params.rpcUrl - Custom RPC URL (optional)\n * @param params.operatorPrivateKey - Use specific operator key instead of generating (optional)\n * @returns Wallet creation result with addresses and keys\n * \n * @example\n * ```ts\n * import { createIATPWallet } from '@dcentralab/d402-client'\n * import { privateKeyToAccount } from 'viem/accounts'\n * \n * const ownerAccount = privateKeyToAccount('0x...')\n * \n * const result = await createIATPWallet({\n * ownerAccount,\n * network: 'sepolia'\n * })\n * \n * console.log('Wallet created:', result.walletAddress)\n * console.log('Operator key:', result.operatorPrivateKey) // Store securely!\n * ```\n */\nexport async function createIATPWallet(params: {\n ownerAccount: Account\n network?: 'sepolia'\n rpcUrl?: string\n}): Promise<WalletCreationResult> {\n const { ownerAccount, network = 'sepolia', rpcUrl } = params\n\n // Get contract configuration\n const factoryConfig = getContractConfig(ContractName.IATP_WALLET_FACTORY, network)\n\n if (!factoryConfig) {\n throw new Error(`IATPWalletFactory not found for network: ${network}`)\n }\n\n // Owner is operator (user signs all payments themselves)\n const operatorAddress = ownerAccount.address\n\n // Setup clients\n const chain: Chain = sepolia\n const transport = http(rpcUrl)\n\n const publicClient = createPublicClient({\n chain,\n transport\n })\n\n const walletClient = createWalletClient({\n account: ownerAccount,\n chain,\n transport\n })\n\n // Check owner balance\n const balance = await publicClient.getBalance({ address: ownerAccount.address })\n\n if (balance === 0n) {\n throw new Error('Owner has no ETH for gas. Please fund the account.')\n }\n\n // Build transaction to create wallet\n // Owner is operator (user signs payments)\n // For default client wallet: walletType=0 (CLIENT), name=\"\", description=\"\"\n const { request } = await publicClient.simulateContract({\n account: ownerAccount,\n address: factoryConfig.address as `0x${string}`,\n abi: factoryConfig.abi,\n functionName: 'createWallet',\n args: [operatorAddress, 0, '', '']\n })\n\n // Send transaction\n const hash = await walletClient.writeContract(request)\n\n // Wait for confirmation\n const receipt = await publicClient.waitForTransactionReceipt({\n hash,\n timeout: 300_000 // 5 minutes\n })\n\n if (receipt.status !== 'success') {\n throw new Error(`Transaction failed: ${hash}`)\n }\n\n // Parse WalletCreated event to get wallet address\n let walletAddress: `0x${string}` | undefined\n\n for (const log of receipt.logs) {\n try {\n const decoded = decodeEventLog({\n abi: factoryConfig.abi,\n data: log.data,\n topics: log.topics,\n eventName: 'WalletCreated'\n })\n\n // Extract wallet address from decoded args\n if (decoded.args && typeof decoded.args === 'object' && 'wallet' in decoded.args) {\n walletAddress = decoded.args.wallet as `0x${string}`\n break\n }\n } catch {\n // Not the event we're looking for, continue\n continue\n }\n }\n\n if (!walletAddress) {\n throw new Error('WalletCreated event not found in transaction logs')\n }\n\n // Return result\n return {\n walletAddress,\n ownerAddress: ownerAccount.address,\n transactionHash: hash,\n blockNumber: receipt.blockNumber,\n network,\n chainId: chain.id\n }\n}\n\n/**\n * Get all IATPWallet addresses owned by a user.\n * \n * Queries the IATPWalletFactory contract to retrieve all wallets\n * where the specified address is the owner.\n * \n * Use this to check if a user already has a wallet before calling createIATPWallet().\n * \n * @param params - Query parameters\n * @param params.ownerAddress - User's wallet address (from MetaMask)\n * @param params.network - Network to query (default: \"sepolia\")\n * @param params.rpcUrl - Custom RPC URL (optional)\n * @returns Array of IATPWallet contract addresses (empty if user has no wallets)\n * \n * @example\n * ```ts\n * import { getWalletsByOwner } from '@dcentralab/d402-client'\n * import { useAccount } from 'wagmi'\n * \n * const { address } = useAccount()\n * \n * // Check if user has any wallets\n * const wallets = await getWalletsByOwner({\n * ownerAddress: address,\n * network: 'sepolia'\n * })\n * \n * if (wallets.length === 0) {\n * // Show \"Create Wallet\" button\n * } else {\n * // Use existing wallet: wallets[0]\n * }\n * ```\n */\nexport async function getWalletsByOwner(params: {\n ownerAddress: Address\n network?: 'sepolia'\n rpcUrl?: string\n}): Promise<Address[]> {\n const { ownerAddress, network = 'sepolia', rpcUrl } = params\n\n // Get factory contract configuration\n const factoryConfig = getContractConfig(ContractName.IATP_WALLET_FACTORY, network)\n\n if (!factoryConfig) {\n throw new Error(`IATPWalletFactory not found for network: ${network}`)\n }\n\n // Setup client\n const chain: Chain = sepolia\n const transport = http(rpcUrl)\n\n const publicClient = createPublicClient({\n chain,\n transport\n })\n\n // Call getWalletsByOwner on factory contract\n const wallets = await publicClient.readContract({\n address: factoryConfig.address as Address,\n abi: factoryConfig.abi,\n functionName: 'getWalletsByOwner',\n args: [ownerAddress]\n }) as Address[]\n\n return wallets\n}\n\n/**\n * Get available balance for a specific token in an IATPWallet.\n * \n * Queries the IATPWallet contract's getAvailableBalance function to retrieve\n * the available balance for a given token.\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address (e.g., USDC)\n * @param params.network - Network to query (default: \"sepolia\")\n * @returns Available balance in token's base units (wei)\n * \n * @example\n * ```ts\n * import { getAvailableBalance } from '@dcentralab/d402-client'\n * import { usePublicClient } from 'wagmi'\n * \n * const publicClient = usePublicClient()\n * \n * const balance = await getAvailableBalance({\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC on Sepolia\n * })\n * \n * console.log('Available balance:', balance) // 1000000n (1 USDC)\n * ```\n */\nexport async function getAvailableBalance(params: {\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<bigint> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'getAvailableBalance',\n args: [tokenAddress]\n })\n\n return balance as unknown as bigint\n}\n\n/**\n * Get withdrawal request for a token in an IATPWallet.\n * \n * Queries the IATPWallet contract to get the current withdrawal request\n * (amount and unlock timestamp) for a specific token.\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address\n * @param params.network - Network to query (default: \"sepolia\")\n * @returns Withdrawal request: [amount, unlockTimestamp] or null if no request exists\n * \n * @example\n * ```ts\n * import { getWithdrawalRequest } from '@dcentralab/d402-client'\n * \n * const request = await getWithdrawalRequest({\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * })\n * \n * if (request) {\n * const [amount, unlockTimestamp] = request\n * const isUnlocked = Date.now() >= Number(unlockTimestamp) * 1000\n * }\n * ```\n */\nexport async function getWithdrawalRequest(params: {\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<[bigint, bigint] | null> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n const result = await publicClient.readContract({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'getWithdrawalRequest',\n args: [tokenAddress]\n }) as [bigint, bigint]\n\n // If amount is 0, no request exists\n if (result[0] === 0n) {\n return null\n } executeWithdrawal\n\n return result\n}\n\n/**\n * Request a withdrawal from an IATPWallet.\n * \n * Initiates a withdrawal request for a token. The withdrawal will be locked\n * for a period (typically 5 minutes) before it can be executed.\n * \n * @param params - Transaction parameters\n * @param params.walletClient - Viem WalletClient (from wagmi useWalletClient)\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address\n * @param params.amount - Amount in token's base units (wei)\n * @param params.account - Account to sign transaction (operator)\n * @param params.network - Network (default: \"sepolia\")\n * @returns Transaction hash\n * \n * @example\n * ```ts\n * import { requestWithdrawal } from '@dcentralab/d402-client'\n * import { parseUnits } from 'viem'\n * \n * const hash = await requestWithdrawal({\n * walletClient,\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * amount: parseUnits('100', 6), // 100 USDC (6 decimals)\n * account: walletClient.account,\n * })\n * ```\n */\nexport async function requestWithdrawal(params: {\n walletClient: WalletClient\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n amount: bigint\n account: Account\n network?: 'sepolia'\n}): Promise<Hash> {\n const { walletClient, publicClient, walletAddress, tokenAddress, amount, account, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n // Encode function data for gas estimation\n const data = encodeFunctionData({\n abi: walletConfig.abi,\n functionName: 'requestWithdrawal',\n args: [tokenAddress, amount],\n })\n\n // Estimate gas with 20% buffer\n const estimatedGas = await publicClient.estimateGas({\n account: account.address,\n to: walletAddress,\n data,\n })\n const gasLimit = estimatedGas + (estimatedGas * BigInt(20) / BigInt(100))\n\n // Simulate to get proper request object\n const { request } = await publicClient.simulateContract({\n account,\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'requestWithdrawal',\n args: [tokenAddress, amount],\n })\n\n // Write contract with gas limit override\n const hash = await walletClient.writeContract({\n ...request,\n gas: gasLimit,\n })\n\n // Wait for confirmation\n await publicClient.waitForTransactionReceipt({ hash })\n\n return hash\n}\n\n/**\n * Execute a withdrawal from an IATPWallet (after unlock period).\n * \n * Completes a withdrawal that has passed its unlock period. This transfers\n * the tokens from the IATPWallet back to the user's wallet.\n * \n * @param params - Transaction parameters\n * @param params.walletClient - Viem WalletClient\n * @param params.publicClient - Viem PublicClient\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address\n * @param params.account - Account to sign transaction (operator)\n * @param params.network - Network (default: \"sepolia\")\n * @returns Transaction hash\n * \n * @example\n * ```ts\n * import { executeWithdrawal } from '@dcentralab/d402-client'\n * \n * const hash = await executeWithdrawal({\n * walletClient,\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * account: walletClient.account,\n * })\n * ```\n */\nexport async function executeWithdrawal(params: {\n walletClient: WalletClient\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n account: Account\n network?: 'sepolia'\n}): Promise<Hash> {\n const { walletClient, publicClient, walletAddress, tokenAddress, account, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n // Encode function data for gas estimation\n const data = encodeFunctionData({\n abi: walletConfig.abi,\n functionName: 'executeWithdrawal',\n args: [tokenAddress],\n })\n\n // Estimate gas with 20% buffer\n const estimatedGas = await publicClient.estimateGas({\n account: account.address,\n to: walletAddress,\n data,\n })\n const gasLimit = estimatedGas + (estimatedGas * BigInt(20) / BigInt(100))\n\n // Simulate to get proper request object\n const { request } = await publicClient.simulateContract({\n account,\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'executeWithdrawal',\n args: [tokenAddress],\n })\n\n // Write contract with gas limit override\n const hash = await walletClient.writeContract({\n ...request,\n gas: gasLimit,\n })\n\n // Wait for confirmation\n await publicClient.waitForTransactionReceipt({ hash })\n\n return hash\n}\n\n/**\n * Get available balances for multiple tokens in an IATPWallet.\n * \n * Batch query to get balances for all specified tokens.\n * Useful for displaying a balance table in the UI.\n * \n * @param params - Query parameters\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddresses - Array of token contract addresses\n * @param params.network - Network to query (default: \"sepolia\")\n * @param params.rpcUrl - Custom RPC URL (optional)\n * @returns Array of token balances with address and balance\n * \n * @example\n * ```ts\n * import { getWalletBalances } from '@dcentralab/d402-client'\n * \n * const balances = await getWalletBalances({\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddresses: [\n * '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * '0x...' // TRAIA or other tokens\n * ],\n * network: 'sepolia'\n * })\n * \n * balances.forEach(({ token, balance }) => {\n * console.log(`Token ${token}: ${balance}`)\n * })\n * ```\n */","/**\n * D402 Client - Main client class for handling HTTP 402 payments\n * \n */\n\nimport type { Account } from 'viem/accounts'\nimport type { PaymentRequirement } from './types'\nimport { selectPaymentRequirement, type PaymentSelector } from './selector'\nimport type { PublicClient, WalletClient, Hash } from 'viem'\nimport {\n getAvailableBalance as walletGetAvailableBalance,\n getWithdrawalRequest as walletGetWithdrawalRequest,\n requestWithdrawal as walletRequestWithdrawal,\n executeWithdrawal as walletExecuteWithdrawal\n} from './wallet'\n\n/**\n * D402 Client configuration.\n * \n * The client uses the user's wallet to sign payment authorizations for 402-protected APIs.\n */\nexport interface D402ClientConfig {\n /** \n * User's account for signing payments.\n * Typically from wagmi: `walletClient.account`\n */\n operatorAccount: Account\n\n /** \n * IATPWallet contract address.\n * Get from `createIATPWallet()` or `getWalletsByOwner()`.\n */\n iatpWalletAddress: `0x${string}`\n\n /**\n * Optional safety limit for maximum payment amount per request in base units.\n * \n * WARNING: This is a simple numeric comparison and does NOT account for:\n * - Different tokens (USDC vs TRAIA vs others) - amounts are compared directly\n * - Token decimals - ensure maxValue uses the same decimals as expected tokens\n * - Exchange rates - this is not a USD limit, it's a token amount limit\n * \n * Each endpoint can have different payment requirements (amount and token),\n * but this limit applies to all requests. Set it based on your most expensive\n * expected payment in the token's base units.\n * \n * If undefined, no limit is enforced (not recommended for production).\n */\n maxValue?: bigint\n\n /**\n * Optional custom selector for payment requirements.\n * If not provided, uses default selector that picks first \"exact\" scheme.\n */\n paymentRequirementsSelector?: PaymentSelector\n\n /**\n * Optional network filter for payment selection.\n * Only select requirements matching this network.\n */\n networkFilter?: string\n\n /**\n * Optional scheme filter for payment selection.\n * Defaults to \"exact\".\n */\n schemeFilter?: string\n}\n\n/**\n * D402 Client for handling HTTP 402 Payment Required responses.\n * \n * This client automatically:\n * 1. Detects HTTP 402 responses\n * 2. Parses payment requirements\n * 3. Selects appropriate payment option\n * 4. Signs payment with EIP-712\n * 5. Retries request with X-Payment header\n * \n * @example\n * ```ts\n * import { D402Client } from '@dcentralab/d402-client'\n * import { privateKeyToAccount } from 'viem/accounts'\n * \n * const operatorAccount = privateKeyToAccount('0x...')\n * \n * const client = new D402Client({\n * operatorAccount,\n * iatpWalletAddress: '0xUserIATPWallet...',\n * maxValue: 1000000n // 1 USDC max\n * })\n * \n * const response = await client.fetch('http://api.example.com/analyze', {\n * method: 'POST',\n * body: JSON.stringify({ text: 'Analyze this' })\n * })\n * \n * const data = await response.json()\n * ```\n */\nexport class D402Client {\n private readonly operatorAccount: Account\n private readonly iatpWalletAddress: `0x${string}`\n private readonly maxValue?: bigint\n private readonly paymentRequirementsSelector: PaymentSelector\n private readonly networkFilter?: string\n private readonly schemeFilter: string\n\n /**\n * Create a new D402 Client.\n * \n * @param config - Client configuration\n * \n * @example\n * ```ts\n * const client = new D402Client({\n * operatorAccount: walletClient.account, // User's wallet from wagmi\n * iatpWalletAddress: userWallet, // From createIATPWallet() or getWalletsByOwner()\n * maxValue: 1000000n // Safety limit: 1 USDC max\n * })\n * ```\n */\n constructor(config: D402ClientConfig) {\n this.operatorAccount = config.operatorAccount\n this.iatpWalletAddress = config.iatpWalletAddress\n this.maxValue = config.maxValue\n this.networkFilter = config.networkFilter\n this.schemeFilter = config.schemeFilter || 'exact'\n\n // Use custom selector or default\n this.paymentRequirementsSelector = config.paymentRequirementsSelector || selectPaymentRequirement\n }\n\n /**\n * Select payment requirement from list of options.\n * \n * Applies configured filters (network, scheme, maxValue) to choose\n * the appropriate payment option from the server's requirements list.\n * \n * @param requirements - List of payment requirements from 402 response\n * @returns Selected payment requirement\n */\n selectPaymentRequirement(requirements: PaymentRequirement[]): PaymentRequirement {\n return this.paymentRequirementsSelector(requirements, {\n network: this.networkFilter,\n scheme: this.schemeFilter,\n maxAmount: this.maxValue\n })\n }\n\n /**\n * Get the IATP wallet address used for payments.\n * \n * @returns IATPWallet contract address, or user's EOA address if no wallet configured\n */\n getIATPWalletAddress(): `0x${string}` {\n return this.iatpWalletAddress\n }\n\n /**\n * Get the user's account used for signing payments.\n * \n * @returns User's wallet account\n */\n getOperatorAccount(): Account {\n return this.operatorAccount\n }\n\n /**\n * Get the maximum payment value limit.\n * \n * @returns Maximum value in base units, or undefined if no limit\n */\n getMaxValue(): bigint | undefined {\n return this.maxValue\n }\n\n /**\n * Get available balance for a token in the IATP wallet.\n * \n * @param publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param tokenAddress - Token contract address\n * @returns Available balance in token's base units (wei)\n */\n async getAvailableBalance(\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ): Promise<bigint> {\n return walletGetAvailableBalance({\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n })\n }\n\n /**\n * Get withdrawal request for a token.\n * \n * @param publicClient - Viem PublicClient\n * @param tokenAddress - Token contract address\n * @returns Withdrawal request: [amount, unlockTimestamp] or null if no request exists\n */\n async getWithdrawalRequest(\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ): Promise<[bigint, bigint] | null> {\n return walletGetWithdrawalRequest({\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n })\n }\n\n /**\n * Request a withdrawal from the IATP wallet.\n * \n * @param walletClient - Viem WalletClient (from wagmi useWalletClient)\n * @param publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param tokenAddress - Token contract address\n * @param amount - Amount in token's base units (wei)\n * @returns Transaction hash\n */\n async requestWithdrawal(\n walletClient: WalletClient,\n publicClient: PublicClient,\n tokenAddress: `0x${string}`,\n amount: bigint\n ): Promise<Hash> {\n return walletRequestWithdrawal({\n walletClient,\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n amount,\n account: this.operatorAccount,\n })\n }\n\n /**\n * Execute a withdrawal for a token (after unlock period).\n * \n * @param walletClient - Viem WalletClient\n * @param publicClient - Viem PublicClient\n * @param tokenAddress - Token contract address\n * @returns Transaction hash\n */\n async executeWithdrawal(\n walletClient: WalletClient,\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ): Promise<Hash> {\n return walletExecuteWithdrawal({\n walletClient,\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n account: this.operatorAccount,\n })\n }\n\n /**\n * Fetch with automatic 402 payment handling.\n * \n * \n * Flow:\n * 1. Make request without payment\n * 2. If 402 response, parse payment requirements\n * 3. Select appropriate payment option\n * 4. Sign payment with EIP-712\n * 5. Retry request with X-Payment header\n * 6. Return final response\n * \n * @param url - URL to fetch\n * @param init - Fetch options (method, headers, body, etc.)\n * @returns Response object (after payment if 402)\n * \n * @example\n * ```ts\n * const client = new D402Client({ operatorAccount, iatpWalletAddress })\n * \n * const response = await client.fetch('http://api.example.com/analyze', {\n * method: 'POST',\n * headers: { 'Content-Type': 'application/json' },\n * body: JSON.stringify({ text: 'Analyze this' })\n * })\n * \n * const data = await response.json()\n * ```\n */\n async fetch(url: string, init?: RequestInit): Promise<Response> {\n // Import functions needed for 402 handling\n const { parseAllPaymentRequirements } = await import('./parser')\n const { signD402Payment } = await import('./signer')\n const { encodePayment } = await import('./encoder')\n\n // Make initial request without payment\n let response = await fetch(url, init)\n\n // If not 402, return immediately\n if (response.status !== 402) {\n return response\n }\n\n // Handle 402 Payment Required\n try {\n // Parse all payment requirements from 402 response\n const requirements = await parseAllPaymentRequirements(response)\n\n // Select payment requirement (applies filters and maxValue check)\n const selectedRequirement = this.selectPaymentRequirement(requirements)\n\n // Sign payment\n const signedPayment = await signD402Payment({\n operatorAccount: this.operatorAccount,\n paymentRequirement: selectedRequirement,\n iatpWalletAddress: this.iatpWalletAddress\n })\n\n // Encode payment for header\n const paymentHeader = encodePayment(signedPayment)\n\n // Retry request with payment header\n response = await fetch(url, {\n ...init,\n headers: {\n ...init?.headers,\n 'X-Payment': paymentHeader,\n 'Access-Control-Expose-Headers': 'X-Payment-Response'\n }\n })\n\n return response\n\n } catch (error) {\n // Re-throw payment errors\n throw error\n }\n }\n}\n\n","/**\n * @dcentralab/d402-client\n * \n * D402 Payment Protocol Client for TypeScript/JavaScript\n * \n * @packageDocumentation\n */\n\n// Main exports\nexport { D402Client } from './client'\nexport type { D402ClientConfig } from './client'\n\n// Low-level utilities\nexport { signD402Payment } from './signer'\nexport { parsePaymentRequirement } from './parser'\nexport { encodePayment, decodePayment } from './encoder'\n\n// Payment selection\nexport {\n selectPaymentRequirement,\n createPaymentSelector,\n sortPaymentRequirements\n} from './selector'\nexport type { PaymentSelector, PaymentSelectorOptions } from './selector'\n\n// Utility functions\nexport {\n parseMoney,\n formatMoney,\n getUsdcAddress,\n getChainId,\n findMatchingPaymentRequirement,\n usdToUsdc,\n generateNonce,\n getCurrentTimestamp,\n isValidAddress,\n normalizeAddress,\n decodePaymentResponse\n} from './utils'\n\n// Error classes\nexport {\n PaymentError,\n PaymentAmountExceededError,\n MissingRequestConfigError,\n PaymentAlreadyAttemptedError,\n UnsupportedSchemeError,\n PaymentVerificationError,\n Invalid402ResponseError,\n UnsupportedNetworkError\n} from './errors'\n\n// Types\nexport type {\n D402Config,\n PaymentRequirement,\n SignedPayment,\n PaymentAuthorization,\n EIP712Domain,\n SupportedNetwork\n} from './types'\n\n// Constants\nexport { NETWORKS, TOKEN_ADDRESSES, CHAIN_IDS, DEFAULT_VALIDITY_WINDOW_SECONDS, EIP712_TYPES } from './constants'\n\n// Wallet Management\nexport {\n createIATPWallet,\n getWalletsByOwner,\n getAvailableBalance,\n} from './wallet'\nexport type { WalletCreationResult } from './wallet'\n\n// Settlement Layer\nexport {\n getLockedBalanceForProvider,\n getUnlockedBalanceForProvider,\n withdrawAllAvailableEpochs,\n} from './settlement'\n\n","/**\n * IATPSettlementLayer contract operations\n * \n * Functions for providers (utility agents) to query settlement balances,\n * epochs, and manage withdrawals from the settlement layer.\n */\n\nimport type { PublicClient, WalletClient, Address, Hash } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { getContractConfig, ContractName } from './contracts'\n\n/**\n * Get locked balance for a provider across unreleased epochs.\n * \n * This is the balance that's locked in the settlement layer and cannot\n * be withdrawn yet (still within the release delay period).\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.providerAddress - Provider (utility agent) IATPWallet address\n * @param params.tokenAddress - Token contract address\n * @param params.network - Network (default: \"sepolia\")\n * @returns Locked balance in base units (wei)\n * \n * @example\n * ```ts\n * import { getLockedBalanceForProvider } from '@dcentralab/d402-client'\n * \n * const locked = await getLockedBalanceForProvider({\n * publicClient,\n * providerAddress: '0xUtilityAgentWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * network: 'sepolia'\n * })\n * \n * console.log('Locked balance:', locked)\n * ```\n */\nexport async function getLockedBalanceForProvider(params: {\n publicClient: PublicClient\n providerAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<bigint> {\n const { publicClient, providerAddress, tokenAddress, network = 'sepolia' } = params\n\n const settlementConfig = getContractConfig(ContractName.IATP_SETTLEMENT_LAYER, network)\n\n if (!settlementConfig) {\n throw new Error(`IATPSettlementLayer contract not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'getLockedBalanceForProvider',\n args: [providerAddress, tokenAddress]\n })\n\n return balance as unknown as bigint\n}\n\n/**\n * Get unlocked balance for a provider across released epochs.\n * \n * This is the balance that's available for withdrawal (epochs have passed\n * the release delay and haven't been withdrawn yet).\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.providerAddress - Provider (utility agent) IATPWallet address\n * @param params.tokenAddress - Token contract address\n * @param params.network - Network (default: \"sepolia\")\n * @returns Unlocked balance in base units (wei)\n * \n * @example\n * ```ts\n * import { getUnlockedBalanceForProvider } from '@dcentralab/d402-client'\n * \n * const unlocked = await getUnlockedBalanceForProvider({\n * publicClient,\n * providerAddress: '0xUtilityAgentWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * network: 'sepolia'\n * })\n * \n * console.log('Unlocked balance:', unlocked)\n * ```\n */\nexport async function getUnlockedBalanceForProvider(params: {\n publicClient: PublicClient\n providerAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<bigint> {\n const { publicClient, providerAddress, tokenAddress, network = 'sepolia' } = params\n\n const settlementConfig = getContractConfig(ContractName.IATP_SETTLEMENT_LAYER, network)\n\n if (!settlementConfig) {\n throw new Error(`IATPSettlementLayer contract not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'getUnlockedBalanceForProvider',\n args: [providerAddress, tokenAddress]\n })\n\n return balance as unknown as bigint\n}\n\n/**\n * Withdraw all available epochs for a provider (utility agent).\n * \n * This function calls the settlement layer's withdrawAllAvailableEpochs function,\n * which releases and withdraws funds from all available epochs for the given token.\n * Only the provider themselves can call this function.\n * \n * @param params - Transaction parameters\n * @param params.walletClient - Viem WalletClient (from wagmi useWalletClient)\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.tokenAddress - Token contract address to withdraw\n * @param params.network - Network (default: \"sepolia\")\n * @returns Transaction hash\n * \n * @example\n * ```ts\n * import { withdrawAllAvailableEpochs } from '@dcentralab/d402-client'\n * \n * const hash = await withdrawAllAvailableEpochs({\n * walletClient,\n * publicClient,\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * network: 'sepolia'\n * })\n * \n * console.log('Withdrawal transaction:', hash)\n * ```\n */\nexport async function withdrawAllAvailableEpochs(params: {\n walletClient: WalletClient\n publicClient: PublicClient\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<Hash> {\n const { walletClient, publicClient, tokenAddress, network = 'sepolia' } = params\n\n if (!walletClient?.account) {\n throw new Error('Wallet account not found. Please connect your wallet.')\n }\n\n const account = walletClient.account\n\n const settlementConfig = getContractConfig(ContractName.IATP_SETTLEMENT_LAYER, network)\n\n if (!settlementConfig) {\n throw new Error(`IATPSettlementLayer contract not found for network: ${network}`)\n }\n\n // Encode function data for gas estimation\n const data = encodeFunctionData({\n abi: settlementConfig.abi,\n functionName: 'withdrawAllAvailableEpochs',\n args: [tokenAddress],\n })\n\n // Estimate gas with 20% buffer\n const estimatedGas = await publicClient.estimateGas({\n account: account.address,\n to: settlementConfig.address as Address,\n data,\n })\n const gasLimit = estimatedGas + (estimatedGas * BigInt(20) / BigInt(100))\n\n // Simulate to get proper request object\n const { request } = await publicClient.simulateContract({\n account,\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'withdrawAllAvailableEpochs',\n args: [tokenAddress],\n })\n\n // Execute transaction\n const hash = await walletClient.writeContract({\n ...request,\n gas: gasLimit,\n })\n\n // Wait for transaction receipt\n await publicClient.waitForTransactionReceipt({ hash })\n\n return hash\n}\n\n"]}
1
+ {"version":3,"sources":["../src/core/errors.ts","../src/payment/parser.ts","../src/core/constants.ts","../src/core/utils.ts","../src/payment/signer.ts","../src/payment/encoder.ts","../src/payment/selector.ts","../src/contracts/abis/sepolia.json","../src/contracts/addresses/proxies.json","../src/contracts/addresses/implementations.json","../src/contracts/index.ts","../src/wallet/creation.ts","../src/wallet/queries.ts","../src/wallet/withdrawals.ts","../src/client/D402Client.ts","../src/index.ts","../src/settlement/queries.ts","../src/settlement/operations.ts"],"names":["PaymentError","PaymentAmountExceededError","MissingRequestConfigError","PaymentAlreadyAttemptedError","UnsupportedSchemeError","PaymentVerificationError","Invalid402ResponseError","UnsupportedNetworkError","isAddress","ContractName","sepolia","http","createPublicClient","createWalletClient","decodeEventLog","parseAllPaymentRequirements","signD402Payment","encodePayment"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Error classes for D402 payment protocol\n */\n\n/**\n * Base error class for all payment-related errors\n */\nexport class PaymentError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'PaymentError'\n Object.setPrototypeOf(this, PaymentError.prototype)\n }\n}\n\n/**\n * Thrown when payment amount exceeds the configured maximum allowed value\n */\nexport class PaymentAmountExceededError extends PaymentError {\n constructor(\n public amount: bigint,\n public maxAmount: bigint,\n public tokenAddress?: string\n ) {\n super(\n `Payment amount ${amount} ${tokenAddress ? `(token: ${tokenAddress})` : ''} exceeds maximum allowed value ${maxAmount} base units. ` +\n `Note: This comparison does not account for token differences or decimals.`\n )\n this.name = 'PaymentAmountExceededError'\n Object.setPrototypeOf(this, PaymentAmountExceededError.prototype)\n }\n}\n\n/**\n * Thrown when request configuration is missing required fields\n */\nexport class MissingRequestConfigError extends PaymentError {\n constructor(message: string) {\n super(message)\n this.name = 'MissingRequestConfigError'\n Object.setPrototypeOf(this, MissingRequestConfigError.prototype)\n }\n}\n\n/**\n * Thrown when payment has already been attempted for a request\n */\nexport class PaymentAlreadyAttemptedError extends PaymentError {\n constructor(message: string = 'Payment has already been attempted for this request') {\n super(message)\n this.name = 'PaymentAlreadyAttemptedError'\n Object.setPrototypeOf(this, PaymentAlreadyAttemptedError.prototype)\n }\n}\n\n/**\n * Thrown when no supported payment scheme is found in payment requirements\n */\nexport class UnsupportedSchemeError extends PaymentError {\n constructor(\n public availableSchemes: string[],\n message: string = 'No supported payment scheme found'\n ) {\n super(`${message}. Available schemes: ${availableSchemes.join(', ')}`)\n this.name = 'UnsupportedSchemeError'\n Object.setPrototypeOf(this, UnsupportedSchemeError.prototype)\n }\n}\n\n/**\n * Thrown when payment verification fails\n */\nexport class PaymentVerificationError extends PaymentError {\n constructor(message: string) {\n super(message)\n this.name = 'PaymentVerificationError'\n Object.setPrototypeOf(this, PaymentVerificationError.prototype)\n }\n}\n\n/**\n * Thrown when HTTP 402 response is malformed\n */\nexport class Invalid402ResponseError extends PaymentError {\n constructor(message: string) {\n super(message)\n this.name = 'Invalid402ResponseError'\n Object.setPrototypeOf(this, Invalid402ResponseError.prototype)\n }\n}\n\n/**\n * Thrown when network is not supported\n */\nexport class UnsupportedNetworkError extends PaymentError {\n constructor(public network: string) {\n super(`Network '${network}' is not supported`)\n this.name = 'UnsupportedNetworkError'\n Object.setPrototypeOf(this, UnsupportedNetworkError.prototype)\n }\n}\n\n","/**\n * Parse 402 payment requirements from HTTP responses\n */\n\nimport { isAddress } from 'viem'\nimport type { PaymentRequirement, D402Response } from './types'\nimport { Invalid402ResponseError } from '../core/errors'\n\n/**\n * Validate payment requirement has all required fields.\n * \n * @param requirement - Payment requirement to validate\n * @throws {Invalid402ResponseError} If validation fails\n */\nfunction validatePaymentRequirement(requirement: PaymentRequirement): void {\n const requiredFields: (keyof PaymentRequirement)[] = [\n 'scheme',\n 'network',\n 'maxAmountRequired',\n 'payTo',\n 'asset'\n ]\n\n for (const field of requiredFields) {\n if (!requirement[field]) {\n throw new Invalid402ResponseError(\n `Payment requirement missing required field: ${field}`\n )\n }\n }\n\n // Validate maxAmountRequired is numeric string\n try {\n BigInt(requirement.maxAmountRequired)\n } catch {\n throw new Invalid402ResponseError(\n 'max_amount_required must be an integer encoded as a string'\n )\n }\n\n // Validate addresses using viem\n if (!isAddress(requirement.payTo, { strict: false })) {\n throw new Invalid402ResponseError(\n `Invalid payTo address format: ${requirement.payTo}`\n )\n }\n\n if (!isAddress(requirement.asset, { strict: false })) {\n throw new Invalid402ResponseError(\n `Invalid asset address format: ${requirement.asset}`\n )\n }\n}\n\n/**\n * Parse payment requirements from HTTP 402 response.\n * \n * When an API returns 402 \"Payment Required\", this function extracts\n * the payment details (amount, token, network) from the response body.\n * \n * @param response - HTTP Response object with status 402\n * @returns First payment requirement from the response\n * @throws {Invalid402ResponseError} If response is not valid 402 or malformed\n * \n * @example\n * ```ts\n * const response = await fetch('https://sentiment-api.com/analyze')\n * \n * if (response.status === 402) {\n * const requirement = await parsePaymentRequirement(response)\n * console.log('Payment required:', requirement.maxAmountRequired, 'wei')\n * console.log('Token:', requirement.asset)\n * console.log('Network:', requirement.network)\n * }\n * ```\n */\nexport async function parsePaymentRequirement(response: Response): Promise<PaymentRequirement> {\n if (response.status !== 402) {\n throw new Invalid402ResponseError(\n `Expected 402 response, got ${response.status}`\n )\n }\n\n let data: D402Response\n try {\n data = await response.json() as D402Response\n } catch (error) {\n throw new Invalid402ResponseError(\n `Failed to parse 402 response JSON: ${error instanceof Error ? error.message : 'unknown error'}`\n )\n }\n\n // Validate required fields\n if (!data.d402Version && data.d402Version !== 0) {\n throw new Invalid402ResponseError('Missing d402Version field in 402 response')\n }\n\n // Handle both formats: array (accepts) or single requirement at root\n let requirements: PaymentRequirement[]\n\n if (data.accepts && Array.isArray(data.accepts)) {\n // Standard format with accepts array\n requirements = data.accepts\n } else if (data.scheme && data.network && data.maxAmountRequired) {\n // Legacy format: payment requirement at root level\n requirements = [data as PaymentRequirement]\n } else {\n throw new Invalid402ResponseError(\n 'Invalid 402 response: missing accepts array or payment requirement fields'\n )\n }\n\n if (requirements.length === 0) {\n throw new Invalid402ResponseError('402 response has empty accepts array')\n }\n\n // Return first requirement\n const requirement = requirements[0]\n\n // Validate required fields in payment requirement\n validatePaymentRequirement(requirement)\n\n return requirement\n}\n\n/**\n * Parse all payment requirements from 402 response.\n * \n * Similar to parsePaymentRequirement but returns all options instead of just first.\n * Useful when client needs to choose from multiple payment options.\n * \n * @param response - HTTP Response object with status 402\n * @returns Array of all payment requirements\n * @throws {Invalid402ResponseError} If response is invalid\n * \n * @example\n * ```ts\n * const response = await fetch('http://api.example.com')\n * const allOptions = await parseAllPaymentRequirements(response)\n * // Choose based on network, token, etc.\n * const preferred = allOptions.find(r => r.network === 'sepolia')\n * ```\n */\nexport async function parseAllPaymentRequirements(\n response: Response\n): Promise<PaymentRequirement[]> {\n if (response.status !== 402) {\n throw new Invalid402ResponseError(\n `Expected 402 response, got ${response.status}`\n )\n }\n\n let data: D402Response\n try {\n data = await response.json() as D402Response\n } catch (error) {\n throw new Invalid402ResponseError(\n `Failed to parse 402 response JSON: ${error instanceof Error ? error.message : 'unknown error'}`\n )\n }\n\n if (!data.d402Version && data.d402Version !== 0) {\n throw new Invalid402ResponseError('Missing d402Version field in 402 response')\n }\n\n let requirements: PaymentRequirement[]\n\n if (data.accepts && Array.isArray(data.accepts)) {\n requirements = data.accepts\n } else if (data.scheme && data.network && data.maxAmountRequired) {\n requirements = [data as PaymentRequirement]\n } else {\n throw new Invalid402ResponseError(\n 'Invalid 402 response: missing accepts array or payment requirement fields'\n )\n }\n\n // Validate all requirements\n for (const req of requirements) {\n validatePaymentRequirement(req)\n }\n\n return requirements\n}\n\n","/**\n * Network and token constants\n */\n\nimport type { SupportedNetwork } from './types'\n\n/**\n * Chain IDs for supported networks\n */\nexport const CHAIN_IDS: Record<SupportedNetwork, number> = {\n sepolia: 11155111\n} as const\n\n/**\n * Network configuration\n */\nexport const NETWORKS: Record<SupportedNetwork, {\n chainId: number\n name: string\n nativeCurrency: { name: string; symbol: string; decimals: number }\n}> = {\n sepolia: {\n chainId: 11155111,\n name: 'Sepolia Testnet',\n nativeCurrency: { name: 'Sepolia Ether', symbol: 'SEP', decimals: 18 }\n }\n} as const\n\n/**\n * Default USDC token addresses per network\n */\nexport const TOKEN_ADDRESSES: Record<SupportedNetwork, `0x${string}`> = {\n sepolia: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238'\n} as const\n\n/**\n * Default payment validity window (5 minutes)\n */\nexport const DEFAULT_VALIDITY_WINDOW_SECONDS = 300\n\n/**\n * EIP-712 type definitions for PullFundsForSettlement\n */\nexport const EIP712_TYPES = {\n PullFundsForSettlement: [\n { name: 'wallet', type: 'address' },\n { name: 'provider', type: 'address' },\n { name: 'token', type: 'address' },\n { name: 'amount', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'requestPath', type: 'string' }\n ]\n} as const\n\n","/**\n * Utility functions for D402 payment processing\n */\n\nimport { TOKEN_ADDRESSES } from './constants'\nimport type { SupportedNetwork } from './types'\nimport type { PaymentRequirement } from '../payment/types'\nimport { UnsupportedNetworkError } from './errors'\n\n/**\n * Parse a money string or number into atomic units (wei)\n * \n * @param amount - Amount as string (e.g., \"$1.00\", \"1.5\") or number\n * @param decimals - Token decimals (e.g., 6 for USDC, 18 for ETH)\n * @returns Amount in atomic units (wei)\n * \n * @example\n * parseMoney(\"$1.00\", 6) // Returns 1000000n (1 USDC in wei)\n * parseMoney(\"0.5\", 18) // Returns 500000000000000000n (0.5 ETH in wei)\n */\nexport function parseMoney(amount: string | number | bigint, decimals: number): bigint {\n // If already a bigint, return as-is\n if (typeof amount === 'bigint') {\n return amount\n }\n\n // If number, convert to bigint\n if (typeof amount === 'number') {\n return BigInt(Math.floor(amount))\n }\n\n // Handle string\n let amountStr = amount.trim()\n\n // Remove $ prefix if present\n if (amountStr.startsWith('$')) {\n amountStr = amountStr.slice(1)\n }\n\n // Parse the decimal number\n const [whole = '0', fraction = '0'] = amountStr.split('.')\n\n // Pad or truncate fraction to match decimals\n const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals)\n\n // Combine whole and fraction\n const atomicAmount = BigInt(whole + paddedFraction)\n\n return atomicAmount\n}\n\n/**\n * Format atomic units back to human-readable format\n * \n * @param amount - Amount in atomic units (wei)\n * @param decimals - Token decimals\n * @returns Formatted string\n * \n * @example\n * formatMoney(1000000n, 6) // Returns \"1.000000\"\n */\nexport function formatMoney(amount: bigint, decimals: number): string {\n const amountStr = amount.toString().padStart(decimals + 1, '0')\n const whole = amountStr.slice(0, -decimals) || '0'\n const fraction = amountStr.slice(-decimals)\n return `${whole}.${fraction}`\n}\n\n/**\n * Get USDC token address for a given network\n * \n * @param network - Network name\n * @returns USDC token address\n * \n * @throws {UnsupportedNetworkError} If network is not supported\n */\nexport function getUsdcAddress(network: SupportedNetwork): `0x${string}` {\n const address = TOKEN_ADDRESSES[network]\n if (!address) {\n throw new UnsupportedNetworkError(network)\n }\n return address\n}\n\n/**\n * Get chain ID for a given network.\n * \n * This function maps network names to chain IDs for parsing 402 payment requirements\n * from external APIs. It supports many networks that may appear in 402 responses,\n * even if IATP contracts are not deployed on those networks.\n * \n * Note: IATP contracts are currently only deployed on Sepolia. This function exists\n * to handle 402 responses from any API that might support other networks.\n * \n * @param network - Network name or chain ID as string\n * @returns Chain ID as number\n * \n * @throws {UnsupportedNetworkError} If network is not supported\n * \n * @example\n * ```ts\n * getChainId('sepolia') // Returns 11155111\n * getChainId('11155111') // Returns 11155111 (passthrough)\n * getChainId('base') // Returns 8453 (for parsing 402 responses)\n * ```\n */\nexport function getChainId(network: string): number {\n // If network is already a numeric string, return it as number\n const parsed = parseInt(network, 10)\n if (!isNaN(parsed) && parsed.toString() === network) {\n return parsed\n }\n\n // Map network names to chain IDs (for parsing 402 payment requirements)\n // Note: Includes networks beyond where IATP is deployed\n const networkMap: Record<string, number> = {\n 'sepolia': 11155111,\n 'base-sepolia': 84532,\n 'base': 8453,\n 'base-mainnet': 8453,\n 'mainnet': 1,\n 'polygon': 137,\n 'arbitrum-sepolia': 421614,\n 'arbitrum-mainnet': 42161,\n 'avalanche-fuji': 43113,\n 'avalanche': 43114\n }\n\n const chainId = networkMap[network]\n if (!chainId) {\n throw new UnsupportedNetworkError(network)\n }\n\n return chainId\n}\n\n/**\n * Find matching payment requirement from a list\n * \n * @param requirements - List of payment requirements\n * @param scheme - Desired payment scheme (default: \"exact\")\n * @param network - Desired network (optional)\n * @returns Matching payment requirement or undefined\n */\nexport function findMatchingPaymentRequirement(\n requirements: PaymentRequirement[],\n scheme: string = 'exact',\n network?: string\n): PaymentRequirement | undefined {\n return requirements.find(req => {\n const schemeMatches = req.scheme === scheme\n const networkMatches = !network || req.network === network\n return schemeMatches && networkMatches\n })\n}\n\n/**\n * Convert USD amount to USDC atomic units\n * \n * @param usdAmount - Amount in USD (e.g., \"1.00\" or 1.5)\n * @param decimals - USDC decimals (default: 6)\n * @returns Amount in USDC atomic units\n * \n * @example\n * usdToUsdc(\"1.00\") // Returns 1000000n\n * usdToUsdc(1.5) // Returns 1500000n\n */\nexport function usdToUsdc(usdAmount: string | number, decimals: number = 6): bigint {\n return parseMoney(usdAmount, decimals)\n}\n\n/**\n * Generate a random nonce for payment authorization\n * \n * @returns Random 32-byte nonce as hex string\n */\nexport function generateNonce(): `0x${string}` {\n const bytes = new Uint8Array(32)\n crypto.getRandomValues(bytes)\n return `0x${Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('')}`\n}\n\n/**\n * Get current timestamp in seconds\n * \n * @returns Unix timestamp in seconds\n */\nexport function getCurrentTimestamp(): number {\n return Math.floor(Date.now() / 1000)\n}\n\n/**\n * Validate Ethereum address format\n * \n * @param address - Address to validate\n * @returns True if valid Ethereum address\n */\nexport function isValidAddress(address: string): boolean {\n return /^0x[a-fA-F0-9]{40}$/.test(address)\n}\n\n/**\n * Normalize Ethereum address to checksummed format\n * Note: This is a simple lowercase normalization. For full checksum validation, use viem's getAddress()\n * \n * @param address - Address to normalize\n * @returns Normalized address\n */\nexport function normalizeAddress(address: string): `0x${string}` {\n return address.toLowerCase() as `0x${string}`\n}\n\n/**\n * Decode X-PAYMENT-RESPONSE header from server\n * \n * @param header - Base64 encoded payment response\n * @returns Decoded payment response\n * \n * @example\n * const response = decodePaymentResponse(responseHeader)\n * console.log(response.success, response.transaction)\n */\nexport function decodePaymentResponse(header: string): {\n success: boolean\n transaction?: string\n network?: string\n payer?: string\n message?: string\n} {\n try {\n // Use native browser APIs - no Buffer needed\n const binString = atob(header)\n const bytes = Uint8Array.from(binString, (m) => m.codePointAt(0)!)\n const decoded = new TextDecoder().decode(bytes)\n return JSON.parse(decoded)\n } catch (error) {\n throw new Error(`Failed to decode payment response: ${error}`)\n }\n}\n\n","/**\n * EIP-712 payment signing utilities\n */\n\nimport type { Account } from 'viem/accounts'\nimport type { PaymentRequirement, SignedPayment } from './types'\nimport { generateNonce, getCurrentTimestamp, getChainId } from '../core/utils'\nimport { EIP712_TYPES } from '../core/constants'\n\n/**\n * Sign a D402 payment using EIP-712 signature.\n * \n * Signs a payment authorization with the user's wallet (MetaMask/WalletConnect).\n * This creates a PullFundsForSettlement signature that authorizes the payment.\n * \n * The user will see a MetaMask popup to approve the signature.\n * \n * @param params - Signing parameters\n * @param params.operatorAccount - User's account for signing (from wagmi walletClient)\n * @param params.paymentRequirement - Payment requirements from 402 response\n * @param params.iatpWalletAddress - IATPWallet contract address (optional)\n * @param params.requestPath - API request path (optional, uses payment_requirements.resource if not provided)\n * @returns Signed payment ready to encode and send\n * \n * @example\n * ```ts\n * // Get payment requirement from 402 response\n * const requirement = await parsePaymentRequirement(response)\n * \n * // User signs payment (MetaMask popup appears)\n * const signedPayment = await signD402Payment({\n * operatorAccount: walletClient.account, // User's wallet\n * paymentRequirement: requirement,\n * iatpWalletAddress: '0xUserIATPWallet...'\n * })\n * \n * // Encode for X-Payment header\n * const paymentHeader = encodePayment(signedPayment)\n * ```\n */\nexport async function signD402Payment(params: {\n operatorAccount: Account\n paymentRequirement: PaymentRequirement\n iatpWalletAddress?: `0x${string}`\n requestPath?: string\n d402Version?: number\n}): Promise<SignedPayment> {\n const {\n operatorAccount,\n paymentRequirement,\n iatpWalletAddress,\n requestPath,\n d402Version = 1\n } = params\n\n // Get wallet address (IATPWallet contract, or user's EOA if no wallet)\n const consumerWallet = iatpWalletAddress || operatorAccount.address\n\n // Get request path with fallback chain\n let finalRequestPath = requestPath || paymentRequirement.resource || '/mcp'\n\n if (!finalRequestPath || finalRequestPath.trim() === '') {\n finalRequestPath = '/mcp'\n }\n\n // Generate nonce and timestamps for payment authorization\n const nonce = generateNonce()\n const now = getCurrentTimestamp()\n const validAfter = (now - 60).toString() // Valid from 60 seconds ago (clock skew tolerance)\n const validBefore = (now + (paymentRequirement.maxTimeoutSeconds || 300)).toString()\n\n // Get EIP-712 domain info from payment requirement\n const extra = paymentRequirement.extra\n const walletName = extra?.name || 'IATPWallet'\n const walletVersion = extra?.version || '1'\n const chainId = getChainId(paymentRequirement.network)\n\n // Build EIP-712 typed data for PullFundsForSettlement message\n const domain = {\n name: walletName,\n version: walletVersion,\n chainId: chainId,\n verifyingContract: consumerWallet\n } as const\n\n const message = {\n wallet: consumerWallet,\n provider: paymentRequirement.payTo,\n token: paymentRequirement.asset,\n amount: BigInt(paymentRequirement.maxAmountRequired),\n deadline: BigInt(validBefore),\n requestPath: finalRequestPath\n } as const\n\n // Sign payment with EIP-712 (user signs in MetaMask)\n if (!operatorAccount.signTypedData) {\n throw new Error('Account does not support signTypedData')\n }\n\n const signature = await operatorAccount.signTypedData({\n domain,\n types: {\n PullFundsForSettlement: EIP712_TYPES.PullFundsForSettlement\n },\n primaryType: 'PullFundsForSettlement',\n message\n })\n\n // Build signed payment structure\n const signedPayment: SignedPayment = {\n d402Version,\n scheme: paymentRequirement.scheme,\n network: paymentRequirement.network,\n payload: {\n signature,\n authorization: {\n from: consumerWallet,\n to: paymentRequirement.payTo,\n value: paymentRequirement.maxAmountRequired,\n validAfter,\n validBefore,\n nonce,\n requestPath: finalRequestPath\n }\n }\n }\n\n return signedPayment\n}\n\n","/**\n * Base64 encoding/decoding for payment payloads\n */\n\nimport type { SignedPayment } from './types'\n\n/**\n * Safely encode string or bytes to base64 string.\n * \n * Uses native browser APIs (btoa + TextEncoder) - no Buffer needed!\n * \n * @param data - String to encode\n * @returns Base64 encoded string\n * \n * @example\n * ```ts\n * const encoded = safeBase64Encode('{\"foo\": \"bar\"}')\n * // Returns: \"eyJmb28iOiAiYmFyIn0=\"\n * ```\n */\nexport function safeBase64Encode(data: string): string {\n // Use native browser TextEncoder + btoa\n // Works in all modern browsers and Node.js 18+\n const bytes = new TextEncoder().encode(data)\n const binString = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join('')\n return btoa(binString)\n}\n\n/**\n * Safely decode base64 string to utf-8 string.\n * \n * Uses native browser APIs (atob + TextDecoder) - no Buffer needed!\n * \n * @param data - Base64 encoded string\n * @returns Decoded utf-8 string\n * \n * @example\n * ```ts\n * const decoded = safeBase64Decode('eyJmb28iOiAiYmFyIn0=')\n * // Returns: '{\"foo\": \"bar\"}'\n * ```\n */\nexport function safeBase64Decode(data: string): string {\n // Use native browser atob + TextDecoder\n // Works in all modern browsers and Node.js 18+\n const binString = atob(data)\n const bytes = Uint8Array.from(binString, (m) => m.codePointAt(0)!)\n return new TextDecoder().decode(bytes)\n}\n\n/**\n * Encode a signed payment to base64 string for X-Payment header.\n * \n * Takes a signed payment object and encodes it to base64 format\n * that can be sent in the X-Payment HTTP header.\n * \n * @param payment - Signed payment object (from signD402Payment)\n * @returns Base64 encoded string ready for X-Payment header\n * \n * @example\n * ```ts\n * const signedPayment = await signD402Payment({...})\n * const encoded = encodePayment(signedPayment)\n * \n * // Send in HTTP request\n * fetch(url, {\n * headers: { 'X-Payment': encoded }\n * })\n * ```\n */\nexport function encodePayment(payment: SignedPayment): string {\n const jsonString = JSON.stringify(payment)\n return safeBase64Encode(jsonString)\n}\n\n/**\n * Decode a base64 encoded payment string back to payment object.\n * \n * @param encodedPayment - Base64 encoded payment string\n * @returns Decoded payment object\n * \n * @example\n * ```ts\n * const payment = decodePayment(encodedString)\n * console.log(payment.d402Version) // 1\n * ```\n */\nexport function decodePayment(encodedPayment: string): SignedPayment {\n const jsonString = safeBase64Decode(encodedPayment)\n return JSON.parse(jsonString) as SignedPayment\n}\n\n","/**\n * Payment requirements selection logic\n */\n\nimport type { PaymentRequirement } from './types'\nimport { PaymentAmountExceededError, UnsupportedSchemeError } from '../core/errors'\n\n/**\n * Options for selecting payment requirements\n */\nexport interface PaymentSelectorOptions {\n /** Filter by network (e.g., \"base-mainnet\") */\n network?: string\n\n /** Filter by payment scheme (default: \"exact\") */\n scheme?: string\n\n /** Maximum allowed payment amount in base units */\n maxAmount?: bigint\n\n /** Preferred network (will try this first) */\n preferredNetwork?: string\n\n /** Preferred token address */\n preferredToken?: string\n}\n\n/**\n * Select payment requirement from a list based on filters and preferences.\n * \n * Applies filters (network, scheme, maxAmount) and preferences to choose\n * the most appropriate payment option from the list. Prefers matching\n * preferred network/token if specified, otherwise uses filters.\n * \n * @param requirements - List of accepted payment requirements from 402 response\n * @param options - Selection options and filters\n * @returns Selected payment requirement\n * \n * @throws {UnsupportedSchemeError} If no matching scheme found\n * @throws {PaymentAmountExceededError} If payment exceeds max amount\n * \n * @example\n * ```ts\n * const selected = selectPaymentRequirement(requirements, {\n * scheme: 'exact',\n * network: 'base-mainnet',\n * maxAmount: 1000000n\n * })\n * ```\n */\nexport function selectPaymentRequirement(\n requirements: PaymentRequirement[],\n options: PaymentSelectorOptions = {}\n): PaymentRequirement {\n const {\n network: networkFilter,\n scheme: schemeFilter = 'exact',\n maxAmount,\n preferredNetwork,\n preferredToken\n } = options\n\n // First pass: try to find preferred match\n if (preferredNetwork || preferredToken) {\n const preferred = findRequirement(requirements, {\n ...options,\n network: preferredNetwork || networkFilter,\n token: preferredToken\n })\n if (preferred) {\n return preferred\n }\n }\n\n // Second pass: find any matching requirement\n const selected = findRequirement(requirements, {\n scheme: schemeFilter,\n network: networkFilter,\n maxAmount\n })\n\n if (selected) {\n return selected\n }\n\n // No match found\n const availableSchemes = [...new Set(requirements.map(r => r.scheme))]\n throw new UnsupportedSchemeError(\n availableSchemes,\n `No payment requirement found matching filters (scheme: ${schemeFilter}, network: ${networkFilter || 'any'})`\n )\n}\n\n/**\n * Internal helper to find a requirement matching filters\n */\nfunction findRequirement(\n requirements: PaymentRequirement[],\n filters: {\n scheme?: string\n network?: string\n token?: string\n maxAmount?: bigint\n }\n): PaymentRequirement | undefined {\n for (const req of requirements) {\n // Check scheme filter\n if (filters.scheme && req.scheme !== filters.scheme) {\n continue\n }\n\n // Check network filter\n if (filters.network && req.network !== filters.network) {\n continue\n }\n\n // Check token filter\n if (filters.token && req.asset !== filters.token) {\n continue\n }\n\n // Check max amount for \"exact\" scheme\n if (req.scheme === 'exact' && filters.maxAmount !== undefined) {\n const requiredAmount = BigInt(req.maxAmountRequired)\n\n if (requiredAmount > filters.maxAmount) {\n throw new PaymentAmountExceededError(\n requiredAmount,\n filters.maxAmount,\n req.asset\n )\n }\n }\n\n // All filters passed\n return req\n }\n\n return undefined\n}\n\n/**\n * Custom payment selector function type\n */\nexport type PaymentSelector = (\n requirements: PaymentRequirement[],\n options?: PaymentSelectorOptions\n) => PaymentRequirement\n\n/**\n * Create a custom payment selector with default options\n * \n * @param defaultOptions - Default options to apply\n * @returns Custom selector function\n * \n * @example\n * const selector = createPaymentSelector({\n * preferredNetwork: 'base-mainnet',\n * maxAmount: 1000000n\n * })\n * \n * const selected = selector(requirements, { scheme: 'exact' })\n */\nexport function createPaymentSelector(\n defaultOptions: PaymentSelectorOptions\n): PaymentSelector {\n return (requirements, options = {}) => {\n return selectPaymentRequirement(requirements, {\n ...defaultOptions,\n ...options\n })\n }\n}\n\n/**\n * Sort payment requirements by preference\n * Useful for UI display or debugging\n * \n * @param requirements - List of requirements\n * @param preferredNetwork - Preferred network name\n * @returns Sorted list (preferred first)\n */\nexport function sortPaymentRequirements(\n requirements: PaymentRequirement[],\n preferredNetwork?: string\n): PaymentRequirement[] {\n return [...requirements].sort((a, b) => {\n // Prefer \"exact\" scheme over others\n if (a.scheme === 'exact' && b.scheme !== 'exact') return -1\n if (a.scheme !== 'exact' && b.scheme === 'exact') return 1\n\n // Prefer specified network\n if (preferredNetwork) {\n if (a.network === preferredNetwork && b.network !== preferredNetwork) return -1\n if (a.network !== preferredNetwork && b.network === preferredNetwork) return 1\n }\n\n // Sort by amount (lower first)\n const amountA = BigInt(a.maxAmountRequired)\n const amountB = BigInt(b.maxAmountRequired)\n if (amountA < amountB) return -1\n if (amountA > amountB) return 1\n\n return 0\n })\n}\n\n","{\n \"sepolia\": {\n \"IATPWallet\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidOperatorAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidOwnerAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProvider\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSettlementLayerAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidTokenAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotAuthorized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotSettlementLayer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlyOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"PendingWithdrawalExists\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"SignatureExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TransferFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WithdrawalAlreadyExecuted\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WithdrawalLockupNotExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WithdrawalRequestNotFound\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"settlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ClientInitialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"oldDescription\",\n \"type\": \"string\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"newDescription\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"DescriptionUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"FundsDeposited\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"FundsTransferredToSettlement\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"oldName\",\n \"type\": \"string\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"newName\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"NameUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"oldOperator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOperator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OperatorAddressUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"oldWalletType\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"newWalletType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"WalletTypeUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawalCancelled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WithdrawalExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestedAt\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockTime\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawalRequested\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BONDING_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PROVIDER_ATTESTATION_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PULL_FUNDS_FOR_SETTLEMENT_TYPEHASH\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAWAL_LOCKUP_PERIOD\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"cancelWithdrawal\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"description\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"executeWithdrawal\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getAvailableBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWithdrawalRequest\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"requestedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"executed\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct IIATPWallet.WithdrawalRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"unlockTime\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_roleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_settlementLayer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_description\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isMaintainer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"isValidSettlementRequest\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"operatorAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"pullFundsForSettlement\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"requestWithdrawal\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"roleManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract IRoleManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"settlementLayer\",\n \"outputs\": [\n {\n \"internalType\": \"contract IIATPSettlementLayer\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_newWalletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_newName\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_newDescription\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"updateMetadata\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newOperatorAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"updateOperatorAddress\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"validateConsumerSignature\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"validateProviderAttestation\",\n \"outputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletType\",\n \"outputs\": [\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"sendToOwner\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"withdrawAllFromSettlement\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawEpochFromSettlement\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawalRequests\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"requestedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"executed\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"receive\"\n }\n ],\n \"RoleManager\": [\n {\n \"inputs\": [],\n \"name\": \"AccessControlBadConfirmation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"neededRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAINTAINER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"maintainer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"addMaintainer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getDefaultAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMembers\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"congress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"maintainers\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"maintainer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"removeMaintainer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"callerConfirmation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newAdmin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferDefaultAdmin\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n ],\n \"IATPSettlementLayer\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AmountMustBePositive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ArrayLengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"CannotReleaseEpochYet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ConsumerProviderSame\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputeAlreadyFiled\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputeAlreadyResolved\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputeNotFound\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DisputePeriodExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EmptyArray\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochMustBeNextOne\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochMustBeOne\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidConsumer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidConsumerSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidEpoch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInput\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProvider\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidProviderSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidTraiaToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidUtilityAgentFactory\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoFundsToRelease\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoLockedFunds\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotAuthorized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProviderNotRegistered\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestAlreadyProcessed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestNotSettled\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"SignatureAlreadyUsed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"refillAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"previousBalance\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newBalance\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AutoRefillExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newMaxAutoRefillAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newBalanceThresholdMultiplier\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newAutoRefillMultiplier\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AutoRefillParametersUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ConsumerDeposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ConsumerWithdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"reason\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"DisputeFiled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"consumerWon\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"resolvedBy\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"DisputeResolved\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"epochDurationSeconds\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"maxEpochsToRelease\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"EpochParametersSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"EpochReleased\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"facilitator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"FacilitatorEarningsWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newFeePercent\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newFeeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"FeeConfigUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"feeCollector\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"feeAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"providerAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"FeesCollected\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newMaxFacilitatorFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MaxFacilitatorFeeUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ProviderWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"consumerRequestCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RequestSettled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"reason\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"RequestSettlementFailed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"oldFactory\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newFactory\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"UtilityAgentFactoryUpdated\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BASIS_POINTS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"BONDING_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochDuration\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"EpochReleaseDelay\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_FEE_PERCENT\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestExpirationTime\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SETTLEMENT_POINTS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest\",\n \"name\": \"req\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"facilitator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"_settleRequest\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"canReleaseEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"collectFees\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"consumerReputations\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"completed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"failed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"faults\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"score\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"firstSettlementAt\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"consumerRequestCounts\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"reason\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"disputeRequest\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"disputes\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"reason\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"filedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"resolved\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"facilitatorFeeBalances\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"feeBalances\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"feeCollector\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getCurrentEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getDisputeInProgressAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getEpochBalance\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"disputeInProgressBalance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isWithdrawn\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.EpochBalance\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"facilitator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getFacilitatorEarnings\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getFeeBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getLockedBalanceForProvider\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getProviderReputation\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"completed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"failed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"faults\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"score\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"firstSettlementAt\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.Reputation\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getProviderReputationScore\",\n \"outputs\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"\",\n \"type\": \"int256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getUnlockedBalanceForProvider\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_roleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_feeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isMaintainer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"lastWithdrawnEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maxFacilitatorFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"protocolFee\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"providerEpochBalances\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"disputeInProgressBalance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isWithdrawn\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"providerReputations\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"completed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"failed\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"faults\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"score\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"firstSettlementAt\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"requestId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"consumerWon\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"resolveDispute\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"roleManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract IRoleManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_epochDuration\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_epochReleaseDelay\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setEpochParameters\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_protocolFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_feeCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setFeeConfig\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_maxFacilitatorFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setMaxFacilitatorFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_requestExpirationTime\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setRequestExpirationTime\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest\",\n \"name\": \"req\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"settleRequest\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest[]\",\n \"name\": \"serviceRequests\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"settleRequests\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"failedIndices\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"settlements\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"consumer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IIATPWallet\",\n \"name\": \"provider\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"tokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"requestPath\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"consumerDeadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"serviceDescription\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"outputHash\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequestData\",\n \"name\": \"requestData\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"consumerSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"providerSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IIATPSettlementLayer.SettlementRequest\",\n \"name\": \"settlementRequest\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"enum IIATPSettlementLayer.RequestStatus\",\n \"name\": \"status\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"usedSignatures\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"facilitatorFeePercent\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"validatePaymentAmount\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"isValid\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawAllAvailableEpochs\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawEpochToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"tokens\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"withdrawFacilitatorEarnings\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"IATPWalletFactory\": [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidParameters\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAddress\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newSettlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SettlementLayerUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"settlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WalletCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WalletImplementationUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"WalletRoleManagerUpdated\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"BONDING_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"allWallets\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"createClientWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"createClientWalletFor\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_description\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"createWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_operatorAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"_description\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"createWalletFor\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getOperatorWalletCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getOwnerWalletCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getTotalWallets\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_offset\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_limit\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getWallets\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"wallets\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"total\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWalletsByOperator\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getWalletsByOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasWallet\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_roleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_walletRoleManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_settlementLayer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_walletImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isMaintainer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ownerByWallet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"roleManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract IRoleManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newSettlementLayer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSettlementLayer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newWalletImplementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWalletImplementation\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_newWalletRoleManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWalletRoleManager\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"settlementLayer\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalWallets\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletImplementation\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"walletRoleManager\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"walletsByOperator\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"walletsByOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ]\n }\n}\n","{\n \"sepolia\": {\n \"RoleManager\": \"0x71d388142EA9194e5b51Eee3FEfe3B87D494dd38\",\n \"IATPSettlementLayer\": \"0xAa91081571404d7E2f2B8F12FB2Be092EBe6d2B8\",\n \"IATPWalletFactory\": \"0x0846223D022677C34eea21Bd9aa08f75c8Bd12e1\"\n }\n}\n","{\n \"sepolia\": {\n \"Congress\": \"0x94Fc9eddBd1779542b78eb92F0569762603876e2\",\n \"TraiaCongressMembersRegistry\": \"0x3B685403b195f16D103b42FCf56F848A278d6049\",\n \"IATPWalletImplementation\": \"0x4f9f0E1cD21f7122417A2A13b03c1BE84b7CB37E\",\n \"RoleManagerImplementation\": \"0x585AD85FCFBec3B1503E50b46407bF65d4006560\",\n \"IATPSettlementLayerImplementation\": \"0x0fDd39d323EE3538c800d4A13730eecE3F0bA975\",\n \"IATPWalletFactoryImplementation\": \"0x4AC08c53C7ce1244a458D49A4101C3DC664e2D37\"\n }\n}\n","/**\n * Contract configuration and utilities.\n * \n * Provides access to IATPWallet contract ABIs and deployed addresses.\n * Contract data is bundled directly in the package for reliability.\n */\n\nimport sepoliaAbis from './abis/sepolia.json'\nimport proxyAddresses from './addresses/proxies.json'\nimport implementationAddresses from './addresses/implementations.json'\nimport type { SupportedNetwork } from '../core/types'\n\n/**\n * Supported contract names.\n */\nexport enum ContractName {\n IATP_WALLET = 'IATPWallet',\n IATP_WALLET_FACTORY = 'IATPWalletFactory',\n IATP_SETTLEMENT_LAYER = 'IATPSettlementLayer',\n ROLE_MANAGER = 'RoleManager'\n}\n\n// Type-safe contract addresses and ABIs\ntype NetworkAbis = {\n [network: string]: {\n [contractName: string]: any[]\n }\n}\n\ntype NetworkAddresses = {\n [network: string]: {\n [contractName: string]: string\n }\n}\n\nconst ABIS: NetworkAbis = {\n sepolia: sepoliaAbis.sepolia || {}\n}\n\nconst PROXY_ADDRESSES: NetworkAddresses = proxyAddresses as NetworkAddresses\nconst IMPL_ADDRESSES: NetworkAddresses = implementationAddresses as NetworkAddresses\n\n/**\n * Get contract address for a given network.\n * \n * @param contractName - Name of the contract (use ContractName enum)\n * @param network - Network name (default: \"sepolia\")\n * @param useProxy - Use proxy address if true, implementation if false (default: true)\n * @returns Contract address as hex string, or null if not found\n * \n * @example\n * ```ts\n * const factoryAddr = getContractAddress(ContractName.IATP_WALLET_FACTORY, 'sepolia')\n * console.log(factoryAddr) // \"0x15D83638E339a0f29283f6B93dC1bb90b8339078\"\n * ```\n */\nexport function getContractAddress(\n contractName: string | ContractName,\n network: SupportedNetwork = 'sepolia',\n useProxy: boolean = true\n): string | null {\n const addresses = useProxy ? PROXY_ADDRESSES : IMPL_ADDRESSES\n const networkAddresses = addresses[network]\n\n if (!networkAddresses) {\n return null\n }\n\n return networkAddresses[contractName] || null\n}\n\n/**\n * Get contract ABI for a given network.\n * \n * @param contractName - Name of the contract (use ContractName enum)\n * @param network - Network name (default: \"sepolia\")\n * @returns Contract ABI as array of objects, or null if not found\n * \n * @example\n * ```ts\n * const factoryAbi = getContractAbi(ContractName.IATP_WALLET_FACTORY, 'sepolia')\n * console.log(factoryAbi.length) // Number of ABI entries\n * ```\n */\nexport function getContractAbi(\n contractName: string | ContractName,\n network: SupportedNetwork = 'sepolia'\n): any[] | null {\n const networkAbis = ABIS[network]\n\n if (!networkAbis) {\n return null\n }\n\n return networkAbis[contractName] || null\n}\n\n/**\n * Get contract configuration (address and ABI) for a network.\n * \n * @param contractName - Name of the contract\n * @param network - Network name (default: \"sepolia\")\n * @returns Object with address and abi, or null if not found\n * \n * @example\n * ```ts\n * const config = getContractConfig(ContractName.IATP_WALLET_FACTORY, 'sepolia')\n * if (config) {\n * console.log(config.address)\n * console.log(config.abi.length)\n * }\n * ```\n */\nexport function getContractConfig(\n contractName: string | ContractName,\n network: SupportedNetwork = 'sepolia'\n): { address: string; abi: any[] } | null {\n const address = getContractAddress(contractName, network)\n const abi = getContractAbi(contractName, network)\n\n if (!address || !abi) {\n return null\n }\n\n return { address, abi }\n}\n\n/**\n * Get all contract addresses for a network.\n * \n * @param network - Network name\n * @returns Object with all contract addresses for the network\n * \n * @example\n * ```ts\n * const addresses = getAllContractAddresses('sepolia')\n * console.log(addresses.IATPWalletFactory)\n * ```\n */\nexport function getAllContractAddresses(\n network: SupportedNetwork\n): Record<string, string> {\n return PROXY_ADDRESSES[network] || {}\n}\n\n/**\n * Check if a contract is deployed on a network.\n * \n * @param contractName - Name of the contract\n * @param network - Network name\n * @returns True if contract exists on network\n * \n * @example\n * ```ts\n * if (isContractDeployed(ContractName.IATP_WALLET_FACTORY, 'sepolia')) {\n * // Contract is available\n * }\n * ```\n */\nexport function isContractDeployed(\n contractName: string | ContractName,\n network: SupportedNetwork\n): boolean {\n const address = getContractAddress(contractName, network)\n const abi = getContractAbi(contractName, network)\n return address !== null && abi !== null\n}\n\n","/**\n * IATPWallet creation functions\n */\n\nimport { createPublicClient, createWalletClient, http, decodeEventLog, type Chain, type Address } from 'viem'\nimport { sepolia } from 'viem/chains'\nimport type { Account } from 'viem/accounts'\nimport { getContractConfig, ContractName } from '../contracts'\nimport type { WalletCreationResult } from './types'\n\n/**\n * Create a new IATPWallet using IATPWalletFactory.\n * \n * Creates an on-chain smart contract wallet where the user is both owner and operator.\n * The user signs all payments themselves with their wallet (MetaMask/WalletConnect).\n * \n * This function:\n * 1. Calls IATPWalletFactory.createWallet(ownerAddress)\n * 2. Sets owner as operator (user signs all payments)\n * 3. Waits for transaction confirmation\n * 4. Extracts wallet address from WalletCreated event\n * 5. Returns wallet address and transaction info\n * \n * @param params - Creation parameters\n * @param params.ownerAccount - Owner's account (will own the wallet)\n * @param params.network - Network to deploy on (default: \"sepolia\")\n * @param params.rpcUrl - Custom RPC URL (optional)\n * @returns Wallet creation result with addresses and keys\n * \n * @example\n * ```ts\n * import { createIATPWallet } from '@dcentralab/d402-client'\n * import { privateKeyToAccount } from 'viem/accounts'\n * \n * const ownerAccount = privateKeyToAccount('0x...')\n * \n * const result = await createIATPWallet({\n * ownerAccount,\n * network: 'sepolia'\n * })\n * \n * console.log('Wallet created:', result.walletAddress)\n * ```\n */\nexport async function createIATPWallet(params: {\n ownerAccount: Account\n network?: 'sepolia'\n rpcUrl?: string\n}): Promise<WalletCreationResult> {\n const { ownerAccount, network = 'sepolia', rpcUrl } = params\n\n // Get contract configuration\n const factoryConfig = getContractConfig(ContractName.IATP_WALLET_FACTORY, network)\n\n if (!factoryConfig) {\n throw new Error(`IATPWalletFactory not found for network: ${network}`)\n }\n\n // Owner is operator (user signs all payments themselves)\n const operatorAddress = ownerAccount.address\n\n // Setup clients\n const chain: Chain = sepolia\n const transport = http(rpcUrl)\n\n const publicClient = createPublicClient({\n chain,\n transport\n })\n\n const walletClient = createWalletClient({\n account: ownerAccount,\n chain,\n transport\n })\n\n // Check owner balance\n const balance = await publicClient.getBalance({ address: ownerAccount.address })\n\n if (balance === 0n) {\n throw new Error('Owner has no ETH for gas. Please fund the account.')\n }\n\n // Build transaction to create wallet\n // Owner is operator (user signs payments)\n // For default client wallet: walletType=0 (CLIENT), name=\"\", description=\"\"\n const { request } = await publicClient.simulateContract({\n account: ownerAccount,\n address: factoryConfig.address as `0x${string}`,\n abi: factoryConfig.abi,\n functionName: 'createWallet',\n args: [operatorAddress, 0, '', '']\n })\n\n // Send transaction\n const hash = await walletClient.writeContract(request)\n\n // Wait for confirmation\n const receipt = await publicClient.waitForTransactionReceipt({\n hash,\n timeout: 300_000 // 5 minutes\n })\n\n if (receipt.status !== 'success') {\n throw new Error(`Transaction failed: ${hash}`)\n }\n\n // Parse WalletCreated event to get wallet address\n let walletAddress: `0x${string}` | undefined\n\n for (const log of receipt.logs) {\n try {\n const decoded = decodeEventLog({\n abi: factoryConfig.abi,\n data: log.data,\n topics: log.topics,\n eventName: 'WalletCreated'\n })\n\n // Extract wallet address from decoded args\n if (decoded.args && typeof decoded.args === 'object' && 'wallet' in decoded.args) {\n walletAddress = decoded.args.wallet as `0x${string}`\n break\n }\n } catch {\n // Not the event we're looking for, continue\n continue\n }\n }\n\n if (!walletAddress) {\n throw new Error('WalletCreated event not found in transaction logs')\n }\n\n // Return result\n return {\n walletAddress,\n ownerAddress: ownerAccount.address,\n transactionHash: hash,\n blockNumber: receipt.blockNumber,\n network,\n chainId: chain.id\n }\n}\n\n/**\n * Get all IATPWallet addresses owned by a user.\n * \n * Queries the IATPWalletFactory contract to retrieve all wallets\n * where the specified address is the owner.\n * \n * Use this to check if a user already has a wallet before calling createIATPWallet().\n * \n * @param params - Query parameters\n * @param params.ownerAddress - User's wallet address (from MetaMask)\n * @param params.network - Network to query (default: \"sepolia\")\n * @param params.rpcUrl - Custom RPC URL (optional)\n * @returns Array of IATPWallet contract addresses (empty if user has no wallets)\n * \n * @example\n * ```ts\n * import { getWalletsByOwner } from '@dcentralab/d402-client'\n * import { useAccount } from 'wagmi'\n * \n * const { address } = useAccount()\n * \n * // Check if user has any wallets\n * const wallets = await getWalletsByOwner({\n * ownerAddress: address,\n * network: 'sepolia'\n * })\n * \n * if (wallets.length === 0) {\n * // Show \"Create Wallet\" button\n * } else {\n * // Use existing wallet: wallets[0]\n * }\n * ```\n */\nexport async function getWalletsByOwner(params: {\n ownerAddress: Address\n network?: 'sepolia'\n rpcUrl?: string\n}): Promise<Address[]> {\n const { ownerAddress, network = 'sepolia', rpcUrl } = params\n\n // Get factory contract configuration\n const factoryConfig = getContractConfig(ContractName.IATP_WALLET_FACTORY, network)\n\n if (!factoryConfig) {\n throw new Error(`IATPWalletFactory not found for network: ${network}`)\n }\n\n // Setup client\n const chain: Chain = sepolia\n const transport = http(rpcUrl)\n\n const publicClient = createPublicClient({\n chain,\n transport\n })\n\n // Call getWalletsByOwner on factory contract\n const wallets = await publicClient.readContract({\n address: factoryConfig.address as Address,\n abi: factoryConfig.abi,\n functionName: 'getWalletsByOwner',\n args: [ownerAddress]\n }) as Address[]\n\n return wallets\n}\n\n","/**\n * IATPWallet query functions\n */\n\nimport type { PublicClient, Address } from 'viem'\nimport { getContractConfig, ContractName } from '../contracts'\n\n/**\n * Get available balance for a specific token in an IATPWallet.\n * \n * Queries the IATPWallet contract's getAvailableBalance function to retrieve\n * the available balance for a given token.\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address (e.g., USDC)\n * @param params.network - Network to query (default: \"sepolia\")\n * @returns Available balance in token's base units (wei)\n * \n * @example\n * ```ts\n * import { getAvailableBalance } from '@dcentralab/d402-client'\n * import { usePublicClient } from 'wagmi'\n * \n * const publicClient = usePublicClient()\n * \n * const balance = await getAvailableBalance({\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC on Sepolia\n * })\n * \n * console.log('Available balance:', balance) // 1000000n (1 USDC)\n * ```\n */\nexport async function getAvailableBalance(params: {\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<bigint> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'getAvailableBalance',\n args: [tokenAddress]\n })\n\n return balance as unknown as bigint\n}\n\n","/**\n * IATPWallet withdrawal functions\n */\n\nimport type { PublicClient, WalletClient, Hash, Address } from 'viem'\nimport type { Account } from 'viem/accounts'\nimport { getContractConfig, ContractName } from '../contracts'\n\n/**\n * Get withdrawal request for a token in an IATPWallet.\n * \n * Queries the IATPWallet contract to get the current withdrawal request\n * (amount and unlock timestamp) for a specific token.\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address\n * @param params.network - Network to query (default: \"sepolia\")\n * @returns Withdrawal request: [amount, unlockTimestamp] or null if no request exists\n * \n * @example\n * ```ts\n * import { getWithdrawalRequest } from '@dcentralab/d402-client'\n * \n * const request = await getWithdrawalRequest({\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * })\n * \n * if (request) {\n * const [amount, unlockTimestamp] = request\n * const isUnlocked = Date.now() >= Number(unlockTimestamp) * 1000\n * }\n * ```\n */\nexport async function getWithdrawalRequest(params: {\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<[bigint, bigint] | null> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n const result = await publicClient.readContract({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'getWithdrawalRequest',\n args: [tokenAddress]\n }) as [bigint, bigint]\n\n // If amount is 0, no request exists\n if (result[0] === 0n) {\n return null\n }\n\n return result\n}\n\n/**\n * Request a withdrawal from an IATPWallet.\n * \n * Initiates a withdrawal request for a token. The withdrawal will be locked\n * for a period (typically 5 minutes) before it can be executed.\n * \n * @param params - Transaction parameters\n * @param params.walletClient - Viem WalletClient (from wagmi useWalletClient)\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address\n * @param params.amount - Amount in token's base units (wei)\n * @param params.account - Account to sign transaction (operator)\n * @param params.network - Network (default: \"sepolia\")\n * @returns Transaction hash\n * \n * @example\n * ```ts\n * import { requestWithdrawal } from '@dcentralab/d402-client'\n * import { parseUnits } from 'viem'\n * \n * const hash = await requestWithdrawal({\n * walletClient,\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * amount: parseUnits('100', 6), // 100 USDC (6 decimals)\n * account: walletClient.account,\n * })\n * ```\n */\nexport async function requestWithdrawal(params: {\n walletClient: WalletClient\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n amount: bigint\n account: Account\n network?: 'sepolia'\n}): Promise<Hash> {\n const { walletClient, publicClient, walletAddress, tokenAddress, amount, account, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n // Step 1: Simulate to validate (throws on revert)\n await publicClient.simulateContract({\n account,\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'requestWithdrawal',\n args: [tokenAddress, amount],\n })\n\n // Step 2: Estimate gas for the transaction\n const estimatedGas = await publicClient.estimateContractGas({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'requestWithdrawal',\n args: [tokenAddress, amount],\n account,\n } as any) // Type assertion for viem's complex generics\n\n // Step 3: Add 20% safety buffer\n const gasLimit = estimatedGas + (estimatedGas / 5n)\n\n // Step 4: Execute transaction\n const hash = await walletClient.writeContract({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'requestWithdrawal',\n args: [tokenAddress, amount],\n account,\n gas: gasLimit,\n } as any)\n\n // Step 5: Wait for confirmation\n await publicClient.waitForTransactionReceipt({ hash })\n\n return hash\n}\n\n/**\n * Execute a withdrawal from an IATPWallet (after unlock period).\n * \n * Completes a withdrawal that has passed its unlock period. This transfers\n * the tokens from the IATPWallet back to the user's wallet.\n * \n * @param params - Transaction parameters\n * @param params.walletClient - Viem WalletClient\n * @param params.publicClient - Viem PublicClient\n * @param params.walletAddress - IATPWallet contract address\n * @param params.tokenAddress - Token contract address\n * @param params.account - Account to sign transaction (operator)\n * @param params.network - Network (default: \"sepolia\")\n * @returns Transaction hash\n * \n * @example\n * ```ts\n * import { executeWithdrawal } from '@dcentralab/d402-client'\n * \n * const hash = await executeWithdrawal({\n * walletClient,\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * account: walletClient.account,\n * })\n * ```\n */\nexport async function executeWithdrawal(params: {\n walletClient: WalletClient\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n account: Account\n network?: 'sepolia'\n}): Promise<Hash> {\n const { walletClient, publicClient, walletAddress, tokenAddress, account, network = 'sepolia' } = params\n\n const walletConfig = getContractConfig(ContractName.IATP_WALLET, network)\n\n if (!walletConfig) {\n throw new Error(`IATPWallet contract not found for network: ${network}`)\n }\n\n // Step 1: Simulate to validate (throws on revert)\n await publicClient.simulateContract({\n account,\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'executeWithdrawal',\n args: [tokenAddress],\n })\n\n // Step 2: Estimate gas for the transaction\n const estimatedGas = await publicClient.estimateContractGas({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'executeWithdrawal',\n args: [tokenAddress],\n account,\n } as any) // Type assertion for viem's complex generics\n\n // Step 3: Add 20% safety buffer\n const gasLimit = estimatedGas + (estimatedGas / 5n)\n\n // Step 4: Execute transaction\n const hash = await walletClient.writeContract({\n address: walletAddress,\n abi: walletConfig.abi,\n functionName: 'executeWithdrawal',\n args: [tokenAddress],\n account,\n gas: gasLimit,\n } as any)\n\n // Step 5: Wait for confirmation\n await publicClient.waitForTransactionReceipt({ hash })\n\n return hash\n}\n\n","/**\n * D402 Client - Main client class for handling HTTP 402 payments\n * \n */\n\nimport type { Account } from 'viem/accounts'\nimport type { PaymentRequirement } from '../payment/types'\nimport { selectPaymentRequirement, type PaymentSelector } from '../payment/selector'\nimport type { PublicClient, WalletClient, Hash } from 'viem'\nimport {\n getAvailableBalance as walletGetAvailableBalance,\n getWithdrawalRequest as walletGetWithdrawalRequest,\n requestWithdrawal as walletRequestWithdrawal,\n executeWithdrawal as walletExecuteWithdrawal\n} from '../wallet'\n\n/**\n * D402 Client configuration.\n * \n * The client uses the user's wallet to sign payment authorizations for 402-protected APIs.\n */\nexport interface D402ClientConfig {\n /** \n * User's account for signing payments.\n * Typically from wagmi: `walletClient.account`\n */\n operatorAccount: Account\n\n /** \n * IATPWallet contract address.\n * Get from `createIATPWallet()` or `getWalletsByOwner()`.\n */\n iatpWalletAddress: `0x${string}`\n\n /**\n * Optional safety limit for maximum payment amount per request in base units.\n * \n * WARNING: This is a simple numeric comparison and does NOT account for:\n * - Different tokens (USDC vs TRAIA vs others) - amounts are compared directly\n * - Token decimals - ensure maxValue uses the same decimals as expected tokens\n * - Exchange rates - this is not a USD limit, it's a token amount limit\n * \n * Each endpoint can have different payment requirements (amount and token),\n * but this limit applies to all requests. Set it based on your most expensive\n * expected payment in the token's base units.\n * \n * If undefined, no limit is enforced (not recommended for production).\n */\n maxValue?: bigint\n\n /**\n * Optional custom selector for payment requirements.\n * If not provided, uses default selector that picks first \"exact\" scheme.\n */\n paymentRequirementsSelector?: PaymentSelector\n\n /**\n * Optional network filter for payment selection.\n * Only select requirements matching this network.\n */\n networkFilter?: string\n\n /**\n * Optional scheme filter for payment selection.\n * Defaults to \"exact\".\n */\n schemeFilter?: string\n}\n\n/**\n * D402 Client for handling HTTP 402 Payment Required responses.\n * \n * This client automatically:\n * 1. Detects HTTP 402 responses\n * 2. Parses payment requirements\n * 3. Selects appropriate payment option\n * 4. Signs payment with EIP-712\n * 5. Retries request with X-Payment header\n * \n * @example\n * ```ts\n * import { D402Client } from '@dcentralab/d402-client'\n * import { privateKeyToAccount } from 'viem/accounts'\n * \n * const operatorAccount = privateKeyToAccount('0x...')\n * \n * const client = new D402Client({\n * operatorAccount,\n * iatpWalletAddress: '0xUserIATPWallet...',\n * maxValue: 1000000n // 1 USDC max\n * })\n * \n * const response = await client.fetch('http://api.example.com/analyze', {\n * method: 'POST',\n * body: JSON.stringify({ text: 'Analyze this' })\n * })\n * \n * const data = await response.json()\n * ```\n */\nexport class D402Client {\n private readonly operatorAccount: Account\n private readonly iatpWalletAddress: `0x${string}`\n private readonly maxValue?: bigint\n private readonly paymentRequirementsSelector: PaymentSelector\n private readonly networkFilter?: string\n private readonly schemeFilter: string\n\n /**\n * Create a new D402 Client.\n * \n * @param config - Client configuration\n * \n * @example\n * ```ts\n * const client = new D402Client({\n * operatorAccount: walletClient.account, // User's wallet from wagmi\n * iatpWalletAddress: userWallet, // From createIATPWallet() or getWalletsByOwner()\n * maxValue: 1000000n // Safety limit: 1 USDC max\n * })\n * ```\n */\n constructor(config: D402ClientConfig) {\n this.operatorAccount = config.operatorAccount\n this.iatpWalletAddress = config.iatpWalletAddress\n this.maxValue = config.maxValue\n this.networkFilter = config.networkFilter\n this.schemeFilter = config.schemeFilter || 'exact'\n\n // Use custom selector or default\n this.paymentRequirementsSelector = config.paymentRequirementsSelector || selectPaymentRequirement\n }\n\n /**\n * Select payment requirement from list of options.\n * \n * Applies configured filters (network, scheme, maxValue) to choose\n * the appropriate payment option from the server's requirements list.\n * \n * @param requirements - List of payment requirements from 402 response\n * @returns Selected payment requirement\n */\n selectPaymentRequirement(requirements: PaymentRequirement[]): PaymentRequirement {\n return this.paymentRequirementsSelector(requirements, {\n network: this.networkFilter,\n scheme: this.schemeFilter,\n maxAmount: this.maxValue\n })\n }\n\n /**\n * Get the IATP wallet address used for payments.\n * \n * @returns IATPWallet contract address, or user's EOA address if no wallet configured\n */\n getIATPWalletAddress(): `0x${string}` {\n return this.iatpWalletAddress\n }\n\n /**\n * Get the user's account used for signing payments.\n * \n * @returns User's wallet account\n */\n getOperatorAccount(): Account {\n return this.operatorAccount\n }\n\n /**\n * Get the maximum payment value limit.\n * \n * @returns Maximum value in base units, or undefined if no limit\n */\n getMaxValue(): bigint | undefined {\n return this.maxValue\n }\n\n /**\n * Get available balance for a token in the IATP wallet.\n * \n * @param publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param tokenAddress - Token contract address\n * @returns Available balance in token's base units (wei)\n */\n async getAvailableBalance(\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ): Promise<bigint> {\n return walletGetAvailableBalance({\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n })\n }\n\n /**\n * Get withdrawal request for a token.\n * \n * @param publicClient - Viem PublicClient\n * @param tokenAddress - Token contract address\n * @returns Withdrawal request: [amount, unlockTimestamp] or null if no request exists\n */\n async getWithdrawalRequest(\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ): Promise<[bigint, bigint] | null> {\n return walletGetWithdrawalRequest({\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n })\n }\n\n /**\n * Request a withdrawal from the IATP wallet.\n * \n * @param walletClient - Viem WalletClient (from wagmi useWalletClient)\n * @param publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param tokenAddress - Token contract address\n * @param amount - Amount in token's base units (wei)\n * @returns Transaction hash\n */\n async requestWithdrawal(\n walletClient: WalletClient,\n publicClient: PublicClient,\n tokenAddress: `0x${string}`,\n amount: bigint\n ): Promise<Hash> {\n return walletRequestWithdrawal({\n walletClient,\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n amount,\n account: this.operatorAccount,\n })\n }\n\n /**\n * Execute a withdrawal for a token (after unlock period).\n * \n * @param walletClient - Viem WalletClient\n * @param publicClient - Viem PublicClient\n * @param tokenAddress - Token contract address\n * @returns Transaction hash\n */\n async executeWithdrawal(\n walletClient: WalletClient,\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ): Promise<Hash> {\n return walletExecuteWithdrawal({\n walletClient,\n publicClient,\n walletAddress: this.iatpWalletAddress,\n tokenAddress,\n account: this.operatorAccount,\n })\n }\n\n /**\n * Fetch with automatic 402 payment handling.\n * \n * \n * Flow:\n * 1. Make request without payment\n * 2. If 402 response, parse payment requirements\n * 3. Select appropriate payment option\n * 4. Sign payment with EIP-712\n * 5. Retry request with X-Payment header\n * 6. Return final response\n * \n * @param url - URL to fetch\n * @param init - Fetch options (method, headers, body, etc.)\n * @returns Response object (after payment if 402)\n * \n * @example\n * ```ts\n * const client = new D402Client({ operatorAccount, iatpWalletAddress })\n * \n * const response = await client.fetch('http://api.example.com/analyze', {\n * method: 'POST',\n * headers: { 'Content-Type': 'application/json' },\n * body: JSON.stringify({ text: 'Analyze this' })\n * })\n * \n * const data = await response.json()\n * ```\n */\n async fetch(url: string, init?: RequestInit): Promise<Response> {\n // Dynamic imports for code splitting: Payment modules are only loaded when\n // a 402 response is encountered, reducing initial bundle size for browsers.\n // This is especially important for apps that may not always hit 402 endpoints.\n const { parseAllPaymentRequirements } = await import('../payment/parser')\n const { signD402Payment } = await import('../payment/signer')\n const { encodePayment } = await import('../payment/encoder')\n\n // Make initial request without payment\n let response = await fetch(url, init)\n\n // If not 402, return immediately\n if (response.status !== 402) {\n return response\n }\n\n // Handle 402 Payment Required\n try {\n // Parse all payment requirements from 402 response\n const requirements = await parseAllPaymentRequirements(response)\n\n // Select payment requirement (applies filters and maxValue check)\n const selectedRequirement = this.selectPaymentRequirement(requirements)\n\n // Sign payment\n const signedPayment = await signD402Payment({\n operatorAccount: this.operatorAccount,\n paymentRequirement: selectedRequirement,\n iatpWalletAddress: this.iatpWalletAddress\n })\n\n // Encode payment for header\n const paymentHeader = encodePayment(signedPayment)\n\n // Retry request with payment header\n response = await fetch(url, {\n ...init,\n headers: {\n ...init?.headers,\n 'X-Payment': paymentHeader,\n 'Access-Control-Expose-Headers': 'X-Payment-Response'\n }\n })\n\n return response\n\n } catch (error) {\n // Re-throw payment errors\n throw error\n }\n }\n}\n\n","/**\n * @dcentralab/d402-client\n * \n * D402 Payment Protocol Client for TypeScript/JavaScript\n * \n * @packageDocumentation\n */\n\n// Main client\nexport { D402Client, type D402ClientConfig } from './client'\n\n// Payment processing\nexport { signD402Payment } from './payment/signer'\nexport { parsePaymentRequirement, parseAllPaymentRequirements } from './payment/parser'\nexport { encodePayment, decodePayment } from './payment/encoder'\n\n// Payment selection\nexport {\n selectPaymentRequirement,\n createPaymentSelector,\n sortPaymentRequirements,\n type PaymentSelector,\n type PaymentSelectorOptions\n} from './payment/selector'\n\n// Payment types\nexport type {\n PaymentRequirement,\n SignedPayment,\n PaymentAuthorization,\n D402Response\n} from './payment/types'\n\n// Wallet management\nexport {\n createIATPWallet,\n getWalletsByOwner,\n getAvailableBalance,\n getWithdrawalRequest,\n requestWithdrawal,\n executeWithdrawal,\n type WalletCreationResult\n} from './wallet'\n\n// Settlement layer\nexport {\n getLockedBalanceForProvider,\n getUnlockedBalanceForProvider,\n withdrawAllAvailableEpochs\n} from './settlement'\n\n// Contract utilities\nexport { getContractConfig, getContractAddress, getContractAbi, ContractName } from './contracts'\n\n// Core utilities\nexport {\n parseMoney,\n formatMoney,\n getUsdcAddress,\n getChainId,\n findMatchingPaymentRequirement,\n usdToUsdc,\n generateNonce,\n getCurrentTimestamp,\n isValidAddress,\n normalizeAddress,\n decodePaymentResponse\n} from './core/utils'\n\n// Error classes\nexport {\n PaymentError,\n PaymentAmountExceededError,\n MissingRequestConfigError,\n PaymentAlreadyAttemptedError,\n UnsupportedSchemeError,\n PaymentVerificationError,\n Invalid402ResponseError,\n UnsupportedNetworkError\n} from './core/errors'\n\n// Core types\nexport type { SupportedNetwork, EIP712Domain } from './core/types'\n","/**\n * IATPSettlementLayer query functions\n */\n\nimport type { PublicClient, Address } from 'viem'\nimport { getContractConfig, ContractName } from '../contracts'\n\n/**\n * Get locked balance for a provider across unreleased epochs.\n * \n * This is the balance that's locked in the settlement layer and cannot\n * be withdrawn yet (still within the release delay period).\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.providerAddress - Provider (utility agent) IATPWallet address\n * @param params.tokenAddress - Token contract address\n * @param params.network - Network (default: \"sepolia\")\n * @returns Locked balance in base units (wei)\n * \n * @example\n * ```ts\n * import { getLockedBalanceForProvider } from '@dcentralab/d402-client'\n * \n * const locked = await getLockedBalanceForProvider({\n * publicClient,\n * providerAddress: '0xUtilityAgentWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * network: 'sepolia'\n * })\n * \n * console.log('Locked balance:', locked)\n * ```\n */\nexport async function getLockedBalanceForProvider(params: {\n publicClient: PublicClient\n providerAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<bigint> {\n const { publicClient, providerAddress, tokenAddress, network = 'sepolia' } = params\n\n const settlementConfig = getContractConfig(ContractName.IATP_SETTLEMENT_LAYER, network)\n\n if (!settlementConfig) {\n throw new Error(`IATPSettlementLayer contract not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'getLockedBalanceForProvider',\n args: [providerAddress, tokenAddress]\n })\n\n return balance as unknown as bigint\n}\n\n/**\n * Get unlocked balance for a provider across released epochs.\n * \n * This is the balance that's available for withdrawal (epochs have passed\n * the release delay and haven't been withdrawn yet).\n * \n * @param params - Query parameters\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.providerAddress - Provider (utility agent) IATPWallet address\n * @param params.tokenAddress - Token contract address\n * @param params.network - Network (default: \"sepolia\")\n * @returns Unlocked balance in base units (wei)\n * \n * @example\n * ```ts\n * import { getUnlockedBalanceForProvider } from '@dcentralab/d402-client'\n * \n * const unlocked = await getUnlockedBalanceForProvider({\n * publicClient,\n * providerAddress: '0xUtilityAgentWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * network: 'sepolia'\n * })\n * \n * console.log('Unlocked balance:', unlocked)\n * ```\n */\nexport async function getUnlockedBalanceForProvider(params: {\n publicClient: PublicClient\n providerAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<bigint> {\n const { publicClient, providerAddress, tokenAddress, network = 'sepolia' } = params\n\n const settlementConfig = getContractConfig(ContractName.IATP_SETTLEMENT_LAYER, network)\n\n if (!settlementConfig) {\n throw new Error(`IATPSettlementLayer contract not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'getUnlockedBalanceForProvider',\n args: [providerAddress, tokenAddress]\n })\n\n return balance as unknown as bigint\n}\n\n","/**\n * IATPSettlementLayer operations\n * \n * Functions for managing withdrawals from the settlement layer.\n */\n\nimport type { PublicClient, WalletClient, Address, Hash } from 'viem'\nimport { getContractConfig, ContractName } from '../contracts'\n\n/**\n * Withdraw all available epochs for a provider (utility agent).\n * \n * This function calls the settlement layer's withdrawAllAvailableEpochs function,\n * which releases and withdraws funds from all available epochs for the given token.\n * Only the provider themselves can call this function.\n * \n * @param params - Transaction parameters\n * @param params.walletClient - Viem WalletClient (from wagmi useWalletClient)\n * @param params.publicClient - Viem PublicClient (from wagmi usePublicClient)\n * @param params.tokenAddress - Token contract address to withdraw\n * @param params.network - Network (default: \"sepolia\")\n * @returns Transaction hash\n * \n * @example\n * ```ts\n * import { withdrawAllAvailableEpochs } from '@dcentralab/d402-client'\n * \n * const hash = await withdrawAllAvailableEpochs({\n * walletClient,\n * publicClient,\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC\n * network: 'sepolia'\n * })\n * \n * console.log('Withdrawal transaction:', hash)\n * ```\n */\nexport async function withdrawAllAvailableEpochs(params: {\n walletClient: WalletClient\n publicClient: PublicClient\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<Hash> {\n const { walletClient, publicClient, tokenAddress, network = 'sepolia' } = params\n\n if (!walletClient?.account) {\n throw new Error('Wallet account not found. Please connect your wallet.')\n }\n\n const account = walletClient.account\n\n const settlementConfig = getContractConfig(ContractName.IATP_SETTLEMENT_LAYER, network)\n\n if (!settlementConfig) {\n throw new Error(`IATPSettlementLayer contract not found for network: ${network}`)\n }\n\n // Step 1: Simulate to validate (throws on revert)\n await publicClient.simulateContract({\n account,\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'withdrawAllAvailableEpochs',\n args: [tokenAddress],\n })\n\n // Step 2: Estimate gas for the transaction\n const estimatedGas = await publicClient.estimateContractGas({\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'withdrawAllAvailableEpochs',\n args: [tokenAddress],\n account,\n } as any) // Type assertion for viem's complex generics\n\n // Step 3: Add 20% safety buffer\n const gasLimit = estimatedGas + (estimatedGas / 5n)\n\n // Step 4: Execute transaction\n const hash = await walletClient.writeContract({\n address: settlementConfig.address as Address,\n abi: settlementConfig.abi,\n functionName: 'withdrawAllAvailableEpochs',\n args: [tokenAddress],\n account,\n gas: gasLimit,\n } as any)\n\n // Step 5: Wait for confirmation\n await publicClient.waitForTransactionReceipt({ hash })\n\n return hash\n}\n"]}