@paxoslabs/amplify-sdk 0.5.0 → 0.5.1

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/{chain-utils-CpOJcWig.d.mts → chain-utils-D_b2LEEi.d.mts} +2 -0
  3. package/dist/{chain-utils-CpOJcWig.d.ts → chain-utils-D_b2LEEi.d.ts} +2 -0
  4. package/dist/{chunk-B5BII2XH.mjs → chunk-3D6EDR3Z.mjs} +5 -5
  5. package/dist/{chunk-B5BII2XH.mjs.map → chunk-3D6EDR3Z.mjs.map} +1 -1
  6. package/dist/{chunk-XS4SELWC.js → chunk-AUDMOT6F.js} +22 -15
  7. package/dist/chunk-AUDMOT6F.js.map +1 -0
  8. package/dist/{chunk-2ZJWWK6D.js → chunk-E5DH5YEE.js} +22 -5
  9. package/dist/chunk-E5DH5YEE.js.map +1 -0
  10. package/dist/{chunk-SXIBMN7X.mjs → chunk-E6SBQNDA.mjs} +3 -3
  11. package/dist/{chunk-SXIBMN7X.mjs.map → chunk-E6SBQNDA.mjs.map} +1 -1
  12. package/dist/{chunk-MPCRFKSD.mjs → chunk-JLZL25CY.mjs} +23 -7
  13. package/dist/chunk-JLZL25CY.mjs.map +1 -0
  14. package/dist/{chunk-KTLGSVD6.js → chunk-L5XT67QZ.js} +111 -111
  15. package/dist/{chunk-KTLGSVD6.js.map → chunk-L5XT67QZ.js.map} +1 -1
  16. package/dist/{chunk-GJPTAY5T.mjs → chunk-WJGSTAPB.mjs} +5 -5
  17. package/dist/{chunk-GJPTAY5T.mjs.map → chunk-WJGSTAPB.mjs.map} +1 -1
  18. package/dist/{chunk-N5UKVLSS.js → chunk-XVDK6J72.js} +62 -62
  19. package/dist/{chunk-N5UKVLSS.js.map → chunk-XVDK6J72.js.map} +1 -1
  20. package/dist/{chunk-XA653JS3.mjs → chunk-Y6RXVDQN.mjs} +15 -8
  21. package/dist/chunk-Y6RXVDQN.mjs.map +1 -0
  22. package/dist/{chunk-D7EMZAOQ.js → chunk-YAYUSBC6.js} +12 -12
  23. package/dist/{chunk-D7EMZAOQ.js.map → chunk-YAYUSBC6.js.map} +1 -1
  24. package/dist/core.d.mts +2 -2
  25. package/dist/core.d.ts +2 -2
  26. package/dist/core.js +16 -16
  27. package/dist/core.mjs +4 -4
  28. package/dist/display.d.mts +1 -1
  29. package/dist/display.d.ts +1 -1
  30. package/dist/display.js +10 -10
  31. package/dist/display.mjs +4 -4
  32. package/dist/index.d.mts +2 -2
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.js +57 -57
  35. package/dist/index.mjs +5 -5
  36. package/dist/utils.d.mts +1 -1
  37. package/dist/utils.d.ts +1 -1
  38. package/dist/utils.js +7 -7
  39. package/dist/utils.mjs +2 -2
  40. package/dist/vaults.d.mts +1 -1
  41. package/dist/vaults.d.ts +1 -1
  42. package/dist/vaults.js +25 -25
  43. package/dist/vaults.mjs +4 -4
  44. package/package.json +1 -1
  45. package/dist/chunk-2ZJWWK6D.js.map +0 -1
  46. package/dist/chunk-MPCRFKSD.mjs.map +0 -1
  47. package/dist/chunk-XA653JS3.mjs.map +0 -1
  48. package/dist/chunk-XS4SELWC.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/display/deposit-display.ts","../src/display/vault-display.ts","../src/abi/fee-module-abi.ts","../src/display/withdrawal-display.ts"],"names":["toChainId","resolveVault","APIError","getRateInQuoteWithAssetDecimals","getErc20Decimals","parseUnits","calculateExpectedSharesMinted","isValidAddress","getCache","VaultNotFoundByNameError","getRestV2BaseURL","DEFAULT_TIMEOUT","getRequestHeaders","getClient","WithdrawQueueAbi"],"mappings":"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","file":"chunk-N5UKVLSS.js","sourcesContent":["/**\n * @file Deposit display helpers\n * @module display/deposit-display\n */\n\nimport { parseUnits } from \"viem\";\nimport { getRateInQuoteWithAssetDecimals } from \"../api/accountant\";\nimport { getErc20Decimals } from \"../api/erc20\";\nimport { resolveVault } from \"../client/resolve-vault\";\nimport { APIError } from \"../types/amplify-sdk-api\";\nimport { calculateExpectedSharesMinted } from \"../utils/bigint\";\nimport { toChainId } from \"../utils/chain-utils\";\nimport type { GetMinimumMintParams, MinimumMintResult } from \"./types\";\n\n/**\n * Calculates the expected vault shares a user will receive for a deposit\n *\n * Uses the on-chain exchange rate from the Accountant contract to calculate\n * how many vault shares will be minted for a given deposit amount.\n *\n * @param params - Deposit parameters\n * @returns Expected shares, exchange rate, and decimal info\n * @throws {APIError} If vault not found or contract read fails\n *\n * @example\n * ```typescript\n * const result = await getMinimumMint({\n * vaultName: \"Amplify USDC Core\",\n * chainId: 1,\n * depositAssetAddress: \"0xA0b8...\", // USDC\n * depositAmount: \"1000.0\",\n * });\n * console.log(result.expectedShares);\n * ```\n */\nexport async function getMinimumMint(\n params: GetMinimumMintParams\n): Promise<MinimumMintResult> {\n try {\n const normalizedChainId = toChainId(params.chainId);\n\n const config = await resolveVault({\n vaultName: params.vaultName,\n assetAddress: params.depositAssetAddress,\n chainId: normalizedChainId,\n callerEndpoint: \"getMinimumMint\",\n });\n\n if (!config.vault.accountantAddress) {\n throw new APIError(\n `Accountant contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumMint\" }\n );\n }\n\n if (!config.vault.boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumMint\" }\n );\n }\n\n // Get exchange rate and asset decimals via multicall\n const rateResults = await getRateInQuoteWithAssetDecimals({\n assetAddress: params.depositAssetAddress,\n accountantAddress: config.vault.accountantAddress,\n chainId: normalizedChainId,\n });\n const [assetDecimalsResult, exchangeRateResult] = rateResults;\n if (assetDecimalsResult.status === \"failure\" || exchangeRateResult.status === \"failure\") {\n throw new APIError(\n `Failed to get exchange rate or asset decimals: ${assetDecimalsResult.error?.message || exchangeRateResult.error?.message\n }`,\n { endpoint: \"getMinimumMint\" }\n );\n }\n\n const assetDecimals = assetDecimalsResult.result;\n const exchangeRate = exchangeRateResult.result;\n\n // Get vault share decimals\n const shareDecimals = await getErc20Decimals({\n tokenAddress: config.vault.boringVaultAddress,\n chainId: normalizedChainId,\n });\n\n // Parse deposit amount using asset decimals\n const depositAmountBigInt = parseUnits(\n params.depositAmount,\n assetDecimals\n );\n\n // Calculate expected shares\n const expectedShares = calculateExpectedSharesMinted(\n depositAmountBigInt,\n exchangeRate,\n shareDecimals\n );\n\n return {\n expectedShares,\n exchangeRate,\n shareDecimals,\n assetDecimals,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to calculate minimum mint: ${error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getMinimumMint\", cause: error }\n );\n }\n}\n","/**\n * @file Vault display helpers\n * @module display/vault-display\n */\n\nimport type { Address } from \"viem\";\nimport { getCache } from \"../client/amplify-sdk-client\";\nimport { getRestV2BaseURL } from \"../constants/environment\";\nimport { getRequestHeaders } from \"../lib/sdk-config\";\nimport { APIError, isValidAddress } from \"../types/amplify-sdk-api\";\nimport { VaultNotFoundByNameError } from \"../types/withdraw-errors\";\nimport { DEFAULT_TIMEOUT } from \"../utils/fetch\";\nimport type {\n GetVaultAPYParams,\n GetVaultTVLParams,\n VaultAPYResult,\n VaultTVLResult,\n} from \"./types\";\n\n/**\n * Resolves a vault's on-chain BoringVault address for REST API display queries\n * (APY, TVL). Accepts either a direct `vaultAddress` or a `vaultName` lookup\n * via the local cache. No asset validation is performed since these are\n * informational queries, not transaction-prep.\n */\nasync function resolveVaultAddressForDisplay(\n params: { vaultAddress?: Address; vaultName?: string; chainId?: number },\n callerEndpoint: string\n): Promise<Address> {\n if (params.vaultAddress) {\n if (!isValidAddress(params.vaultAddress)) {\n throw new APIError(\n `Invalid vaultAddress: ${params.vaultAddress}. Must be a valid Ethereum address.`,\n { endpoint: callerEndpoint }\n );\n }\n return params.vaultAddress;\n }\n\n if (params.vaultName) {\n const cache = getCache();\n if (cache.isEmpty() || cache.isExpired()) {\n await cache.refresh();\n }\n const vault = cache.getVaultByName(params.vaultName);\n if (!vault) {\n throw new VaultNotFoundByNameError(\n `No vault found with name \"${params.vaultName}\". The vault may not exist or may not be available for your organization.`,\n { vaultName: params.vaultName, endpoint: callerEndpoint }\n );\n }\n return vault.vault.boringVaultAddress;\n }\n\n throw new APIError(\n \"Either vaultAddress or vaultName must be provided.\",\n { endpoint: callerEndpoint }\n );\n}\n\n/**\n * Fetches the latest APY for a vault from the backend API\n *\n * Requests the most recent APY data point by using\n * orderByTimestamp=desc with pageSize=1.\n *\n * @param params - Vault identifier parameters (vaultAddress, vaultName, or both)\n * @returns Latest APY value and metadata\n * @throws {APIError} If the API request fails or no data found\n *\n * @example\n * ```typescript\n * const result = await getVaultAPY({\n * vaultAddress: \"0x1234...\",\n * });\n * console.log(result.apyFormatted); // \"4.50%\"\n * ```\n */\nexport async function getVaultAPY(\n params: GetVaultAPYParams\n): Promise<VaultAPYResult> {\n try {\n const resolvedAddress = await resolveVaultAddressForDisplay(\n params,\n \"getVaultAPY\"\n );\n\n const queryParams = new URLSearchParams({\n filter: `vaultAddress=${resolvedAddress}`,\n orderByTimestamp: \"desc\",\n pageSize: \"1\",\n });\n\n const url = `${getRestV2BaseURL()}/amplify/vaultApys?${queryParams.toString()}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n DEFAULT_TIMEOUT\n );\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: getRequestHeaders(),\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new APIError(\n `Failed to fetch vault APY: ${response.status} ${response.statusText}`,\n { endpoint: \"getVaultAPY\", statusCode: response.status }\n );\n }\n\n const data = (await response.json()) as {\n vaultApys: Array<{\n vaultAddress: string;\n timestamp: string;\n interval: string;\n apy: string;\n }>;\n nextPageToken: string | null;\n };\n\n if (!data.vaultApys || data.vaultApys.length === 0) {\n throw new APIError(\n `No APY data found for vault ${resolvedAddress}`,\n { endpoint: \"getVaultAPY\" }\n );\n }\n\n const latest = data.vaultApys[0];\n const apyNumber = Number.parseFloat(latest.apy);\n\n return {\n apy: apyNumber,\n apyFormatted: `${apyNumber.toFixed(2)}%`,\n vaultAddress: latest.vaultAddress as Address,\n timestamp: latest.timestamp,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to fetch vault APY: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getVaultAPY\", cause: error }\n );\n }\n}\n\n/**\n * Fetches the current TVL for a vault from the backend API\n *\n * Requests the most recent TVL data point by using\n * includeCurrent=true, orderByTimestamp=desc with pageSize=1.\n *\n * @param params - Vault identifier parameters (vaultAddress, vaultName, or both)\n * @returns Current TVL value and metadata\n * @throws {APIError} If the API request fails or no data found\n *\n * @example\n * ```typescript\n * const result = await getVaultTVL({\n * vaultAddress: \"0x1234...\",\n * });\n * console.log(result.tvl, result.tvlAsset);\n * ```\n */\nexport async function getVaultTVL(\n params: GetVaultTVLParams\n): Promise<VaultTVLResult> {\n try {\n const resolvedAddress = await resolveVaultAddressForDisplay(\n params,\n \"getVaultTVL\"\n );\n\n const filterParts = [\n `vaultAddress=${resolvedAddress}`,\n ];\n if (params.chainId !== undefined) {\n filterParts.push(`chainId=${params.chainId}`);\n }\n\n const queryParams = new URLSearchParams({\n filter: filterParts.join(\" AND \"),\n includeCurrent: \"true\",\n orderByTimestamp: \"desc\",\n pageSize: \"1\",\n });\n\n const url = `${getRestV2BaseURL()}/amplify/vaultTvls?${queryParams.toString()}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n DEFAULT_TIMEOUT\n );\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: getRequestHeaders(),\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new APIError(\n `Failed to fetch vault TVL: ${response.status} ${response.statusText}`,\n { endpoint: \"getVaultTVL\", statusCode: response.status }\n );\n }\n\n const data = (await response.json()) as {\n vaultTvls: Array<{\n vaultAddress: string;\n chainId: number;\n timestamp: string;\n interval: string;\n tvl: string;\n tvlAsset: string;\n }>;\n nextPageToken: string | null;\n };\n\n if (!data.vaultTvls || data.vaultTvls.length === 0) {\n throw new APIError(\n `No TVL data found for vault ${resolvedAddress}`,\n { endpoint: \"getVaultTVL\" }\n );\n }\n\n const latest = data.vaultTvls[0];\n\n return {\n tvl: latest.tvl,\n tvlAsset: latest.tvlAsset,\n vaultAddress: latest.vaultAddress as Address,\n chainId: latest.chainId,\n timestamp: latest.timestamp,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to fetch vault TVL: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getVaultTVL\", cause: error }\n );\n }\n}\n","export const FeeModuleAbi = [\n {\n inputs: [\n { internalType: \"uint256\", name: \"_offerFeePercentage\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"feePercentage\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"maxAllowed\", type: \"uint256\" },\n ],\n name: \"FeePercentageTooHigh\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"contract IERC20\", name: \"offerAsset\", type: \"address\" },\n { internalType: \"contract IERC20\", name: \"wantAsset\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"calculateOfferFees\",\n outputs: [{ internalType: \"uint256\", name: \"feeAmount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"offerFeePercentage\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n","/**\n * @file Withdrawal display helpers\n * @module display/withdrawal-display\n */\n\nimport { type Address, parseUnits } from \"viem\";\nimport { FeeModuleAbi } from \"../abi/fee-module-abi\";\nimport { WithdrawQueueAbi } from \"../abi/withdraw-queue-abi\";\nimport { getErc20Decimals } from \"../api/erc20\";\nimport { getCache } from \"../client/amplify-sdk-client\";\nimport { resolveVault } from \"../client/resolve-vault\";\nimport { getRestV2BaseURL } from \"../constants/environment\";\nimport { getRequestHeaders } from \"../lib/sdk-config\";\nimport { getClient } from \"../lib/viem/client\";\nimport { APIError } from \"../types/amplify-sdk-api\";\nimport { isValidAddress } from \"../types/amplify-sdk-api\";\nimport { VaultNotFoundByNameError } from \"../types/withdraw-errors\";\nimport { DEFAULT_TIMEOUT } from \"../utils/fetch\";\nimport { toChainId } from \"../utils/chain-utils\";\nimport type {\n GetMinimumWithdrawalOrderSizeParams,\n GetWithdrawalFeeParams,\n GetWithdrawalRequestsParams,\n MinimumWithdrawalOrderSizeResult,\n WithdrawalFeeResult,\n WithdrawalRequest,\n WithdrawalRequestsResult,\n} from \"./types\";\n\n/**\n * Builds a filter string from typed params for the v2 API\n */\nfunction buildFilterString(\n params: Record<string, string | number | boolean | undefined>\n): string {\n return Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => `${k}=${v}`)\n .join(\" AND \");\n}\n\n/**\n * Fetches a user's withdrawal requests from the backend API\n *\n * @param params - Filter parameters for withdrawal requests\n * @returns Paginated list of withdrawal requests\n * @throws {APIError} If the API request fails or parameters are invalid\n *\n * @example\n * ```typescript\n * const result = await getWithdrawalRequests({\n * userAddress: \"0x1234...\",\n * status: \"PENDING\",\n * chainId: 1,\n * });\n * console.log(result.withdrawalRequests);\n * ```\n */\nexport async function getWithdrawalRequests(\n params: GetWithdrawalRequestsParams\n): Promise<WithdrawalRequestsResult> {\n try {\n if (!isValidAddress(params.userAddress)) {\n throw new APIError(\n `Invalid userAddress: ${params.userAddress}. Must be a valid Ethereum address.`,\n { endpoint: \"getWithdrawalRequests\" }\n );\n }\n\n let resolvedVaultAddress = params.vaultAddress;\n if (!resolvedVaultAddress && params.vaultName) {\n const cache = getCache();\n if (cache.isEmpty() || cache.isExpired()) {\n await cache.refresh();\n }\n const vault = cache.getVaultByName(params.vaultName);\n if (!vault) {\n throw new VaultNotFoundByNameError(\n `No vault found with name \"${params.vaultName}\". The vault may not exist or may not be available for your organization.`,\n { vaultName: params.vaultName, endpoint: \"getWithdrawalRequests\" }\n );\n }\n resolvedVaultAddress = vault.vault.boringVaultAddress;\n }\n\n const filter = buildFilterString({\n userAddress: params.userAddress,\n chainId: params.chainId,\n vaultAddress: resolvedVaultAddress,\n status: params.status,\n });\n\n const queryParams = new URLSearchParams();\n if (filter) queryParams.set(\"filter\", filter);\n if (params.pageSize)\n queryParams.set(\"pageSize\", String(params.pageSize));\n if (params.pageToken)\n queryParams.set(\"pageToken\", params.pageToken);\n\n const url = `${getRestV2BaseURL()}/amplify/withdrawalRequests?${queryParams.toString()}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n DEFAULT_TIMEOUT\n );\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: getRequestHeaders(),\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new APIError(\n `Failed to fetch withdrawal requests: ${response.status} ${response.statusText}`,\n {\n endpoint: \"getWithdrawalRequests\",\n statusCode: response.status,\n }\n );\n }\n\n const data = (await response.json()) as {\n withdrawalRequests: WithdrawalRequest[];\n nextPageToken: string | null;\n };\n\n return {\n withdrawalRequests: data.withdrawalRequests ?? [],\n nextPageToken: data.nextPageToken ?? null,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to fetch withdrawal requests: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getWithdrawalRequests\", cause: error }\n );\n }\n}\n\n/**\n * Reads the withdrawal fee from the on-chain FeeModule contract\n *\n * Performs two sequential RPC calls:\n * 1. Reads the FeeModule address from WithdrawQueue.feeModule()\n * 2. Multicalls calculateOfferFees + offerFeePercentage on the FeeModule\n *\n * @param params - Parameters for fee calculation\n * @returns Fee amount and fee percentage\n * @throws {APIError} If vault not found or contract read fails\n *\n * @example\n * ```typescript\n * const fee = await getWithdrawalFee({\n * vaultName: \"Amplify USDC Core\",\n * chainId: 1,\n * assetAddress: \"0xA0b8...\", // USDC\n * amount: \"1.0\",\n * offerAsset: \"0x1234...\", // vault shares\n * wantAsset: \"0xA0b8...\", // USDC\n * receiver: \"0x5678...\",\n * });\n * console.log(fee.feeAmount, fee.feePercentage);\n * ```\n */\nexport async function getWithdrawalFee(\n params: GetWithdrawalFeeParams\n): Promise<WithdrawalFeeResult> {\n try {\n const normalizedChainId = toChainId(params.chainId);\n\n const config = await resolveVault({\n vaultName: params.vaultName,\n assetAddress: params.assetAddress,\n chainId: normalizedChainId,\n callerEndpoint: \"getWithdrawalFee\",\n });\n\n if (!config.vault.withdrawQueueAddress) {\n throw new APIError(\n `WithdrawQueue contract address not configured for vault ${config.id}`,\n { endpoint: \"getWithdrawalFee\" }\n );\n }\n\n if (!config.vault.boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n { endpoint: \"getWithdrawalFee\" }\n );\n }\n\n const client = await getClient(normalizedChainId);\n\n // Step 1: Read the FeeModule address from WithdrawQueue\n const feeModuleAddress = (await client.readContract({\n abi: WithdrawQueueAbi,\n address: config.vault.withdrawQueueAddress,\n functionName: \"feeModule\",\n })) as Address;\n\n // Get share decimals to parse the amount\n const shareDecimals = await getErc20Decimals({\n tokenAddress: config.vault.boringVaultAddress,\n chainId: normalizedChainId,\n });\n\n const amountBigInt = parseUnits(params.amount, shareDecimals);\n\n // Step 2: Multicall calculateOfferFees + offerFeePercentage\n const results = await client.multicall({\n contracts: [\n {\n abi: FeeModuleAbi,\n address: feeModuleAddress,\n functionName: \"calculateOfferFees\",\n args: [\n amountBigInt,\n params.offerAsset,\n params.wantAsset,\n params.receiver,\n ],\n },\n {\n abi: FeeModuleAbi,\n address: feeModuleAddress,\n functionName: \"offerFeePercentage\",\n },\n ],\n });\n\n const [feeAmountResult, feePercentageResult] = results;\n\n if (\n feeAmountResult.status === \"failure\" ||\n feePercentageResult.status === \"failure\"\n ) {\n throw new APIError(\n \"Failed to read fee data from FeeModule contract\",\n { endpoint: \"getWithdrawalFee\" }\n );\n }\n\n return {\n feeAmount: feeAmountResult.result,\n feePercentage: feePercentageResult.result,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to get withdrawal fee: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getWithdrawalFee\", cause: error }\n );\n }\n}\n\n/**\n * Reads the minimum withdrawal order size from the WithdrawQueue contract\n *\n * @param params - Parameters to identify the vault\n * @returns Minimum order size in vault shares and share decimals\n * @throws {APIError} If vault not found or contract read fails\n *\n * @example\n * ```typescript\n * const result = await getMinimumWithdrawalOrderSize({\n * vaultName: \"Amplify USDC Core\",\n * chainId: 1,\n * assetAddress: \"0xA0b8...\",\n * });\n * console.log(result.minimumOrderSize, result.shareDecimals);\n * ```\n */\nexport async function getMinimumWithdrawalOrderSize(\n params: GetMinimumWithdrawalOrderSizeParams\n): Promise<MinimumWithdrawalOrderSizeResult> {\n try {\n const normalizedChainId = toChainId(params.chainId);\n\n const config = await resolveVault({\n vaultName: params.vaultName,\n assetAddress: params.assetAddress,\n chainId: normalizedChainId,\n callerEndpoint: \"getMinimumWithdrawalOrderSize\",\n });\n\n if (!config.vault.withdrawQueueAddress) {\n throw new APIError(\n `WithdrawQueue contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumWithdrawalOrderSize\" }\n );\n }\n\n if (!config.vault.boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumWithdrawalOrderSize\" }\n );\n }\n\n const client = await getClient(normalizedChainId);\n\n const [minOrderResult, shareDecimalsResult] =\n await client.multicall({\n contracts: [\n {\n abi: WithdrawQueueAbi,\n address: config.vault.withdrawQueueAddress,\n functionName: \"minimumOrderSize\",\n },\n {\n abi: [\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n ] as const,\n address: config.vault.boringVaultAddress,\n functionName: \"decimals\",\n },\n ],\n });\n\n if (\n minOrderResult.status === \"failure\" ||\n shareDecimalsResult.status === \"failure\"\n ) {\n throw new APIError(\n \"Failed to read minimum order size from WithdrawQueue contract\",\n { endpoint: \"getMinimumWithdrawalOrderSize\" }\n );\n }\n\n return {\n minimumOrderSize: minOrderResult.result,\n shareDecimals: shareDecimalsResult.result,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to get minimum withdrawal order size: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getMinimumWithdrawalOrderSize\", cause: error }\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/display/deposit-display.ts","../src/display/vault-display.ts","../src/abi/fee-module-abi.ts","../src/display/withdrawal-display.ts"],"names":["toChainId","resolveVault","APIError","getRateInQuoteWithAssetDecimals","getErc20Decimals","parseUnits","calculateExpectedSharesMinted","isValidAddress","getCache","VaultNotFoundByNameError","getRestV2BaseURL","DEFAULT_TIMEOUT","getRequestHeaders","getClient","WithdrawQueueAbi"],"mappings":"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","file":"chunk-XVDK6J72.js","sourcesContent":["/**\n * @file Deposit display helpers\n * @module display/deposit-display\n */\n\nimport { parseUnits } from \"viem\";\nimport { getRateInQuoteWithAssetDecimals } from \"../api/accountant\";\nimport { getErc20Decimals } from \"../api/erc20\";\nimport { resolveVault } from \"../client/resolve-vault\";\nimport { APIError } from \"../types/amplify-sdk-api\";\nimport { calculateExpectedSharesMinted } from \"../utils/bigint\";\nimport { toChainId } from \"../utils/chain-utils\";\nimport type { GetMinimumMintParams, MinimumMintResult } from \"./types\";\n\n/**\n * Calculates the expected vault shares a user will receive for a deposit\n *\n * Uses the on-chain exchange rate from the Accountant contract to calculate\n * how many vault shares will be minted for a given deposit amount.\n *\n * @param params - Deposit parameters\n * @returns Expected shares, exchange rate, and decimal info\n * @throws {APIError} If vault not found or contract read fails\n *\n * @example\n * ```typescript\n * const result = await getMinimumMint({\n * vaultName: \"Amplify USDC Core\",\n * chainId: 1,\n * depositAssetAddress: \"0xA0b8...\", // USDC\n * depositAmount: \"1000.0\",\n * });\n * console.log(result.expectedShares);\n * ```\n */\nexport async function getMinimumMint(\n params: GetMinimumMintParams\n): Promise<MinimumMintResult> {\n try {\n const normalizedChainId = toChainId(params.chainId);\n\n const config = await resolveVault({\n vaultName: params.vaultName,\n assetAddress: params.depositAssetAddress,\n chainId: normalizedChainId,\n callerEndpoint: \"getMinimumMint\",\n });\n\n if (!config.vault.accountantAddress) {\n throw new APIError(\n `Accountant contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumMint\" }\n );\n }\n\n if (!config.vault.boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumMint\" }\n );\n }\n\n // Get exchange rate and asset decimals via multicall\n const rateResults = await getRateInQuoteWithAssetDecimals({\n assetAddress: params.depositAssetAddress,\n accountantAddress: config.vault.accountantAddress,\n chainId: normalizedChainId,\n });\n const [assetDecimalsResult, exchangeRateResult] = rateResults;\n if (assetDecimalsResult.status === \"failure\" || exchangeRateResult.status === \"failure\") {\n throw new APIError(\n `Failed to get exchange rate or asset decimals: ${assetDecimalsResult.error?.message || exchangeRateResult.error?.message\n }`,\n { endpoint: \"getMinimumMint\" }\n );\n }\n\n const assetDecimals = assetDecimalsResult.result;\n const exchangeRate = exchangeRateResult.result;\n\n // Get vault share decimals\n const shareDecimals = await getErc20Decimals({\n tokenAddress: config.vault.boringVaultAddress,\n chainId: normalizedChainId,\n });\n\n // Parse deposit amount using asset decimals\n const depositAmountBigInt = parseUnits(\n params.depositAmount,\n assetDecimals\n );\n\n // Calculate expected shares\n const expectedShares = calculateExpectedSharesMinted(\n depositAmountBigInt,\n exchangeRate,\n shareDecimals\n );\n\n return {\n expectedShares,\n exchangeRate,\n shareDecimals,\n assetDecimals,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to calculate minimum mint: ${error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getMinimumMint\", cause: error }\n );\n }\n}\n","/**\n * @file Vault display helpers\n * @module display/vault-display\n */\n\nimport type { Address } from \"viem\";\nimport { getCache } from \"../client/amplify-sdk-client\";\nimport { getRestV2BaseURL } from \"../constants/environment\";\nimport { getRequestHeaders } from \"../lib/sdk-config\";\nimport { APIError, isValidAddress } from \"../types/amplify-sdk-api\";\nimport { VaultNotFoundByNameError } from \"../types/withdraw-errors\";\nimport { DEFAULT_TIMEOUT } from \"../utils/fetch\";\nimport type {\n GetVaultAPYParams,\n GetVaultTVLParams,\n VaultAPYResult,\n VaultTVLResult,\n} from \"./types\";\n\n/**\n * Resolves a vault's on-chain BoringVault address for REST API display queries\n * (APY, TVL). Accepts either a direct `vaultAddress` or a `vaultName` lookup\n * via the local cache. No asset validation is performed since these are\n * informational queries, not transaction-prep.\n */\nasync function resolveVaultAddressForDisplay(\n params: { vaultAddress?: Address; vaultName?: string; chainId?: number },\n callerEndpoint: string\n): Promise<Address> {\n if (params.vaultAddress) {\n if (!isValidAddress(params.vaultAddress)) {\n throw new APIError(\n `Invalid vaultAddress: ${params.vaultAddress}. Must be a valid Ethereum address.`,\n { endpoint: callerEndpoint }\n );\n }\n return params.vaultAddress;\n }\n\n if (params.vaultName) {\n const cache = getCache();\n if (cache.isEmpty() || cache.isExpired()) {\n await cache.refresh();\n }\n const vault = cache.getVaultByName(params.vaultName);\n if (!vault) {\n throw new VaultNotFoundByNameError(\n `No vault found with name \"${params.vaultName}\". The vault may not exist or may not be available for your organization.`,\n { vaultName: params.vaultName, endpoint: callerEndpoint }\n );\n }\n return vault.vault.boringVaultAddress;\n }\n\n throw new APIError(\n \"Either vaultAddress or vaultName must be provided.\",\n { endpoint: callerEndpoint }\n );\n}\n\n/**\n * Fetches the latest APY for a vault from the backend API\n *\n * Requests the most recent APY data point by using\n * orderByTimestamp=desc with pageSize=1.\n *\n * @param params - Vault identifier parameters (vaultAddress, vaultName, or both)\n * @returns Latest APY value and metadata\n * @throws {APIError} If the API request fails or no data found\n *\n * @example\n * ```typescript\n * const result = await getVaultAPY({\n * vaultAddress: \"0x1234...\",\n * });\n * console.log(result.apyFormatted); // \"4.50%\"\n * ```\n */\nexport async function getVaultAPY(\n params: GetVaultAPYParams\n): Promise<VaultAPYResult> {\n try {\n const resolvedAddress = await resolveVaultAddressForDisplay(\n params,\n \"getVaultAPY\"\n );\n\n const queryParams = new URLSearchParams({\n filter: `vaultAddress=${resolvedAddress}`,\n orderByTimestamp: \"desc\",\n pageSize: \"1\",\n });\n\n const url = `${getRestV2BaseURL()}/amplify/vaultApys?${queryParams.toString()}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n DEFAULT_TIMEOUT\n );\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: getRequestHeaders(),\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new APIError(\n `Failed to fetch vault APY: ${response.status} ${response.statusText}`,\n { endpoint: \"getVaultAPY\", statusCode: response.status }\n );\n }\n\n const data = (await response.json()) as {\n vaultApys: Array<{\n vaultAddress: string;\n timestamp: string;\n interval: string;\n apy: string;\n }>;\n nextPageToken: string | null;\n };\n\n if (!data.vaultApys || data.vaultApys.length === 0) {\n throw new APIError(\n `No APY data found for vault ${resolvedAddress}`,\n { endpoint: \"getVaultAPY\" }\n );\n }\n\n const latest = data.vaultApys[0];\n const apyNumber = Number.parseFloat(latest.apy);\n\n return {\n apy: apyNumber,\n apyFormatted: `${apyNumber.toFixed(2)}%`,\n vaultAddress: latest.vaultAddress as Address,\n timestamp: latest.timestamp,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to fetch vault APY: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getVaultAPY\", cause: error }\n );\n }\n}\n\n/**\n * Fetches the current TVL for a vault from the backend API\n *\n * Requests the most recent TVL data point by using\n * includeCurrent=true, orderByTimestamp=desc with pageSize=1.\n *\n * @param params - Vault identifier parameters (vaultAddress, vaultName, or both)\n * @returns Current TVL value and metadata\n * @throws {APIError} If the API request fails or no data found\n *\n * @example\n * ```typescript\n * const result = await getVaultTVL({\n * vaultAddress: \"0x1234...\",\n * });\n * console.log(result.tvl, result.tvlAsset);\n * ```\n */\nexport async function getVaultTVL(\n params: GetVaultTVLParams\n): Promise<VaultTVLResult> {\n try {\n const resolvedAddress = await resolveVaultAddressForDisplay(\n params,\n \"getVaultTVL\"\n );\n\n const filterParts = [\n `vaultAddress=${resolvedAddress}`,\n ];\n if (params.chainId !== undefined) {\n filterParts.push(`chainId=${params.chainId}`);\n }\n\n const queryParams = new URLSearchParams({\n filter: filterParts.join(\" AND \"),\n includeCurrent: \"true\",\n orderByTimestamp: \"desc\",\n pageSize: \"1\",\n });\n\n const url = `${getRestV2BaseURL()}/amplify/vaultTvls?${queryParams.toString()}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n DEFAULT_TIMEOUT\n );\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: getRequestHeaders(),\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new APIError(\n `Failed to fetch vault TVL: ${response.status} ${response.statusText}`,\n { endpoint: \"getVaultTVL\", statusCode: response.status }\n );\n }\n\n const data = (await response.json()) as {\n vaultTvls: Array<{\n vaultAddress: string;\n chainId: number;\n timestamp: string;\n interval: string;\n tvl: string;\n tvlAsset: string;\n }>;\n nextPageToken: string | null;\n };\n\n if (!data.vaultTvls || data.vaultTvls.length === 0) {\n throw new APIError(\n `No TVL data found for vault ${resolvedAddress}`,\n { endpoint: \"getVaultTVL\" }\n );\n }\n\n const latest = data.vaultTvls[0];\n\n return {\n tvl: latest.tvl,\n tvlAsset: latest.tvlAsset,\n vaultAddress: latest.vaultAddress as Address,\n chainId: latest.chainId,\n timestamp: latest.timestamp,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to fetch vault TVL: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getVaultTVL\", cause: error }\n );\n }\n}\n","export const FeeModuleAbi = [\n {\n inputs: [\n { internalType: \"uint256\", name: \"_offerFeePercentage\", type: \"uint256\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"feePercentage\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"maxAllowed\", type: \"uint256\" },\n ],\n name: \"FeePercentageTooHigh\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"contract IERC20\", name: \"offerAsset\", type: \"address\" },\n { internalType: \"contract IERC20\", name: \"wantAsset\", type: \"address\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"calculateOfferFees\",\n outputs: [{ internalType: \"uint256\", name: \"feeAmount\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"offerFeePercentage\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n","/**\n * @file Withdrawal display helpers\n * @module display/withdrawal-display\n */\n\nimport { type Address, parseUnits } from \"viem\";\nimport { FeeModuleAbi } from \"../abi/fee-module-abi\";\nimport { WithdrawQueueAbi } from \"../abi/withdraw-queue-abi\";\nimport { getErc20Decimals } from \"../api/erc20\";\nimport { getCache } from \"../client/amplify-sdk-client\";\nimport { resolveVault } from \"../client/resolve-vault\";\nimport { getRestV2BaseURL } from \"../constants/environment\";\nimport { getRequestHeaders } from \"../lib/sdk-config\";\nimport { getClient } from \"../lib/viem/client\";\nimport { APIError } from \"../types/amplify-sdk-api\";\nimport { isValidAddress } from \"../types/amplify-sdk-api\";\nimport { VaultNotFoundByNameError } from \"../types/withdraw-errors\";\nimport { DEFAULT_TIMEOUT } from \"../utils/fetch\";\nimport { toChainId } from \"../utils/chain-utils\";\nimport type {\n GetMinimumWithdrawalOrderSizeParams,\n GetWithdrawalFeeParams,\n GetWithdrawalRequestsParams,\n MinimumWithdrawalOrderSizeResult,\n WithdrawalFeeResult,\n WithdrawalRequest,\n WithdrawalRequestsResult,\n} from \"./types\";\n\n/**\n * Builds a filter string from typed params for the v2 API\n */\nfunction buildFilterString(\n params: Record<string, string | number | boolean | undefined>\n): string {\n return Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => `${k}=${v}`)\n .join(\" AND \");\n}\n\n/**\n * Fetches a user's withdrawal requests from the backend API\n *\n * @param params - Filter parameters for withdrawal requests\n * @returns Paginated list of withdrawal requests\n * @throws {APIError} If the API request fails or parameters are invalid\n *\n * @example\n * ```typescript\n * const result = await getWithdrawalRequests({\n * userAddress: \"0x1234...\",\n * status: \"PENDING\",\n * chainId: 1,\n * });\n * console.log(result.withdrawalRequests);\n * ```\n */\nexport async function getWithdrawalRequests(\n params: GetWithdrawalRequestsParams\n): Promise<WithdrawalRequestsResult> {\n try {\n if (!isValidAddress(params.userAddress)) {\n throw new APIError(\n `Invalid userAddress: ${params.userAddress}. Must be a valid Ethereum address.`,\n { endpoint: \"getWithdrawalRequests\" }\n );\n }\n\n let resolvedVaultAddress = params.vaultAddress;\n if (!resolvedVaultAddress && params.vaultName) {\n const cache = getCache();\n if (cache.isEmpty() || cache.isExpired()) {\n await cache.refresh();\n }\n const vault = cache.getVaultByName(params.vaultName);\n if (!vault) {\n throw new VaultNotFoundByNameError(\n `No vault found with name \"${params.vaultName}\". The vault may not exist or may not be available for your organization.`,\n { vaultName: params.vaultName, endpoint: \"getWithdrawalRequests\" }\n );\n }\n resolvedVaultAddress = vault.vault.boringVaultAddress;\n }\n\n const filter = buildFilterString({\n userAddress: params.userAddress,\n chainId: params.chainId,\n vaultAddress: resolvedVaultAddress,\n status: params.status,\n });\n\n const queryParams = new URLSearchParams();\n if (filter) queryParams.set(\"filter\", filter);\n if (params.pageSize)\n queryParams.set(\"pageSize\", String(params.pageSize));\n if (params.pageToken)\n queryParams.set(\"pageToken\", params.pageToken);\n\n const url = `${getRestV2BaseURL()}/amplify/withdrawalRequests?${queryParams.toString()}`;\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n DEFAULT_TIMEOUT\n );\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: getRequestHeaders(),\n signal: controller.signal,\n });\n\n clearTimeout(timeout);\n\n if (!response.ok) {\n throw new APIError(\n `Failed to fetch withdrawal requests: ${response.status} ${response.statusText}`,\n {\n endpoint: \"getWithdrawalRequests\",\n statusCode: response.status,\n }\n );\n }\n\n const data = (await response.json()) as {\n withdrawalRequests: WithdrawalRequest[];\n nextPageToken: string | null;\n };\n\n return {\n withdrawalRequests: data.withdrawalRequests ?? [],\n nextPageToken: data.nextPageToken ?? null,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to fetch withdrawal requests: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getWithdrawalRequests\", cause: error }\n );\n }\n}\n\n/**\n * Reads the withdrawal fee from the on-chain FeeModule contract\n *\n * Performs two sequential RPC calls:\n * 1. Reads the FeeModule address from WithdrawQueue.feeModule()\n * 2. Multicalls calculateOfferFees + offerFeePercentage on the FeeModule\n *\n * @param params - Parameters for fee calculation\n * @returns Fee amount and fee percentage\n * @throws {APIError} If vault not found or contract read fails\n *\n * @example\n * ```typescript\n * const fee = await getWithdrawalFee({\n * vaultName: \"Amplify USDC Core\",\n * chainId: 1,\n * assetAddress: \"0xA0b8...\", // USDC\n * amount: \"1.0\",\n * offerAsset: \"0x1234...\", // vault shares\n * wantAsset: \"0xA0b8...\", // USDC\n * receiver: \"0x5678...\",\n * });\n * console.log(fee.feeAmount, fee.feePercentage);\n * ```\n */\nexport async function getWithdrawalFee(\n params: GetWithdrawalFeeParams\n): Promise<WithdrawalFeeResult> {\n try {\n const normalizedChainId = toChainId(params.chainId);\n\n const config = await resolveVault({\n vaultName: params.vaultName,\n assetAddress: params.assetAddress,\n chainId: normalizedChainId,\n callerEndpoint: \"getWithdrawalFee\",\n });\n\n if (!config.vault.withdrawQueueAddress) {\n throw new APIError(\n `WithdrawQueue contract address not configured for vault ${config.id}`,\n { endpoint: \"getWithdrawalFee\" }\n );\n }\n\n if (!config.vault.boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n { endpoint: \"getWithdrawalFee\" }\n );\n }\n\n const client = await getClient(normalizedChainId);\n\n // Step 1: Read the FeeModule address from WithdrawQueue\n const feeModuleAddress = (await client.readContract({\n abi: WithdrawQueueAbi,\n address: config.vault.withdrawQueueAddress,\n functionName: \"feeModule\",\n })) as Address;\n\n // Get share decimals to parse the amount\n const shareDecimals = await getErc20Decimals({\n tokenAddress: config.vault.boringVaultAddress,\n chainId: normalizedChainId,\n });\n\n const amountBigInt = parseUnits(params.amount, shareDecimals);\n\n // Step 2: Multicall calculateOfferFees + offerFeePercentage\n const results = await client.multicall({\n contracts: [\n {\n abi: FeeModuleAbi,\n address: feeModuleAddress,\n functionName: \"calculateOfferFees\",\n args: [\n amountBigInt,\n params.offerAsset,\n params.wantAsset,\n params.receiver,\n ],\n },\n {\n abi: FeeModuleAbi,\n address: feeModuleAddress,\n functionName: \"offerFeePercentage\",\n },\n ],\n });\n\n const [feeAmountResult, feePercentageResult] = results;\n\n if (\n feeAmountResult.status === \"failure\" ||\n feePercentageResult.status === \"failure\"\n ) {\n throw new APIError(\n \"Failed to read fee data from FeeModule contract\",\n { endpoint: \"getWithdrawalFee\" }\n );\n }\n\n return {\n feeAmount: feeAmountResult.result,\n feePercentage: feePercentageResult.result,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to get withdrawal fee: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getWithdrawalFee\", cause: error }\n );\n }\n}\n\n/**\n * Reads the minimum withdrawal order size from the WithdrawQueue contract\n *\n * @param params - Parameters to identify the vault\n * @returns Minimum order size in vault shares and share decimals\n * @throws {APIError} If vault not found or contract read fails\n *\n * @example\n * ```typescript\n * const result = await getMinimumWithdrawalOrderSize({\n * vaultName: \"Amplify USDC Core\",\n * chainId: 1,\n * assetAddress: \"0xA0b8...\",\n * });\n * console.log(result.minimumOrderSize, result.shareDecimals);\n * ```\n */\nexport async function getMinimumWithdrawalOrderSize(\n params: GetMinimumWithdrawalOrderSizeParams\n): Promise<MinimumWithdrawalOrderSizeResult> {\n try {\n const normalizedChainId = toChainId(params.chainId);\n\n const config = await resolveVault({\n vaultName: params.vaultName,\n assetAddress: params.assetAddress,\n chainId: normalizedChainId,\n callerEndpoint: \"getMinimumWithdrawalOrderSize\",\n });\n\n if (!config.vault.withdrawQueueAddress) {\n throw new APIError(\n `WithdrawQueue contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumWithdrawalOrderSize\" }\n );\n }\n\n if (!config.vault.boringVaultAddress) {\n throw new APIError(\n `BoringVault contract address not configured for vault ${config.id}`,\n { endpoint: \"getMinimumWithdrawalOrderSize\" }\n );\n }\n\n const client = await getClient(normalizedChainId);\n\n const [minOrderResult, shareDecimalsResult] =\n await client.multicall({\n contracts: [\n {\n abi: WithdrawQueueAbi,\n address: config.vault.withdrawQueueAddress,\n functionName: \"minimumOrderSize\",\n },\n {\n abi: [\n {\n inputs: [],\n name: \"decimals\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n ] as const,\n address: config.vault.boringVaultAddress,\n functionName: \"decimals\",\n },\n ],\n });\n\n if (\n minOrderResult.status === \"failure\" ||\n shareDecimalsResult.status === \"failure\"\n ) {\n throw new APIError(\n \"Failed to read minimum order size from WithdrawQueue contract\",\n { endpoint: \"getMinimumWithdrawalOrderSize\" }\n );\n }\n\n return {\n minimumOrderSize: minOrderResult.result,\n shareDecimals: shareDecimalsResult.result,\n };\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n throw new APIError(\n `Failed to get minimum withdrawal order size: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { endpoint: \"getMinimumWithdrawalOrderSize\", cause: error }\n );\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { isValidAddress, APIError, isValidChainId, getCache } from './chunk-MPCRFKSD.mjs';
1
+ import { isValidAddress, APIError, isValidChainId, getCache, getChainNameById } from './chunk-JLZL25CY.mjs';
2
2
 
3
3
  // src/types/withdraw-errors.ts
4
4
  var WithdrawError = class _WithdrawError extends Error {
@@ -64,19 +64,26 @@ async function resolveVault(params) {
64
64
  { vaultName, endpoint: callerEndpoint }
65
65
  );
66
66
  }
67
- if (vault.chainId !== chainId) {
67
+ const supportedChainIds = /* @__PURE__ */ new Set([vault.chainId]);
68
+ for (const a of vault.supportedAssets) {
69
+ if (a.chainId != null) {
70
+ supportedChainIds.add(a.chainId);
71
+ }
72
+ }
73
+ if (!supportedChainIds.has(chainId)) {
74
+ const chains = Array.from(supportedChainIds).join(", ");
68
75
  throw new APIError(
69
- `Vault "${vaultName}" is on chain ${vault.chainId}, but chainId ${chainId} was requested.`,
76
+ `Vault "${vaultName}" supports chains [${chains}], but ${getChainNameById(chainId)} (${chainId}) was requested.`,
70
77
  { endpoint: callerEndpoint }
71
78
  );
72
79
  }
73
80
  const matchedAsset = vault.supportedAssets.find(
74
- (a) => a.address.toLowerCase() === assetAddress.toLowerCase()
81
+ (a) => a.address.toLowerCase() === assetAddress.toLowerCase() && (a.chainId == null || a.chainId === chainId)
75
82
  );
76
83
  if (!matchedAsset) {
77
- const supported = vault.supportedAssets.map((a) => `${a.address} (${a.symbol})`).join(", ");
84
+ const supported = vault.supportedAssets.filter((a) => a.chainId == null || a.chainId === chainId).map((a) => `${a.address} (${a.symbol})`).join(", ");
78
85
  throw new APIError(
79
- `Vault "${vaultName}" supports assets [${supported}], but asset ${assetAddress} was requested.`,
86
+ `Vault "${vaultName}" supports assets [${supported}] on chain ${chainId}, but asset ${assetAddress} was requested.`,
80
87
  { endpoint: callerEndpoint }
81
88
  );
82
89
  }
@@ -1211,5 +1218,5 @@ var WithdrawQueueAbi = [
1211
1218
  ];
1212
1219
 
1213
1220
  export { UnauthorizedVaultAccessError, VaultNotFoundByAddressError, VaultNotFoundByNameError, WithdrawQueueAbi, isVaultNotFoundByAddressError, isVaultNotFoundByNameError, resolveVault };
1214
- //# sourceMappingURL=chunk-XA653JS3.mjs.map
1215
- //# sourceMappingURL=chunk-XA653JS3.mjs.map
1221
+ //# sourceMappingURL=chunk-Y6RXVDQN.mjs.map
1222
+ //# sourceMappingURL=chunk-Y6RXVDQN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/withdraw-errors.ts","../src/client/resolve-vault.ts","../src/abi/withdraw-queue-abi.ts"],"names":[],"mappings":";;;AAeO,IAAM,aAAA,GAAN,MAAM,cAAA,SAAsB,KAAA,CAAM;AAAA,EAYvC,WAAA,CACE,OAAA,EACA,IAAA,EACA,OAAA,EACA;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAGf,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,cAAA,CAAc,SAAS,CAAA;AAAA,EACrD;AACF,CAAA;AA4QO,IAAM,2BAAA,GAAN,MAAM,4BAAA,SAAoC,aAAA,CAAc;AAAA,EAC7D,WAAA,CAAY,SAAiB,OAAA,EAAmC;AAC9D,IAAA,KAAA,CAAM,OAAA,EAAS,8BAA8B,OAAO,CAAA;AACpD,IAAA,IAAA,CAAK,IAAA,GAAO,6BAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,4BAAA,CAA4B,SAAS,CAAA;AAAA,EACnE;AACF;AAEO,IAAM,wBAAA,GAAN,MAAM,yBAAA,SAAiC,aAAA,CAAc;AAAA,EAC1D,WAAA,CAAY,SAAiB,OAAA,EAAmC;AAC9D,IAAA,KAAA,CAAM,OAAA,EAAS,2BAA2B,OAAO,CAAA;AACjD,IAAA,IAAA,CAAK,IAAA,GAAO,0BAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,yBAAA,CAAyB,SAAS,CAAA;AAAA,EAChE;AACF;AAEO,IAAM,4BAAA,GAAN,MAAM,6BAAA,SAAqC,aAAA,CAAc;AAAA,EAC9D,WAAA,CAAY,SAAiB,OAAA,EAAmC;AAC9D,IAAA,KAAA,CAAM,OAAA,EAAS,6BAA6B,OAAO,CAAA;AACnD,IAAA,IAAA,CAAK,IAAA,GAAO,8BAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,6BAAA,CAA6B,SAAS,CAAA;AAAA,EACpE;AACF;AAEO,SAAS,8BACd,KAAA,EACsC;AACtC,EAAA,OAAO,KAAA,YAAiB,2BAAA;AAC1B;AAEO,SAAS,2BACd,KAAA,EACmC;AACnC,EAAA,OAAO,KAAA,YAAiB,wBAAA;AAC1B;;;AC9SA,eAAsB,aACpB,MAAA,EACuB;AACvB,EAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAc,OAAA,EAAS,gBAAe,GAAI,MAAA;AAE7D,EAAA,IAAI,CAAC,cAAA,CAAe,YAAY,CAAA,EAAG;AACjC,IAAA,MAAM,IAAI,QAAA;AAAA,MACR,yBAAyB,YAAY,CAAA,mCAAA,CAAA;AAAA,MACrC,EAAE,UAAU,cAAA;AAAe,KAC7B;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,cAAA,CAAe,OAAO,CAAA,EAAG;AAC5B,IAAA,MAAM,IAAI,QAAA;AAAA,MACR,oBAAoB,OAAO,CAAA,6BAAA,CAAA;AAAA,MAC3B,EAAE,UAAU,cAAA;AAAe,KAC7B;AAAA,EACF;AAEA,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,IAAI,KAAA,CAAM,OAAA,EAAQ,IAAK,KAAA,CAAM,WAAU,EAAG;AACxC,IAAA,MAAM,MAAM,OAAA,EAAQ;AAAA,EACtB;AAEA,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,cAAA,CAAe,SAAS,CAAA;AAC5C,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,wBAAA;AAAA,MACR,6BAA6B,SAAS,CAAA,yEAAA,CAAA;AAAA,MACtC,EAAE,SAAA,EAAW,QAAA,EAAU,cAAA;AAAe,KACxC;AAAA,EACF;AAEA,EAAA,MAAM,oCAAoB,IAAI,GAAA,CAAY,CAAC,KAAA,CAAM,OAAO,CAAC,CAAA;AACzD,EAAA,KAAA,MAAW,CAAA,IAAK,MAAM,eAAA,EAAiB;AACrC,IAAA,IAAI,CAAA,CAAE,WAAW,IAAA,EAAM;AACrB,MAAA,iBAAA,CAAkB,GAAA,CAAI,EAAE,OAAO,CAAA;AAAA,IACjC;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,OAAO,CAAA,EAAG;AACnC,IAAA,MAAM,SAAS,KAAA,CAAM,IAAA,CAAK,iBAAiB,CAAA,CAAE,KAAK,IAAI,CAAA;AACtD,IAAA,MAAM,IAAI,QAAA;AAAA,MACR,CAAA,OAAA,EAAU,SAAS,CAAA,mBAAA,EAAsB,MAAM,UAAU,gBAAA,CAAiB,OAAO,CAAC,CAAA,EAAA,EAAK,OAAO,CAAA,gBAAA,CAAA;AAAA,MAC9F,EAAE,UAAU,cAAA;AAAe,KAC7B;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAe,MAAM,eAAA,CAAgB,IAAA;AAAA,IACzC,CAAC,CAAA,KACC,CAAA,CAAE,OAAA,CAAQ,WAAA,EAAY,KAAM,YAAA,CAAa,WAAA,EAAY,KACpD,CAAA,CAAE,OAAA,IAAW,IAAA,IAAQ,EAAE,OAAA,KAAY,OAAA;AAAA,GACxC;AACA,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,SAAA,GAAY,KAAA,CAAM,eAAA,CACrB,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,OAAA,IAAW,IAAA,IAAQ,CAAA,CAAE,OAAA,KAAY,OAAO,EACxD,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,OAAO,CAAA,EAAA,EAAK,CAAA,CAAE,MAAM,CAAA,CAAA,CAAG,CAAA,CACvC,IAAA,CAAK,IAAI,CAAA;AACZ,IAAA,MAAM,IAAI,QAAA;AAAA,MACR,UAAU,SAAS,CAAA,mBAAA,EAAsB,SAAS,CAAA,WAAA,EAAc,OAAO,eAAe,YAAY,CAAA,eAAA,CAAA;AAAA,MAClG,EAAE,UAAU,cAAA;AAAe,KAC7B;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;;;ACxGO,IAAM,gBAAA,GAAmB;AAAA,EAC9B;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,QAAA,EAAU,IAAA,EAAM,OAAA,EAAS,MAAM,QAAA,EAAS;AAAA,MACxD,EAAE,YAAA,EAAc,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,MAAM,QAAA,EAAS;AAAA,MAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,eAAA,EAAiB,MAAM,SAAA,EAAU;AAAA,MAClE;AAAA,QACE,YAAA,EAAc,sCAAA;AAAA,QACd,IAAA,EAAM,8BAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,YAAA,EAAc,qBAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,mBAAA,EAAqB,MAAM,SAAA,EAAU;AAAA,MACtE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,MAAM,SAAA;AAAU,KAC7D;AAAA,IACA,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,uBAAA,EAAyB,MAAM,OAAA,EAAQ;AAAA,EAC3D;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACrE,IAAA,EAAM,6BAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,IAAA,EAAM,wBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,oCAAA,EAAsC,MAAM,OAAA,EAAQ;AAAA,EACxE;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,MAAM,SAAA,EAAU;AAAA,MAC3D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,MAC5D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA;AAAU,KAC5D;AAAA,IACA,IAAA,EAAM,sBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,MAC7D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA;AAAU,KAC9D;AAAA,IACA,IAAA,EAAM,4BAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACvE,IAAA,EAAM,uBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACvE,IAAA,EAAM,uBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACpE,IAAA,EAAM,oBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACvE,IAAA,EAAM,uBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACrE,IAAA,EAAM,qBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACtE,IAAA,EAAM,wBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,MAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA;AAAU,KAC5D;AAAA,IACA,IAAA,EAAM,wBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACpE,IAAA,EAAM,0BAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,cAAA,EAAgB,MAAM,OAAA,EAAQ;AAAA,EAClD,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,aAAA,EAAe,MAAM,OAAA,EAAQ;AAAA,EACjD;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACzE,IAAA,EAAM,uBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,YAAA,EAAc,MAAM,SAAA,EAAU;AAAA,MAC/D;AAAA,QACE,YAAA,EAAc,8BAAA;AAAA,QACd,IAAA,EAAM,eAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACzE,IAAA,EAAM,mBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,MAAM,SAAA,EAAU;AAAA,MAC3D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA;AAAU,KAC9D;AAAA,IACA,IAAA,EAAM,oBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,MAC7D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,kBAAA,EAAoB,MAAM,SAAA;AAAU,KACvE;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,iBAAA,EAAmB,MAAM,SAAA,EAAU;AAAA,MACpE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA;AAAU,KAClE;AAAA,IACA,IAAA,EAAM,0BAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,iBAAA,EAAmB,MAAM,SAAA;AAAU,KACtE;AAAA,IACA,IAAA,EAAM,oBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,mBAAA,EAAqB,MAAM,SAAA,EAAU;AAAA,MACtE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA;AAAU,KAChE;AAAA,IACA,IAAA,EAAM,yBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,mBAAA,EAAqB,MAAM,SAAA,EAAU;AAAA,MACtE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA;AAAU,KAChE;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,gCAAA,EAAkC,MAAM,OAAA,EAAQ;AAAA,EACpE,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,sBAAA,EAAwB,MAAM,OAAA,EAAQ;AAAA,EAC1D;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,mBAAA,EAAqB,MAAM,SAAA,EAAU;AAAA,MACtE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,YAAA,EAAc,MAAM,SAAA;AAAU,KACjE;AAAA,IACA,IAAA,EAAM,yBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,kBAAA,EAAoB,MAAM,OAAA,EAAQ;AAAA,EACtD;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA;AAAU,KACpE;AAAA,IACA,IAAA,EAAM,mBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,kBAAA,EAAoB,MAAM,OAAA,EAAQ;AAAA,EACtD,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,YAAA,EAAc,MAAM,OAAA,EAAQ;AAAA,EAChD;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,iBAAA,EAAmB,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,MACtE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,mBAAA,EAAqB,MAAM,SAAA,EAAU;AAAA,MACtE;AAAA,QACE,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,yBAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,0BAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,MAAA,EAAQ,IAAI,IAAA,EAAM,gBAAA,EAAkB,MAAM,OAAA,EAAQ;AAAA,EACpD;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,SAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,EAAE,SAAS,KAAA,EAAO,YAAA,EAAc,QAAQ,IAAA,EAAM,UAAA,EAAY,MAAM,MAAA;AAAO,KACzE;AAAA,IACA,IAAA,EAAM,gBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,qBAAA;AAAA,QACd,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,qBAAA;AAAA,QACd,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,iBAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,iBAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,qBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,yBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,YAAA,EAAc,8BAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,MAAA;AAAA,YACd,IAAA,EAAM,sBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc,4BAAA;AAAA,QACd,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc,MAAA;AAAA,QACd,IAAA,EAAM,yBAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,gBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,wBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,YAAA,EAAc,8BAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,MAAA;AAAA,YACd,IAAA,EAAM,sBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc,4BAAA;AAAA,QACd,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,MAAA;AAAA,QACd,IAAA,EAAM,kBAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,gBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,YAAA,EAAc,8BAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,MAAA;AAAA,YACd,IAAA,EAAM,sBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,OAAA,EAAS,KAAA;AAAA,QACT,YAAA,EAAc,4BAAA;AAAA,QACd,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,eAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,MAAA;AAAA,QACd,IAAA,EAAM,gBAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,sBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,sBAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,sCAAA;AAAA,QACd,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,sCAAA;AAAA,QACd,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,eAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,SAAA,EAAW,KAAA;AAAA,IACX,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,EAAE,SAAS,IAAA,EAAM,YAAA,EAAc,WAAW,IAAA,EAAM,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,MACtE;AAAA,QACE,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,SAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,uBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,WAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,EAAE,YAAA,EAAc,oBAAA,EAAsB,IAAA,EAAM,EAAA,EAAI,MAAM,SAAA;AAAU,KAClE;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACpE,IAAA,EAAM,WAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACtE,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACzE,IAAA,EAAM,aAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,YAAA,EAAc,MAAM,SAAA,EAAU;AAAA,MAC/D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,MAC7D,EAAE,YAAA,EAAc,OAAA,EAAS,IAAA,EAAM,iBAAA,EAAmB,MAAM,OAAA;AAAQ,KAClE;AAAA,IACA,IAAA,EAAM,0BAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,WAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,EAAE,YAAA,EAAc,qBAAA,EAAuB,IAAA,EAAM,EAAA,EAAI,MAAM,SAAA;AAAU,KACnE;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACzE,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,MAAM,WAAA;AAAY,KACvE;AAAA,IACA,IAAA,EAAM,oBAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACzE,IAAA,EAAM,gBAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP;AAAA,QACE,YAAA,EAAc,gCAAA;AAAA,QACd,IAAA,EAAM,EAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACtE,IAAA,EAAM,aAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,oBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,aAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,iBAAA,EAAmB,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,MAClE,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,MAAM,SAAA,EAAU;AAAA,MAC3D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA;AAAU,KAC/D;AAAA,IACA,IAAA,EAAM,aAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,kBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,UAAU,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IAC9D,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC/D,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,YAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,mBAAmB,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACxE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC/D,IAAA,EAAM,mBAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,YAAA,EAAc,8BAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,MAAA;AAAA,YACd,IAAA,EAAM,sBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,YAAA,EAAc,4BAAA;AAAA,QACd,IAAA,EAAM,EAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,MAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA;AAAU,KAC/D;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,QAAQ,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC1D,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACzE,IAAA,EAAM,aAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,WAAA,EAAa,IAAA,EAAM,cAAA,EAAgB,MAAM,WAAA;AAAY,KACvE;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,iBAAA,EAAmB,MAAM,SAAA;AAAU,KACtE;AAAA,IACA,IAAA,EAAM,eAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,SAAA;AAAA,YACd,IAAA,EAAM,mBAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,UAC7D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,UAAA,EAAY;AAAA,cACV;AAAA,gBACE,YAAA,EAAc,mCAAA;AAAA,gBACd,IAAA,EAAM,gBAAA;AAAA,gBACN,IAAA,EAAM;AAAA,eACR;AAAA,cACA,EAAE,YAAA,EAAc,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,MAAM,OAAA,EAAQ;AAAA,cAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,cAC9D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,cAC9D;AAAA,gBACE,YAAA,EAAc,MAAA;AAAA,gBACd,IAAA,EAAM,qBAAA;AAAA,gBACN,IAAA,EAAM;AAAA,eACR;AAAA,cACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,cAC7D;AAAA,gBACE,YAAA,EAAc,OAAA;AAAA,gBACd,IAAA,EAAM,kBAAA;AAAA,gBACN,IAAA,EAAM;AAAA;AACR,aACF;AAAA,YACA,YAAA,EAAc,sCAAA;AAAA,YACd,IAAA,EAAM,iBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,YAAA,EAAc,wCAAA;AAAA,QACd,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,aAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC1E,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,SAAA;AAAA,YACd,IAAA,EAAM,mBAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,UAC7D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,UAAA,EAAY;AAAA,cACV;AAAA,gBACE,YAAA,EAAc,mCAAA;AAAA,gBACd,IAAA,EAAM,gBAAA;AAAA,gBACN,IAAA,EAAM;AAAA,eACR;AAAA,cACA,EAAE,YAAA,EAAc,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,MAAM,OAAA,EAAQ;AAAA,cAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,cAC9D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,cAC9D;AAAA,gBACE,YAAA,EAAc,MAAA;AAAA,gBACd,IAAA,EAAM,qBAAA;AAAA,gBACN,IAAA,EAAM;AAAA,eACR;AAAA,cACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,cAC7D;AAAA,gBACE,YAAA,EAAc,OAAA;AAAA,gBACd,IAAA,EAAM,kBAAA;AAAA,gBACN,IAAA,EAAM;AAAA;AACR,aACF;AAAA,YACA,YAAA,EAAc,sCAAA;AAAA,YACd,IAAA,EAAM,iBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,YAAA,EAAc,wCAAA;AAAA,QACd,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM;AAAA,OACR;AAAA,MACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,iBAAA,EAAmB,MAAM,SAAA;AAAU,KACtE;AAAA,IACA,IAAA,EAAM,uBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC1E,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,UAAA,EAAY;AAAA,UACV,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,aAAA,EAAe,MAAM,SAAA,EAAU;AAAA,UAChE;AAAA,YACE,YAAA,EAAc,iBAAA;AAAA,YACd,IAAA,EAAM,WAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA;AAAA,YACE,YAAA,EAAc,SAAA;AAAA,YACd,IAAA,EAAM,mBAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,UAC7D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,gBAAA,EAAkB,MAAM,SAAA,EAAU;AAAA,UACnE;AAAA,YACE,UAAA,EAAY;AAAA,cACV;AAAA,gBACE,YAAA,EAAc,mCAAA;AAAA,gBACd,IAAA,EAAM,gBAAA;AAAA,gBACN,IAAA,EAAM;AAAA,eACR;AAAA,cACA,EAAE,YAAA,EAAc,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,MAAM,OAAA,EAAQ;AAAA,cAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,cAC9D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,WAAA,EAAa,MAAM,SAAA,EAAU;AAAA,cAC9D;AAAA,gBACE,YAAA,EAAc,MAAA;AAAA,gBACd,IAAA,EAAM,qBAAA;AAAA,gBACN,IAAA,EAAM;AAAA,eACR;AAAA,cACA,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,cAC7D;AAAA,gBACE,YAAA,EAAc,OAAA;AAAA,gBACd,IAAA,EAAM,kBAAA;AAAA,gBACN,IAAA,EAAM;AAAA;AACR,aACF;AAAA,YACA,YAAA,EAAc,sCAAA;AAAA,YACd,IAAA,EAAM,iBAAA;AAAA,YACN,IAAA,EAAM;AAAA;AACR,SACF;AAAA,QACA,YAAA,EAAc,wCAAA;AAAA,QACd,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,0BAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC1E,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,UAAU,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IAC9D,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,UAAU,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IACxE,IAAA,EAAM,mBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,QAAQ,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,IAC1D,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,6BAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP;AAAA,QACE,YAAA,EAAc,sCAAA;AAAA,QACd,IAAA,EAAM,EAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACtE,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,MAC1D,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,SAAA;AAAU,KAC5D;AAAA,IACA,IAAA,EAAM,qBAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACtE,IAAA,EAAM,UAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,UAAU,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,QAAA,EAAU,CAAA;AAAA,IAC9D,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,QAAQ,EAAC;AAAA,IACT,IAAA,EAAM,aAAA;AAAA,IACN,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB,MAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,MAAM,SAAA,EAAU;AAAA,MACzD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,MACvD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA;AAAU,KAC9D;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,MAAM,SAAA,EAAU;AAAA,MACzD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,MACvD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA;AAAU,KAC9D;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,MAAM,SAAA,EAAU;AAAA,MACzD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,MACvD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,MAC5D,EAAE,YAAA,EAAc,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,MAAM,OAAA;AAAQ,KACxD;AAAA,IACA,IAAA,EAAM,kBAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,UAAA,EAAY,MAAM,SAAA,EAAU;AAAA,MAC7D,EAAE,YAAA,EAAc,MAAA,EAAQ,IAAA,EAAM,UAAA,EAAY,MAAM,MAAA;AAAO,KACzD;AAAA,IACA,IAAA,EAAM,mBAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,YAAA,EAAc,qBAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,eAAA,EAAiB,MAAM,SAAA;AAAU,KACpE;AAAA,IACA,IAAA,EAAM,iBAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,YAAA,EAAc,sCAAA;AAAA,QACd,IAAA,EAAM,YAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,gCAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IACvE,IAAA,EAAM,UAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN;AAAA,QACE,YAAA,EAAc,oBAAA;AAAA,QACd,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,IAAA,EAAM,cAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ,CAAC,EAAE,YAAA,EAAc,WAAW,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,SAAA,EAAW,CAAA;AAAA,IAC1E,IAAA,EAAM,6BAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA,GACR;AAAA,EACA;AAAA,IACE,MAAA,EAAQ;AAAA,MACN,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,MACvD,EAAE,YAAA,EAAc,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,MAAM,SAAA;AAAU,KAC9D;AAAA,IACA,IAAA,EAAM,SAAA;AAAA,IACN,SAAS,EAAC;AAAA,IACV,eAAA,EAAiB,YAAA;AAAA,IACjB,IAAA,EAAM;AAAA;AAEV","file":"chunk-Y6RXVDQN.mjs","sourcesContent":["/**\n * Withdraw operation error types\n *\n * Defines all error classes and error scenarios specific to the withdraw flow.\n * Provides type-safe error handling with clear error messages for different failure modes.\n *\n * @module types/withdraw-errors\n */\n\n/**\n * Base class for all withdraw-related errors\n *\n * Extends Error with additional context information for better error handling\n * and debugging in consuming applications.\n */\nexport class WithdrawError extends Error {\n /**\n * Error code for programmatic handling\n * @example \"VAULT_NOT_FOUND\", \"INVALID_ADDRESS\", \"INSUFFICIENT_BALANCE\"\n */\n readonly code: string;\n\n /**\n * Additional context data for debugging\n */\n readonly context?: Record<string, unknown>;\n\n constructor(\n message: string,\n code: string,\n context?: Record<string, unknown>\n ) {\n super(message);\n this.name = \"WithdrawError\";\n this.code = code;\n this.context = context;\n\n // Maintain proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, WithdrawError.prototype);\n }\n}\n\n/**\n * Thrown when vault lookup fails\n *\n * Occurs when no vault matches the provided (yieldType, wantToken, chainId)\n * combination in the vault cache.\n *\n * @example\n * ```typescript\n * throw new VaultNotFoundError(\n * \"No vault found matching yieldType 'UNKNOWN', token '0x...', and chain 1\",\n * { yieldType: \"UNKNOWN\", token: \"0x...\", chainId: 1 }\n * );\n * ```\n */\nexport class VaultNotFoundError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"VAULT_NOT_FOUND\", context);\n this.name = \"VaultNotFoundError\";\n Object.setPrototypeOf(this, VaultNotFoundError.prototype);\n }\n}\n\n/**\n * Thrown when multiple vaults match the lookup criteria\n *\n * Data integrity error indicating vault cache is corrupted or misconfigured.\n * Should not occur in production with well-formed vault data.\n *\n * @example\n * ```typescript\n * throw new MultipleVaultsFoundError(\n * \"Data integrity error: multiple vaults match yieldType 'CORE', token '0x...', chain 1\",\n * { count: 2, yieldType: \"CORE\" }\n * );\n * ```\n */\nexport class MultipleVaultsFoundError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"MULTIPLE_VAULTS_FOUND\", context);\n this.name = \"MultipleVaultsFoundError\";\n Object.setPrototypeOf(this, MultipleVaultsFoundError.prototype);\n }\n}\n\n/**\n * Thrown when recipient address is invalid\n *\n * Occurs when recipientAddress is:\n * - Not a valid Ethereum address format (0x + 40 hex chars)\n * - The zero address (0x0000...)\n * - Missing or empty\n *\n * @example\n * ```typescript\n * throw new InvalidAddressError(\n * \"Invalid recipient address: must be valid Ethereum address\",\n * { address: \"0xinvalid\", reason: \"not hex format\" }\n * );\n * ```\n */\nexport class InvalidAddressError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"INVALID_ADDRESS\", context);\n this.name = \"InvalidAddressError\";\n Object.setPrototypeOf(this, InvalidAddressError.prototype);\n }\n}\n\n/**\n * Thrown when share amount is invalid\n *\n * Occurs when shareAmount is:\n * - Not a valid number string\n * - Zero or negative\n * - Cannot be converted to BigInt\n *\n * @example\n * ```typescript\n * throw new InvalidShareAmountError(\n * \"Share amount must be greater than zero\",\n * { amount: \"0\", reason: \"zero not allowed\" }\n * );\n * ```\n */\nexport class InvalidShareAmountError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"INVALID_SHARE_AMOUNT\", context);\n this.name = \"InvalidShareAmountError\";\n Object.setPrototypeOf(this, InvalidShareAmountError.prototype);\n }\n}\n\n/**\n * Thrown when slippage value is invalid\n *\n * Occurs when slippage is:\n * - Negative\n * - Greater than 10000 (100%)\n * - Not an integer\n *\n * @example\n * ```typescript\n * throw new InvalidSlippageError(\n * \"Invalid slippage value: must be 0-10000 basis points\",\n * { slippage: -100, reason: \"negative not allowed\" }\n * );\n * ```\n */\nexport class InvalidSlippageError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"INVALID_SLIPPAGE\", context);\n this.name = \"InvalidSlippageError\";\n Object.setPrototypeOf(this, InvalidSlippageError.prototype);\n }\n}\n\n/**\n * Thrown when yield type is invalid\n *\n * Occurs when yieldType is:\n * - Not defined in YieldType enum\n * - Empty or null\n * - Case-sensitive mismatch\n *\n * @example\n * ```typescript\n * throw new InvalidYieldTypeError(\n * \"Invalid yield type: 'UNKNOWN' is not supported\",\n * { yieldType: \"UNKNOWN\", supportedTypes: [\"CORE\", \"TREASURY\", \"FRONTIER\"] }\n * );\n * ```\n */\nexport class InvalidYieldTypeError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"INVALID_YIELD_TYPE\", context);\n this.name = \"InvalidYieldTypeError\";\n Object.setPrototypeOf(this, InvalidYieldTypeError.prototype);\n }\n}\n\n/**\n * Thrown when chain ID is invalid\n *\n * Occurs when chainId is:\n * - Not a positive integer\n * - Not in list of supported chains\n * - Mismatches vault's supported networks\n *\n * @example\n * ```typescript\n * throw new InvalidChainIdError(\n * \"Chain ID 999999 is not supported\",\n * { chainId: 999999, supportedChains: [1, 288, 1329] }\n * );\n * ```\n */\nexport class InvalidChainIdError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"INVALID_CHAIN_ID\", context);\n this.name = \"InvalidChainIdError\";\n Object.setPrototypeOf(this, InvalidChainIdError.prototype);\n }\n}\n\n/**\n * Thrown when transaction data cannot be constructed\n *\n * Occurs during transaction data assembly if:\n * - Required vault addresses are missing\n * - ABI is unavailable\n * - Function encoding fails\n *\n * @example\n * ```typescript\n * throw new TransactionDataError(\n * \"Failed to construct transaction data: missing Teller address\",\n * { reason: \"missing address\", field: \"tellerAddress\" }\n * );\n * ```\n */\nexport class TransactionDataError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"TRANSACTION_DATA_ERROR\", context);\n this.name = \"TransactionDataError\";\n Object.setPrototypeOf(this, TransactionDataError.prototype);\n }\n}\n\n/**\n * Thrown when vault cache is empty or uninitialized\n *\n * Occurs when attempting to lookup vaults before cache is populated.\n * Consumer should call getVaults() or getSupportedAssets() first.\n *\n * @example\n * ```typescript\n * throw new VaultCacheEmptyError(\n * \"Vault cache is empty. Call getVaults() or getSupportedAssets() first.\",\n * { reason: \"cache not initialized\" }\n * );\n * ```\n */\nexport class VaultCacheEmptyError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"VAULT_CACHE_EMPTY\", context);\n this.name = \"VaultCacheEmptyError\";\n Object.setPrototypeOf(this, VaultCacheEmptyError.prototype);\n }\n}\n\n/**\n * Type guard for WithdrawError\n *\n * Safely check if an error is a WithdrawError\n *\n * @example\n * ```typescript\n * try {\n * await prepareWithdrawOrderTxData(params);\n * } catch (error) {\n * if (isWithdrawError(error)) {\n * console.error(`Withdraw error [${error.code}]: ${error.message}`);\n * }\n * }\n * ```\n */\nexport function isWithdrawError(error: unknown): error is WithdrawError {\n return error instanceof WithdrawError;\n}\n\n/**\n * Type guard for vault not found errors\n */\nexport function isVaultNotFoundError(\n error: unknown\n): error is VaultNotFoundError {\n return error instanceof VaultNotFoundError;\n}\n\n/**\n * Type guard for invalid address errors\n */\nexport function isInvalidAddressError(\n error: unknown\n): error is InvalidAddressError {\n return error instanceof InvalidAddressError;\n}\n\n/**\n * Type guard for invalid share amount errors\n */\nexport function isInvalidShareAmountError(\n error: unknown\n): error is InvalidShareAmountError {\n return error instanceof InvalidShareAmountError;\n}\n\n/**\n * Type guard for invalid slippage errors\n */\nexport function isInvalidSlippageError(\n error: unknown\n): error is InvalidSlippageError {\n return error instanceof InvalidSlippageError;\n}\n\nexport class VaultNotFoundByAddressError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"VAULT_NOT_FOUND_BY_ADDRESS\", context);\n this.name = \"VaultNotFoundByAddressError\";\n Object.setPrototypeOf(this, VaultNotFoundByAddressError.prototype);\n }\n}\n\nexport class VaultNotFoundByNameError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"VAULT_NOT_FOUND_BY_NAME\", context);\n this.name = \"VaultNotFoundByNameError\";\n Object.setPrototypeOf(this, VaultNotFoundByNameError.prototype);\n }\n}\n\nexport class UnauthorizedVaultAccessError extends WithdrawError {\n constructor(message: string, context?: Record<string, unknown>) {\n super(message, \"UNAUTHORIZED_VAULT_ACCESS\", context);\n this.name = \"UnauthorizedVaultAccessError\";\n Object.setPrototypeOf(this, UnauthorizedVaultAccessError.prototype);\n }\n}\n\nexport function isVaultNotFoundByAddressError(\n error: unknown\n): error is VaultNotFoundByAddressError {\n return error instanceof VaultNotFoundByAddressError;\n}\n\nexport function isVaultNotFoundByNameError(\n error: unknown\n): error is VaultNotFoundByNameError {\n return error instanceof VaultNotFoundByNameError;\n}\n\n/**\n * Helper to format error message for logging\n *\n * @param error - Any error to format\n * @returns Human-readable error message with context if available\n */\nexport function formatWithdrawError(error: unknown): string {\n if (isWithdrawError(error)) {\n const context =\n error.context && Object.keys(error.context).length > 0\n ? ` | context: ${JSON.stringify(error.context)}`\n : \"\";\n return `[${error.code}] ${error.message}${context}`;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n","import type { Address } from \"viem\";\nimport type { AmplifyVault } from \"../types/amplify-sdk-api\";\nimport {\n APIError,\n isValidAddress,\n isValidChainId,\n} from \"../types/amplify-sdk-api\";\nimport { VaultNotFoundByNameError } from \"../types/withdraw-errors\";\nimport { getChainNameById } from \"../utils/chain-utils\";\nimport { getCache } from \"./amplify-sdk-client\";\n\n/**\n * Parameters for resolving a vault by name, chain, and asset.\n *\n * All three fields are required and validated against the resolved vault\n * to ensure the calldata is unambiguous — wrong chain or wrong asset will\n * throw an `APIError` before any transaction is prepared.\n *\n * @property {string} vaultName - Human-readable vault name (e.g. \"Amplify USDC Core\")\n * @property {Address} assetAddress - Token contract address for the deposit or want asset\n * @property {number} chainId - Chain ID where the vault is deployed\n * @property {string} callerEndpoint - Caller name included in error messages for tracing\n */\nexport interface ResolveVaultParams {\n vaultName: string;\n assetAddress: Address;\n chainId: number;\n callerEndpoint: string;\n}\n\n/**\n * Resolves a vault by name and validates it against the provided chain ID\n * and asset address.\n *\n * Throws an `APIError` when:\n * - `assetAddress` or `chainId` fail basic format validation\n * - No vault exists with the given `vaultName`\n * - The resolved vault is on a different chain than `chainId`\n * - The resolved vault's supported asset does not match `assetAddress`\n */\nexport async function resolveVault(\n params: ResolveVaultParams\n): Promise<AmplifyVault> {\n const { vaultName, assetAddress, chainId, callerEndpoint } = params;\n\n if (!isValidAddress(assetAddress)) {\n throw new APIError(\n `Invalid assetAddress: ${assetAddress}. Must be a valid Ethereum address.`,\n { endpoint: callerEndpoint }\n );\n }\n\n if (!isValidChainId(chainId)) {\n throw new APIError(\n `Invalid chainId: ${chainId}. Must be a positive integer.`,\n { endpoint: callerEndpoint }\n );\n }\n\n const cache = getCache();\n if (cache.isEmpty() || cache.isExpired()) {\n await cache.refresh();\n }\n\n const vault = cache.getVaultByName(vaultName);\n if (!vault) {\n throw new VaultNotFoundByNameError(\n `No vault found with name \"${vaultName}\". The vault may not exist or may not be available for your organization.`,\n { vaultName, endpoint: callerEndpoint }\n );\n }\n\n const supportedChainIds = new Set<number>([vault.chainId]);\n for (const a of vault.supportedAssets) {\n if (a.chainId != null) {\n supportedChainIds.add(a.chainId);\n }\n }\n\n if (!supportedChainIds.has(chainId)) {\n const chains = Array.from(supportedChainIds).join(\", \");\n throw new APIError(\n `Vault \"${vaultName}\" supports chains [${chains}], but ${getChainNameById(chainId)} (${chainId}) was requested.`,\n { endpoint: callerEndpoint }\n );\n }\n\n const matchedAsset = vault.supportedAssets.find(\n (a) =>\n a.address.toLowerCase() === assetAddress.toLowerCase() &&\n (a.chainId == null || a.chainId === chainId)\n );\n if (!matchedAsset) {\n const supported = vault.supportedAssets\n .filter((a) => a.chainId == null || a.chainId === chainId)\n .map((a) => `${a.address} (${a.symbol})`)\n .join(\", \");\n throw new APIError(\n `Vault \"${vaultName}\" supports assets [${supported}] on chain ${chainId}, but asset ${assetAddress} was requested.`,\n { endpoint: callerEndpoint }\n );\n }\n\n return vault;\n}\n","export const WithdrawQueueAbi = [\n {\n inputs: [\n { internalType: \"string\", name: \"_name\", type: \"string\" },\n { internalType: \"string\", name: \"_symbol\", type: \"string\" },\n { internalType: \"address\", name: \"_feeRecipient\", type: \"address\" },\n {\n internalType: \"contract TellerWithMultiAssetSupport\",\n name: \"_tellerWithMultiAssetSupport\",\n type: \"address\",\n },\n {\n internalType: \"contract IFeeModule\",\n name: \"_feeModule\",\n type: \"address\",\n },\n { internalType: \"uint256\", name: \"_minimumOrderSize\", type: \"uint256\" },\n { internalType: \"address\", name: \"_owner\", type: \"address\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"ECDSAInvalidSignature\", type: \"error\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"length\", type: \"uint256\" }],\n name: \"ECDSAInvalidSignatureLength\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"bytes32\", name: \"s\", type: \"bytes32\" }],\n name: \"ECDSAInvalidSignatureS\",\n type: \"error\",\n },\n { inputs: [], name: \"ERC721EnumerableForbiddenBatchMint\", type: \"error\" },\n {\n inputs: [\n { internalType: \"address\", name: \"sender\", type: \"address\" },\n { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n ],\n name: \"ERC721IncorrectOwner\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\n ],\n name: \"ERC721InsufficientApproval\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"approver\", type: \"address\" }],\n name: \"ERC721InvalidApprover\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"operator\", type: \"address\" }],\n name: \"ERC721InvalidOperator\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }],\n name: \"ERC721InvalidOwner\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"receiver\", type: \"address\" }],\n name: \"ERC721InvalidReceiver\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"sender\", type: \"address\" }],\n name: \"ERC721InvalidSender\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\n name: \"ERC721NonexistentToken\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"uint256\", name: \"index\", type: \"uint256\" },\n ],\n name: \"ERC721OutOfBoundsIndex\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"SafeERC20FailedOperation\",\n type: \"error\",\n },\n { inputs: [], name: \"Unauthorized\", type: \"error\" },\n { inputs: [], name: \"ZeroAddress\", type: \"error\" },\n {\n inputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n name: \"OrderAlreadyProcessed\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" },\n {\n internalType: \"enum WithdrawQueue.OrderType\",\n name: \"currentStatus\",\n type: \"uint8\",\n },\n ],\n name: \"InvalidOrderType\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n name: \"InvalidOrderIndex\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"minimum\", type: \"uint256\" },\n ],\n name: \"AmountBelowMinimum\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"currentTimestamp\", type: \"uint256\" },\n ],\n name: \"SignatureExpired\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"ordersToProcess\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"latestOrder\", type: \"uint256\" },\n ],\n name: \"NotEnoughOrdersToProcess\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"ordersToProcess\", type: \"uint256\" },\n ],\n name: \"InvalidOrdersCount\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"intendedDepositor\", type: \"address\" },\n { internalType: \"address\", name: \"depositor\", type: \"address\" },\n ],\n name: \"InvalidEip2612Signature\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"intendedDepositor\", type: \"address\" },\n { internalType: \"address\", name: \"depositor\", type: \"address\" },\n ],\n name: \"InvalidDepositor\",\n type: \"error\",\n },\n { inputs: [], name: \"PermitFailedAndAllowanceTooLow\", type: \"error\" },\n { inputs: [], name: \"TellerVaultMissmatch\", type: \"error\" },\n {\n inputs: [\n { internalType: \"address\", name: \"attemptedToCancel\", type: \"address\" },\n { internalType: \"address\", name: \"orderOwner\", type: \"address\" },\n ],\n name: \"OnlyOrderOwnerCanCancel\",\n type: \"error\",\n },\n { inputs: [], name: \"QueueMustBeEmpty\", type: \"error\" },\n {\n inputs: [\n { internalType: \"contract IERC20\", name: \"asset\", type: \"address\" },\n ],\n name: \"AssetNotSupported\",\n type: \"error\",\n },\n { inputs: [], name: \"InvalidAssetsOut\", type: \"error\" },\n { inputs: [], name: \"EmptyArray\", type: \"error\" },\n {\n inputs: [\n { internalType: \"contract IERC20\", name: \"wantAsset\", type: \"address\" },\n { internalType: \"uint256\", name: \"expectedAssetsOut\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"vaultBalanceOfWantAsset\",\n type: \"uint256\",\n },\n ],\n name: \"VaultInsufficientBalance\",\n type: \"error\",\n },\n { inputs: [], name: \"TellerIsPaused\", type: \"error\" },\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: \"approved\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Approval\",\n type: \"event\",\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: \"operator\",\n type: \"address\",\n },\n { indexed: false, internalType: \"bool\", name: \"approved\", type: \"bool\" },\n ],\n name: \"ApprovalForAll\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"user\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newAuthority\",\n type: \"address\",\n },\n ],\n name: \"AuthorityUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract IFeeModule\",\n name: \"oldFeeModule\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract IFeeModule\",\n name: \"newFeeModule\",\n type: \"address\",\n },\n ],\n name: \"FeeModuleUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"oldFeeRecipient\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newFeeRecipient\",\n type: \"address\",\n },\n ],\n name: \"FeeRecipientUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"oldMinimum\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"newMinimum\",\n type: \"uint256\",\n },\n ],\n name: \"MinimumOrderSizeUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"orderIndex\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n internalType: \"enum WithdrawQueue.OrderType\",\n name: \"orderType\",\n type: \"uint8\",\n },\n {\n internalType: \"bool\",\n name: \"didOrderFailTransfer\",\n type: \"bool\",\n },\n ],\n indexed: false,\n internalType: \"struct WithdrawQueue.Order\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"depositor\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"isSubmittedViaSignature\",\n type: \"bool\",\n },\n ],\n name: \"OrderSubmitted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"startIndex\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"endIndex\",\n type: \"uint256\",\n },\n ],\n name: \"OrdersProcessedInRange\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"orderIndex\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n internalType: \"enum WithdrawQueue.OrderType\",\n name: \"orderType\",\n type: \"uint8\",\n },\n {\n internalType: \"bool\",\n name: \"didOrderFailTransfer\",\n type: \"bool\",\n },\n ],\n indexed: false,\n internalType: \"struct WithdrawQueue.Order\",\n name: \"order\",\n type: \"tuple\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"receiver\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"bool\",\n name: \"isForceProcessed\",\n type: \"bool\",\n },\n ],\n name: \"OrderProcessed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"orderIndex\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n internalType: \"enum WithdrawQueue.OrderType\",\n name: \"orderType\",\n type: \"uint8\",\n },\n {\n internalType: \"bool\",\n name: \"didOrderFailTransfer\",\n type: \"bool\",\n },\n ],\n indexed: false,\n internalType: \"struct WithdrawQueue.Order\",\n name: \"order\",\n type: \"tuple\",\n },\n ],\n name: \"OrderRefunded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"orderIndex\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"bool\",\n name: \"isMarkedByUser\",\n type: \"bool\",\n },\n ],\n name: \"OrderMarkedForRefund\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"user\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"contract TellerWithMultiAssetSupport\",\n name: \"oldTeller\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"contract TellerWithMultiAssetSupport\",\n name: \"newTeller\",\n type: \"address\",\n },\n ],\n name: \"TellerUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"tokenId\",\n type: \"uint256\",\n },\n ],\n name: \"Transfer\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CANCEL_ORDER_TYPEHASH\",\n outputs: [{ internalType: \"bytes32\", name: \"\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"authority\",\n outputs: [\n { internalType: \"contract Authority\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }],\n name: \"balanceOf\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\n name: \"ownerOf\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n name: \"cancelOrder\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"cancelSignature\", type: \"bytes\" },\n ],\n name: \"cancelOrderWithSignature\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeModule\",\n outputs: [\n { internalType: \"contract IFeeModule\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeRecipient\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n name: \"forceProcess\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256[]\", name: \"orderIndices\", type: \"uint256[]\" },\n ],\n name: \"forceProcessOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n name: \"getOrderStatus\",\n outputs: [\n {\n internalType: \"enum WithdrawQueue.OrderStatus\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\n name: \"getApproved\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"lastProcessedOrder\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestOrder\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"contract IERC20\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amount\", type: \"uint256\" },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n ],\n name: \"manageERC20\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"minimumOrderSize\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"name\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"nonces\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"offerAsset\",\n outputs: [{ internalType: \"contract IERC20\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n name: \"orderAtQueueIndex\",\n outputs: [\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n internalType: \"enum WithdrawQueue.OrderType\",\n name: \"orderType\",\n type: \"uint8\",\n },\n {\n internalType: \"bool\",\n name: \"didOrderFailTransfer\",\n type: \"bool\",\n },\n ],\n internalType: \"struct WithdrawQueue.Order\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n ],\n name: \"isApprovedForAll\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n name: \"refundOrder\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256[]\", name: \"orderIndices\", type: \"uint256[]\" },\n ],\n name: \"refundOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"ordersToProcess\", type: \"uint256\" },\n ],\n name: \"processOrders\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"intendedDepositor\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n components: [\n {\n internalType: \"enum WithdrawQueue.ApprovalMethod\",\n name: \"approvalMethod\",\n type: \"uint8\",\n },\n { internalType: \"uint8\", name: \"approvalV\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"approvalR\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"approvalS\", type: \"bytes32\" },\n {\n internalType: \"bool\",\n name: \"submitWithSignature\",\n type: \"bool\",\n },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n {\n internalType: \"bytes\",\n name: \"eip2612Signature\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct WithdrawQueue.SignatureParams\",\n name: \"signatureParams\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct WithdrawQueue.SubmitOrderParams\",\n name: \"params\",\n type: \"tuple\",\n },\n ],\n name: \"submitOrder\",\n outputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"intendedDepositor\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n components: [\n {\n internalType: \"enum WithdrawQueue.ApprovalMethod\",\n name: \"approvalMethod\",\n type: \"uint8\",\n },\n { internalType: \"uint8\", name: \"approvalV\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"approvalR\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"approvalS\", type: \"bytes32\" },\n {\n internalType: \"bool\",\n name: \"submitWithSignature\",\n type: \"bool\",\n },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n {\n internalType: \"bytes\",\n name: \"eip2612Signature\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct WithdrawQueue.SignatureParams\",\n name: \"signatureParams\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct WithdrawQueue.SubmitOrderParams\",\n name: \"params\",\n type: \"tuple\",\n },\n { internalType: \"uint256\", name: \"ordersToProcess\", type: \"uint256\" },\n ],\n name: \"submitOrderAndProcess\",\n outputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"uint256\", name: \"amountOffer\", type: \"uint256\" },\n {\n internalType: \"contract IERC20\",\n name: \"wantAsset\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"intendedDepositor\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"receiver\", type: \"address\" },\n { internalType: \"address\", name: \"refundReceiver\", type: \"address\" },\n {\n components: [\n {\n internalType: \"enum WithdrawQueue.ApprovalMethod\",\n name: \"approvalMethod\",\n type: \"uint8\",\n },\n { internalType: \"uint8\", name: \"approvalV\", type: \"uint8\" },\n { internalType: \"bytes32\", name: \"approvalR\", type: \"bytes32\" },\n { internalType: \"bytes32\", name: \"approvalS\", type: \"bytes32\" },\n {\n internalType: \"bool\",\n name: \"submitWithSignature\",\n type: \"bool\",\n },\n { internalType: \"uint256\", name: \"deadline\", type: \"uint256\" },\n {\n internalType: \"bytes\",\n name: \"eip2612Signature\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct WithdrawQueue.SignatureParams\",\n name: \"signatureParams\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct WithdrawQueue.SubmitOrderParams\",\n name: \"params\",\n type: \"tuple\",\n },\n ],\n name: \"submitOrderAndProcessAll\",\n outputs: [{ internalType: \"uint256\", name: \"orderIndex\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"symbol\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"bytes4\", name: \"interfaceId\", type: \"bytes4\" }],\n name: \"supportsInterface\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"tellerWithMultiAssetSupport\",\n outputs: [\n {\n internalType: \"contract TellerWithMultiAssetSupport\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\n name: \"tokenByIndex\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"uint256\", name: \"index\", type: \"uint256\" },\n ],\n name: \"tokenOfOwnerByIndex\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" }],\n name: \"tokenURI\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\n ],\n name: \"transferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"from\", type: \"address\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"_data\", type: \"bytes\" },\n ],\n name: \"safeTransferFrom\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"operator\", type: \"address\" },\n { internalType: \"bool\", name: \"approved\", type: \"bool\" },\n ],\n name: \"setApprovalForAll\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract IFeeModule\",\n name: \"_feeModule\",\n type: \"address\",\n },\n ],\n name: \"setFeeModule\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"_feeRecipient\", type: \"address\" },\n ],\n name: \"setFeeRecipient\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract TellerWithMultiAssetSupport\",\n name: \"_newTeller\",\n type: \"address\",\n },\n ],\n name: \"setTellerWithMultiAssetSupport\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"setOwner\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract Authority\",\n name: \"newAuthority\",\n type: \"address\",\n },\n ],\n name: \"setAuthority\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"_newMinimum\", type: \"uint256\" }],\n name: \"updateAssetMinimumOrderSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"to\", type: \"address\" },\n { internalType: \"uint256\", name: \"tokenId\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk2ZJWWK6D_js = require('./chunk-2ZJWWK6D.js');
3
+ var chunkE5DH5YEE_js = require('./chunk-E5DH5YEE.js');
4
4
  var viem = require('viem');
5
5
 
6
6
  // src/abi/accountant-abi.ts
@@ -903,7 +903,7 @@ var getRateInQuoteWithAssetDecimals = async ({
903
903
  accountantAddress,
904
904
  chainId
905
905
  }) => {
906
- const client = await chunk2ZJWWK6D_js.getClient(chainId);
906
+ const client = await chunkE5DH5YEE_js.getClient(chainId);
907
907
  const results = await client.multicall({
908
908
  contracts: [
909
909
  {
@@ -976,7 +976,7 @@ var getErc20Balance = async ({
976
976
  tokenAddress,
977
977
  recipientAddress
978
978
  }) => {
979
- const client = await chunk2ZJWWK6D_js.getClient(chainId);
979
+ const client = await chunkE5DH5YEE_js.getClient(chainId);
980
980
  const balance = await client.readContract({
981
981
  abi: viem.erc20Abi,
982
982
  address: tokenAddress,
@@ -989,7 +989,7 @@ var getErc20Decimals = async ({
989
989
  chainId,
990
990
  tokenAddress
991
991
  }) => {
992
- const client = await chunk2ZJWWK6D_js.getClient(chainId);
992
+ const client = await chunkE5DH5YEE_js.getClient(chainId);
993
993
  const balance = await client.readContract({
994
994
  abi: viem.erc20Abi,
995
995
  address: tokenAddress,
@@ -1003,7 +1003,7 @@ var getErc20Allowance = async ({
1003
1003
  recipientAddress,
1004
1004
  spenderAddress
1005
1005
  }) => {
1006
- const client = await chunk2ZJWWK6D_js.getClient(chainId);
1006
+ const client = await chunkE5DH5YEE_js.getClient(chainId);
1007
1007
  const allowance = await client.readContract({
1008
1008
  abi: viem.erc20Abi,
1009
1009
  address: tokenAddress,
@@ -1018,7 +1018,7 @@ var getErc20AllowanceWithDecimals = async ({
1018
1018
  recipientAddress,
1019
1019
  spenderAddress
1020
1020
  }) => {
1021
- const client = await chunk2ZJWWK6D_js.getClient(chainId);
1021
+ const client = await chunkE5DH5YEE_js.getClient(chainId);
1022
1022
  const allowance = await client.multicall({
1023
1023
  contracts: [
1024
1024
  {
@@ -1042,7 +1042,7 @@ var getTokenPermitInfoWithAllowance = async ({
1042
1042
  owner,
1043
1043
  spender
1044
1044
  }) => {
1045
- const client = await chunk2ZJWWK6D_js.getClient(chainId);
1045
+ const client = await chunkE5DH5YEE_js.getClient(chainId);
1046
1046
  const results = await client.multicall({
1047
1047
  contracts: [
1048
1048
  {
@@ -1089,7 +1089,7 @@ var getTokenPermitInfoWithAllowance = async ({
1089
1089
  versionResult
1090
1090
  ] = results;
1091
1091
  if (decimalsResult.status === "failure") {
1092
- throw new chunk2ZJWWK6D_js.APIError(
1092
+ throw new chunkE5DH5YEE_js.APIError(
1093
1093
  `Failed to read decimals from token ${tokenAddress}: ${decimalsResult.error?.message || "Unknown error"}`,
1094
1094
  {
1095
1095
  endpoint: "getTokenPermitInfoWithAllowance",
@@ -1098,7 +1098,7 @@ var getTokenPermitInfoWithAllowance = async ({
1098
1098
  );
1099
1099
  }
1100
1100
  if (allowanceResult.status === "failure") {
1101
- throw new chunk2ZJWWK6D_js.APIError(
1101
+ throw new chunkE5DH5YEE_js.APIError(
1102
1102
  `Failed to read allowance from token ${tokenAddress}: ${allowanceResult.error?.message || "Unknown error"}`,
1103
1103
  {
1104
1104
  endpoint: "getTokenPermitInfoWithAllowance",
@@ -1107,7 +1107,7 @@ var getTokenPermitInfoWithAllowance = async ({
1107
1107
  );
1108
1108
  }
1109
1109
  if (nameResult.status === "failure") {
1110
- throw new chunk2ZJWWK6D_js.APIError(
1110
+ throw new chunkE5DH5YEE_js.APIError(
1111
1111
  `Failed to read name from token ${tokenAddress}: ${nameResult.error?.message || "Unknown error"}`,
1112
1112
  {
1113
1113
  endpoint: "getTokenPermitInfoWithAllowance",
@@ -1139,5 +1139,5 @@ exports.getErc20Balance = getErc20Balance;
1139
1139
  exports.getErc20Decimals = getErc20Decimals;
1140
1140
  exports.getRateInQuoteWithAssetDecimals = getRateInQuoteWithAssetDecimals;
1141
1141
  exports.getTokenPermitInfoWithAllowance = getTokenPermitInfoWithAllowance;
1142
- //# sourceMappingURL=chunk-D7EMZAOQ.js.map
1143
- //# sourceMappingURL=chunk-D7EMZAOQ.js.map
1142
+ //# sourceMappingURL=chunk-YAYUSBC6.js.map
1143
+ //# sourceMappingURL=chunk-YAYUSBC6.js.map