@dcentralab/d402-client 0.3.5 → 0.3.8
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.d.mts +207 -43
- package/dist/index.d.ts +207 -43
- package/dist/index.js +5203 -166
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5200 -169
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -11
- package/LICENSE +0 -22
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":["ContractName","sepolia","http","createPublicClient","parseAllPaymentRequirements","signD402Payment","encodePayment"],"mappings":"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","file":"index.mjs","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 { 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 * 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 * 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 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: iatpWalletAddress\n } as const\n\n const message = {\n wallet: iatpWalletAddress,\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: iatpWalletAddress,\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 * Decode X-PAYMENT-RESPONSE header from server.\n * \n * After a successful payment, servers may return payment confirmation\n * in the X-PAYMENT-RESPONSE header. This function decodes it.\n * \n * @param header - Base64 encoded payment response header\n * @returns Decoded payment response object\n * \n * @example\n * ```ts\n * const response = await fetch(url, { headers: { 'X-Payment': payment } })\n * const responseHeader = response.headers.get('X-Payment-Response')\n * \n * if (responseHeader) {\n * const paymentResponse = decodePaymentResponse(responseHeader)\n * console.log('Success:', paymentResponse.success)\n * console.log('Transaction:', paymentResponse.transaction)\n * }\n * ```\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 const jsonString = safeBase64Decode(header)\n return JSON.parse(jsonString)\n } catch (error) {\n throw new Error(`Failed to decode payment response: ${error instanceof Error ? error.message : 'Unknown error'}`)\n }\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 * Find matching payment requirement from a list.\n * \n * Simple helper to find a requirement matching scheme and network.\n * For more complex selection logic, use selectPaymentRequirement() instead.\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 * \n * @example\n * ```ts\n * const match = findMatchingPaymentRequirement(requirements, 'exact', 'sepolia')\n * if (match) {\n * console.log('Found exact payment on Sepolia')\n * }\n * ```\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 \"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 } 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 * IATPWallet query functions\n */\n\nimport { createPublicClient, http, type Chain, type PublicClient, type Address } from 'viem'\nimport { sepolia } from 'viem/chains'\nimport { getContractConfig, getContractAbi, 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 walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: walletAddress,\n abi: walletAbi,\n functionName: 'getAvailableBalance',\n args: [tokenAddress]\n })\n\n return balance as unknown as bigint\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 withdrawal functions\n */\n\nimport type { PublicClient, WalletClient, Hash, Address } from 'viem'\nimport type { Account } from 'viem/accounts'\nimport { getContractAbi, ContractName } from '../contracts'\nimport type { WithdrawalRequest } from './types'\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 * including all details: token, amount, requestedAt, executed status, and unlockTime.\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 details or null if no request exists\n * \n * @example\n * ```ts\n * import { getWithdrawalRequest } from '@dcentralab/d402-client'\n * \n * const result = await getWithdrawalRequest({\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * })\n * \n * if (result) {\n * const { request, unlockTime } = result\n * console.log('Token:', request.token)\n * console.log('Amount:', request.amount)\n * console.log('Requested at:', new Date(Number(request.requestedAt) * 1000))\n * console.log('Executed:', request.executed)\n * console.log('Unlocks at:', new Date(Number(unlockTime) * 1000))\n * \n * const isUnlocked = Date.now() >= Number(unlockTime) * 1000\n * }\n * ```\n */\nexport async function getWithdrawalRequest(params: {\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n network?: 'sepolia'\n}): Promise<{ request: WithdrawalRequest; unlockTime: bigint } | null> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI not found for network: ${network}`)\n }\n\n const result = await publicClient.readContract({\n address: walletAddress,\n abi: walletAbi,\n functionName: 'getWithdrawalRequest',\n args: [tokenAddress]\n }) as [WithdrawalRequest, bigint]\n\n // Contract returns: [{ token, amount, requestedAt, executed }, unlockTime]\n const [request, unlockTime] = result\n\n // If amount is 0, no request exists\n if (request.amount === 0n) {\n return null\n }\n\n // Return full withdrawal request data with all fields\n return {\n request,\n unlockTime\n }\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 walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI 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: walletAbi,\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: walletAbi,\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: walletAbi,\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 walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI 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: walletAbi,\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: walletAbi,\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: walletAbi,\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 details (request + unlockTime) or null if no request exists\n */\n async getWithdrawalRequest(\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ) {\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 // Ensure proper Accept header for MCP/JSON-RPC endpoints\n // Some servers validate the Accept header before returning 402\n const enhancedInit = {\n ...init,\n headers: {\n ...init?.headers,\n // Preserve existing Accept header or set default for MCP compatibility\n 'Accept': (init?.headers as any)?.['Accept'] || 'application/json, text/event-stream'\n }\n }\n\n // Make initial request without payment\n let response = await fetch(url, enhancedInit)\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 ...enhancedInit,\n headers: {\n ...enhancedInit.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, decodePaymentResponse } from './payment/encoder'\n\n// Payment selection\nexport {\n selectPaymentRequirement,\n createPaymentSelector,\n sortPaymentRequirements,\n findMatchingPaymentRequirement,\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 type WithdrawalRequest\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 usdToUsdc,\n generateNonce,\n getCurrentTimestamp,\n isValidAddress,\n normalizeAddress\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/errors.ts","../src/core/constants.ts","../src/core/utils.ts","../src/payment/parser.ts","../src/payment/signer.ts","../src/payment/encoder.ts","../src/mcp/session.ts","../src/mcp/payload.ts","../src/mcp/response.ts","../src/payment/selector.ts","../src/contracts/abis/sepolia.json","../src/contracts/abis/arbitrum.json","../src/contracts/addresses/proxies.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/mcp/index.ts","../src/settlement/queries.ts","../src/settlement/operations.ts"],"names":["ContractName","http","createPublicClient","parseAllPaymentRequirements","signD402Payment","encodePayment","initMcpSession","buildToolCallPayload","buildMcpHeaders","parseMcpResponse","extractToolResult"],"mappings":"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","file":"index.mjs","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 * 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 arbitrum: 42161\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 arbitrum: {\n chainId: 42161,\n name: 'Arbitrum One',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', 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 arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'\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 { sepolia, arbitrum, type Chain } from 'viem/chains'\nimport { TOKEN_ADDRESSES } from './constants'\nimport type { SupportedNetwork } from './types'\nimport { UnsupportedNetworkError } from './errors'\n\n/**\n * Map of supported networks to viem Chain objects\n */\nconst CHAIN_MAP: Record<SupportedNetwork, Chain> = {\n sepolia,\n arbitrum\n}\n\n/**\n * Get viem Chain object for a supported network\n * \n * @param network - Network name\n * @returns viem Chain object\n * \n * @example\n * ```ts\n * const chain = getChain('arbitrum')\n * console.log(chain.id) // 42161\n * ```\n */\nexport function getChain(network: SupportedNetwork): Chain {\n return CHAIN_MAP[network]\n}\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 * ```\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 'arbitrum': 42161,\n\n }\n\n const chainId = networkMap[network]\n if (!chainId) {\n throw new UnsupportedNetworkError(network)\n }\n\n return chainId\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 * 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 * EIP-712 payment signing utilities\n */\n\nimport type { Account } from 'viem/accounts'\nimport type { WalletClient } from 'viem'\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.walletClient - Optional wallet client for signing (wagmi). If provided, uses walletClient.signTypedData\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 * walletClient: walletClient, // For signing with wagmi\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 walletClient?: WalletClient\n paymentRequirement: PaymentRequirement\n iatpWalletAddress: `0x${string}`\n requestPath?: string\n d402Version?: number\n}): Promise<SignedPayment> {\n const {\n operatorAccount,\n walletClient,\n paymentRequirement,\n iatpWalletAddress,\n requestPath,\n d402Version = 1\n } = params\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: iatpWalletAddress\n } as const\n\n const message = {\n wallet: iatpWalletAddress,\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 let signature: `0x${string}`\n\n // Use walletClient if available (wagmi), otherwise fall back to account\n if (walletClient) {\n // wagmi walletClient has signTypedData directly\n signature = await walletClient.signTypedData({\n account: operatorAccount,\n domain,\n types: {\n PullFundsForSettlement: EIP712_TYPES.PullFundsForSettlement\n },\n primaryType: 'PullFundsForSettlement',\n message\n })\n } else if (operatorAccount.signTypedData) {\n // Direct account signing (for local accounts)\n signature = await operatorAccount.signTypedData({\n domain,\n types: {\n PullFundsForSettlement: EIP712_TYPES.PullFundsForSettlement\n },\n primaryType: 'PullFundsForSettlement',\n message\n })\n } else {\n throw new Error('Account does not support signTypedData. Pass walletClient for wagmi support.')\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: iatpWalletAddress,\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 * Decode X-PAYMENT-RESPONSE header from server.\n * \n * After a successful payment, servers may return payment confirmation\n * in the X-PAYMENT-RESPONSE header. This function decodes it.\n * \n * @param header - Base64 encoded payment response header\n * @returns Decoded payment response object\n * \n * @example\n * ```ts\n * const response = await fetch(url, { headers: { 'X-Payment': payment } })\n * const responseHeader = response.headers.get('X-Payment-Response')\n * \n * if (responseHeader) {\n * const paymentResponse = decodePaymentResponse(responseHeader)\n * console.log('Success:', paymentResponse.success)\n * console.log('Transaction:', paymentResponse.transaction)\n * }\n * ```\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 const jsonString = safeBase64Decode(header)\n return JSON.parse(jsonString)\n } catch (error) {\n throw new Error(`Failed to decode payment response: ${error instanceof Error ? error.message : 'Unknown error'}`)\n }\n}\n\n","export const DEFAULT_REQUEST_ID = 'init-1'\nexport const DEFAULT_JSONRPC_VERSION = '2.0'\n/**\n * MCP Session Management\n * \n * Handles MCP protocol session initialization.\n */\n\n/**\n * Initialize an MCP session with the server.\n * \n * Sends the `initialize` JSON-RPC method to establish a session.\n * Some servers return a session ID in headers, others are stateless.\n * \n * @param endpoint - MCP server endpoint URL\n * @returns Session ID if provided by server, null otherwise\n */\nexport async function initMcpSession(endpoint: string): Promise<string | null> {\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json, text/event-stream',\n },\n body: JSON.stringify({\n jsonrpc: DEFAULT_JSONRPC_VERSION,\n id: DEFAULT_REQUEST_ID,\n method: 'initialize',\n params: {\n protocolVersion: '2024-11-05',\n capabilities: {},\n clientInfo: { name: 'd402-client', version: '1.0' },\n },\n }),\n })\n\n if (!response.ok) {\n throw new Error(`MCP init failed: ${response.status} ${response.statusText}`)\n }\n\n return response.headers.get('mcp-session-id')\n}\n\n","/**\n * MCP Payload Builder\n * \n * Constructs JSON-RPC payloads for MCP tool calls.\n */\n\nimport { DEFAULT_JSONRPC_VERSION, DEFAULT_REQUEST_ID } from './session'\n\nexport interface JsonRpcPayload {\n jsonrpc: '2.0'\n id: string | number\n method: string\n params: {\n name: string\n arguments: Record<string, unknown>\n }\n}\n\n/**\n * Build a JSON-RPC payload for an MCP tool call.\n * \n * @param toolName - Name of the MCP tool to call\n * @param args - Tool arguments\n * @param requestId - Optional custom request ID (default: 1)\n * @returns Complete JSON-RPC payload ready to send\n * \n * @example\n * ```ts\n * const payload = buildToolCallPayload('google_search', { q: 'test' })\n * // { jsonrpc: '2.0', id: 1, method: 'tools/call', params: { name: 'google_search', arguments: { q: 'test' } } }\n * ```\n */\nexport function buildToolCallPayload(\n toolName: string,\n args: Record<string, unknown>,\n requestId: string | number = DEFAULT_REQUEST_ID\n): JsonRpcPayload {\n return {\n jsonrpc: DEFAULT_JSONRPC_VERSION,\n id: requestId,\n method: 'tools/call',\n params: {\n name: toolName,\n arguments: args,\n },\n }\n}\n\n/**\n * Build headers for an MCP request.\n * \n * @param sessionId - Optional MCP session ID\n * @returns Headers object for fetch\n */\nexport function buildMcpHeaders(sessionId?: string | null): Record<string, string> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json, text/event-stream',\n }\n\n if (sessionId) {\n headers['mcp-session-id'] = sessionId\n }\n\n return headers\n}\n\n","/**\n * MCP Response Parser\n * \n * Handles parsing of MCP responses in both JSON and SSE formats.\n */\n\nexport interface McpToolResult {\n /** Whether the tool call was successful */\n isError: boolean\n /** The tool's output content */\n content: Array<{\n type: string\n text?: string\n [key: string]: unknown\n }>\n /** Structured content if available */\n structuredContent?: unknown\n}\n\nexport interface ParsedMcpResponse {\n /** JSON-RPC response ID */\n id: string | number\n /** The tool result */\n result: McpToolResult | unknown\n /** Error if the call failed */\n error?: {\n code: number\n message: string\n data?: unknown\n }\n}\n\n/**\n * Parse an MCP response, handling both SSE and JSON formats.\n * \n * MCP servers may return responses as:\n * - `application/json`: Standard JSON response\n * - `text/event-stream`: Server-Sent Events with `data: {...}` format\n * \n * @param response - Fetch Response object\n * @returns Parsed response data\n */\nexport async function parseMcpResponse(response: Response): Promise<ParsedMcpResponse> {\n const contentType = response.headers.get('content-type') || ''\n\n if (contentType.includes('text/event-stream')) {\n return parseSSEResponse(await response.text())\n } else {\n return await response.json() as ParsedMcpResponse\n }\n}\n\n/**\n * Parse SSE (Server-Sent Events) format response.\n * \n * SSE format: `data: {\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{...}}`\n * \n * @param text - Raw SSE text\n * @returns Parsed JSON-RPC response\n */\nfunction parseSSEResponse(text: string): ParsedMcpResponse {\n // Find the data line(s) in SSE format\n const lines = text.split('\\n')\n\n for (const line of lines) {\n if (line.startsWith('data: ')) {\n const jsonStr = line.substring(6) // Remove 'data: ' prefix\n try {\n return JSON.parse(jsonStr) as ParsedMcpResponse\n } catch {\n // Continue to next line if parse fails\n continue\n }\n }\n }\n\n // If no valid data line found, return raw text as error\n return {\n id: 'unknown',\n result: { raw: text },\n error: {\n code: -32700,\n message: 'Could not parse SSE response',\n data: text\n }\n }\n}\n\n/**\n * Extract the tool result from an MCP response.\n * \n * Handles the nested structure and returns just the useful data.\n * \n * @param response - Parsed MCP response\n * @returns The tool's result data\n */\nexport function extractToolResult(response: ParsedMcpResponse): unknown {\n if (response.error) {\n throw new Error(`MCP error ${response.error.code}: ${response.error.message}`)\n }\n\n // If result has structuredContent, prefer that\n if (response.result && typeof response.result === 'object') {\n const result = response.result as McpToolResult\n if (result.structuredContent) {\n return result.structuredContent\n }\n // Otherwise return the whole result\n return result\n }\n\n return response.result\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 * Find matching payment requirement from a list.\n * \n * Simple helper to find a requirement matching scheme and network.\n * For more complex selection logic, use selectPaymentRequirement() instead.\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 * \n * @example\n * ```ts\n * const match = findMatchingPaymentRequirement(requirements, 'exact', 'sepolia')\n * if (match) {\n * console.log('Found exact payment on Sepolia')\n * }\n * ```\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 \"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 \"arbitrum\": {\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\": \"EnforcedPause\",\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\": \"ExpectedPause\",\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\": \"InvalidRegistrar\",\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\": \"InvalidWallet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MustWithdrawPreviousEpochsFirst\",\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\": \"ReasonTooLong\",\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\": \"TooManyDisputes\",\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 \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\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\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\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\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newRequestExpirationTime\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"RequestExpirationTimeUpdated\",\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\": false,\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\": true,\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\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\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\": \"DISPUTE_WINDOW\",\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\": \"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_DISPUTE_REASON_LENGTH\",\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\": \"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\": \"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 \"name\": \"lastDisputeAt\",\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\": \"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\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\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\": \"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\": \"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\": \"address\",\n \"name\": \"wallet\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"registerWallet\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\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 \"internalType\": \"address\",\n \"name\": \"_walletFactory\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setWalletFactory\",\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 \"name\": \"unpause\",\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\": \"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 \"name\": \"walletFactory\",\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 \"name\": \"whitelistedWallet\",\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\": \"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 \"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\": \"DescriptionTooLong\",\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\": \"InvalidLockupPeriod\",\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\": \"NameTooLong\",\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 \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RequestPathTooLong\",\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\": false,\n \"internalType\": \"uint256\",\n \"name\": \"oldPeriod\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newPeriod\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawalLockupPeriodUpdated\",\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\": \"MAX_DESCRIPTION_LENGTH\",\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_NAME_LENGTH\",\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_REQUEST_PATH_LENGTH\",\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\": \"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 {\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\": \"uint256\",\n \"name\": \"unlockTime\",\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 {\n \"internalType\": \"uint256\",\n \"name\": \"_newPeriod\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setWithdrawalLockupPeriod\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\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 \"name\": \"withdrawalLockupPeriod\",\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\": \"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\": \"uint256\",\n \"name\": \"unlockTime\",\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 \"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 \"name\": \"DescriptionTooLong\",\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\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidImplementation\",\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\": \"ReentrancyGuardReentrantCall\",\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\": \"WalletAlreadyExists\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"WalletLimitExceeded\",\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\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\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\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\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 \"indexed\": false,\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"walletType\",\n \"type\": \"uint8\"\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\": \"MAX_DESCRIPTION_LENGTH\",\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_WALLETS_PER_OWNER\",\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 \"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\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"enum IIATPWalletFactory.WalletType\",\n \"name\": \"_walletType\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"computeWalletAddress\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"predictedAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\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\": \"_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\": \"_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\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\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\": \"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\": \"unpause\",\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 \"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 {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"walletNonceByOwner\",\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\": \"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\": \"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 \"sepolia\": {\n \"RoleManager\": \"0x71d388142EA9194e5b51Eee3FEfe3B87D494dd38\",\n \"IATPSettlementLayer\": \"0xAa91081571404d7E2f2B8F12FB2Be092EBe6d2B8\",\n \"IATPWalletFactory\": \"0x0846223D022677C34eea21Bd9aa08f75c8Bd12e1\"\n },\n \"arbitrum\": {\n \"RoleManager\": \"0xB256b27681FaC8b4EaB79d392083B2D992972eff\",\n \"IATPSettlementLayer\": \"0x5462A1B920A65779deCeD769a43399f875e41bFb\",\n \"IATPWalletFactory\": \"0xe10d4633fB73414590dcD90CFb8d6194A530641B\"\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 arbitrumAbis from './abis/arbitrum.json'\nimport proxyAddresses from './addresses/proxies.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 arbitrum: arbitrumAbis.arbitrum || {}\n}\n\nconst PROXY_ADDRESSES: NetworkAddresses = proxyAddresses 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: \"sepolia\" | \"arbitrum\" (default: \"sepolia\")\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): string | null {\n const networkAddresses = PROXY_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: \"sepolia\" | \"arbitrum\" (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: \"sepolia\" | \"arbitrum\" (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 WalletClient } from 'viem'\nimport type { Account } from 'viem/accounts'\nimport { getContractConfig, ContractName } from '../contracts'\nimport { getChain } from '../core/utils'\nimport type { SupportedNetwork } from '../core/types'\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: \"sepolia\" | \"arbitrum\" (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 walletClient?: WalletClient // Optional: use wagmi walletClient for browser signing\n network?: SupportedNetwork\n rpcUrl?: string\n}): Promise<WalletCreationResult> {\n const { ownerAccount, walletClient: externalWalletClient, 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 = getChain(network)\n const transport = http(rpcUrl)\n\n const publicClient = createPublicClient({\n chain,\n transport\n })\n\n // Use external walletClient (from wagmi) if provided, otherwise create one\n // Note: Creating our own walletClient only works if ownerAccount has a private key\n // For browser use with MetaMask, you MUST pass the wagmi walletClient\n const walletClient = externalWalletClient ?? 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 // Send transaction directly using walletClient\n // For browser use with wagmi, this will prompt MetaMask\n // Owner is operator (user signs payments)\n // For default client wallet: walletType=0 (CLIENT), name=\"\", description=\"\"\n const hash = await walletClient.writeContract({\n account: ownerAccount,\n address: factoryConfig.address as `0x${string}`,\n abi: factoryConfig.abi,\n functionName: 'createWallet',\n args: [operatorAddress, 0, '', ''],\n chain: chain\n })\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 * IATPWallet query functions\n */\n\nimport { createPublicClient, http, type PublicClient, type Address } from 'viem'\nimport { getContractConfig, getContractAbi, ContractName } from '../contracts'\nimport { getChain } from '../core/utils'\nimport type { SupportedNetwork } from '../core/types'\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\n}): Promise<bigint> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI not found for network: ${network}`)\n }\n\n const balance = await publicClient.readContract({\n address: walletAddress,\n abi: walletAbi,\n functionName: 'getAvailableBalance',\n args: [tokenAddress]\n })\n\n return balance as unknown as bigint\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\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 = getChain(network)\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 withdrawal functions\n */\n\nimport type { PublicClient, WalletClient, Hash, Address } from 'viem'\nimport type { Account } from 'viem/accounts'\nimport { getContractAbi, ContractName } from '../contracts'\nimport type { SupportedNetwork } from '../core/types'\nimport type { WithdrawalRequest } from './types'\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 * including all details: token, amount, requestedAt, executed status, and unlockTime.\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: \"sepolia\" | \"arbitrum\" (default: \"sepolia\")\n * @returns Withdrawal request details or null if no request exists\n * \n * @example\n * ```ts\n * import { getWithdrawalRequest } from '@dcentralab/d402-client'\n * \n * const result = await getWithdrawalRequest({\n * publicClient,\n * walletAddress: '0xUserIATPWallet...',\n * tokenAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n * })\n * \n * if (result) {\n * const { request, unlockTime } = result\n * console.log('Token:', request.token)\n * console.log('Amount:', request.amount)\n * console.log('Requested at:', new Date(Number(request.requestedAt) * 1000))\n * console.log('Executed:', request.executed)\n * console.log('Unlocks at:', new Date(Number(unlockTime) * 1000))\n * \n * const isUnlocked = Date.now() >= Number(unlockTime) * 1000\n * }\n * ```\n */\nexport async function getWithdrawalRequest(params: {\n publicClient: PublicClient\n walletAddress: Address\n tokenAddress: Address\n network?: SupportedNetwork\n}): Promise<{ request: WithdrawalRequest; unlockTime: bigint } | null> {\n const { publicClient, walletAddress, tokenAddress, network = 'sepolia' } = params\n\n const walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI not found for network: ${network}`)\n }\n\n const result = await publicClient.readContract({\n address: walletAddress,\n abi: walletAbi,\n functionName: 'getWithdrawalRequest',\n args: [tokenAddress]\n }) as [WithdrawalRequest, bigint]\n\n // Contract returns: [{ token, amount, requestedAt, executed }, unlockTime]\n const [request, unlockTime] = result\n\n // If amount is 0, no request exists\n if (request.amount === 0n) {\n return null\n }\n\n // Return full withdrawal request data with all fields\n return {\n request,\n unlockTime\n }\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\n}): Promise<Hash> {\n const { walletClient, publicClient, walletAddress, tokenAddress, amount, account, network = 'sepolia' } = params\n\n const walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI 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: walletAbi,\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: walletAbi,\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: walletAbi,\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\n}): Promise<Hash> {\n const { walletClient, publicClient, walletAddress, tokenAddress, account, network = 'sepolia' } = params\n\n const walletAbi = getContractAbi(ContractName.IATP_WALLET, network)\n\n if (!walletAbi) {\n throw new Error(`IATPWallet ABI 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: walletAbi,\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: walletAbi,\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: walletAbi,\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 * Wallet client for signing (required for wagmi/browser use).\n * This is needed because wagmi accounts don't have signTypedData directly.\n */\n walletClient?: WalletClient\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 walletClient?: WalletClient\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.walletClient = config.walletClient\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 details (request + unlockTime) or null if no request exists\n */\n async getWithdrawalRequest(\n publicClient: PublicClient,\n tokenAddress: `0x${string}`\n ) {\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 // Ensure proper Accept header for MCP/JSON-RPC endpoints\n // Some servers validate the Accept header before returning 402\n const enhancedInit = {\n ...init,\n headers: {\n ...init?.headers,\n // Preserve existing Accept header or set default for MCP compatibility\n 'Accept': (init?.headers as any)?.['Accept'] || 'application/json, text/event-stream'\n }\n }\n\n // Make initial request without payment\n let response = await fetch(url, enhancedInit)\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 walletClient: this.walletClient,\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 ...enhancedInit,\n headers: {\n ...enhancedInit.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 // MCP Methods - Simplified API for MCP tool calls\n // ========================================================================\n\n /**\n * Call an MCP tool with automatic session initialization and payment handling.\n * \n * This is the simplest way to call an MCP tool. It handles:\n * - MCP session initialization\n * - JSON-RPC payload construction\n * - HTTP 402 payment flow\n * - SSE/JSON response parsing\n * \n * @param endpoint - MCP server endpoint URL\n * @param toolName - Name of the tool to call\n * @param input - Tool arguments\n * @param options - Optional configuration\n * @returns The tool's result data\n * \n * @example\n * ```ts\n * const client = new D402Client({\n * operatorAccount: walletClient.account,\n * walletClient,\n * iatpWalletAddress,\n * })\n * \n * // Simple one-liner!\n * const result = await client.mcpCall(\n * 'https://my-mcp.example.com/mcp',\n * 'google_search',\n * { q: 'test search' }\n * )\n * \n * console.log(result) // { searchResults: [...] }\n * ```\n */\n async mcpCall(\n endpoint: string,\n toolName: string,\n input: Record<string, unknown>,\n options?: {\n /** Skip session initialization (for stateless servers) */\n skipInit?: boolean\n /** Custom JSON-RPC request ID */\n requestId?: string | number\n }\n ): Promise<unknown> {\n // Dynamic import for code splitting\n const { initMcpSession } = await import('../mcp/session')\n const { buildToolCallPayload, buildMcpHeaders } = await import('../mcp/payload')\n const { parseMcpResponse, extractToolResult } = await import('../mcp/response')\n\n // Step 1: Initialize MCP session (optional)\n let sessionId: string | null = null\n if (!options?.skipInit) {\n try {\n sessionId = await initMcpSession(endpoint)\n } catch {\n // Some servers don't require init, continue anyway\n }\n }\n\n // Step 2: Build request\n const headers = buildMcpHeaders(sessionId)\n const payload = buildToolCallPayload(toolName, input, options?.requestId)\n\n // Step 3: Call with payment handling (uses fetch() which handles 402)\n const response = await this.fetch(endpoint, {\n method: 'POST',\n headers,\n body: JSON.stringify(payload),\n })\n\n // Step 4: Parse response\n const parsed = await parseMcpResponse(response)\n\n // Step 5: Extract and return result\n return extractToolResult(parsed)\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, decodePaymentResponse } from './payment/encoder'\n\n// Payment selection\nexport {\n selectPaymentRequirement,\n createPaymentSelector,\n sortPaymentRequirements,\n findMatchingPaymentRequirement,\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 type WithdrawalRequest\n} from './wallet'\n\n// MCP utilities (for advanced usage - normally use client.mcpCall())\nexport {\n initMcpSession,\n buildToolCallPayload,\n buildMcpHeaders,\n parseMcpResponse,\n extractToolResult,\n type JsonRpcPayload,\n type McpToolResult,\n type ParsedMcpResponse\n} from './mcp'\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 getChain,\n usdToUsdc,\n generateNonce,\n getCurrentTimestamp,\n isValidAddress,\n normalizeAddress\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 * MCP (Model Context Protocol) support\n * \n * This module provides utilities for interacting with MCP servers,\n * including session management, payload building, and response parsing.\n */\n\nexport { initMcpSession } from './session'\nexport { buildToolCallPayload, buildMcpHeaders, type JsonRpcPayload } from './payload'\nexport {\n parseMcpResponse,\n extractToolResult,\n type McpToolResult,\n type ParsedMcpResponse\n} from './response'\n\n","/**\n * IATPSettlementLayer query functions\n */\n\nimport type { PublicClient, Address } from 'viem'\nimport { getContractConfig, ContractName } from '../contracts'\nimport type { SupportedNetwork } from '../core/types'\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\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'\nimport type { SupportedNetwork } from '../core/types'\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: \"sepolia\" | \"arbitrum\" (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?: SupportedNetwork\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"]}
|