@panoptic-eng/sdk 1.0.20 → 1.0.22

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 (36) hide show
  1. package/dist/cow/index.js +3 -3
  2. package/dist/{cow-Cqw3sako.js → cow-C_SGXoWr.js} +2 -2
  3. package/dist/{cow-Cqw3sako.js.map → cow-C_SGXoWr.js.map} +1 -1
  4. package/dist/index.d.ts +696 -5907
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1393 -579
  7. package/dist/index.js.map +1 -1
  8. package/dist/irm-C7OUVANR.d.ts +5641 -0
  9. package/dist/irm-C7OUVANR.d.ts.map +1 -0
  10. package/dist/{irm-DF4NwYIY.js → irm-DNK3N7qk.js} +301 -3
  11. package/dist/irm-DNK3N7qk.js.map +1 -0
  12. package/dist/panoptic/v2/index.d.ts +12 -4
  13. package/dist/panoptic/v2/index.d.ts.map +1 -1
  14. package/dist/panoptic/v2/index.js +25 -10
  15. package/dist/panoptic/v2/index.js.map +1 -1
  16. package/dist/{position-zqvENVuf.js → position-BK4a-Yyu.js} +2 -2
  17. package/dist/{position-zqvENVuf.js.map → position-BK4a-Yyu.js.map} +1 -1
  18. package/dist/{router-d09dxd-F.js → router-BZvOeloX.js} +90 -40
  19. package/dist/router-BZvOeloX.js.map +1 -0
  20. package/dist/test/index.d.ts +2 -2
  21. package/dist/test/index.d.ts.map +1 -1
  22. package/dist/uniswap/index.d.ts +118 -1
  23. package/dist/uniswap/index.d.ts.map +1 -1
  24. package/dist/uniswap/index.js +228 -4
  25. package/dist/uniswap/index.js.map +1 -0
  26. package/dist/{writes-CRjVFjMt.js → writes-DymnVbiE.js} +2 -2
  27. package/dist/{writes-CRjVFjMt.js.map → writes-DymnVbiE.js.map} +1 -1
  28. package/dist/zodiac/index.d.ts +444 -0
  29. package/dist/zodiac/index.d.ts.map +1 -0
  30. package/dist/zodiac/index.js +949 -0
  31. package/dist/zodiac/index.js.map +1 -0
  32. package/package.json +6 -1
  33. package/dist/irm-DF4NwYIY.js.map +0 -1
  34. package/dist/irm-zWjtffWA.d.ts +0 -85
  35. package/dist/irm-zWjtffWA.d.ts.map +0 -1
  36. package/dist/router-d09dxd-F.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["panopticPoolAbi","panopticPoolV2Abi","chainDeploymentsData","BASE_DEPLOYMENT","BASE_ETH_USDC_5BPS_MARKET","BASE_HYPOVAULT_ADDRESSES","BASE_HYPOVAULT_MANAGER_ADDRESSES","BASE_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultBaseProdConfig: HypoVaultManagerConfig","MAINNET_DEPLOYMENT","MAINNET_HYPOVAULT_ADDRESSES","MAINNET_HYPOVAULT_MANAGER_ADDRESSES","MAINNET_PANOPTIC_POOL_ADDRESSES","MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultMainnetProdConfig: HypoVaultManagerConfig","UsdcPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_ETH_USDC_5BPS_MARKET","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultSepoliaDevConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_ETH_USDC_5BPS_MARKET","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultSepoliaProdConfig: HypoVaultManagerConfig","BASE_DEPLOYMENT","BASE_HYPOVAULT_ADDRESSES","BASE_HYPOVAULT_MANAGER_ADDRESSES","BASE_PANOPTIC_POOL_ADDRESSES","WethPlpVaultBaseProdConfig: HypoVaultManagerConfig","MAINNET_DEPLOYMENT","WethPlpVaultMainnetProdConfig: HypoVaultManagerConfig","WethPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","WethPlpVaultSepoliaDevConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","WethPlpVaultSepoliaProdConfig: HypoVaultManagerConfig","ALL_HYPO_VAULT_CONFIGS: HypoVaultManagerConfig[]","vaultAddress: Address","chainId: number","options?: GetHypoVaultConfigOptions","deploymentRank: Record<HypoVaultManagerConfig['deployment'], number>","SEPOLIA_DEPLOYMENT","BASE_DEPLOYMENT","MAINNET_DEPLOYMENT","VAULT_POOL_INFOS_BY_CHAIN: Record<number, readonly VaultPoolInfoArtifact[]>","toLowerAddress","address: string","value: string | null | undefined","candidatesByPool: CandidateTokenIdsByPool","poolAddress: string","values: Iterable<bigint>","value: unknown","result: unknown","panopticPoolAbi","chunk: readonly bigint[]","open: bigint[]","vaultAddress: Address","chainId?: number","balanceCandidatesByPool: CandidateTokenIdsByPool","eventCandidatesByPool: CandidateTokenIdsByPool","tokenIdsByPool: bigint[][]","eventCandidates","openTokenIds: bigint[]","address: string","discoveredAddresses: Address[]","idleRow: LendingAllocationRow","e: Error","e","errorMessage: string","mulDiv","byEpoch: {\n epoch: bigint\n queuedShares: bigint\n userSharesFulfilled: bigint\n assetsToReceive: bigint\n }[]","selectedEpochs: bigint[]","request","byEpoch: ClaimableSharesByEpoch[]","byExecutionEpoch: ClaimableExecutionSharesByEpoch[]","selectedEpochs: bigint[]","address: Address","STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT: Partial<Record<string, Hex>>","accountantAddress: Address","a: Hex","b: Hex","leaf: Hex","tree: Hex[][]","proof: Hex[]","manageLeafs: ManageLeaf[]","rawDataDecoderAddress: Address","proofs: Hex[][]","leafDigests: Hex[]","jsonTree: Record<string, readonly Hex[]>","artifact: T","description: LeafDescription<T>","actions: ManageAction[]","artifact: StrategistLeavesArtifact","chainId: keyof typeof alchemyChains","alchemyApiKey: string","defaultWrapper: SdkFunctionWrapper","client: GraphQLClient","withWrapper: SdkFunctionWrapper","variables: Types.GetDepositOverviewQueryVariables","requestHeaders?: GraphQLClientRequestHeaders","variables: Types.GetLatestDepositAndWithdrawEpochQueryVariables","variables: Types.GetLatestEpochQueryVariables","variables: Types.GetVaultHistoryQueryVariables","variables: Types.GetFilteredHypoVaultsQueryVariables","variables: Types.GetQueuedWithdrawalsForExecutionQueryVariables","variables: Types.GetWithdrawalEpochStatesForExecutionQueryVariables","variables: Types.GetQueuedDepositsForWithdrawalQueryVariables","variables: Types.GetDepositEpochStatesForWithdrawalQueryVariables","chainToHypoVaultGraphQlAPI: Record<number, string>","chainId: number"],"sources":["../src/abis/CollateralTracker.ts","../src/abis/CollateralTrackerV1_1.ts","../src/abis/erc20ABI.ts","../src/abis/erc1155ABI.ts","../src/abis/HypoVault.ts","../src/abis/HypoVaultManagerWithMerkleVerification.ts","../src/abis/NonFungiblePositionManager.ts","../src/abis/PanopticFactoryV3.ts","../src/abis/PanopticFactoryV4.ts","../src/abis/PanopticHelper.ts","../src/abis/SemiFungiblePositionManager.ts","../src/abis/PanopticPool.ts","../src/abis/SemiFungiblePositionManagerV1_1.ts","../src/abis/PanopticPoolV1_1.ts","../src/abis/PanopticQueryV1_1.ts","../src/abis/PanopticVaultAccountant.ts","../src/abis/PanopticVaultAccountantManagerInput.ts","../src/abis/PoolManager.ts","../src/abis/RescueDistributor.ts","../src/abis/Simple7702Account.ts","../src/abis/StateView.ts","../src/abis/UniswapHelper.ts","../src/abis/UniswapHelperV1_1.ts","../src/abis/UniswapMigrator.ts","../src/abis/UniswapV3Factory.ts","../src/abis/UniswapV3Pool.ts","../src/abis/WETH.ts","../src/abis/panoptic_v2_abis.ts","../../deployments/src/chainDeployments.data.json","../../deployments/src/chainDeployments.js","../../deployments/src/vaultDisplayNames.js","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultBaseProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultMainnetProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultSepoliaDevConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultSepoliaProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultBaseProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultMainnetProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultSepoliaDevConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultSepoliaProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/vaultToConfig.ts","../src/hypoVault/hypoVaultManagerArtifacts/poolInfosConfig.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseUSDCPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseWETHPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetUSDCPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetWETHPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaUSDCPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaWETHPLPVaultPoolInfos.ts","../src/hypoVault/utils/buildManagerInput.ts","../src/hypoVault/utils/buildManagerInputAtBlock.ts","../src/hypoVault/utils/vaultManagerInput.ts","../src/hypoVault/analytics/lendingAllocation.ts","../src/hypoVault/cancelDeposit/cancelDeposit.ts","../src/errors/ethereum.ts","../src/hypoVault/cancelDeposit/hooks/use-cancel-deposit.ts","../src/hypoVault/executeWithdrawal/executeWithdrawal.ts","../src/hypoVault/executeWithdrawal/utils/index.ts","../src/hypoVault/executeWithdrawal/hooks/use-execute-withdrawal.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetLegacyUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetLegacyWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerConfigs/schema.ts","../src/hypoVault/hypoVaultManagerWithMerkleVerification/fulfillDeposits.ts","../src/hypoVault/hypoVaultManagerWithMerkleVerification/fulfillWithdrawals.ts","../src/hypoVault/requestDeposit/requestDeposit.ts","../src/hypoVault/requestDeposit/hooks/use-request-deposit.ts","../src/hypoVault/requestWithdrawal/utils/index.ts","../src/hypoVault/requestWithdrawal/requestWithdrawal.ts","../src/hypoVault/requestWithdrawal/hooks/use-request-withdrawal.ts","../src/hypoVault/staleOracleOverride.ts","../src/hypoVault/utils/merkleTreeHelper.ts","../src/hypoVault/utils/buildManageArgs.ts","../src/panoptic/v1/CollateralTracker/deposit.ts","../src/panoptic/v1/CollateralTracker/withdraw.ts","../src/token/erc20/approve.ts","../src/rpc.ts","../src/graphql/hypoVault-sdk.generated.ts","../src/graphqlClient.ts"],"sourcesContent":["export const CollateralTrackerAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_commissionFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_sellerCollateralRatio',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_buyerCollateralRatio',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_forceExerciseCost',\n type: 'int256',\n internalType: 'int256',\n },\n {\n name: '_targetPoolUtilization',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_saturatedPoolUtilization',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_ITMSpreadMultiplier',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'allowance',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'asset',\n inputs: [],\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n {\n name: 'account',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'balance',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToAssets',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToShares',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint8',\n internalType: 'uint8',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'delegate',\n inputs: [\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'delegate',\n inputs: [\n {\n name: 'delegator',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exercise',\n inputs: [\n {\n name: 'optionOwner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'longAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'shortAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'swappedAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'realizedPremium',\n type: 'int128',\n internalType: 'int128',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'int128',\n internalType: 'int128',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exerciseCost',\n inputs: [\n {\n name: 'currentTick',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'oracleTick',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'positionId',\n type: 'uint256',\n internalType: 'TokenId',\n },\n {\n name: 'positionBalance',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'longAmounts',\n type: 'int256',\n internalType: 'LeftRightSigned',\n },\n ],\n outputs: [\n {\n name: 'exerciseFees',\n type: 'int256',\n internalType: 'LeftRightSigned',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountMarginDetails',\n inputs: [\n {\n name: 'user',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'atTick',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'positionBalanceArray',\n type: 'uint256[2][]',\n internalType: 'uint256[2][]',\n },\n {\n name: 'shortPremium',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'longPremium',\n type: 'uint128',\n internalType: 'uint128',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'LeftRightUnsigned',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolData',\n inputs: [],\n outputs: [\n {\n name: 'poolAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'insideAMM',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'currentPoolUtilization',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxDeposit',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'maxMint',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxRedeem',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxWithdraw',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [\n {\n name: 'data',\n type: 'bytes[]',\n internalType: 'bytes[]',\n },\n ],\n outputs: [\n {\n name: 'results',\n type: 'bytes[]',\n internalType: 'bytes[]',\n },\n ],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'string',\n internalType: 'string',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewDeposit',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewMint',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewRedeem',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewWithdraw',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'redeem',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'refund',\n inputs: [\n {\n name: 'refunder',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'refundee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'int256',\n internalType: 'int256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revoke',\n inputs: [\n {\n name: 'delegator',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revoke',\n inputs: [\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'startToken',\n inputs: [\n {\n name: 'underlyingIsToken0',\n type: 'bool',\n internalType: 'bool',\n },\n {\n name: 'token0',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'token1',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'fee',\n type: 'uint24',\n internalType: 'uint24',\n },\n {\n name: 'panopticPool',\n type: 'address',\n internalType: 'contract PanopticPool',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'string',\n internalType: 'string',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'takeCommissionAddData',\n inputs: [\n {\n name: 'optionOwner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'longAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'shortAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'swappedAmount',\n type: 'int128',\n internalType: 'int128',\n },\n ],\n outputs: [\n {\n name: 'utilization',\n type: 'uint32',\n internalType: 'uint32',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'totalAssets',\n inputs: [],\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n {\n name: 'from',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'positionIdList',\n type: 'uint256[]',\n internalType: 'TokenId[]',\n },\n {\n name: 'usePremiaAsCollateral',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Deposit',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'shares',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n name: 'from',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdraw',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'receiver',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'shares',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'CastingError',\n inputs: [],\n },\n {\n type: 'error',\n name: 'CollateralTokenAlreadyInitialized',\n inputs: [],\n },\n {\n type: 'error',\n name: 'DepositTooLarge',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ExceedsMaximumRedemption',\n inputs: [],\n },\n {\n type: 'error',\n name: 'InvalidTick',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NotPanopticPool',\n inputs: [],\n },\n {\n type: 'error',\n name: 'PositionCountNotZero',\n inputs: [],\n },\n {\n type: 'error',\n name: 'TicksNotInitializable',\n inputs: [],\n },\n {\n type: 'error',\n name: 'TransferFailed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'UnderOverFlow',\n inputs: [],\n },\n] as const\n","export const CollateralTrackerV1_1Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_commissionFee', type: 'uint256', internalType: 'uint256' },\n { name: '_sellerCollateralRatio', type: 'uint256', internalType: 'uint256' },\n { name: '_buyerCollateralRatio', type: 'uint256', internalType: 'uint256' },\n { name: '_forceExerciseCost', type: 'int256', internalType: 'int256' },\n { name: '_targetPoolUtilization', type: 'uint256', internalType: 'uint256' },\n { name: '_saturatedPoolUtilization', type: 'uint256', internalType: 'uint256' },\n { name: '_ITMSpreadFee', type: 'uint256', internalType: 'uint256' },\n { name: '_manager', type: 'address', internalType: 'contract IPoolManager' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'allowance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'asset',\n inputs: [],\n outputs: [{ name: 'assetTokenAddress', type: 'address', internalType: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToAssets',\n inputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToShares',\n inputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'delegate',\n inputs: [{ name: 'delegatee', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [\n { name: 'assets', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'exercise',\n inputs: [\n { name: 'optionOwner', type: 'address', internalType: 'address' },\n { name: 'longAmount', type: 'int128', internalType: 'int128' },\n { name: 'shortAmount', type: 'int128', internalType: 'int128' },\n { name: 'swappedAmount', type: 'int128', internalType: 'int128' },\n { name: 'realizedPremium', type: 'int128', internalType: 'int128' },\n ],\n outputs: [{ name: '', type: 'int128', internalType: 'int128' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exerciseCost',\n inputs: [\n { name: 'currentTick', type: 'int24', internalType: 'int24' },\n { name: 'oracleTick', type: 'int24', internalType: 'int24' },\n { name: 'positionId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'longAmounts', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n outputs: [{ name: 'exerciseFees', type: 'int256', internalType: 'LeftRightSigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountMarginDetails',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'atTick', type: 'int24', internalType: 'int24' },\n { name: 'positionBalanceArray', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n { name: 'shortPremium', type: 'uint128', internalType: 'uint128' },\n { name: 'longPremium', type: 'uint128', internalType: 'uint128' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'LeftRightUnsigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolData',\n inputs: [],\n outputs: [\n { name: 'poolAssets', type: 'uint256', internalType: 'uint256' },\n { name: 'insideAMM', type: 'uint256', internalType: 'uint256' },\n { name: 'currentPoolUtilization', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n { type: 'function', name: 'initialize', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'maxDeposit',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxAssets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'maxMint',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxShares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxRedeem',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxShares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxWithdraw',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxAssets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'shares', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewDeposit',\n inputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewMint',\n inputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewRedeem',\n inputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewWithdraw',\n inputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'redeem',\n inputs: [\n { name: 'shares', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'refund',\n inputs: [\n { name: 'refunder', type: 'address', internalType: 'address' },\n { name: 'refundee', type: 'address', internalType: 'address' },\n { name: 'assets', type: 'int256', internalType: 'int256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revoke',\n inputs: [{ name: 'delegatee', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'settleLiquidation',\n inputs: [\n { name: 'liquidator', type: 'address', internalType: 'address' },\n { name: 'liquidatee', type: 'address', internalType: 'address' },\n { name: 'bonus', type: 'int256', internalType: 'int256' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'takeCommissionAddData',\n inputs: [\n { name: 'optionOwner', type: 'address', internalType: 'address' },\n { name: 'longAmount', type: 'int128', internalType: 'int128' },\n { name: 'shortAmount', type: 'int128', internalType: 'int128' },\n { name: 'swappedAmount', type: 'int128', internalType: 'int128' },\n { name: 'isCovered', type: 'bool', internalType: 'bool' },\n ],\n outputs: [\n { name: '', type: 'uint32', internalType: 'uint32' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'totalAssets',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'recipient', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unlockCallback',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: '', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n { name: 'assets', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n { name: 'assets', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Deposit',\n inputs: [\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdraw',\n inputs: [\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'receiver', type: 'address', indexed: true, internalType: 'address' },\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'CollateralTokenAlreadyInitialized', inputs: [] },\n { type: 'error', name: 'DepositTooLarge', inputs: [] },\n { type: 'error', name: 'ExceedsMaximumRedemption', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'NotPanopticPool', inputs: [] },\n { type: 'error', name: 'PositionCountNotZero', inputs: [] },\n { type: 'error', name: 'TransferFailed', inputs: [] },\n { type: 'error', name: 'UnauthorizedUniswapCallback', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n] as const\n","export const Erc20Abi = [\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: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\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: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'subtractedValue',\n type: 'uint256',\n },\n ],\n name: 'decreaseAllowance',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'addedValue',\n type: 'uint256',\n },\n ],\n name: 'increaseAllowance',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n] as const\n","export const Erc1155Abi = [\n {\n inputs: [],\n name: 'NotAuthorized',\n type: 'error',\n },\n {\n inputs: [],\n name: 'UnsafeRecipient',\n type: 'error',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'ApprovalForAll',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256[]',\n name: 'ids',\n type: 'uint256[]',\n },\n {\n indexed: false,\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n ],\n name: 'TransferBatch',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'id',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'TransferSingle',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: 'balance',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'owners',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'ids',\n type: 'uint256[]',\n },\n ],\n name: 'balanceOfBatch',\n outputs: [\n {\n internalType: 'uint256[]',\n name: 'balances',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n ],\n name: 'isApprovedForAll',\n outputs: [\n {\n internalType: 'bool',\n name: 'approvedForAll',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256[]',\n name: 'ids',\n type: 'uint256[]',\n },\n {\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'safeBatchTransferFrom',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'id',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes4',\n name: 'interfaceId',\n type: 'bytes4',\n },\n ],\n name: 'supportsInterface',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n] as const\n","export const HypoVaultAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n { type: 'receive', stateMutability: 'payable' },\n {\n type: 'function',\n name: 'accountant',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IVaultAccountant' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'allowance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'cancelDeposit',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelDeposit',\n inputs: [{ name: 'depositor', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelWithdrawal',\n inputs: [{ name: 'withdrawer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'convertToAssets',\n inputs: [\n { name: 'shares', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'depositEpoch',\n inputs: [],\n outputs: [{ name: '', type: 'uint128', internalType: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'depositEpochState',\n inputs: [{ name: 'epoch', type: 'uint256', internalType: 'uint256' }],\n outputs: [\n { name: 'assetsDeposited', type: 'uint128', internalType: 'uint128' },\n { name: 'sharesReceived', type: 'uint128', internalType: 'uint128' },\n { name: 'assetsFulfilled', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'executeDeposit',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeWithdrawal',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'feeWallet',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'fulfillDeposits',\n inputs: [\n { name: 'assetsToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'fulfillWithdrawals',\n inputs: [\n { name: 'sharesToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'maxAssetsReceived', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: '_underlyingToken', type: 'address', internalType: 'address' },\n { name: '_manager', type: 'address', internalType: 'address' },\n { name: '_accountant', type: 'address', internalType: 'contract IVaultAccountant' },\n { name: '_performanceFeeBps', type: 'uint256', internalType: 'uint256' },\n { name: '_symbol', type: 'string', internalType: 'string' },\n { name: '_name', type: 'string', internalType: 'string' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manage',\n inputs: [\n { name: 'targets', type: 'address[]', internalType: 'address[]' },\n { name: 'data', type: 'bytes[]', internalType: 'bytes[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manage',\n inputs: [\n { name: 'target', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manager',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC721Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'optOutOfRedeposit',\n inputs: [{ name: 'epoch', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'performanceFeeBps',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'queuedDeposit',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'depositAmount', type: 'uint128', internalType: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'queuedWithdrawal',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'amount', type: 'uint128', internalType: 'uint128' },\n { name: 'basis', type: 'uint128', internalType: 'uint128' },\n { name: 'shouldRedeposit', type: 'bool', internalType: 'bool' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestDeposit',\n inputs: [{ name: 'assets', type: 'uint128', internalType: 'uint128' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestWithdrawal',\n inputs: [{ name: 'shares', type: 'uint128', internalType: 'uint128' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestWithdrawalFrom',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'shares', type: 'uint128', internalType: 'uint128' },\n { name: 'shouldRedeposit', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'reservedWithdrawalAssets',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setAccountant',\n inputs: [\n { name: '_newAccountant', type: 'address', internalType: 'contract IVaultAccountant' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setFeeWallet',\n inputs: [{ name: '_newFeeWallet', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setManager',\n inputs: [{ name: '_newManager', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalAssets',\n inputs: [{ name: 'managerInput', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'success', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'success', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'underlyingToken',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'userBasis',\n inputs: [{ name: 'user', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'basis', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdrawalEpoch',\n inputs: [],\n outputs: [{ name: '', type: 'uint128', internalType: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdrawalEpochState',\n inputs: [{ name: 'epoch', type: 'uint256', internalType: 'uint256' }],\n outputs: [\n { name: 'sharesWithdrawn', type: 'uint128', internalType: 'uint128' },\n { name: 'assetsReceived', type: 'uint128', internalType: 'uint128' },\n { name: 'sharesFulfilled', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountantUpdated',\n inputs: [\n {\n name: 'oldAccountant',\n type: 'address',\n indexed: true,\n internalType: 'contract IVaultAccountant',\n },\n {\n name: 'newAccountant',\n type: 'address',\n indexed: true,\n internalType: 'contract IVaultAccountant',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositCancelled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositExecuted',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'epoch', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositRequested',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositsFulfilled',\n inputs: [\n { name: 'epoch', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'assetsFulfilled', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'sharesReceived', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'FeeWalletUpdated',\n inputs: [\n { name: 'oldFeeWallet', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newFeeWallet', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ManagerUpdated',\n inputs: [\n { name: 'oldManager', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newManager', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RedepositStatusChanged',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'epoch', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'shouldRedeposit', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalCancelled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalExecuted',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'performanceFee', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'epoch', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shouldRedeposit', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalRequested',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shouldRedeposit', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalsFulfilled',\n inputs: [\n { name: 'epoch', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'assetsReceived', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'sharesFulfilled', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'EpochNotFulfilled', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotManager', inputs: [] },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'TransferFailed', inputs: [] },\n { type: 'error', name: 'WithdrawalNotFulfillable', inputs: [] },\n] as const\n","export const HypoVaultManagerWithMerkleVerificationAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_owner', type: 'address', internalType: 'address' },\n { name: '_hypovault', type: 'address', internalType: 'address' },\n { name: '_balancerVault', type: 'address', internalType: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authority',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract Authority' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balancerVault',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract BalancerVault' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'cancelDeposit',\n inputs: [{ name: 'depositor', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelWithdrawal',\n inputs: [{ name: 'withdrawer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'flashLoan',\n inputs: [\n { name: 'recipient', type: 'address', internalType: 'address' },\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'userData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'fulfillDeposits',\n inputs: [\n { name: 'assetsToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'fulfillWithdrawals',\n inputs: [\n { name: 'sharesToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'maxAssetsReceived', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isPaused',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'manageRoot',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'manageVaultWithMerkleVerification',\n inputs: [\n {\n name: 'manageProofs',\n type: 'bytes32[][]',\n internalType: 'bytes32[][]',\n },\n {\n name: 'decodersAndSanitizers',\n type: 'address[]',\n internalType: 'address[]',\n },\n { name: 'targets', type: 'address[]', internalType: 'address[]' },\n { name: 'targetData', type: 'bytes[]', internalType: 'bytes[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'receiveFlashLoan',\n inputs: [\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'feeAmounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'userData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestWithdrawalFrom',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'shares', type: 'uint128', internalType: 'uint128' },\n { name: 'shouldRedeposit', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setAuthority',\n inputs: [\n {\n name: 'newAuthority',\n type: 'address',\n internalType: 'contract Authority',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setManageRoot',\n inputs: [\n { name: 'strategist', type: 'address', internalType: 'address' },\n { name: '_manageRoot', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vault',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract BoringVault' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AuthorityUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newAuthority',\n type: 'address',\n indexed: true,\n internalType: 'contract Authority',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BoringVaultManaged',\n inputs: [\n {\n name: 'callsMade',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ManageRootUpdated',\n inputs: [\n {\n name: 'strategist',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'oldRoot',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n {\n name: 'newRoot',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n { type: 'event', name: 'Paused', inputs: [], anonymous: false },\n { type: 'event', name: 'Unpaused', inputs: [], anonymous: false },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'FailedInnerCall', inputs: [] },\n { type: 'error', name: 'HypoVaultManager__Unauthorized', inputs: [] },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__BadFlashLoanIntentHash',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__FailedToVerifyManageProof',\n inputs: [\n { name: 'target', type: 'address', internalType: 'address' },\n { name: 'targetData', type: 'bytes', internalType: 'bytes' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__FlashLoanNotExecuted',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__FlashLoanNotInProgress',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidDecodersAndSanitizersLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidManageProofLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidTargetDataLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidValuesLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__OnlyCallableByBalancerVault',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__OnlyCallableByBoringVault',\n inputs: [],\n },\n { type: 'error', name: 'ManagerWithMerkleVerification__Paused', inputs: [] },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__TotalSupplyMustRemainConstantDuringPlatform',\n inputs: [],\n },\n] as const\n","export const NonFungiblePositionManagerAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: '_factory',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '_WETH9',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '_tokenDescriptor_',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\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: '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 {\n indexed: false,\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'ApprovalForAll',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'Collect',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'DecreaseLiquidity',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'IncreaseLiquidity',\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 {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\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: 'DOMAIN_SEPARATOR',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'PERMIT_TYPEHASH',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'WETH9',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseURI',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'burn',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint128',\n name: 'amount0Max',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1Max',\n type: 'uint128',\n },\n ],\n name: 'collect',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'tokenA',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'tokenB',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n ],\n name: 'createAndInitializePoolIfNecessary',\n outputs: [\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n ],\n name: 'decreaseLiquidity',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'factory',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'getApproved',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n ],\n name: 'increaseLiquidity',\n outputs: [\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n ],\n name: 'isApprovedForAll',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint256',\n name: 'amount0Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n ],\n internalType: 'struct INonfungiblePositionManager.MintParams',\n name: 'params',\n type: 'tuple',\n },\n ],\n name: 'mint',\n outputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes[]',\n name: 'data',\n type: 'bytes[]',\n },\n ],\n name: 'multicall',\n outputs: [\n {\n internalType: 'bytes[]',\n name: 'results',\n type: 'bytes[]',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'ownerOf',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'positions',\n outputs: [\n {\n internalType: 'uint96',\n name: 'nonce',\n type: 'uint96',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed1',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: '_data',\n type: 'bytes',\n },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermit',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermitAllowed',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermitAllowedIfNecessary',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermitIfNecessary',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes4',\n name: 'interfaceId',\n type: 'bytes4',\n },\n ],\n name: 'supportsInterface',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amountMinimum',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n ],\n name: 'sweepToken',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'tokenByIndex',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'tokenOfOwnerByIndex',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'tokenURI',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'amount0Owed',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Owed',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'uniswapV3MintCallback',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'amountMinimum',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n ],\n name: 'unwrapWETH9',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n stateMutability: 'payable',\n type: 'receive',\n },\n] as const\n","export const PanopticFactoryV3Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_SFPM', type: 'address', internalType: 'contract SemiFungiblePositionManagerV3' },\n { name: '_univ3Factory', type: 'address', internalType: 'contract IUniswapV3Factory' },\n { name: '_poolReference', type: 'address', internalType: 'address' },\n { name: '_collateralReference', type: 'address', internalType: 'address' },\n { name: 'properties', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'indices', type: 'uint256[][]', internalType: 'uint256[][]' },\n { name: 'pointers', type: 'uint256[][]', internalType: 'Pointer[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'constructMetadata',\n inputs: [\n { name: 'panopticPool', type: 'address', internalType: 'address' },\n { name: 'symbol0', type: 'string', internalType: 'string' },\n { name: 'symbol1', type: 'string', internalType: 'string' },\n { name: 'fee', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployNewPool',\n inputs: [\n { name: 'token0', type: 'address', internalType: 'address' },\n { name: 'token1', type: 'address', internalType: 'address' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n ],\n outputs: [\n { name: 'newPoolContract', type: 'address', internalType: 'contract PanopticPoolV2' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getApproved',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPanopticPool',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'contract IUniswapV3Pool' },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n ],\n outputs: [{ name: '', type: 'address', internalType: 'contract PanopticPoolV2' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'minePoolAddress',\n inputs: [\n { name: 'deployerAddress', type: 'address', internalType: 'address' },\n { name: 'v3Pool', type: 'address', internalType: 'address' },\n { name: 'riskEngine', type: 'address', internalType: 'address' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n { name: 'loops', type: 'uint256', internalType: 'uint256' },\n { name: 'minTargetRarity', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'bestSalt', type: 'uint96', internalType: 'uint96' },\n { name: 'highestRarity', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ownerOf',\n inputs: [{ name: 'id', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenURI',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'spender', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'operator', type: 'address', internalType: 'address', indexed: true },\n { name: 'approved', type: 'bool', internalType: 'bool', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'PoolDeployed',\n inputs: [\n {\n name: 'poolAddress',\n type: 'address',\n internalType: 'contract PanopticPoolV2',\n indexed: true,\n },\n {\n name: 'uniswapPool',\n type: 'address',\n internalType: 'contract IUniswapV3Pool',\n indexed: true,\n },\n {\n name: 'collateralTracker0',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address', indexed: true },\n { name: 'to', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n { type: 'error', name: 'AlreadyInitialized', inputs: [] },\n { type: 'error', name: 'CreateFail', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const\n","export const PanopticFactoryV4Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_SFPM', type: 'address', internalType: 'contract SemiFungiblePositionManagerV4' },\n { name: '_manager', type: 'address', internalType: 'contract IPoolManager' },\n { name: '_poolReference', type: 'address', internalType: 'address' },\n { name: '_collateralReference', type: 'address', internalType: 'address' },\n { name: 'properties', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'indices', type: 'uint256[][]', internalType: 'uint256[][]' },\n { name: 'pointers', type: 'uint256[][]', internalType: 'Pointer[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'constructMetadata',\n inputs: [\n { name: 'panopticPool', type: 'address', internalType: 'address' },\n { name: 'symbol0', type: 'string', internalType: 'string' },\n { name: 'symbol1', type: 'string', internalType: 'string' },\n { name: 'fee', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployNewPool',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n ],\n outputs: [\n { name: 'newPoolContract', type: 'address', internalType: 'contract PanopticPoolV2' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getApproved',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPanopticPool',\n inputs: [\n {\n name: 'keyV4',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n ],\n outputs: [{ name: '', type: 'address', internalType: 'contract PanopticPoolV2' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'minePoolAddress',\n inputs: [\n { name: 'deployerAddress', type: 'address', internalType: 'address' },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'riskEngine', type: 'address', internalType: 'address' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n { name: 'loops', type: 'uint256', internalType: 'uint256' },\n { name: 'minTargetRarity', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'bestSalt', type: 'uint96', internalType: 'uint96' },\n { name: 'highestRarity', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ownerOf',\n inputs: [{ name: 'id', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenURI',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'spender', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'operator', type: 'address', internalType: 'address', indexed: true },\n { name: 'approved', type: 'bool', internalType: 'bool', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'PoolDeployed',\n inputs: [\n {\n name: 'poolAddress',\n type: 'address',\n internalType: 'contract PanopticPoolV2',\n indexed: true,\n },\n { name: 'idV4', type: 'bytes32', internalType: 'PoolId', indexed: true },\n {\n name: 'collateralTracker0',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address', indexed: true },\n { name: 'to', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n { type: 'error', name: 'AlreadyInitialized', inputs: [] },\n { type: 'error', name: 'CreateFail', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const\n","export const PanopticHelperAbi = [\n {\n inputs: [\n { internalType: 'contract SemiFungiblePositionManager', name: 'SFPM_', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n { inputs: [], name: 'CastingError', type: 'error' },\n { inputs: [], name: 'InvalidTick', type: 'error' },\n { inputs: [], name: 'UnderOverFlow', type: 'error' },\n {\n inputs: [\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'uint256', name: 'asset', type: 'uint256' },\n { internalType: 'uint256', name: 'optionRatio', type: 'uint256' },\n { internalType: 'uint128', name: 'buysideDemand', type: 'uint128' },\n { internalType: 'uint128', name: 'preexistingSellsideLiquidity', type: 'uint128' },\n ],\n name: 'calculateRequiredSaleSize',\n outputs: [{ internalType: 'uint128', name: 'requiredSize', type: 'uint128' }],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256[4]', name: 'collateralBalances0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'collateralBalances1', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals1', type: 'uint256[4]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256', name: 'collateralBalance0', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral0', type: 'uint256' },\n { internalType: 'uint256', name: 'collateralBalance1', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral1', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateralAndGetLiquidationPrices',\n outputs: [\n { internalType: 'uint256', name: 'collateralBalance0', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral0', type: 'uint256' },\n { internalType: 'uint256', name: 'collateralBalance1', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral1', type: 'uint256' },\n { internalType: 'int24', name: 'liquidationPriceDown', type: 'int24' },\n { internalType: 'int24', name: 'liquidationPriceUp', type: 'int24' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateralListOutput',\n outputs: [\n { internalType: 'uint256[2][]', name: '', type: 'uint256[2][]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int24[]', name: '', type: 'int24[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n { internalType: 'uint256', name: 'medianData', type: 'uint256' },\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n ],\n name: 'computeInternalMedian',\n outputs: [\n { internalType: 'int24', name: '', type: 'int24' },\n { internalType: 'uint256', name: '', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n { internalType: 'uint256', name: 'cardinality', type: 'uint256' },\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n ],\n name: 'computeMedianObservedPrice',\n outputs: [{ internalType: 'int24', name: 'medianTick', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n ],\n name: 'computeMinimumSize',\n outputs: [{ internalType: 'uint128', name: 'minPositionSize', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n { internalType: 'uint128', name: 'positionSize', type: 'uint128' },\n ],\n name: 'computeSoldPositionToSatisfyLongLegs',\n outputs: [\n { internalType: 'TokenId', name: 'sellsidePosition', type: 'uint256' },\n { internalType: 'uint128', name: 'sellsidePositionSize', type: 'uint128' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getChunkData',\n outputs: [{ internalType: 'uint256[2][4][]', name: '', type: 'uint256[2][4][]' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'bool', name: 'includePendingPremium', type: 'bool' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n ],\n name: 'getNetLiquidationValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getPortfolioValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n { internalType: 'uint32', name: 'twapWindow', type: 'uint32' },\n ],\n name: 'twapFilter',\n outputs: [{ internalType: 'int24', name: '', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const SemiFungiblePositionManagerAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_factory', type: 'address', internalType: 'contract IUniswapV3Factory' },\n { name: '_minEnforcedTickFillCost', type: 'uint256', internalType: 'uint256' },\n { name: '_supplyMultiplierTickFill', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOfBatch',\n inputs: [\n { name: 'owners', type: 'address[]', internalType: 'address[]' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'balances', type: 'uint256[]', internalType: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnTokenizedPosition',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'expandEnforcedTickRange',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccountFeesBase',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: 'feesBase0', type: 'int128', internalType: 'int128' },\n { name: 'feesBase1', type: 'int128', internalType: 'int128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountLiquidity',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n ],\n outputs: [{ name: 'accountLiquidities', type: 'uint256', internalType: 'LeftRightUnsigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountPremium',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n { name: 'atTick', type: 'int24', internalType: 'int24' },\n { name: 'isLong', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: '', type: 'uint128', internalType: 'uint128' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getEnforcedTickLimits',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolId',\n inputs: [{ name: 'univ3pool', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUniswapV3PoolFromId',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [{ name: 'uniswapV3Pool', type: 'address', internalType: 'contract IUniswapV3Pool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initializeAMMPool',\n inputs: [\n { name: 'token0', type: 'address', internalType: 'address' },\n { name: 'token1', type: 'address', internalType: 'address' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'approvedForAll', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mintTokenizedPosition',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'safeBatchTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'uniswapV3MintCallback',\n inputs: [\n { name: 'amount0Owed', type: 'uint256', internalType: 'uint256' },\n { name: 'amount1Owed', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'uniswapV3SwapCallback',\n inputs: [\n { name: 'amount0Delta', type: 'int256', internalType: 'int256' },\n { name: 'amount1Delta', type: 'int256', internalType: 'int256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'EnforcedTicksUpdated',\n inputs: [\n { name: 'uniswapPool', type: 'address', indexed: true, internalType: 'address' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PoolInitialized',\n inputs: [\n { name: 'uniswapPool', type: 'address', indexed: true, internalType: 'address' },\n { name: 'poolId', type: 'uint64', indexed: false, internalType: 'uint64' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionMinted',\n inputs: [\n { name: 'caller', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferBatch',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'ids', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n { name: 'amounts', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferSingle',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'InvalidTickBound', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'InvalidUniswapCallback', inputs: [] },\n { type: 'error', name: 'NotAuthorized', inputs: [] },\n { type: 'error', name: 'NotEnoughLiquidity', inputs: [] },\n { type: 'error', name: 'PositionTooLarge', inputs: [] },\n { type: 'error', name: 'PriceBoundFail', inputs: [] },\n { type: 'error', name: 'TransferFailed', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n { type: 'error', name: 'UniswapPoolNotInitialized', inputs: [] },\n { type: 'error', name: 'UnsafeRecipient', inputs: [] },\n { type: 'error', name: 'ZeroLiquidity', inputs: [] },\n] as const\n","import { SemiFungiblePositionManagerAbi as SFPMAbi } from './SemiFungiblePositionManager'\n\nconst panopticPoolAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_sfpm',\n type: 'address',\n internalType: 'contract SemiFungiblePositionManager',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'assertMinCollateralValues',\n inputs: [\n { name: 'minValue0', type: 'uint256', internalType: 'uint256' },\n { name: 'minValue1', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collateralToken0',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'collateralToken1',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'forceExercise',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionIdListExercisee', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionIdListExercisor', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccumulatedFeesAndPositionsData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'includePendingPremium', type: 'bool', internalType: 'bool' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOracleTicks',\n inputs: [],\n outputs: [\n { name: 'currentTick', type: 'int24', internalType: 'int24' },\n { name: 'fastOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'slowOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'latestObservation', type: 'int24', internalType: 'int24' },\n { name: 'medianData', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isSafeMode',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'liquidate',\n inputs: [\n { name: 'positionIdListLiquidator', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'liquidatee', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'mintOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'effectiveLiquidityLimitX32', type: 'uint64', internalType: 'uint64' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'numberOfPositions',\n inputs: [{ name: 'user', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'pokeMedian',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'positionData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n ],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'settleLongPremium',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'legIndex', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collectPremium',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'TokenId' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'startPool',\n inputs: [\n { name: '_univ3pool', type: 'address', internalType: 'contract IUniswapV3Pool' },\n { name: 'token0', type: 'address', internalType: 'address' },\n { name: 'token1', type: 'address', internalType: 'address' },\n {\n name: 'collateralTracker0',\n type: 'address',\n internalType: 'contract CollateralTracker',\n },\n {\n name: 'collateralTracker1',\n type: 'address',\n internalType: 'contract CollateralTracker',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'univ3pool',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IUniswapV3Pool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'validateCollateralWithdrawable',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountLiquidated',\n inputs: [\n { name: 'liquidator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'liquidatee', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'bonusAmounts',\n type: 'int256',\n indexed: false,\n internalType: 'LeftRightSigned',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ForcedExercised',\n inputs: [\n { name: 'exercisor', type: 'address', indexed: true, internalType: 'address' },\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'exerciseFee',\n type: 'int256',\n indexed: false,\n internalType: 'LeftRightSigned',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'premiaByLeg',\n type: 'int256[4]',\n indexed: false,\n internalType: 'LeftRightSigned[4]',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionMinted',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'balanceData',\n type: 'uint256',\n indexed: false,\n internalType: 'PositionBalance',\n },\n {\n name: 'commissions',\n type: 'uint256',\n indexed: false,\n internalType: 'LeftRightUnsigned',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PremiumSettled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'legIndex', type: 'uint256', indexed: false, internalType: 'uint256' },\n {\n name: 'settledAmounts',\n type: 'int256',\n indexed: false,\n internalType: 'LeftRightSigned',\n },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AccountInsolvent', inputs: [] },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'EffectiveLiquidityAboveThreshold', inputs: [] },\n { type: 'error', name: 'InputListFail', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'NoLegsExercisable', inputs: [] },\n { type: 'error', name: 'NotALongLeg', inputs: [] },\n { type: 'error', name: 'NotMarginCalled', inputs: [] },\n { type: 'error', name: 'PoolAlreadyInitialized', inputs: [] },\n { type: 'error', name: 'PositionAlreadyMinted', inputs: [] },\n { type: 'error', name: 'StaleTWAP', inputs: [] },\n { type: 'error', name: 'TooManyPositionsOpen', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n] as const\n\n// Add sfpm errors to PanopticPoolABI so error types can be inferred using the (`walk` method) when PanopticPool call reverts with a custom error defined in the SFPM.\nexport const PanopticPoolAbi = [\n ...panopticPoolAbi,\n ...SFPMAbi.filter((abiEntry) => abiEntry.type === 'error'),\n] as const\n","export const SemiFungiblePositionManagerV1_1Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },\n { name: '_minEnforcedTickFillCost', type: 'uint256', internalType: 'uint256' },\n { name: '_nativeEnforcedTickFillCost', type: 'uint256', internalType: 'uint256' },\n { name: '_supplyMultiplierTickFill', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOfBatch',\n inputs: [\n { name: 'owners', type: 'address[]', internalType: 'address[]' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'balances', type: 'uint256[]', internalType: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnTokenizedPosition',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'expandEnforcedTickRange',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccountLiquidity',\n inputs: [\n { name: 'idV4', type: 'bytes32', internalType: 'PoolId' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n ],\n outputs: [{ name: 'accountLiquidities', type: 'uint256', internalType: 'LeftRightUnsigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountPremium',\n inputs: [\n { name: 'idV4', type: 'bytes32', internalType: 'PoolId' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n { name: 'atTick', type: 'int24', internalType: 'int24' },\n { name: 'isLong', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: '', type: 'uint128', internalType: 'uint128' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getEnforcedTickLimits',\n inputs: [{ name: 'idV4', type: 'bytes32', internalType: 'PoolId' }],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolId',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n outputs: [{ name: '', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolId',\n inputs: [{ name: 'idV4', type: 'bytes32', internalType: 'PoolId' }],\n outputs: [{ name: '', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUniswapV4PoolKeyFromId',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initializeAMMPool',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'approvedForAll', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mintTokenizedPosition',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeBatchTransferFrom',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'unlockCallback',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: '', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'EnforcedTicksUpdated',\n inputs: [\n { name: 'idV4', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PoolInitialized',\n inputs: [\n { name: 'idV4', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'poolId', type: 'uint64', indexed: false, internalType: 'uint64' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionMinted',\n inputs: [\n { name: 'caller', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferBatch',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'ids', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n { name: 'amounts', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferSingle',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'InvalidTickBound', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'NotAuthorized', inputs: [] },\n { type: 'error', name: 'NotEnoughLiquidity', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'PositionTooLarge', inputs: [] },\n { type: 'error', name: 'PriceBoundFail', inputs: [] },\n { type: 'error', name: 'UnauthorizedUniswapCallback', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n { type: 'error', name: 'UniswapPoolNotInitialized', inputs: [] },\n { type: 'error', name: 'UnsafeRecipient', inputs: [] },\n { type: 'error', name: 'ZeroLiquidity', inputs: [] },\n] as const\n","import { SemiFungiblePositionManagerV1_1Abi as SFPMV1_1Abi } from './SemiFungiblePositionManagerV1_1'\n\nconst panopticPoolAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_sfpm', type: 'address', internalType: 'contract SemiFungiblePositionManager' },\n { name: '_poolManager', type: 'address', internalType: 'contract IPoolManager' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'assertMinCollateralValues',\n inputs: [\n { name: 'minValue0', type: 'uint256', internalType: 'uint256' },\n { name: 'minValue1', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collateralToken0',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'collateralToken1',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'forceExercise',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionIdListExercisee', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionIdListExercisor', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'usePremiaAsCollateral', type: 'uint256', internalType: 'LeftRightUnsigned' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccumulatedFeesAndPositionsData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'includePendingPremium', type: 'bool', internalType: 'bool' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOracleTicks',\n inputs: [],\n outputs: [\n { name: 'currentTick', type: 'int24', internalType: 'int24' },\n { name: 'fastOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'slowOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'latestObservation', type: 'int24', internalType: 'int24' },\n { name: 'medianData', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n { type: 'function', name: 'initialize', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'isSafeMode',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'liquidate',\n inputs: [\n { name: 'positionIdListLiquidator', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'liquidatee', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'mintOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'effectiveLiquidityLimitX32', type: 'uint64', internalType: 'uint64' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'numberOfLegs',\n inputs: [{ name: 'user', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'oracleContract',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IV3CompatibleOracle' }],\n stateMutability: 'pure',\n },\n { type: 'function', name: 'pokeMedian', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'poolKey',\n inputs: [],\n outputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'positionData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n ],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'settleLongPremium',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'legIndex', type: 'uint256', internalType: 'uint256' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collectPremium',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'TokenId' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'validateCollateralWithdrawable',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountLiquidated',\n inputs: [\n { name: 'liquidator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'liquidatee', type: 'address', indexed: true, internalType: 'address' },\n { name: 'bonusAmounts', type: 'int256', indexed: false, internalType: 'LeftRightSigned' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ForcedExercised',\n inputs: [\n { name: 'exercisor', type: 'address', indexed: true, internalType: 'address' },\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'exerciseFee', type: 'int256', indexed: false, internalType: 'LeftRightSigned' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'premiaByLeg',\n type: 'int256[4]',\n indexed: false,\n internalType: 'LeftRightSigned[4]',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionMinted',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'balanceData', type: 'uint256', indexed: false, internalType: 'PositionBalance' },\n { name: 'commissions', type: 'uint256', indexed: false, internalType: 'LeftRightUnsigned' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PremiumSettled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'legIndex', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'settledAmounts', type: 'int256', indexed: false, internalType: 'LeftRightSigned' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AccountInsolvent', inputs: [] },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'EffectiveLiquidityAboveThreshold', inputs: [] },\n { type: 'error', name: 'InputListFail', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'NoLegsExercisable', inputs: [] },\n { type: 'error', name: 'NotALongLeg', inputs: [] },\n { type: 'error', name: 'NotMarginCalled', inputs: [] },\n { type: 'error', name: 'PoolAlreadyInitialized', inputs: [] },\n { type: 'error', name: 'PositionAlreadyMinted', inputs: [] },\n { type: 'error', name: 'StaleOracle', inputs: [] },\n { type: 'error', name: 'TooManyLegsOpen', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n] as const\n\n// Add sfpm errors to PanopticPoolABI so error types can be inferred using the (`walk` method) when PanopticPool call reverts with a custom error defined in the SFPM.\nexport const PanopticPoolV1_1Abi = [\n ...panopticPoolAbi,\n ...SFPMV1_1Abi.filter((abiEntry) => abiEntry.type === 'error'),\n] as const\n","export const PanopticQueryV1_1Abi = [\n {\n inputs: [\n { internalType: 'contract SemiFungiblePositionManager', name: 'SFPM_', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n { inputs: [], name: 'CastingError', type: 'error' },\n { inputs: [], name: 'InvalidTick', type: 'error' },\n { inputs: [], name: 'UnderOverFlow', type: 'error' },\n {\n inputs: [\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'uint256', name: 'asset', type: 'uint256' },\n { internalType: 'uint256', name: 'optionRatio', type: 'uint256' },\n { internalType: 'uint128', name: 'buysideDemand', type: 'uint128' },\n { internalType: 'uint128', name: 'preexistingSellsideLiquidity', type: 'uint128' },\n ],\n name: 'calculateRequiredSaleSize',\n outputs: [{ internalType: 'uint128', name: 'requiredSize', type: 'uint128' }],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256[4]', name: 'collateralBalances0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'collateralBalances1', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals1', type: 'uint256[4]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256', name: 'collateralBalance0', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral0', type: 'uint256' },\n { internalType: 'uint256', name: 'collateralBalance1', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral1', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n { internalType: 'uint256', name: 'medianData', type: 'uint256' },\n { internalType: 'contract IV3CompatibleOracle', name: 'oracleContract', type: 'address' },\n ],\n name: 'computeInternalMedian',\n outputs: [\n { internalType: 'int24', name: '', type: 'int24' },\n { internalType: 'uint256', name: '', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IV3CompatibleOracle', name: 'oracleContract', type: 'address' },\n { internalType: 'uint256', name: 'cardinality', type: 'uint256' },\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n ],\n name: 'computeMedianObservedPrice',\n outputs: [{ internalType: 'int24', name: 'medianTick', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n ],\n name: 'computeMinimumSize',\n outputs: [{ internalType: 'uint128', name: 'minPositionSize', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n { internalType: 'uint128', name: 'positionSize', type: 'uint128' },\n ],\n name: 'computeSoldPositionToSatisfyLongLegs',\n outputs: [\n { internalType: 'TokenId', name: 'sellsidePosition', type: 'uint256' },\n { internalType: 'uint128', name: 'sellsidePositionSize', type: 'uint128' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getChunkData',\n outputs: [{ internalType: 'uint256[2][4][]', name: '', type: 'uint256[2][4][]' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'bool', name: 'includePendingPremium', type: 'bool' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n ],\n name: 'getNetLiquidationValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getPortfolioValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IV3CompatibleOracle', name: 'oracleContract', type: 'address' },\n { internalType: 'uint32', name: 'twapWindow', type: 'uint32' },\n ],\n name: 'twapFilter',\n outputs: [{ internalType: 'int24', name: '', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const PanopticVaultAccountantAbi = [\n {\n type: 'constructor',\n inputs: [\n { internalType: 'address', name: 'owner', type: 'address' },\n { internalType: 'address', name: '_wethAddress', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'DuplicateERC4626', inputs: [] },\n { type: 'error', name: 'DuplicatePool', inputs: [] },\n { type: 'error', name: 'ERC4626UnderlyingMismatch', inputs: [] },\n { type: 'error', name: 'IncorrectPositionList', inputs: [] },\n { type: 'error', name: 'InvalidERC4626Vaults', inputs: [] },\n { type: 'error', name: 'InvalidPools', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'LiquidityTooHigh', inputs: [] },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n },\n { type: 'error', name: 'StaleOraclePrice', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n { type: 'error', name: 'VaultLocked', inputs: [] },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'previousOwner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'computeNAV',\n inputs: [\n { internalType: 'address', name: 'vault', type: 'address' },\n { internalType: 'address', name: 'underlyingToken', type: 'address' },\n { internalType: 'bytes', name: 'managerInput', type: 'bytes' },\n ],\n outputs: [{ internalType: 'uint256', name: 'nav', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'lockVault',\n inputs: [{ internalType: 'address', name: 'vault', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateHashes',\n inputs: [\n { internalType: 'address', name: 'vault', type: 'address' },\n {\n internalType: 'struct PanopticVaultAccountant.PoolInfo[]',\n name: 'pools',\n type: 'tuple[]',\n components: [\n { internalType: 'contract PanopticPoolV2', name: 'pool', type: 'address' },\n { internalType: 'contract IERC20Partial', name: 'token0', type: 'address' },\n { internalType: 'contract IERC20Partial', name: 'token1', type: 'address' },\n { internalType: 'int24', name: 'maxPriceDeviation', type: 'int24' },\n ],\n },\n {\n internalType: 'contract IERC4626[]',\n name: 'erc4626Vaults',\n type: 'address[]',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vaultHashes',\n inputs: [\n { internalType: 'address', name: 'vault', type: 'address' },\n { internalType: 'uint256', name: '', type: 'uint256' },\n ],\n outputs: [{ internalType: 'bytes32', name: 'hashes', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'vaultLocked',\n inputs: [{ internalType: 'address', name: 'vault', type: 'address' }],\n outputs: [{ internalType: 'bool', name: 'isLocked', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'wethAddress',\n inputs: [],\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n },\n] as const\n","export const PanopticVaultAccountantManagerInputAbi = [\n {\n type: 'tuple[]',\n components: [\n { name: 'poolPrice', type: 'int24' },\n { name: 'token0Price', type: 'int24' },\n { name: 'token1Price', type: 'int24' },\n ],\n },\n {\n type: 'tuple[]',\n components: [\n { name: 'pool', type: 'address' },\n { name: 'token0', type: 'address' },\n { name: 'token1', type: 'address' },\n { name: 'maxPriceDeviation', type: 'int24' },\n ],\n },\n { type: 'uint256[][]' }, // TokenId[][]\n { type: 'address[]' }, // IERC4626[]\n] as const\n","export const PoolManagerAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'initialOwner', type: 'address', internalType: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burn',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'clear',\n inputs: [\n { name: 'currency', type: 'address', internalType: 'Currency' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collectProtocolFees',\n inputs: [\n { name: 'recipient', type: 'address', internalType: 'address' },\n { name: 'currency', type: 'address', internalType: 'Currency' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'amountCollected', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'donate',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'amount0', type: 'uint256', internalType: 'uint256' },\n { name: 'amount1', type: 'uint256', internalType: 'uint256' },\n { name: 'hookData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: 'delta', type: 'int256', internalType: 'BalanceDelta' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'extsload',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'extsload',\n inputs: [\n { name: 'startSlot', type: 'bytes32', internalType: 'bytes32' },\n { name: 'nSlots', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'extsload',\n inputs: [{ name: 'slots', type: 'bytes32[]', internalType: 'bytes32[]' }],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'exttload',\n inputs: [{ name: 'slots', type: 'bytes32[]', internalType: 'bytes32[]' }],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'exttload',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'sqrtPriceX96', type: 'uint160', internalType: 'uint160' },\n ],\n outputs: [{ name: 'tick', type: 'int24', internalType: 'int24' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isOperator',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'isOperator', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'modifyLiquidity',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct IPoolManager.ModifyLiquidityParams',\n components: [\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n { name: 'liquidityDelta', type: 'int256', internalType: 'int256' },\n { name: 'salt', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n { name: 'hookData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [\n { name: 'callerDelta', type: 'int256', internalType: 'BalanceDelta' },\n { name: 'feesAccrued', type: 'int256', internalType: 'BalanceDelta' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'protocolFeeController',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'protocolFeesAccrued',\n inputs: [{ name: 'currency', type: 'address', internalType: 'Currency' }],\n outputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setOperator',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOwner',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setProtocolFee',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'newProtocolFee', type: 'uint24', internalType: 'uint24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setProtocolFeeController',\n inputs: [{ name: 'controller', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'settle',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'settleFor',\n inputs: [{ name: 'recipient', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'swap',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct IPoolManager.SwapParams',\n components: [\n { name: 'zeroForOne', type: 'bool', internalType: 'bool' },\n { name: 'amountSpecified', type: 'int256', internalType: 'int256' },\n { name: 'sqrtPriceLimitX96', type: 'uint160', internalType: 'uint160' },\n ],\n },\n { name: 'hookData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: 'swapDelta', type: 'int256', internalType: 'BalanceDelta' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'sync',\n inputs: [{ name: 'currency', type: 'address', internalType: 'Currency' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'take',\n inputs: [\n { name: 'currency', type: 'address', internalType: 'Currency' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'sender', type: 'address', internalType: 'address' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unlock',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateDynamicLPFee',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'newDynamicLPFee', type: 'uint24', internalType: 'uint24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Donate',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount0', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount1', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialize',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'currency0', type: 'address', indexed: true, internalType: 'Currency' },\n { name: 'currency1', type: 'address', indexed: true, internalType: 'Currency' },\n { name: 'fee', type: 'uint24', indexed: false, internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'hooks', type: 'address', indexed: false, internalType: 'contract IHooks' },\n { name: 'sqrtPriceX96', type: 'uint160', indexed: false, internalType: 'uint160' },\n { name: 'tick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ModifyLiquidity',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tickLower', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'liquidityDelta', type: 'int256', indexed: false, internalType: 'int256' },\n { name: 'salt', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OperatorSet',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnerUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolFeeControllerUpdated',\n inputs: [\n { name: 'protocolFeeController', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolFeeUpdated',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'protocolFee', type: 'uint24', indexed: false, internalType: 'uint24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Swap',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount0', type: 'int128', indexed: false, internalType: 'int128' },\n { name: 'amount1', type: 'int128', indexed: false, internalType: 'int128' },\n { name: 'sqrtPriceX96', type: 'uint160', indexed: false, internalType: 'uint160' },\n { name: 'liquidity', type: 'uint128', indexed: false, internalType: 'uint128' },\n { name: 'tick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'fee', type: 'uint24', indexed: false, internalType: 'uint24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'caller', type: 'address', indexed: false, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AlreadyUnlocked', inputs: [] },\n {\n type: 'error',\n name: 'CurrenciesOutOfOrderOrEqual',\n inputs: [\n { name: 'currency0', type: 'address', internalType: 'address' },\n { name: 'currency1', type: 'address', internalType: 'address' },\n ],\n },\n { type: 'error', name: 'CurrencyNotSettled', inputs: [] },\n { type: 'error', name: 'DelegateCallNotAllowed', inputs: [] },\n { type: 'error', name: 'InvalidCaller', inputs: [] },\n { type: 'error', name: 'ManagerLocked', inputs: [] },\n { type: 'error', name: 'MustClearExactPositiveDelta', inputs: [] },\n { type: 'error', name: 'NonzeroNativeValue', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'ProtocolFeeCurrencySynced', inputs: [] },\n {\n type: 'error',\n name: 'ProtocolFeeTooLarge',\n inputs: [{ name: 'fee', type: 'uint24', internalType: 'uint24' }],\n },\n { type: 'error', name: 'SwapAmountCannotBeZero', inputs: [] },\n {\n type: 'error',\n name: 'TickSpacingTooLarge',\n inputs: [{ name: 'tickSpacing', type: 'int24', internalType: 'int24' }],\n },\n {\n type: 'error',\n name: 'TickSpacingTooSmall',\n inputs: [{ name: 'tickSpacing', type: 'int24', internalType: 'int24' }],\n },\n { type: 'error', name: 'UnauthorizedDynamicLPFeeUpdate', inputs: [] },\n] as const\n","export const RescueDistributorAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'merkleRoot_', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokens_', type: 'address[]', internalType: 'address[]' },\n { name: 'withdrawableAt_', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'admin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'claim',\n inputs: [\n { name: 'index', type: 'uint256', internalType: 'uint256' },\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'merkleProof', type: 'bytes32[]', internalType: 'bytes32[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isClaimed',\n inputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'merkleRoot',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'supportedTokens',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenList',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdrawUnclaimed',\n inputs: [\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'to', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdrawableAt',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'Claimed',\n inputs: [\n { name: 'index', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'account', type: 'address', indexed: false, internalType: 'address' },\n { name: 'tokens', type: 'address[]', indexed: false, internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AlreadyClaimed', inputs: [] },\n { type: 'error', name: 'InvalidProof', inputs: [] },\n { type: 'error', name: 'OnlyAdmin', inputs: [] },\n { type: 'error', name: 'TokensAmountsMismatch', inputs: [] },\n { type: 'error', name: 'WithdrawTooEarly', inputs: [] },\n] as const\n","import { parseAbi } from 'viem'\n\nexport const Simple7702AccountAbi = parseAbi([\n 'function executeBatch((address target,uint256 value,bytes data)[] calls)',\n 'error ExecuteError(uint256 callIndex, bytes revertData)',\n])\n","export const StateViewAbi = [\n {\n inputs: [{ internalType: 'contract IPoolManager', name: '_poolManager', type: 'address' }],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [{ internalType: 'PoolId', name: 'poolId', type: 'bytes32' }],\n name: 'getFeeGrowthGlobals',\n outputs: [\n { internalType: 'uint256', name: 'feeGrowthGlobal0', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthGlobal1', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n ],\n name: 'getFeeGrowthInside',\n outputs: [\n { internalType: 'uint256', name: 'feeGrowthInside0X128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1X128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'PoolId', name: 'poolId', type: 'bytes32' }],\n name: 'getLiquidity',\n outputs: [{ internalType: 'uint128', name: 'liquidity', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'bytes32', name: 'positionId', type: 'bytes32' },\n ],\n name: 'getPositionInfo',\n outputs: [\n { internalType: 'uint128', name: 'liquidity', type: 'uint128' },\n { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'address', name: 'owner', type: 'address' },\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'bytes32', name: 'salt', type: 'bytes32' },\n ],\n name: 'getPositionInfo',\n outputs: [\n { internalType: 'uint128', name: 'liquidity', type: 'uint128' },\n { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'bytes32', name: 'positionId', type: 'bytes32' },\n ],\n name: 'getPositionLiquidity',\n outputs: [{ internalType: 'uint128', name: 'liquidity', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'PoolId', name: 'poolId', type: 'bytes32' }],\n name: 'getSlot0',\n outputs: [\n { internalType: 'uint160', name: 'sqrtPriceX96', type: 'uint160' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n { internalType: 'uint24', name: 'protocolFee', type: 'uint24' },\n { internalType: 'uint24', name: 'lpFee', type: 'uint24' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int16', name: 'tick', type: 'int16' },\n ],\n name: 'getTickBitmap',\n outputs: [{ internalType: 'uint256', name: 'tickBitmap', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n ],\n name: 'getTickFeeGrowthOutside',\n outputs: [\n { internalType: 'uint256', name: 'feeGrowthOutside0X128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthOutside1X128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n ],\n name: 'getTickInfo',\n outputs: [\n { internalType: 'uint128', name: 'liquidityGross', type: 'uint128' },\n { internalType: 'int128', name: 'liquidityNet', type: 'int128' },\n { internalType: 'uint256', name: 'feeGrowthOutside0X128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthOutside1X128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n ],\n name: 'getTickLiquidity',\n outputs: [\n { internalType: 'uint128', name: 'liquidityGross', type: 'uint128' },\n { internalType: 'int128', name: 'liquidityNet', type: 'int128' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolManager',\n outputs: [{ internalType: 'contract IPoolManager', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapHelperAbi = [\n {\n inputs: [\n { internalType: 'contract IUniswapV3Factory', name: '_factory', type: 'address' },\n { internalType: 'contract INonfungiblePositionManager', name: '_NFPM', type: 'address' },\n { internalType: 'contract SemiFungiblePositionManager', name: '_SFPM', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n {\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n name: 'getNfpmPositionsForAccount',\n outputs: [\n {\n components: [\n { internalType: 'uint96', name: 'nonce', type: 'uint96' },\n { internalType: 'address', name: 'operator', type: 'address' },\n { internalType: 'address', name: 'token0', type: 'address' },\n { internalType: 'address', name: 'token1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'uint128', name: 'liquidity', type: 'uint128' },\n { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' },\n { internalType: 'uint128', name: 'tokensOwed0', type: 'uint128' },\n { internalType: 'uint128', name: 'tokensOwed1', type: 'uint128' },\n { internalType: 'string', name: 'tokenURI', type: 'string' },\n ],\n internalType: 'struct UniswapHelper.PositionWithTokenURI[]',\n name: 'positionsWithTokenURI',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' }],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n { internalType: 'int24', name: 'startTick', type: 'int24' },\n { internalType: 'uint256', name: 'nTicks', type: 'uint256' },\n ],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: 'tokenId', type: 'uint256' }],\n name: 'plotPnL',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'pool', type: 'address' }],\n name: 'plotPoolLiquidity',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapHelperV1_1Abi = [\n {\n inputs: [\n { internalType: 'contract IPoolManager', name: '_V4_POOLM', type: 'address' },\n { internalType: 'contract IPositionManager', name: '_V4_POSM', type: 'address' },\n { internalType: 'contract SemiFungiblePositionManager', name: '_SFPM', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'Currency', name: 'currency0', type: 'address' },\n { internalType: 'Currency', name: 'currency1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickSpacing', type: 'int24' },\n { internalType: 'contract IHooks', name: 'hooks', type: 'address' },\n ],\n internalType: 'struct PoolKey',\n name: 'poolKey',\n type: 'tuple',\n },\n ],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'Currency', name: 'currency0', type: 'address' },\n { internalType: 'Currency', name: 'currency1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickSpacing', type: 'int24' },\n { internalType: 'contract IHooks', name: 'hooks', type: 'address' },\n ],\n internalType: 'struct PoolKey',\n name: 'poolKey',\n type: 'tuple',\n },\n { internalType: 'int24', name: 'startTick', type: 'int24' },\n { internalType: 'uint256', name: 'nTicks', type: 'uint256' },\n ],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: 'tokenId', type: 'uint256' }],\n name: 'plotPnL',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'Currency', name: 'currency0', type: 'address' },\n { internalType: 'Currency', name: 'currency1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickSpacing', type: 'int24' },\n { internalType: 'contract IHooks', name: 'hooks', type: 'address' },\n ],\n internalType: 'struct PoolKey',\n name: 'poolKey',\n type: 'tuple',\n },\n ],\n name: 'plotPoolLiquidity',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapMigratorAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_NFPM',\n type: 'address',\n internalType: 'contract INonfungiblePositionManager',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'migrate',\n inputs: [\n { name: 'tokenIds', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'amountMins', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n { name: 'ct0', type: 'address', internalType: 'contract CollateralTracker' },\n { name: 'ct1', type: 'address', internalType: 'contract CollateralTracker' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n { type: 'error', name: 'UnauthorizedMigration', inputs: [] },\n] as const\n","export const UniswapV3FactoryAbi = [\n {\n inputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'constructor',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n ],\n name: 'FeeAmountEnabled',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'oldOwner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'OwnerChanged',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n indexed: false,\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n ],\n name: 'PoolCreated',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'tokenA',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'tokenB',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n ],\n name: 'createPool',\n outputs: [\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n ],\n name: 'enableFeeAmount',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint24',\n name: '',\n type: 'uint24',\n },\n ],\n name: 'feeAmountTickSpacing',\n outputs: [\n {\n internalType: 'int24',\n name: '',\n type: 'int24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: '',\n type: 'uint24',\n },\n ],\n name: 'getPool',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'parameters',\n outputs: [\n {\n internalType: 'address',\n name: 'factory',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_owner',\n type: 'address',\n },\n ],\n name: 'setOwner',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n] as const\n","export const UniswapV3PoolAbi = [\n {\n inputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'constructor',\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: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'Burn',\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: false,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n name: 'Collect',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n name: 'CollectProtocol',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'paid0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'paid1',\n type: 'uint256',\n },\n ],\n name: 'Flash',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint16',\n name: 'observationCardinalityNextOld',\n type: 'uint16',\n },\n {\n indexed: false,\n internalType: 'uint16',\n name: 'observationCardinalityNextNew',\n type: 'uint16',\n },\n ],\n name: 'IncreaseObservationCardinalityNext',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n {\n indexed: false,\n internalType: 'int24',\n name: 'tick',\n type: 'int24',\n },\n ],\n name: 'Initialize',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'Mint',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol0Old',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol1Old',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol0New',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol1New',\n type: 'uint8',\n },\n ],\n name: 'SetFeeProtocol',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'int256',\n name: 'amount0',\n type: 'int256',\n },\n {\n indexed: false,\n internalType: 'int256',\n name: 'amount1',\n type: 'int256',\n },\n {\n indexed: false,\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'int24',\n name: 'tick',\n type: 'int24',\n },\n ],\n name: 'Swap',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n ],\n name: 'burn',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'amount0Requested',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1Requested',\n type: 'uint128',\n },\n ],\n name: 'collect',\n outputs: [\n {\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint128',\n name: 'amount0Requested',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1Requested',\n type: 'uint128',\n },\n ],\n name: 'collectProtocol',\n outputs: [\n {\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'factory',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'fee',\n outputs: [\n {\n internalType: 'uint24',\n name: '',\n type: 'uint24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'feeGrowthGlobal0X128',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'feeGrowthGlobal1X128',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'flash',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint16',\n name: 'observationCardinalityNext',\n type: 'uint16',\n },\n ],\n name: 'increaseObservationCardinalityNext',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'liquidity',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'maxLiquidityPerTick',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'mint',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'observations',\n outputs: [\n {\n internalType: 'uint32',\n name: 'blockTimestamp',\n type: 'uint32',\n },\n {\n internalType: 'int56',\n name: 'tickCumulative',\n type: 'int56',\n },\n {\n internalType: 'uint160',\n name: 'secondsPerLiquidityCumulativeX128',\n type: 'uint160',\n },\n {\n internalType: 'bool',\n name: 'initialized',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32[]',\n name: 'secondsAgos',\n type: 'uint32[]',\n },\n ],\n name: 'observe',\n outputs: [\n {\n internalType: 'int56[]',\n name: 'tickCumulatives',\n type: 'int56[]',\n },\n {\n internalType: 'uint160[]',\n name: 'secondsPerLiquidityCumulativeX128s',\n type: 'uint160[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n name: 'positions',\n outputs: [\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed1',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'protocolFees',\n outputs: [\n {\n internalType: 'uint128',\n name: 'token0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'token1',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'feeProtocol0',\n type: 'uint8',\n },\n {\n internalType: 'uint8',\n name: 'feeProtocol1',\n type: 'uint8',\n },\n ],\n name: 'setFeeProtocol',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'slot0',\n outputs: [\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n {\n internalType: 'int24',\n name: 'tick',\n type: 'int24',\n },\n {\n internalType: 'uint16',\n name: 'observationIndex',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'observationCardinality',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'observationCardinalityNext',\n type: 'uint16',\n },\n {\n internalType: 'uint8',\n name: 'feeProtocol',\n type: 'uint8',\n },\n {\n internalType: 'bool',\n name: 'unlocked',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n ],\n name: 'snapshotCumulativesInside',\n outputs: [\n {\n internalType: 'int56',\n name: 'tickCumulativeInside',\n type: 'int56',\n },\n {\n internalType: 'uint160',\n name: 'secondsPerLiquidityInsideX128',\n type: 'uint160',\n },\n {\n internalType: 'uint32',\n name: 'secondsInside',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'zeroForOne',\n type: 'bool',\n },\n {\n internalType: 'int256',\n name: 'amountSpecified',\n type: 'int256',\n },\n {\n internalType: 'uint160',\n name: 'sqrtPriceLimitX96',\n type: 'uint160',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'swap',\n outputs: [\n {\n internalType: 'int256',\n name: 'amount0',\n type: 'int256',\n },\n {\n internalType: 'int256',\n name: 'amount1',\n type: 'int256',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'int16',\n name: '',\n type: 'int16',\n },\n ],\n name: 'tickBitmap',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'tickSpacing',\n outputs: [\n {\n internalType: 'int24',\n name: '',\n type: 'int24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'int24',\n name: '',\n type: 'int24',\n },\n ],\n name: 'ticks',\n outputs: [\n {\n internalType: 'uint128',\n name: 'liquidityGross',\n type: 'uint128',\n },\n {\n internalType: 'int128',\n name: 'liquidityNet',\n type: 'int128',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n },\n {\n internalType: 'int56',\n name: 'tickCumulativeOutside',\n type: 'int56',\n },\n {\n internalType: 'uint160',\n name: 'secondsPerLiquidityOutsideX128',\n type: 'uint160',\n },\n {\n internalType: 'uint32',\n name: 'secondsOutside',\n type: 'uint32',\n },\n {\n internalType: 'bool',\n name: 'initialized',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token0',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token1',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const WETHAbi = [\n {\n constant: true,\n inputs: [],\n name: 'name',\n outputs: [{ name: '', type: 'string' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'guy', type: 'address' },\n { name: 'wad', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'src', type: 'address' },\n { name: 'dst', type: 'address' },\n { name: 'wad', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: false,\n inputs: [{ name: 'wad', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', type: 'string' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'dst', type: 'address' },\n { name: 'wad', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: false,\n inputs: [],\n name: 'deposit',\n outputs: [],\n payable: true,\n stateMutability: 'payable',\n type: 'function',\n },\n {\n constant: true,\n inputs: [\n { name: '', type: 'address' },\n { name: '', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n { payable: true, stateMutability: 'payable', type: 'fallback' },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'src', type: 'address' },\n { indexed: true, name: 'guy', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'src', type: 'address' },\n { indexed: true, name: 'dst', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'dst', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'src', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Withdrawal',\n type: 'event',\n },\n] as const\n","//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BuilderFactory\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const builderFactoryAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'OWNER',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'builderCode', internalType: 'uint48', type: 'uint48' },\n { name: 'builderAdmin', internalType: 'address', type: 'address' },\n ],\n name: 'deployBuilder',\n outputs: [{ name: 'wallet', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'builderCode', internalType: 'uint48', type: 'uint48' }],\n name: 'predictBuilderWallet',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'builderCode',\n internalType: 'uint48',\n type: 'uint48',\n indexed: true,\n },\n {\n name: 'wallet',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'builderAdmin',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n ],\n name: 'BuilderWalletDeployed',\n },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BuilderWallet\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const builderWalletAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'factory', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'FACTORY',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'builderAdmin',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: '_builderAdmin', internalType: 'address', type: 'address' }],\n name: 'init',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n ],\n name: 'sweep',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'builderAdmin',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n ],\n name: 'BuilderWalletInitialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'token',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TokensSwept',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'NotBuilder' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CollateralTrackerV2\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const collateralTrackerV2Abi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n inputs: [],\n name: 'accrueInterest',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: 'allowance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'asset',\n outputs: [{ name: 'assetTokenAddress', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'assetsAndInterest',\n outputs: [\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'assetsOf',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'borrowIndex',\n outputs: [{ name: '', internalType: 'uint80', type: 'uint80' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n name: 'convertToAssets',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n name: 'convertToShares',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'delegatee', internalType: 'address', type: 'address' }],\n name: 'delegate',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'assets', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n ],\n name: 'deposit',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getPoolData',\n outputs: [\n { name: 'depositedAssets', internalType: 'uint256', type: 'uint256' },\n { name: 'insideAMM', internalType: 'uint256', type: 'uint256' },\n { name: 'creditedShares', internalType: 'uint256', type: 'uint256' },\n {\n name: 'currentPoolUtilization',\n internalType: 'uint256',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'interestRate',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n name: 'interestState',\n outputs: [\n { name: 'userBorrowIndex', internalType: 'int128', type: 'int128' },\n { name: 'netBorrows', internalType: 'int128', type: 'int128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'lastInteractionTimestamp',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'address', type: 'address' }],\n name: 'maxDeposit',\n outputs: [{ name: 'maxAssets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'address', type: 'address' }],\n name: 'maxMint',\n outputs: [{ name: 'maxShares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'maxRedeem',\n outputs: [{ name: 'maxShares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'maxWithdraw',\n outputs: [{ name: 'maxAssets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'shares', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n ],\n name: 'mint',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'owedInterest',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'panopticPool',\n outputs: [{ name: '', internalType: 'contract PanopticPoolV2', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolFee',\n outputs: [{ name: '_poolFee', internalType: 'uint24', type: 'uint24' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolManager',\n outputs: [{ name: '', internalType: 'contract IPoolManager', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n name: 'previewDeposit',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n name: 'previewMint',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'previewOwedInterest',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n name: 'previewRedeem',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n name: 'previewWithdraw',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'rateAtTarget',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'shares', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'redeem',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'refunder', internalType: 'address', type: 'address' },\n { name: 'refundee', internalType: 'address', type: 'address' },\n { name: 'assets', internalType: 'int256', type: 'int256' },\n ],\n name: 'refund',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'delegatee', internalType: 'address', type: 'address' }],\n name: 'revoke',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'riskEngine',\n outputs: [{ name: '', internalType: 'contract IRiskEngine', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'optionOwner', internalType: 'address', type: 'address' },\n { name: 'longAmount', internalType: 'int128', type: 'int128' },\n { name: 'shortAmount', internalType: 'int128', type: 'int128' },\n { name: 'ammDeltaAmount', internalType: 'int128', type: 'int128' },\n { name: 'realizedPremium', internalType: 'int128', type: 'int128' },\n {\n name: 'riskParameters',\n internalType: 'RiskParameters',\n type: 'uint256',\n },\n ],\n name: 'settleBurn',\n outputs: [{ name: '', internalType: 'int128', type: 'int128' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'liquidator', internalType: 'address', type: 'address' },\n { name: 'liquidatee', internalType: 'address', type: 'address' },\n { name: 'bonus', internalType: 'int256', type: 'int256' },\n ],\n name: 'settleLiquidation',\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'optionOwner', internalType: 'address', type: 'address' },\n { name: 'longAmount', internalType: 'int128', type: 'int128' },\n { name: 'shortAmount', internalType: 'int128', type: 'int128' },\n { name: 'ammDeltaAmount', internalType: 'int128', type: 'int128' },\n {\n name: 'riskParameters',\n internalType: 'RiskParameters',\n type: 'uint256',\n },\n ],\n name: 'settleMint',\n outputs: [\n { name: '', internalType: 'uint32', type: 'uint32' },\n { name: '', internalType: 'int128', type: 'int128' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'token0',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'token1',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalAssets',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'underlyingIsToken0',\n outputs: [{ name: '_underlyingIsToken0', internalType: 'bool', type: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'underlyingToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],\n name: 'unlockCallback',\n outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'unrealizedGlobalInterest',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'assets', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'withdraw',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'assets', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'usePremiaAsCollateral', internalType: 'bool', type: 'bool' },\n ],\n name: 'withdraw',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'spender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'builder',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'commissionPaidProtocol',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n {\n name: 'commissionPaidBuilder',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'CommissionPaid',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'sender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'assets',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'shares',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Deposit',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'interestOwed',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'interestPaid',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'sharesBurned',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'InsolvencyPenaltyApplied',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'liquidatee',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'liquidator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'protocolLossAssets',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'protocolLossShares',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'ProtocolLossRealized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Transfer',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'sender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'receiver',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'assets',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'shares',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Withdraw',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'BelowMinimumRedemption' },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'DepositTooLarge' },\n { type: 'error', inputs: [], name: 'ExceedsMaximumRedemption' },\n {\n type: 'error',\n inputs: [\n { name: 'tokenAddress', internalType: 'address', type: 'address' },\n { name: 'assetsRequested', internalType: 'uint256', type: 'uint256' },\n { name: 'assetBalance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'NotEnoughTokens',\n },\n { type: 'error', inputs: [], name: 'NotPanopticPool' },\n { type: 'error', inputs: [], name: 'PositionCountNotZero' },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'UnauthorizedUniswapCallback' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticFactoryV3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticFactoryV3Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_SFPM', internalType: 'contract SemiFungiblePositionManagerV3', type: 'address' },\n { name: '_univ3Factory', internalType: 'contract IUniswapV3Factory', type: 'address' },\n { name: '_poolReference', internalType: 'address', type: 'address' },\n { name: '_collateralReference', internalType: 'address', type: 'address' },\n { name: 'properties', internalType: 'bytes32[]', type: 'bytes32[]' },\n { name: 'indices', internalType: 'uint256[][]', type: 'uint256[][]' },\n { name: 'pointers', internalType: 'Pointer[][]', type: 'uint256[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'panopticPool', internalType: 'address', type: 'address' },\n { name: 'symbol0', internalType: 'string', type: 'string' },\n { name: 'symbol1', internalType: 'string', type: 'string' },\n { name: 'fee', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'constructMetadata',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token0', internalType: 'address', type: 'address' },\n { name: 'token1', internalType: 'address', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'riskEngine', internalType: 'contract IRiskEngine', type: 'address' },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n ],\n name: 'deployNewPool',\n outputs: [\n { name: 'newPoolContract', internalType: 'contract PanopticPoolV2', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n name: 'getApproved',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'univ3pool', internalType: 'contract IUniswapV3Pool', type: 'address' },\n { name: 'riskEngine', internalType: 'contract IRiskEngine', type: 'address' },\n ],\n name: 'getPanopticPool',\n outputs: [{ name: '', internalType: 'contract PanopticPoolV2', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'deployerAddress', internalType: 'address', type: 'address' },\n { name: 'v3Pool', internalType: 'address', type: 'address' },\n { name: 'riskEngine', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n { name: 'loops', internalType: 'uint256', type: 'uint256' },\n { name: 'minTargetRarity', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'minePoolAddress',\n outputs: [\n { name: 'bestSalt', internalType: 'uint96', type: 'uint96' },\n { name: 'highestRarity', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n name: 'ownerOf',\n outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n name: 'tokenURI',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'poolAddress',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n indexed: true,\n },\n {\n name: 'uniswapPool',\n internalType: 'contract IUniswapV3Pool',\n type: 'address',\n indexed: true,\n },\n {\n name: 'collateralTracker0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n { name: 'riskEngine', internalType: 'contract IRiskEngine', type: 'address', indexed: false },\n ],\n name: 'PoolDeployed',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Transfer',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'CreateFail' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticFactoryV4\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticFactoryV4Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_SFPM',\n internalType: 'contract SemiFungiblePositionManagerV4',\n type: 'address',\n },\n {\n name: '_manager',\n internalType: 'contract IPoolManager',\n type: 'address',\n },\n { name: '_poolReference', internalType: 'address', type: 'address' },\n {\n name: '_collateralReference',\n internalType: 'address',\n type: 'address',\n },\n { name: 'properties', internalType: 'bytes32[]', type: 'bytes32[]' },\n { name: 'indices', internalType: 'uint256[][]', type: 'uint256[][]' },\n { name: 'pointers', internalType: 'Pointer[][]', type: 'uint256[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'panopticPool', internalType: 'address', type: 'address' },\n { name: 'symbol0', internalType: 'string', type: 'string' },\n { name: 'symbol1', internalType: 'string', type: 'string' },\n { name: 'fee', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'constructMetadata',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'key',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n {\n name: 'riskEngine',\n internalType: 'contract IRiskEngine',\n type: 'address',\n },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n ],\n name: 'deployNewPool',\n outputs: [\n {\n name: 'newPoolContract',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n name: 'getApproved',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'keyV4',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n {\n name: 'riskEngine',\n internalType: 'contract IRiskEngine',\n type: 'address',\n },\n ],\n name: 'getPanopticPool',\n outputs: [{ name: '', internalType: 'contract PanopticPoolV2', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'deployerAddress', internalType: 'address', type: 'address' },\n {\n name: 'key',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n { name: 'riskEngine', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n { name: 'loops', internalType: 'uint256', type: 'uint256' },\n { name: 'minTargetRarity', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'minePoolAddress',\n outputs: [\n { name: 'bestSalt', internalType: 'uint96', type: 'uint96' },\n { name: 'highestRarity', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n name: 'ownerOf',\n outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n name: 'tokenURI',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'spender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'poolAddress',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n indexed: true,\n },\n { name: 'idV4', internalType: 'PoolId', type: 'bytes32', indexed: true },\n {\n name: 'collateralTracker0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n {\n name: 'riskEngine',\n internalType: 'contract IRiskEngine',\n type: 'address',\n indexed: false,\n },\n ],\n name: 'PoolDeployed',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Transfer',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'CreateFail' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticPoolV2\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticPoolV2Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_sfpm',\n internalType: 'contract ISemiFungiblePositionManager',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'SFPM',\n outputs: [\n {\n name: '',\n internalType: 'contract ISemiFungiblePositionManager',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'minValue0', internalType: 'uint256', type: 'uint256' },\n { name: 'minValue1', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'assertMinCollateralValues',\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'collateralToken0',\n outputs: [\n {\n name: '',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'collateralToken1',\n outputs: [\n {\n name: '',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n {\n name: 'finalPositionIdList',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n { name: 'positionSizes', internalType: 'uint128[]', type: 'uint128[]' },\n {\n name: 'tickAndSpreadLimits',\n internalType: 'int24[3][]',\n type: 'int24[3][]',\n },\n { name: 'usePremiaAsCollateral', internalType: 'bool', type: 'bool' },\n { name: 'builderCode', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'dispatch',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionIdListFrom',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n { name: 'account', internalType: 'address', type: 'address' },\n {\n name: 'positionIdListTo',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n {\n name: 'positionIdListToFinal',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n {\n name: 'usePremiaAsCollateral',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n name: 'dispatchFrom',\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'getAssetsOf',\n outputs: [\n { name: 'assets0', internalType: 'uint256', type: 'uint256' },\n { name: 'assets1', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getChunkData',\n outputs: [\n {\n name: 'liquidities0',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'liquidities1',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n { name: 'settled0', internalType: 'LeftRightUnsigned', type: 'uint256' },\n { name: 'settled1', internalType: 'LeftRightUnsigned', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getCurrentTick',\n outputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'user', internalType: 'address', type: 'address' },\n { name: 'includePendingPremium', internalType: 'bool', type: 'bool' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getFullPositionsData',\n outputs: [\n {\n name: 'shortPremium',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'longPremium',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'positionBalances',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n {\n name: 'collateralRequirements',\n internalType: 'LeftRightUnsigned[]',\n type: 'uint256[]',\n },\n {\n name: 'netPremiaPerPosition',\n internalType: 'LeftRightSigned[]',\n type: 'int256[]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getOracleTicks',\n outputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'spotTick', internalType: 'int24', type: 'int24' },\n { name: 'medianTick', internalType: 'int24', type: 'int24' },\n { name: 'latestTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'builderCode', internalType: 'uint256', type: 'uint256' }],\n name: 'getRiskParameters',\n outputs: [\n {\n name: 'riskParameters',\n internalType: 'RiskParameters',\n type: 'uint256',\n },\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getTWAP',\n outputs: [{ name: 'twapTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'isSafeMode',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'lockSafeMode',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n name: 'numberOfLegs',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'onERC1155Received',\n outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'pokeOracle',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolId',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolKey',\n outputs: [{ name: 'key', internalType: 'bytes', type: 'bytes' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolManager',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'riskEngine',\n outputs: [{ name: '', internalType: 'contract IRiskEngine', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'tickSpacing',\n outputs: [{ name: '', internalType: 'int24', type: 'int24' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'unlockSafeMode',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'user', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'usePremiaAsCollateral', internalType: 'bool', type: 'bool' },\n ],\n name: 'validateCollateralWithdrawable',\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'liquidator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'liquidatee',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'bonusAmounts',\n internalType: 'LeftRightSigned',\n type: 'int256',\n indexed: false,\n },\n ],\n name: 'AccountLiquidated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'exercisor',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'user', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'exerciseFee',\n internalType: 'LeftRightSigned',\n type: 'int256',\n indexed: false,\n },\n ],\n name: 'ForcedExercised',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'premiaByLeg',\n internalType: 'LeftRightSigned[4]',\n type: 'int256[4]',\n indexed: false,\n },\n ],\n name: 'OptionBurnt',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'balanceData',\n internalType: 'PositionBalance',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'OptionMinted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'user', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'legIndex',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'settledAmounts',\n internalType: 'LeftRightSigned',\n type: 'int256',\n indexed: false,\n },\n ],\n name: 'PremiumSettled',\n },\n {\n type: 'error',\n inputs: [\n { name: 'solvent', internalType: 'uint256', type: 'uint256' },\n { name: 'numberOfTicks', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'AccountInsolvent',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'DuplicateTokenId' },\n { type: 'error', inputs: [], name: 'EffectiveLiquidityAboveThreshold' },\n { type: 'error', inputs: [], name: 'InputListFail' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'InvalidTickBound' },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NetLiquidityZero' },\n { type: 'error', inputs: [], name: 'NoLegsExercisable' },\n { type: 'error', inputs: [], name: 'NotGuardian' },\n { type: 'error', inputs: [], name: 'NotMarginCalled' },\n { type: 'error', inputs: [], name: 'PositionNotOwned' },\n { type: 'error', inputs: [], name: 'PriceImpactTooLarge' },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n { type: 'error', inputs: [], name: 'StaleOracle' },\n { type: 'error', inputs: [], name: 'TokenIdHasZeroLegs' },\n { type: 'error', inputs: [], name: 'TooManyLegsOpen' },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n { type: 'error', inputs: [], name: 'WrongPoolId' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticQuery\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticQueryAbi = [\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n {\n name: 'collateralBalances0',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n {\n name: 'requiredCollaterals0',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n {\n name: 'collateralBalances1',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n {\n name: 'requiredCollaterals1',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'checkCollateral',\n outputs: [\n {\n name: 'balancesAndRequired',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'checkCollateralListOutput',\n outputs: [\n { name: '', internalType: 'uint256[4][]', type: 'uint256[4][]' },\n { name: '', internalType: 'int256[]', type: 'int256[]' },\n { name: '', internalType: 'int24[]', type: 'int24[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getChunkData',\n outputs: [{ name: '', internalType: 'uint256[2][4][]', type: 'uint256[2][4][]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getLiquidationPrices',\n outputs: [\n { name: 'liquidationPriceDown', internalType: 'int24', type: 'int24' },\n { name: 'liquidationPriceUp', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n {\n name: 'existingPositionIds',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n ],\n name: 'getMaxPositionSizeBounds',\n outputs: [\n { name: 'maxSizeAtMinUtil', internalType: 'uint128', type: 'uint128' },\n { name: 'maxSizeAtMaxUtil', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'includePendingPremium', internalType: 'bool', type: 'bool' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'getNetLiquidationValue',\n outputs: [\n { name: 'value0', internalType: 'int256', type: 'int256' },\n { name: 'value1', internalType: 'int256', type: 'int256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getPortfolioValue',\n outputs: [\n { name: 'value0', internalType: 'int256', type: 'int256' },\n { name: 'value1', internalType: 'int256', type: 'int256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'atTicks', internalType: 'int24[]', type: 'int24[]' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getPortfolioValueAtTicks',\n outputs: [\n { name: 'value0', internalType: 'int256[]', type: 'int256[]' },\n { name: 'value1', internalType: 'int256[]', type: 'int256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'getRequiredBase',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'startTick', internalType: 'int24', type: 'int24' },\n { name: 'nTicks', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getTickNets',\n outputs: [\n { name: 'tickData', internalType: 'int256[]', type: 'int256[]' },\n { name: 'liquidityNets', internalType: 'int256[]', type: 'int256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'isAccountSolvent',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n ],\n name: 'optimizeRiskPartners',\n outputs: [{ name: '', internalType: 'TokenId', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n { name: 'width', internalType: 'int24', type: 'int24' },\n ],\n name: 'scanChunks',\n outputs: [\n { name: '', internalType: 'int24[]', type: 'int24[]' },\n { name: '', internalType: 'uint128[2][]', type: 'uint128[2][]' },\n { name: '', internalType: 'uint128[2][]', type: 'uint128[2][]' },\n {\n name: '',\n internalType: 'LeftRightUnsigned[2][]',\n type: 'uint256[2][]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'self', internalType: 'TokenId', type: 'uint256' }],\n name: 'validateTokenId',\n outputs: [],\n stateMutability: 'pure',\n },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n {\n type: 'error',\n inputs: [{ name: 'parameterType', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidTokenIdParameter',\n },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// RiskEngine\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const riskEngineAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_crossBuffer0', internalType: 'uint256', type: 'uint256' },\n { name: '_crossBuffer1', internalType: 'uint256', type: 'uint256' },\n { name: '_guardian', internalType: 'address', type: 'address' },\n { name: '_builderFactory', internalType: 'address', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'ADJUSTMENT_SPEED',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'BP_DECREASE_BUFFER',\n outputs: [{ name: '', internalType: 'uint32', type: 'uint32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'BUILDER_SPLIT',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'BUYER_COLLATERAL_RATIO',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'CROSS_BUFFER_0',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'CROSS_BUFFER_1',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'CURVE_STEEPNESS',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DECIMALS',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'EMA_PERIODS',\n outputs: [{ name: '', internalType: 'uint96', type: 'uint96' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'FORCE_EXERCISE_COST',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'GUARDIAN',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'INITIAL_RATE_AT_TARGET',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'IRM_MAX_ELAPSED_TIME',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAINT_MARGIN_RATE',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_BONUS',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_CLAMP_DELTA',\n outputs: [{ name: '', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_OPEN_LEGS',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_RATE_AT_TARGET',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_SPREAD',\n outputs: [{ name: '', internalType: 'uint24', type: 'uint24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_TICKS_DELTA',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_TWAP_DELTA_DISPATCH',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MIN_RATE_AT_TARGET',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'NOTIONAL_FEE',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'PREMIUM_FEE',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'PROTOCOL_SPLIT',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'SATURATED_POOL_UTIL',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'SELLER_COLLATERAL_RATIO',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TARGET_POOL_UTIL',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TARGET_UTILIZATION',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'VEGOID',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n ],\n name: 'collect',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'collect',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'computeInternalMedian',\n outputs: [\n { name: 'medianTick', internalType: 'int24', type: 'int24' },\n {\n name: 'updatedOraclePack',\n internalType: 'OraclePack',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'utilization', internalType: 'int256', type: 'int256' },\n { name: 'crossBuffer', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'crossBufferRatio',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'oracleTick', internalType: 'int24', type: 'int24' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n {\n name: 'positionBalance',\n internalType: 'PositionBalance',\n type: 'uint256',\n },\n ],\n name: 'exerciseCost',\n outputs: [{ name: 'exerciseFees', internalType: 'LeftRightSigned', type: 'int256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'builderCode', internalType: 'uint256', type: 'uint256' }],\n name: 'getFeeRecipient',\n outputs: [{ name: 'feeRecipient', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'tokenData0',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'tokenData1',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n { name: 'atSqrtPriceX96', internalType: 'uint160', type: 'uint160' },\n { name: 'netPaid', internalType: 'LeftRightSigned', type: 'int256' },\n {\n name: 'shortPremium',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'loanAmounts',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n name: 'getLiquidationBonus',\n outputs: [\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionBalanceArray',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'user', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n {\n name: 'shortPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'longPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'ct0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n {\n name: 'ct1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n name: 'getMargin',\n outputs: [\n {\n name: 'tokenData0',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'tokenData1',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'globalUtilizations',\n internalType: 'PositionBalance',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: '_oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n name: 'getOracleTicks',\n outputs: [\n { name: 'spotTick', internalType: 'int24', type: 'int24' },\n { name: 'medianTick', internalType: 'int24', type: 'int24' },\n { name: 'latestTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionBalanceArray',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'getPerPositionCollateralRequirements',\n outputs: [\n {\n name: 'collateralRequirements',\n internalType: 'LeftRightUnsigned[]',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'payor', internalType: 'address', type: 'address' },\n { name: 'fees', internalType: 'LeftRightSigned', type: 'int256' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n {\n name: 'ct0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n {\n name: 'ct1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n name: 'getRefundAmounts',\n outputs: [{ name: '', internalType: 'LeftRightSigned', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n { name: 'builderCode', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getRiskParameters',\n outputs: [{ name: '', internalType: 'RiskParameters', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: '_oraclePack', internalType: 'OraclePack', type: 'uint256' },\n { name: 'safeMode', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'getSolvencyTicks',\n outputs: [\n { name: '', internalType: 'int24[]', type: 'int24[]' },\n { name: '', internalType: 'OraclePack', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'guardian',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n {\n name: 'premiasByLeg',\n internalType: 'LeftRightSigned[4][]',\n type: 'int256[4][]',\n },\n {\n name: 'collateralRemaining',\n internalType: 'LeftRightSigned',\n type: 'int256',\n },\n { name: 'atSqrtPriceX96', internalType: 'uint160', type: 'uint160' },\n ],\n name: 'haircutPremia',\n outputs: [\n { name: 'bonusDeltas', internalType: 'LeftRightSigned', type: 'int256' },\n {\n name: 'haircutTotal',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'haircutPerLeg',\n internalType: 'LeftRightSigned[4][]',\n type: 'int256[4][]',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'utilization', internalType: 'uint256', type: 'uint256' },\n {\n name: 'interestRateAccumulator',\n internalType: 'MarketState',\n type: 'uint256',\n },\n ],\n name: 'interestRate',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionBalanceArray',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'user', internalType: 'address', type: 'address' },\n {\n name: 'shortPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'longPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'ct0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n {\n name: 'ct1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n { name: 'buffer', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'isAccountSolvent',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n name: 'isSafeMode',\n outputs: [{ name: 'safeMode', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'pool',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n },\n ],\n name: 'lockPool',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' }],\n name: 'twapEMA',\n outputs: [{ name: '', internalType: 'int24', type: 'int24' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'pool',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n },\n ],\n name: 'unlockPool',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'utilization', internalType: 'uint256', type: 'uint256' },\n {\n name: 'interestRateAccumulator',\n internalType: 'MarketState',\n type: 'uint256',\n },\n ],\n name: 'updateInterestRate',\n outputs: [\n { name: '', internalType: 'uint128', type: 'uint128' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'vegoid',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'pure',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'collateralToken',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'avgBorrowRate',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'rateAtTarget',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'BorrowRateUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'lockMode', internalType: 'bool', type: 'bool', indexed: false }],\n name: 'GuardianSafeModeUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'token',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TokensCollected',\n },\n { type: 'error', inputs: [], name: 'BelowMinimumRedemption' },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'InvalidBuilderCode' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'LengthMismatch' },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NotGuardian' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SemiFungiblePositionManagerV3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const semiFungiblePositionManagerV3Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_factory',\n internalType: 'contract IUniswapV3Factory',\n type: 'address',\n },\n {\n name: '_minEnforcedTickFillCost',\n internalType: 'uint256',\n type: 'uint256',\n },\n {\n name: '_supplyMultiplierTickFill',\n internalType: 'uint256',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'balanceOf',\n outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owners', internalType: 'address[]', type: 'address[]' },\n { name: 'ids', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n name: 'balanceOfBatch',\n outputs: [{ name: 'balances', internalType: 'uint256[]', type: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'burnTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'expandEnforcedTickRange',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getAccountFeesBase',\n outputs: [\n { name: 'feesBase0', internalType: 'int128', type: 'int128' },\n { name: 'feesBase1', internalType: 'int128', type: 'int128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getAccountLiquidity',\n outputs: [\n {\n name: 'accountLiquidities',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'isLong', internalType: 'uint256', type: 'uint256' },\n { name: 'vegoid', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getAccountPremium',\n outputs: [\n { name: '', internalType: 'uint128', type: 'uint128' },\n { name: '', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolKey', internalType: 'bytes', type: 'bytes' }],\n name: 'getCurrentTick',\n outputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getEnforcedTickLimits',\n outputs: [\n { name: '', internalType: 'int24', type: 'int24' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'id', internalType: 'bytes', type: 'bytes' },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'getPoolId',\n outputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getUniswapV3PoolFromId',\n outputs: [\n {\n name: 'uniswapV3Pool',\n internalType: 'contract IUniswapV3Pool',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token0', internalType: 'address', type: 'address' },\n { name: 'token1', internalType: 'address', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'initializeAMMPool',\n outputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'operator', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: 'approvedForAll', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'mintTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeBatchTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'amount0Owed', internalType: 'uint256', type: 'uint256' },\n { name: 'amount1Owed', internalType: 'uint256', type: 'uint256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'uniswapV3MintCallback',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'amount0Delta', internalType: 'int256', type: 'int256' },\n { name: 'amount1Delta', internalType: 'int256', type: 'int256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'uniswapV3SwapCallback',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'uniswapPool',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'EnforcedTicksUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'univ3pool',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenType',\n internalType: 'uint256',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'tickLower',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'tickUpper',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'liquidityDelta',\n internalType: 'int128',\n type: 'int128',\n indexed: false,\n },\n ],\n name: 'LiquidityChunkUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'uniswapPool',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'poolId',\n internalType: 'uint64',\n type: 'uint64',\n indexed: false,\n },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'PoolInitialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionBurnt',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'caller',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionMinted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'ids',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n {\n name: 'amounts',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n ],\n name: 'TransferBatch',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: false },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TransferSingle',\n },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'ChunkHasZeroLiquidity' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'InvalidTickBound' },\n {\n type: 'error',\n inputs: [{ name: 'parameterType', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidTokenIdParameter',\n },\n { type: 'error', inputs: [], name: 'InvalidUniswapCallback' },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NotAuthorized' },\n { type: 'error', inputs: [], name: 'NotEnoughLiquidityInChunk' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'PositionTooLarge' },\n {\n type: 'error',\n inputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n name: 'PriceBoundFail',\n },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n { type: 'error', inputs: [], name: 'UnsafeRecipient' },\n { type: 'error', inputs: [], name: 'WrongUniswapPool' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SemiFungiblePositionManagerV4\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const semiFungiblePositionManagerV4Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: 'poolManager',\n internalType: 'contract IPoolManager',\n type: 'address',\n },\n {\n name: '_minEnforcedTickFillCost',\n internalType: 'uint256',\n type: 'uint256',\n },\n {\n name: '_nativeEnforcedTickFillCost',\n internalType: 'uint256',\n type: 'uint256',\n },\n {\n name: '_supplyMultiplierTickFill',\n internalType: 'uint256',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'balanceOf',\n outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owners', internalType: 'address[]', type: 'address[]' },\n { name: 'ids', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n name: 'balanceOfBatch',\n outputs: [{ name: 'balances', internalType: 'uint256[]', type: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'burnTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'expandEnforcedTickRange',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getAccountLiquidity',\n outputs: [\n {\n name: 'accountLiquidities',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'isLong', internalType: 'uint256', type: 'uint256' },\n { name: 'vegoid', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getAccountPremium',\n outputs: [\n { name: '', internalType: 'uint128', type: 'uint128' },\n { name: '', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolKey', internalType: 'bytes', type: 'bytes' }],\n name: 'getCurrentTick',\n outputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getEnforcedTickLimits',\n outputs: [\n { name: '', internalType: 'int24', type: 'int24' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'id', internalType: 'bytes', type: 'bytes' },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'getPoolId',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getUniswapV4PoolKeyFromId',\n outputs: [\n {\n name: '',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'key',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'initializeAMMPool',\n outputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'operator', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: 'approvedForAll', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'mintTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeBatchTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],\n name: 'unlockCallback',\n outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'idV4', internalType: 'PoolId', type: 'bytes32', indexed: true },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'EnforcedTicksUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'poolId',\n internalType: 'PoolId',\n type: 'bytes32',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenType',\n internalType: 'uint256',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'tickLower',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'tickUpper',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'liquidityDelta',\n internalType: 'int128',\n type: 'int128',\n indexed: false,\n },\n ],\n name: 'LiquidityChunkUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'idV4', internalType: 'PoolId', type: 'bytes32', indexed: true },\n {\n name: 'poolId',\n internalType: 'uint64',\n type: 'uint64',\n indexed: false,\n },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'PoolInitialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionBurnt',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'caller',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionMinted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'ids',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n {\n name: 'amounts',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n ],\n name: 'TransferBatch',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: false },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TransferSingle',\n },\n { type: 'error', inputs: [], name: 'ChunkHasZeroLiquidity' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'InvalidTickBound' },\n {\n type: 'error',\n inputs: [{ name: 'parameterType', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidTokenIdParameter',\n },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NotAuthorized' },\n { type: 'error', inputs: [], name: 'NotEnoughLiquidityInChunk' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'PositionTooLarge' },\n {\n type: 'error',\n inputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n name: 'PriceBoundFail',\n },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n { type: 'error', inputs: [], name: 'UnauthorizedUniswapCallback' },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n { type: 'error', inputs: [], name: 'UnsafeRecipient' },\n { type: 'error', inputs: [], name: 'WrongUniswapPool' },\n] as const\n","{\n \"1\": {\n \"chainId\": 1,\n \"infrastructure\": {\n \"uniswapV3Factory\": \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n \"poolManager\": \"0x000000000004444c5dc75cB358380D2e3dE08A90\",\n \"stateView\": \"0x7ffe42c4a5deea5b0fec41c94c136cf115597227\"\n },\n \"hypovault\": {\n \"core\": {\n \"hypoVaultImplementation\": \"0xF16714665955DBd0361D997eFc50fe391D96E8D0\",\n \"factory\": \"0xd5049B2647de57141dE7F65E5124707B99A452A3\",\n \"accountant\": \"0x65aA902AE3135658587FFC36ED51B61c927114e1\",\n \"rolesAuthority\": \"0xb952D345c413Ddb7850173422bAe4968e0330598\",\n \"collateralTrackerDecoderAndSanitizer\": \"0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6\"\n },\n \"vaults\": {\n \"wethPlpVault\": \"0xd4e2c720a760049cc4151bcf61e3a9348db9cd92\",\n \"usdcPlpVault\": \"0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18\"\n },\n \"managers\": {\n \"wethPlpVaultManager\": \"0xB6Fc48e658C9B1a7dbdFA51A5E153ab60BB2e04d\",\n \"usdcPlpVaultManager\": \"0x2ce65016366ef7320078e0758D58Cf1038bc7C4e\"\n },\n \"turnkeySigners\": {\n \"wethPlpVaultManager\": \"0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F\",\n \"usdcPlpVaultManager\": \"0x3c1c79d0cfc316Ba959194c89696a8382d7d283b\"\n }\n },\n \"panoptic\": {\n \"pool\": {\n \"panopticPool\": \"0x00000000563b70d704f4c6675a5f6ac989fbae13\",\n \"collateralTracker0\": \"0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7\",\n \"collateralTracker1\": \"0x12bF31955522BAC337D93e1bC0a39F68D8BDa216\"\n },\n \"v2\": {\n \"semiFungiblePositionManagerV4\": \"0x000000000000047534b9E1D528ED997169865a64\",\n \"semiFungiblePositionManagerV3\": \"0x000000000000031d296bBA22f188472157eEb01f\",\n \"builderFactory\": \"0x00000000000008D41F2cd5bF144F61cEB3661F98\",\n \"riskEngine\": \"0x0000000000000e673aECBDB5f5fE5DFAf4a8e9Ac\",\n \"panopticPoolImplementation\": \"0x00000000000010bb6695dAAC60D0515c0A01a948\",\n \"collateralTrackerImplementation\": \"0x0000000000002038055dB8f2B2Fd356598935C51\",\n \"panopticFactoryV4\": \"0x0000000000000c51d0f8cf4bd9adE7191372a625\",\n \"panopticFactoryV3\": \"0x0000000000000aDC9A108591e718F2aee963a2a7\",\n \"panopticHelper\": \"0x0000000000000000000000000000000000000000\",\n \"panopticMath\": \"0x000000000000301F5BC0171C75967b8e78a92b10\",\n \"panopticQuery\": \"0x0000000000000e1aE9c66C1c3B0A547D23389C93\",\n \"interactionHelper\": \"0x00000000000040ae7CD505F4E0e3F34195D8c08C\"\n }\n },\n \"riskEngines\": [\n \"0x000000000000075e29cdaa9cb640a69e148ca7da\",\n \"0x0000000000000fe1e261f66ce2f44def4f5ae0cb\",\n \"0x0000000000000e673aECBDB5f5fE5DFAf4a8e9Ac\"\n ],\n \"markets\": {\n \"ethUsdc30bps\": {\n \"currency0\": \"0x0000000000000000000000000000000000000000\",\n \"currency1\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"fee\": 3000,\n \"tickSpacing\": 60,\n \"poolId\": \"0x3C08AE4977F78D\"\n }\n },\n \"subgraphs\": {\n \"hypovault\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-mainnet/prod/gn\",\n \"panoptic\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/v2_prod/gn\"\n }\n },\n \"8453\": {\n \"chainId\": 8453,\n \"infrastructure\": {\n \"uniswapV3Factory\": \"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\n \"poolManager\": \"0x498581fF718922c3f8e6A244956aF099B2652b2b\",\n \"stateView\": \"0xA3c0c9b65baD0b08107Aa264b0f3dB444b867A71\"\n },\n \"hypovault\": {\n \"core\": {\n \"hypoVaultImplementation\": \"0xec311aE06486ad44Ba782133b502A34aCE0f479E\",\n \"factory\": \"0x9bE53b169a41030f1710A9B82e9eA6413f14D12E\",\n \"accountant\": \"0x345cA3407942f9d175c9eA8B90e83A36F570f852\",\n \"rolesAuthority\": \"0x278D37CaBFFB4B72D2866E30fEFE08aef773E0B6\",\n \"collateralTrackerDecoderAndSanitizer\": \"0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b\"\n },\n \"vaults\": {\n \"wethPlpVault\": \"0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04\",\n \"usdcPlpVault\": \"0xb452af299c565D04B05E601efF2840e000C922f1\"\n },\n \"managers\": {\n \"wethPlpVaultManager\": \"0x2a4923456c79E9ebD10F5Bf5305a5C742bBc1D7C\",\n \"usdcPlpVaultManager\": \"0xdd6E2406a044582463CFE9F0C774870eAf4A310B\"\n },\n \"turnkeySigners\": {\n \"wethPlpVaultManager\": \"0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F\",\n \"usdcPlpVaultManager\": \"0x3c1c79d0cfc316Ba959194c89696a8382d7d283b\"\n }\n },\n \"panoptic\": {\n \"pool\": {\n \"panopticPool\": \"0xB50e8bb68f5855DA742f4579274902a20454174a\",\n \"collateralTracker0\": \"0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869\",\n \"collateralTracker1\": \"0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2\"\n },\n \"v2\": {\n \"semiFungiblePositionManagerV4\": \"0x8dcAa08cF298F8b4830FAf56d47930981AdE33af\",\n \"semiFungiblePositionManagerV3\": \"0xFB1c06B491305d618bb8a7a368C6e50c001C153A\",\n \"builderFactory\": \"0x6d26E916a18d522f7DdA2a26d9E1645564ccDcA5\",\n \"riskEngine\": \"0x8bbce8b1eb64118cfe6c1eab0afe13b80ea41481\",\n \"panopticPoolImplementation\": \"0x5BA68a018fF149c38ec52D181Dd24aBabE9a07DB\",\n \"collateralTrackerImplementation\": \"0x34B3a4e4F14f292575ECe3EF67886C4598af459f\",\n \"panopticFactoryV4\": \"0x9ac0317fcd124aff0b5429beb8de17020bc45f9a\",\n \"panopticFactoryV3\": \"0x687f616d68c483a7223e6922f59aef7452e26c1d\",\n \"panopticHelper\": \"0x0000000000000000000000000000000000000000\",\n \"panopticMath\": \"0x6d21699192f5aF112C87e53b32ff846782afF407\",\n \"panopticQuery\": \"0xd2586E1bbdd1169F597F3A370117EdF7372A7350\",\n \"interactionHelper\": \"0x643d8DD5372FD6c71f8fAbCce4Eb8857704F3E15\"\n }\n },\n \"riskEngines\": [\"0x8bbce8b1eb64118cfe6c1eab0afe13b80ea41481\"],\n \"markets\": {\n \"ethUsdc5bps\": {\n \"currency0\": \"0x0000000000000000000000000000000000000000\",\n \"currency1\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"fee\": 500,\n \"tickSpacing\": 10,\n \"poolId\": \"0x96d4b53a38337a5733179751781178a2613306063c511b78cd02684739288c0a\"\n }\n },\n \"subgraphs\": {\n \"hypovault\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-base/prod/gn\",\n \"panoptic\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/v2_prod/gn\"\n }\n },\n \"11155111\": {\n \"chainId\": 11155111,\n \"infrastructure\": {\n \"uniswapV3Factory\": \"0x0227628f3F023bb0B980b67D528571c95c6DaC1c\",\n \"poolManager\": \"0xE03A1074c86CFeDd5C142C4F04F1a1536e203543\",\n \"stateView\": \"0xE1Dd9c3fA50EDB962E442f60DfBc432e24537E4C\"\n },\n \"hypovault\": {\n \"core\": {\n \"hypoVaultImplementation\": \"0xC5b415Db4087228Af817893769DC3a205160160B\",\n \"factory\": \"0x363a9d605ca45cBfF3b597350DeADb53cdC292c7\",\n \"accountant\": \"0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab\",\n \"rolesAuthority\": \"0x673BfafB4e2712215B422347c1571421B83E8A3d\",\n \"collateralTrackerDecoderAndSanitizer\": \"0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d\"\n },\n \"vaults\": {\n \"wethPlpVault\": \"0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1\",\n \"usdcPlpVault\": \"0xdd7a8d6c6975488e801129bC84302d74e2361208\"\n },\n \"managers\": {\n \"wethPlpVaultManager\": \"0x95eC124FAAB70D7aE147c3BE0336E01a828AE2d5\",\n \"usdcPlpVaultManager\": \"0xFB5aa3e0b46F3859D90B14b52ffd287013b5Ec53\"\n },\n \"turnkeySigners\": {\n \"wethPlpVaultManager\": \"0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F\",\n \"usdcPlpVaultManager\": \"0x3c1c79d0cfc316Ba959194c89696a8382d7d283b\"\n }\n },\n \"panoptic\": {\n \"pool\": {\n \"panopticPool\": \"0x872b98C46b2062F663BEb2CC9D4cE046Da2a2918\",\n \"collateralTracker0\": \"0x09a60b78d06a03e5148faedd3bfee6f58b22012f\",\n \"collateralTracker1\": \"0x7365664c8101ff7e9422ae2b203822253c31e69c\"\n },\n \"v2\": {\n \"semiFungiblePositionManagerV3\": \"0x9DaD2C40107Db4B29a5450401BB7A28e6eA00e43\",\n \"semiFungiblePositionManagerV4\": \"0xD2615995A71644E122cC2FD7FeC2392b971220DE\",\n \"builderFactory\": \"0x55f3D2d9D065AA5Fcc11D94c55a6085849e8b6C3\",\n \"riskEngine\": \"0x1376aF5ca426B6B9fad6a712c21f6Cf58a94b93c\",\n \"panopticPoolImplementation\": \"0x969235B5830f13b58BB699305d9c70A8Cd3BD97C\",\n \"collateralTrackerImplementation\": \"0xafcd5F651Ae0403Ff668bb2dAc38BEa907a35Dba\",\n \"panopticFactoryV3\": \"0xd9FFCa53C0A6155001Ce8cbcAEfe89DB204690F1\",\n \"panopticFactoryV4\": \"0x8FCBb59b05779818D9BAD2686cc44B705603ce03\",\n \"panopticHelper\": \"0xfFEbB3A4ab793cB244209d4dA0Cb3e6B07133bd0\",\n \"panopticMath\": \"0x6d21699192f5aF112C87e53b32ff846782afF407\",\n \"panopticQuery\": \"0x74057945467Fb4eAE9193B46A60ae66a53f06A5b\",\n \"interactionHelper\": \"0x643d8DD5372FD6c71f8fAbCce4Eb8857704F3E15\"\n }\n },\n \"riskEngines\": [\"0x1376aF5ca426B6B9fad6a712c21f6Cf58a94b93c\"],\n \"markets\": {\n \"ethUsdc5bps\": {\n \"currency0\": \"0x0000000000000000000000000000000000000000\",\n \"currency1\": \"0xFFFeD8254566B7F800f6D8CDb843ec75AE49B07A\",\n \"fee\": 500,\n \"tickSpacing\": 10,\n \"poolId\": \"0xba6673bcb27568a73a93dd23b20c8174fa16193cd90905be859144e8f13097a5\"\n }\n },\n \"subgraphs\": {\n \"hypovault\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-sepolia/prod/gn\",\n \"panoptic\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/v2_prod/gn\"\n }\n }\n}\n","import chainDeploymentsData from './chainDeployments.data.json' with { type: 'json' }\n\nexport const MAINNET_CHAIN_ID = 1\nexport const SEPOLIA_CHAIN_ID = 11155111\nexport const BASE_CHAIN_ID = 8453\n\nexport const CHAIN_DEPLOYMENTS = chainDeploymentsData\n\nexport function getChainDeployment(chainId) {\n return CHAIN_DEPLOYMENTS[chainId]\n}\n\nexport function requireChainDeployment(chainId) {\n const deployment = getChainDeployment(chainId)\n if (deployment === undefined) {\n throw new Error(`Unsupported chain deployment for chainId ${chainId}`)\n }\n return deployment\n}\n\nexport function isSupportedChain(chainId) {\n return getChainDeployment(chainId) !== undefined\n}\n\nexport function getEthUsdcMarket(deployment) {\n const market = deployment.markets.ethUsdc5bps ?? deployment.markets.ethUsdc30bps\n if (market === undefined) {\n throw new Error(`Missing ETH/USDC market for chainId ${deployment.chainId}`)\n }\n return market\n}\n\n\nexport const MAINNET_DEPLOYMENT = CHAIN_DEPLOYMENTS[MAINNET_CHAIN_ID]\nexport const MAINNET_PANOPTIC_V2_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.v2\nexport const SEPOLIA_DEPLOYMENT = CHAIN_DEPLOYMENTS[SEPOLIA_CHAIN_ID]\nexport const SEPOLIA_HYPOVAULT_CORE_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.core\nexport const SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nexport const SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nexport const SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS = SEPOLIA_DEPLOYMENT.hypovault.turnkeySigners\nexport const SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\nexport const SEPOLIA_PANOPTIC_V2_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.v2\nexport const BASE_DEPLOYMENT = CHAIN_DEPLOYMENTS[BASE_CHAIN_ID]\nexport const BASE_HYPOVAULT_CORE_ADDRESSES = BASE_DEPLOYMENT.hypovault.core\nexport const BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\nexport const BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers\nexport const BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS = BASE_DEPLOYMENT.hypovault.turnkeySigners\nexport const BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool\nexport const BASE_PANOPTIC_V2_ADDRESSES = BASE_DEPLOYMENT.panoptic.v2\nexport const BASE_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(BASE_DEPLOYMENT)\nexport const SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT)\n","import {\n BASE_CHAIN_ID,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from './chainDeployments.js'\n\nconst mainnetDeployment = requireChainDeployment(MAINNET_CHAIN_ID)\nconst mainnetVaults = mainnetDeployment.hypovault.vaults\nconst legacyMainnetVaults = {\n wethPlpVault: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n usdcPlpVault: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n}\nconst sepoliaDeployment = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst sepoliaVaults = sepoliaDeployment.hypovault.vaults\nconst baseDeployment = requireChainDeployment(BASE_CHAIN_ID)\nconst baseVaults = baseDeployment.hypovault.vaults\n\nexport const VAULT_DISPLAY_NAMES_PER_CHAIN = {\n [MAINNET_CHAIN_ID]: {\n [mainnetVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [mainnetVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n [legacyMainnetVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [legacyMainnetVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n },\n [BASE_CHAIN_ID]: {\n [baseVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [baseVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n },\n [SEPOLIA_CHAIN_ID]: {\n [sepoliaVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [sepoliaVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n },\n}\n\nexport const VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN = {\n [MAINNET_CHAIN_ID]: {\n [mainnetVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [mainnetVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n [legacyMainnetVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [legacyMainnetVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n },\n [BASE_CHAIN_ID]: {\n [baseVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [baseVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n },\n [SEPOLIA_CHAIN_ID]: {\n [sepoliaVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [sepoliaVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n },\n}\n\nexport function resolveVaultDisplayName({ chainId, vaultAddress, underlyingSymbol, fallbackName }) {\n const vaultAddressLower = vaultAddress.toLowerCase()\n const resolver = VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN[chainId]?.[vaultAddressLower]\n if (resolver !== undefined) {\n return resolver({\n chainId,\n vaultAddress: vaultAddressLower,\n underlyingSymbol,\n fallbackName,\n })\n }\n\n const staticName = VAULT_DISPLAY_NAMES_PER_CHAIN[chainId]?.[vaultAddressLower]\n if (staticName !== undefined) {\n return staticName\n }\n\n if (fallbackName !== undefined && fallbackName !== null) {\n return fallbackName\n }\n\n return 'Vault'\n}\n","import { BASE_CHAIN_ID, getEthUsdcMarket, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst BASE_DEPLOYMENT = requireChainDeployment(BASE_CHAIN_ID)\nconst BASE_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(BASE_DEPLOYMENT)\nconst BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\nconst BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers\nconst BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool\n\nexport const UsdcPlpVaultBaseProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 1200000,\n vaultCapInUnderlying: 300_000_000n, // 300 USDC\n vaultCapInShares: 3_000_000_000_000_000n, // ~300 USDC (verify share scaling on-chain)\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n chainId: BASE_CHAIN_ID,\n poolDeploymentBlock: 43_000_000,\n hypoVaultAddress: BASE_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: BASE_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: BASE_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: BASE_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: BASE_ETH_USDC_5BPS_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n deltaThresholdBps: 200n,\n maxHedgeSlots: 2,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n","import { getEthUsdcMarket, MAINNET_CHAIN_ID, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst MAINNET_DEPLOYMENT = requireChainDeployment(MAINNET_CHAIN_ID)\nconst MAINNET_ETH_USDC_MARKET = getEthUsdcMarket(MAINNET_DEPLOYMENT)\nconst MAINNET_HYPOVAULT_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.vaults\nconst MAINNET_HYPOVAULT_MANAGER_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.managers\nconst MAINNET_PANOPTIC_POOL_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.pool\nconst MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES = {\n panopticPool: '0x000000007588B488d180899cDEa2080a886D2441',\n collateralTracker0: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n collateralTracker1: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n} as const\n\nexport const UsdcPlpVaultMainnetProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n artifactSet: 'mainnet-prod',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 19_500_000_000n, // Fallback cap: 19,500 USDC if share-price-derived cap is unavailable\n vaultCapInShares: 19_500_000_000_000_000n, // Active cap target: 19,500 USDC in share-cap mode\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n poolDeploymentBlock: 25_302_077,\n chainId: MAINNET_CHAIN_ID,\n hypoVaultAddress: MAINNET_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: MAINNET_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: MAINNET_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: MAINNET_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: MAINNET_ETH_USDC_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n deltaThresholdBps: 1500n,\n maxHedgeSlots: 3,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n\nexport const UsdcPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig = {\n ...UsdcPlpVaultMainnetProdConfig,\n artifactSet: 'mainnet-legacy',\n manageCycleIntervalMs: 3600000,\n poolDeploymentBlock: 24_822_309,\n hypoVaultAddress: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n addresses: {\n ...UsdcPlpVaultMainnetProdConfig.addresses,\n ethUsdc500bpsV4Collateral0: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4Collateral1: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: '0xf42EED8F0d3326ad59fc1f5d4c4009B5F6B4D87c',\n hypoVault: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n}\n","import { getEthUsdcMarket, requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const UsdcPlpVaultSepoliaDevConfig: HypoVaultManagerConfig = {\n deployment: 'dev',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 300_000_000n, // 300 USDC\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: SEPOLIA_ETH_USDC_5BPS_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import { getEthUsdcMarket, requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const UsdcPlpVaultSepoliaProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 1200000,\n vaultCapInUnderlying: 300_000_000n, // 300 USDC\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: SEPOLIA_ETH_USDC_5BPS_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import { BASE_CHAIN_ID, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst BASE_DEPLOYMENT = requireChainDeployment(BASE_CHAIN_ID)\nconst BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\nconst BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers\nconst BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool\n\nexport const WethPlpVaultBaseProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 1200000,\n vaultCapInUnderlying: 1_000_000_000_000_000_000n, // 1 WETH\n vaultCapInShares: 1_000_000_000_000_000_000_000_000n, // ~1 WETH (verify share scaling on-chain)\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n chainId: BASE_CHAIN_ID,\n poolDeploymentBlock: 43_000_000,\n hypoVaultAddress: BASE_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: BASE_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: BASE_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: BASE_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0x4200000000000000000000000000000000000006',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 2,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n","import { MAINNET_CHAIN_ID, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst MAINNET_DEPLOYMENT = requireChainDeployment(MAINNET_CHAIN_ID)\nconst MAINNET_HYPOVAULT_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.vaults\nconst MAINNET_HYPOVAULT_MANAGER_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.managers\nconst MAINNET_PANOPTIC_POOL_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.pool\nconst MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES = {\n panopticPool: '0x000000007588B488d180899cDEa2080a886D2441',\n collateralTracker0: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n collateralTracker1: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n} as const\n\nexport const WethPlpVaultMainnetProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n artifactSet: 'mainnet-prod',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 50_000_000_000_000_000_000n, // Fallback cap: 50 WETH if share-price-derived cap is unavailable\n vaultCapInShares: 50_000_000_000_000_000_000_000_000n, // Active cap target: 50 WETH in share-cap mode\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n poolDeploymentBlock: 25_302_077,\n chainId: MAINNET_CHAIN_ID,\n hypoVaultAddress: MAINNET_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: MAINNET_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: MAINNET_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: MAINNET_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n deltaThresholdBps: 100n,\n maxHedgeSlots: 3,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n\nexport const WethPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig = {\n ...WethPlpVaultMainnetProdConfig,\n artifactSet: 'mainnet-legacy',\n manageCycleIntervalMs: 3600000,\n poolDeploymentBlock: 24_822_309,\n hypoVaultAddress: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n addresses: {\n ...WethPlpVaultMainnetProdConfig.addresses,\n ethUsdc500bpsV4Collateral0: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4Collateral1: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: '0xcc80f113298DdF9D399323D5288aE5Eeaed20D44',\n hypoVault: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n}\n","import { requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const WethPlpVaultSepoliaDevConfig: HypoVaultManagerConfig = {\n deployment: 'dev',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 1_000_000_000_000_000_000n, // 1 WETH\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import { requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const WethPlpVaultSepoliaProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 1_000_000_000_000_000_000n, // 1 WETH\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import type { Address } from 'viem'\n\nimport type { HypoVaultManagerConfig } from './schema'\nimport { UsdcPlpVaultBaseProdConfig } from './usdcPlpVaultBaseProdConfig'\nimport {\n UsdcPlpVaultMainnetLegacyConfig,\n UsdcPlpVaultMainnetProdConfig,\n} from './usdcPlpVaultMainnetProdConfig'\nimport { UsdcPlpVaultSepoliaDevConfig } from './usdcPlpVaultSepoliaDevConfig'\nimport { UsdcPlpVaultSepoliaProdConfig } from './usdcPlpVaultSepoliaProdConfig'\nimport { WethPlpVaultBaseProdConfig } from './wethPlpVaultBaseProdConfig'\nimport {\n WethPlpVaultMainnetLegacyConfig,\n WethPlpVaultMainnetProdConfig,\n} from './wethPlpVaultMainnetProdConfig'\nimport { WethPlpVaultSepoliaDevConfig } from './wethPlpVaultSepoliaDevConfig'\nimport { WethPlpVaultSepoliaProdConfig } from './wethPlpVaultSepoliaProdConfig'\n\nconst ALL_HYPO_VAULT_CONFIGS: HypoVaultManagerConfig[] = [\n WethPlpVaultBaseProdConfig,\n UsdcPlpVaultBaseProdConfig,\n WethPlpVaultSepoliaDevConfig,\n WethPlpVaultSepoliaProdConfig,\n UsdcPlpVaultSepoliaDevConfig,\n UsdcPlpVaultSepoliaProdConfig,\n WethPlpVaultMainnetProdConfig,\n UsdcPlpVaultMainnetProdConfig,\n WethPlpVaultMainnetLegacyConfig,\n UsdcPlpVaultMainnetLegacyConfig,\n]\n\ntype GetHypoVaultConfigOptions = {\n preferredDeployment?: HypoVaultManagerConfig['deployment']\n}\n\nexport function getHypoVaultConfigForVault(\n vaultAddress: Address,\n chainId: number,\n options?: GetHypoVaultConfigOptions,\n): HypoVaultManagerConfig | undefined {\n const vaultLower = vaultAddress.toLowerCase()\n const matchingConfigs = ALL_HYPO_VAULT_CONFIGS.filter(\n (c) => c.hypoVaultAddress?.toLowerCase() === vaultLower && c.chainId === chainId,\n )\n if (matchingConfigs.length === 0) {\n return undefined\n }\n\n const preferredDeployment = options?.preferredDeployment\n if (preferredDeployment !== undefined) {\n const preferredConfig = matchingConfigs.find((c) => c.deployment === preferredDeployment)\n if (preferredConfig !== undefined) {\n return preferredConfig\n }\n }\n\n const deploymentRank: Record<HypoVaultManagerConfig['deployment'], number> = {\n prod: 0,\n dev: 1,\n }\n return [...matchingConfigs].sort(\n (a, b) => deploymentRank[a.deployment] - deploymentRank[b.deployment],\n )[0]\n}\n","import {\n BASE_CHAIN_ID,\n getEthUsdcMarket,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from '../chainDeployments'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst BASE_DEPLOYMENT = requireChainDeployment(BASE_CHAIN_ID)\nconst MAINNET_DEPLOYMENT = requireChainDeployment(MAINNET_CHAIN_ID)\n\nexport const MAX_PRICE_DEVIATION = 100 as const\nexport const WSPCXX_USDC_MAX_PRICE_DEVIATION = 10000 as const\nexport const DEFAULT_TRIGGER_TICK = 150 as const\n\nexport const SEPOLIA_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: SEPOLIA_DEPLOYMENT.panoptic.pool.panopticPool,\n token0: getEthUsdcMarket(SEPOLIA_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(SEPOLIA_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const SEPOLIA_VAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\n\nexport const BASE_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: BASE_DEPLOYMENT.panoptic.pool.panopticPool,\n token0: getEthUsdcMarket(BASE_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(BASE_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const BASE_VAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\n\nexport const MAINNET_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: MAINNET_DEPLOYMENT.panoptic.pool.panopticPool,\n token0: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const MAINNET_USDC_PLP_POOL_INFOS = [\n ...MAINNET_DEFAULT_POOL_INFOS,\n {\n maxPriceDeviation: WSPCXX_USDC_MAX_PRICE_DEVIATION,\n pool: '0x0f34e6fCda264349Db10d445BD95f529cbe88090',\n token0: '0x8e2eeD8b8B5E13Ea7BF38e50d7821d2C57309072',\n token1: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n] as const\n\nexport const MAINNET_LEGACY_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: '0x000000007588B488d180899cDEa2080a886D2441',\n token0: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const MAINNET_VAULT_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.vaults\nexport const MAINNET_LEGACY_VAULT_ADDRESSES = {\n wethPlpVault: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n usdcPlpVault: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n} as const\nexport { MAINNET_CHAIN_ID }\n","import {\n BASE_DEFAULT_POOL_INFOS,\n BASE_VAULT_ADDRESSES,\n DEFAULT_TRIGGER_TICK,\n} from './poolInfosConfig'\n\nexport const BaseUSDCPLPVaultPoolInfos = {\n vaultAddress: BASE_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: BASE_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n BASE_DEFAULT_POOL_INFOS,\n BASE_VAULT_ADDRESSES,\n DEFAULT_TRIGGER_TICK,\n} from './poolInfosConfig'\n\nexport const BaseWETHPLPVaultPoolInfos = {\n vaultAddress: BASE_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: BASE_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n MAINNET_LEGACY_DEFAULT_POOL_INFOS,\n MAINNET_LEGACY_VAULT_ADDRESSES,\n MAINNET_USDC_PLP_POOL_INFOS,\n MAINNET_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const MainnetUSDCPLPVaultPoolInfos = {\n vaultAddress: MAINNET_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: MAINNET_USDC_PLP_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n\nexport const MainnetUSDCPLPLegacyVaultPoolInfos = {\n vaultAddress: MAINNET_LEGACY_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: MAINNET_LEGACY_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n MAINNET_DEFAULT_POOL_INFOS,\n MAINNET_LEGACY_DEFAULT_POOL_INFOS,\n MAINNET_LEGACY_VAULT_ADDRESSES,\n MAINNET_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const MainnetWETHPLPVaultPoolInfos = {\n vaultAddress: MAINNET_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: MAINNET_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n\nexport const MainnetWETHPLPLegacyVaultPoolInfos = {\n vaultAddress: MAINNET_LEGACY_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: MAINNET_LEGACY_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n SEPOLIA_DEFAULT_POOL_INFOS,\n SEPOLIA_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const SepoliaUSDCPLPVaultPoolInfos = {\n vaultAddress: SEPOLIA_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: SEPOLIA_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n SEPOLIA_DEFAULT_POOL_INFOS,\n SEPOLIA_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const SepoliaWETHPLPVaultPoolInfos = {\n vaultAddress: SEPOLIA_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: SEPOLIA_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import type { Address, Client, Hex } from 'viem'\nimport { encodeAbiParameters, parseAbi } from 'viem'\nimport { readContract } from 'viem/actions'\n\nimport { PanopticVaultAccountantManagerInputAbi } from '../../abis/PanopticVaultAccountantManagerInput'\n\nexport type PoolInfo = {\n pool: Address\n token0: Address\n token1: Address\n maxPriceDeviation: number\n}\n\nexport type BuildManagerInputParams = {\n viemClient: Client\n poolInfos: readonly PoolInfo[]\n tokenIds: bigint[][]\n underlyingToken: Address\n wethAddress?: Address\n erc4626Vaults?: readonly Address[]\n}\n\nconst NATIVE_ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\nconst NATIVE_ETH_ALIAS_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\n\nexport function isUnderlyingEquivalentToken({\n token,\n underlyingToken,\n wethAddress,\n}: {\n token: Address\n underlyingToken: Address\n wethAddress?: Address\n}): boolean {\n const tokenLower = token.toLowerCase()\n const underlyingLower = underlyingToken.toLowerCase()\n if (tokenLower === underlyingLower) {\n return true\n }\n\n if (wethAddress === undefined) {\n return false\n }\n\n const wethLower = wethAddress.toLowerCase()\n const tokenIsNativeAlias =\n tokenLower === NATIVE_ZERO_ADDRESS || tokenLower === NATIVE_ETH_ALIAS_ADDRESS\n return tokenIsNativeAlias && underlyingLower === wethLower\n}\n\n/**\n * Builds the encoded managerInput for HypoVault operations like fulfillDeposits and fulfillWithdrawals.\n *\n * Supports the full input space of computeNAV by:\n * - Fetching TWAP ticks from each pool in poolInfos\n * - Setting token prices based on whether each token matches the underlyingToken address\n *\n * @param params.viemClient - Viem client with account for RPC calls\n * @param params.poolInfos - Array of pool info objects containing pool and token configuration\n * @param params.tokenIds - 2D array of tokenIds for each pool\n * @param params.underlyingToken - Address of the vault's underlying token\n * @param params.erc4626Vaults - Optional list of ERC4626 vaults considered by accountant NAV\n * @returns Encoded managerInput as Hex\n */\nexport async function buildManagerInput({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n wethAddress,\n erc4626Vaults = [],\n}: BuildManagerInputParams): Promise<Hex> {\n if (tokenIds.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput tokenIds length: expected ${poolInfos.length}, received ${tokenIds.length}`,\n )\n }\n\n // Fetch TWAP ticks for all pools in parallel\n const twapTicks = await Promise.all(\n poolInfos.map((poolInfo) =>\n readContract(viemClient, {\n address: poolInfo.pool as Address,\n abi: parseAbi(['function getTWAP() view returns (int24)']),\n functionName: 'getTWAP',\n }),\n ),\n )\n\n // Create ManagerPrices array, 1 entry per pool\n // ManagerPrices struct: { poolPrice: int24, token0Price: int24, token1Price: int24 }\n // - poolPrice: always the pool's TWAP tick\n // - token0Price: 0 if token0 == underlyingToken (no conversion needed), otherwise TWAP tick\n // - token1Price: 0 if token1 == underlyingToken (no conversion needed), otherwise TWAP tick\n const managerPrices = poolInfos.map((poolInfo, i) => {\n const twapTick = Number(twapTicks[i])\n const token0IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token0,\n underlyingToken,\n wethAddress,\n })\n const token1IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token1,\n underlyingToken,\n wethAddress,\n })\n\n return {\n poolPrice: twapTick,\n token0Price: token0IsUnderlying ? 0 : twapTick,\n token1Price: token1IsUnderlying ? 0 : twapTick,\n }\n })\n if (managerPrices.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput managerPrices length: expected ${poolInfos.length}, received ${managerPrices.length}`,\n )\n }\n\n // Encode managerInput: (ManagerPrices[], PoolInfo[], TokenId[][], IERC4626[])\n return encodeAbiParameters(PanopticVaultAccountantManagerInputAbi, [\n managerPrices,\n poolInfos.map((poolInfo) => ({\n pool: poolInfo.pool as Address,\n token0: poolInfo.token0 as Address,\n token1: poolInfo.token1 as Address,\n maxPriceDeviation: poolInfo.maxPriceDeviation,\n })),\n tokenIds,\n erc4626Vaults,\n ])\n}\n","import type { Address, Client, Hex } from 'viem'\nimport { encodeAbiParameters, parseAbi } from 'viem'\nimport { readContract } from 'viem/actions'\n\nimport { PanopticVaultAccountantManagerInputAbi } from '../../abis/PanopticVaultAccountantManagerInput'\nimport { type PoolInfo, isUnderlyingEquivalentToken } from './buildManagerInput'\n\nexport type BuildManagerInputAtBlockParams = {\n viemClient: Client\n poolInfos: readonly PoolInfo[]\n tokenIds: bigint[][]\n underlyingToken: Address\n wethAddress?: Address\n blockNumber: bigint\n erc4626Vaults?: readonly Address[]\n}\n\n/**\n * Builds encoded managerInput for HypoVault accountant reads at a specific block.\n */\nexport async function buildManagerInputAtBlock({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n wethAddress,\n blockNumber,\n erc4626Vaults = [],\n}: BuildManagerInputAtBlockParams): Promise<Hex> {\n if (tokenIds.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput tokenIds length: expected ${poolInfos.length}, received ${tokenIds.length}`,\n )\n }\n\n const twapTicks = await Promise.all(\n poolInfos.map((poolInfo) =>\n readContract(viemClient, {\n address: poolInfo.pool as Address,\n abi: parseAbi(['function getTWAP() view returns (int24)']),\n functionName: 'getTWAP',\n blockNumber,\n }),\n ),\n )\n\n const managerPrices = poolInfos.map((poolInfo, i) => {\n const twapTick = Number(twapTicks[i])\n const token0IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token0,\n underlyingToken,\n wethAddress,\n })\n const token1IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token1,\n underlyingToken,\n wethAddress,\n })\n\n return {\n poolPrice: twapTick,\n token0Price: token0IsUnderlying ? 0 : twapTick,\n token1Price: token1IsUnderlying ? 0 : twapTick,\n }\n })\n if (managerPrices.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput managerPrices length: expected ${poolInfos.length}, received ${managerPrices.length}`,\n )\n }\n\n return encodeAbiParameters(PanopticVaultAccountantManagerInputAbi, [\n managerPrices,\n poolInfos.map((poolInfo) => ({\n pool: poolInfo.pool as Address,\n token0: poolInfo.token0 as Address,\n token1: poolInfo.token1 as Address,\n maxPriceDeviation: poolInfo.maxPriceDeviation,\n })),\n tokenIds,\n erc4626Vaults,\n ])\n}\n","import { type Address, type Client, ContractFunctionExecutionError } from 'viem'\nimport { readContract } from 'viem/actions'\n\nimport { panopticPoolV2Abi as panopticPoolAbi } from '../../abis/panoptic_v2_abis'\nimport {\n BASE_CHAIN_ID,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from '../chainDeployments'\nimport { BaseUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/BaseUSDCPLPVaultPoolInfos'\nimport { BaseWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/BaseWETHPLPVaultPoolInfos'\nimport {\n MainnetUSDCPLPLegacyVaultPoolInfos,\n MainnetUSDCPLPVaultPoolInfos,\n} from '../hypoVaultManagerArtifacts/MainnetUSDCPLPVaultPoolInfos'\nimport {\n MainnetWETHPLPLegacyVaultPoolInfos,\n MainnetWETHPLPVaultPoolInfos,\n} from '../hypoVaultManagerArtifacts/MainnetWETHPLPVaultPoolInfos'\nimport { SepoliaUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/SepoliaUSDCPLPVaultPoolInfos'\nimport { SepoliaWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/SepoliaWETHPLPVaultPoolInfos'\nimport { type PoolInfo, buildManagerInput } from './buildManagerInput'\nimport { buildManagerInputAtBlock } from './buildManagerInputAtBlock'\n\nconst DEFAULT_MANAGER_INPUT = '0x' as const\nconst PAGE_SIZE = 1000\n\ntype CandidateTokenIdsByPool = Map<string, Set<bigint>>\n\ntype VaultPoolInfoArtifact = {\n readonly vaultAddress: Address\n readonly poolInfos: readonly PoolInfo[]\n}\n\nconst VAULT_POOL_INFOS_BY_CHAIN: Record<number, readonly VaultPoolInfoArtifact[]> = {\n [MAINNET_CHAIN_ID]: [\n MainnetUSDCPLPVaultPoolInfos,\n MainnetWETHPLPVaultPoolInfos,\n MainnetUSDCPLPLegacyVaultPoolInfos,\n MainnetWETHPLPLegacyVaultPoolInfos,\n ],\n [SEPOLIA_CHAIN_ID]: [SepoliaUSDCPLPVaultPoolInfos, SepoliaWETHPLPVaultPoolInfos],\n [BASE_CHAIN_ID]: [BaseUSDCPLPVaultPoolInfos, BaseWETHPLPVaultPoolInfos],\n}\n\nconst GET_POOL_ACCOUNT_BALANCE_CANDIDATES = `\n query PoolAccountBalanceCandidates(\n $first: Int!\n $skip: Int!\n $poolIds: [String!]!\n $vault: String!\n ) {\n panopticPoolAccounts(\n first: $first\n skip: $skip\n where: { panopticPool_in: $poolIds, account: $vault }\n ) {\n panopticPool {\n id\n }\n accountBalances(where: { isOpen: 1 }) {\n tokenId {\n id\n }\n }\n }\n }\n`\n\nconst GET_OPTION_EVENT_CANDIDATES = `\n query OptionEventCandidates(\n $first: Int!\n $skip: Int!\n $poolIds: [String!]!\n $recipients: [String!]!\n ) {\n optionMints(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n where: { panopticPool_in: $poolIds, recipient_in: $recipients }\n ) {\n panopticPool {\n id\n }\n tokenId {\n id\n idHexString\n }\n }\n optionBurns(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n where: { panopticPool_in: $poolIds, recipient_in: $recipients }\n ) {\n panopticPool {\n id\n }\n tokenId {\n id\n idHexString\n }\n }\n }\n`\n\ntype GraphQLError = { message?: string }\n\ntype GraphQLResponse<T> = {\n data?: T\n errors?: GraphQLError[]\n}\n\ntype PoolAccountBalanceCandidatesResponse = {\n panopticPoolAccounts: Array<{\n panopticPool: { id: string }\n accountBalances: Array<{ tokenId: { id: string } | null }>\n }>\n}\n\ntype OptionEventCandidatesResponse = {\n optionMints: Array<{\n panopticPool: { id: string }\n tokenId: { id: string; idHexString: string }\n }>\n optionBurns: Array<{\n panopticPool: { id: string }\n tokenId: { id: string; idHexString: string }\n }>\n}\n\ntype FetchInit = {\n method?: string\n headers?: Record<string, string>\n body?: string\n}\n\ntype FetchResponseLike = {\n ok: boolean\n status: number\n json: () => Promise<unknown>\n}\n\ntype FetchLike = (input: string, init?: FetchInit) => Promise<FetchResponseLike>\n\nfunction toLowerAddress(address: string): string {\n return address.toLowerCase()\n}\n\nfunction parseTokenId(value: string | null | undefined): bigint | null {\n if (value === undefined || value === null || value.length === 0) {\n return null\n }\n\n try {\n return BigInt(value)\n } catch {\n return null\n }\n}\n\nfunction ensurePoolCandidateSet(\n candidatesByPool: CandidateTokenIdsByPool,\n poolAddress: string,\n): Set<bigint> {\n const poolAddressLower = toLowerAddress(poolAddress)\n const existing = candidatesByPool.get(poolAddressLower)\n if (existing !== undefined) {\n return existing\n }\n const created = new Set<bigint>()\n candidatesByPool.set(poolAddressLower, created)\n return created\n}\n\nasync function postGraphQL<T>({\n endpoint,\n query,\n variables,\n fetchFn,\n}: {\n endpoint: string\n query: string\n variables: Record<string, unknown>\n fetchFn: FetchLike\n}): Promise<T> {\n const response = await fetchFn(endpoint, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({\n query,\n variables,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`GraphQL request failed (${response.status})`)\n }\n\n const json = (await response.json()) as GraphQLResponse<T>\n if ((json.errors?.length ?? 0) > 0) {\n throw new Error(json.errors?.[0]?.message ?? 'GraphQL request failed')\n }\n if (json.data === undefined) {\n throw new Error('GraphQL response did not include data')\n }\n\n return json.data\n}\n\nasync function collectPoolAccountBalanceCandidates({\n endpoint,\n poolIds,\n vaultAddress,\n candidatesByPool,\n fetchFn,\n}: {\n endpoint: string\n poolIds: string[]\n vaultAddress: string\n candidatesByPool: CandidateTokenIdsByPool\n fetchFn: FetchLike\n}): Promise<void> {\n for (let skip = 0; ; skip += PAGE_SIZE) {\n const page = await postGraphQL<PoolAccountBalanceCandidatesResponse>({\n endpoint,\n query: GET_POOL_ACCOUNT_BALANCE_CANDIDATES,\n variables: {\n first: PAGE_SIZE,\n skip,\n poolIds,\n vault: vaultAddress,\n },\n fetchFn,\n })\n\n for (const account of page.panopticPoolAccounts) {\n const poolSet = ensurePoolCandidateSet(candidatesByPool, account.panopticPool.id)\n for (const balance of account.accountBalances) {\n const tokenId = parseTokenId(balance.tokenId?.id)\n if (tokenId !== null) {\n poolSet.add(tokenId)\n }\n }\n }\n\n if (page.panopticPoolAccounts.length < PAGE_SIZE) {\n break\n }\n }\n}\n\nasync function collectOptionEventCandidates({\n endpoint,\n poolIds,\n recipientAddresses,\n candidatesByPool,\n fetchFn,\n}: {\n endpoint: string\n poolIds: string[]\n recipientAddresses: string[]\n candidatesByPool: CandidateTokenIdsByPool\n fetchFn: FetchLike\n}): Promise<void> {\n for (let skip = 0; ; skip += PAGE_SIZE) {\n const page = await postGraphQL<OptionEventCandidatesResponse>({\n endpoint,\n query: GET_OPTION_EVENT_CANDIDATES,\n variables: {\n first: PAGE_SIZE,\n skip,\n poolIds,\n recipients: recipientAddresses,\n },\n fetchFn,\n })\n\n const events = [...page.optionMints, ...page.optionBurns]\n for (const event of events) {\n const poolSet = ensurePoolCandidateSet(candidatesByPool, event.panopticPool.id)\n const parsedFromHex = parseTokenId(event.tokenId.idHexString)\n if (parsedFromHex !== null) {\n poolSet.add(parsedFromHex)\n }\n const parsedFromId = parseTokenId(event.tokenId.id)\n if (parsedFromId !== null) {\n poolSet.add(parsedFromId)\n }\n }\n\n if (page.optionMints.length < PAGE_SIZE && page.optionBurns.length < PAGE_SIZE) {\n break\n }\n }\n}\n\nfunction sortBigintsAscending(values: Iterable<bigint>): bigint[] {\n return Array.from(values).sort((left, right) => {\n if (left < right) {\n return -1\n }\n if (left > right) {\n return 1\n }\n return 0\n })\n}\n\nfunction extractPositionSizeFromPackedBalance(value: unknown): bigint | null {\n if (typeof value !== 'bigint') {\n return null\n }\n return value & ((1n << 128n) - 1n)\n}\n\n// When the whole-batch read reverts (any single bad tokenId — burned or\n// not-yet-minted at `blockNumber` — reverts `getFullPositionsData` for the\n// entire list), we bisect the candidate list. This way a handful of bad\n// tokenIds collapses to O(log N) reads instead of O(N), and the leaf-level\n// per-tokenId reads run in parallel so viem's JSON-RPC batching can fold\n// them into a single HTTP request.\nconst BISECT_LEAF_THRESHOLD = 1\n\nasync function readPositionBalances({\n viemClient,\n poolAddress,\n account,\n candidates,\n blockNumber,\n}: {\n viemClient: Client\n poolAddress: Address\n account: Address\n candidates: readonly bigint[]\n blockNumber: bigint\n}): Promise<readonly unknown[] | null> {\n let result: unknown\n try {\n result = await readContract(viemClient, {\n address: poolAddress,\n abi: panopticPoolAbi,\n functionName: 'getFullPositionsData',\n args: [account, false, candidates],\n blockNumber,\n })\n } catch (error) {\n // Only treat contract reverts (e.g. `PositionNotOwned` from a stale\n // candidate) as \"bad batch — caller should bisect\". Transport, JSON-RPC,\n // or other transient failures must propagate so the caller doesn't\n // silently treat a network blip as \"all candidates closed\".\n if (error instanceof ContractFunctionExecutionError) {\n return null\n }\n throw error\n }\n const maybePositionBalances = Array.isArray(result) ? result[2] : undefined\n if (!Array.isArray(maybePositionBalances)) {\n return null\n }\n return maybePositionBalances\n}\n\nasync function filterOpenTokenIdsAtBlock({\n viemClient,\n poolAddress,\n account,\n candidates,\n blockNumber,\n}: {\n viemClient: Client\n poolAddress: Address\n account: Address\n candidates: readonly bigint[]\n blockNumber: bigint\n}): Promise<bigint[]> {\n if (candidates.length === 0) {\n return []\n }\n\n const collectOpen = async (chunk: readonly bigint[]): Promise<bigint[]> => {\n if (chunk.length === 0) {\n return []\n }\n\n const balances = await readPositionBalances({\n viemClient,\n poolAddress,\n account,\n candidates: chunk,\n blockNumber,\n })\n\n if (balances !== null) {\n const open: bigint[] = []\n for (let index = 0; index < chunk.length; index += 1) {\n const tokenId = chunk[index]\n const positionSize = extractPositionSizeFromPackedBalance(balances[index])\n if (tokenId !== undefined && positionSize !== null && positionSize > 0n) {\n open.push(tokenId)\n }\n }\n return open\n }\n\n if (chunk.length <= BISECT_LEAF_THRESHOLD) {\n // Single bad tokenId — drop it.\n return []\n }\n\n const mid = chunk.length >> 1\n const [leftOpen, rightOpen] = await Promise.all([\n collectOpen(chunk.slice(0, mid)),\n collectOpen(chunk.slice(mid)),\n ])\n return [...leftOpen, ...rightOpen]\n }\n\n const openTokenIds = await collectOpen(candidates)\n return sortBigintsAscending(openTokenIds)\n}\n\nexport function getVaultPoolInfos(vaultAddress: Address, chainId?: number): readonly PoolInfo[] {\n const vaultAddressLower = toLowerAddress(vaultAddress)\n const artifacts =\n chainId === undefined\n ? Object.values(VAULT_POOL_INFOS_BY_CHAIN).flat()\n : (VAULT_POOL_INFOS_BY_CHAIN[chainId] ?? [])\n const artifact = artifacts.find(\n (candidate) => toLowerAddress(candidate.vaultAddress) === vaultAddressLower,\n )\n return artifact?.poolInfos ?? []\n}\n\nexport type VaultPoolCandidateTokenIds = {\n poolAddress: Address\n /**\n * All-time candidate tokenIds (subgraph balances ∪ option events), sorted\n * ascending. Block-INDEPENDENT: a superset valid for any historical block.\n */\n candidates: bigint[]\n}\n\n/**\n * Resolve the block-INDEPENDENT candidate tokenIds per pool for a vault — i.e. the\n * two subgraph paging queries only, with no on-chain verification. Pair with\n * {@link verifyVaultOpenTokenIdsAtBlock} to narrow to positions open at a given\n * block. Splitting these out lets a timeseries fetch the candidate set ONCE per\n * vault instead of re-running the subgraph paging for every anchor block. The\n * combined {@link resolveVaultTokenIdsByPool} remains for one-shot callers.\n */\nexport async function resolveVaultHistoricalCandidatesByPool({\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n fetchFn = fetch,\n}: {\n chainId: number\n vaultAddress: Address\n managerAddress?: Address | null\n poolInfos?: readonly PoolInfo[]\n panopticSubgraphUrl?: string\n fetchFn?: FetchLike\n}): Promise<VaultPoolCandidateTokenIds[]> {\n const resolvedPoolInfos = poolInfos ?? getVaultPoolInfos(vaultAddress, chainId)\n if (resolvedPoolInfos.length === 0) {\n return []\n }\n\n const configuredEndpoint =\n panopticSubgraphUrl ?? requireChainDeployment(chainId).subgraphs.panoptic\n if (configuredEndpoint === undefined) {\n return resolvedPoolInfos.map((poolInfo) => ({ poolAddress: poolInfo.pool, candidates: [] }))\n }\n\n const vaultAddressLower = toLowerAddress(vaultAddress)\n const recipientAddresses = Array.from(\n new Set(\n [vaultAddressLower, managerAddress?.toLowerCase()]\n .filter((value): value is string => value !== undefined && value.length > 0)\n .map((value) => value.toLowerCase()),\n ),\n )\n const poolIds = Array.from(\n new Set(resolvedPoolInfos.map((poolInfo) => toLowerAddress(poolInfo.pool))),\n )\n\n const balanceCandidatesByPool: CandidateTokenIdsByPool = new Map()\n const eventCandidatesByPool: CandidateTokenIdsByPool = new Map()\n\n await collectPoolAccountBalanceCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n vaultAddress: vaultAddressLower,\n candidatesByPool: balanceCandidatesByPool,\n fetchFn,\n })\n\n await collectOptionEventCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n recipientAddresses,\n candidatesByPool: eventCandidatesByPool,\n fetchFn,\n })\n\n return resolvedPoolInfos.map((poolInfo) => {\n const poolAddressLower = toLowerAddress(poolInfo.pool)\n const openBalances = balanceCandidatesByPool.get(poolAddressLower) ?? new Set<bigint>()\n const eventCandidates = eventCandidatesByPool.get(poolAddressLower) ?? new Set<bigint>()\n const candidates = sortBigintsAscending(new Set<bigint>([...openBalances, ...eventCandidates]))\n return { poolAddress: poolInfo.pool, candidates }\n })\n}\n\n/**\n * Narrow pre-resolved {@link VaultPoolCandidateTokenIds} to the tokenIds actually\n * open at `blockNumber`, per pool, via on-chain `getFullPositionsData` (bisecting\n * on stale candidates). This is the per-block half of the candidate/verify split.\n */\nexport async function verifyVaultOpenTokenIdsAtBlock({\n viemClient,\n vaultAddress,\n candidatesByPool,\n blockNumber,\n}: {\n viemClient: Client\n vaultAddress: Address\n candidatesByPool: readonly VaultPoolCandidateTokenIds[]\n blockNumber: bigint\n}): Promise<bigint[][]> {\n const tokenIdsByPool: bigint[][] = []\n for (const { poolAddress, candidates } of candidatesByPool) {\n const openTokenIds = await filterOpenTokenIdsAtBlock({\n viemClient,\n poolAddress,\n account: vaultAddress,\n candidates,\n blockNumber,\n })\n tokenIdsByPool.push(openTokenIds)\n }\n return tokenIdsByPool\n}\n\nexport async function resolveVaultTokenIdsByPool({\n viemClient,\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n verificationBlockNumber,\n fetchFn = fetch,\n}: {\n viemClient: Client\n chainId: number\n vaultAddress: Address\n managerAddress?: Address | null\n poolInfos?: readonly PoolInfo[]\n panopticSubgraphUrl?: string\n verificationBlockNumber?: bigint\n fetchFn?: FetchLike\n}): Promise<bigint[][]> {\n const resolvedPoolInfos = poolInfos ?? getVaultPoolInfos(vaultAddress, chainId)\n if (resolvedPoolInfos.length === 0) {\n return []\n }\n\n const configuredEndpoint =\n panopticSubgraphUrl ?? requireChainDeployment(chainId).subgraphs.panoptic\n if (configuredEndpoint === undefined) {\n return resolvedPoolInfos.map(() => [])\n }\n\n const vaultAddressLower = toLowerAddress(vaultAddress)\n const recipientAddresses = Array.from(\n new Set(\n [vaultAddressLower, managerAddress?.toLowerCase()]\n .filter((value): value is string => value !== undefined && value.length > 0)\n .map((value) => value.toLowerCase()),\n ),\n )\n const poolIds = Array.from(\n new Set(resolvedPoolInfos.map((poolInfo) => toLowerAddress(poolInfo.pool))),\n )\n\n const balanceCandidatesByPool: CandidateTokenIdsByPool = new Map()\n const eventCandidatesByPool: CandidateTokenIdsByPool = new Map()\n\n await collectPoolAccountBalanceCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n vaultAddress: vaultAddressLower,\n candidatesByPool: balanceCandidatesByPool,\n fetchFn,\n })\n\n await collectOptionEventCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n recipientAddresses,\n candidatesByPool: eventCandidatesByPool,\n fetchFn,\n })\n\n const tokenIdsByPool: bigint[][] = []\n for (const poolInfo of resolvedPoolInfos) {\n const poolAddressLower = toLowerAddress(poolInfo.pool)\n const openBalances = sortBigintsAscending(balanceCandidatesByPool.get(poolAddressLower) ?? [])\n\n if (verificationBlockNumber !== undefined) {\n const eventCandidates = sortBigintsAscending(\n eventCandidatesByPool.get(poolAddressLower) ?? [],\n )\n const historicalCandidates = sortBigintsAscending(\n Array.from(new Set([...openBalances, ...eventCandidates])),\n )\n const historicalOpenTokenIds = await filterOpenTokenIdsAtBlock({\n viemClient,\n poolAddress: poolInfo.pool,\n account: vaultAddress,\n candidates: historicalCandidates,\n blockNumber: verificationBlockNumber,\n })\n tokenIdsByPool.push(historicalOpenTokenIds)\n continue\n }\n\n if (openBalances.length > 0) {\n tokenIdsByPool.push(openBalances)\n continue\n }\n\n const eventCandidates = sortBigintsAscending(eventCandidatesByPool.get(poolAddressLower) ?? [])\n if (eventCandidates.length === 0) {\n tokenIdsByPool.push([])\n continue\n }\n\n try {\n const result = await readContract(viemClient, {\n address: poolInfo.pool,\n abi: panopticPoolAbi,\n functionName: 'getFullPositionsData',\n args: [vaultAddress, false, eventCandidates],\n ...(verificationBlockNumber === undefined ? {} : { blockNumber: verificationBlockNumber }),\n })\n\n const maybePositionBalances = Array.isArray(result) ? result[2] : undefined\n if (!Array.isArray(maybePositionBalances)) {\n tokenIdsByPool.push([])\n continue\n }\n\n const openTokenIds: bigint[] = []\n for (let index = 0; index < eventCandidates.length; index += 1) {\n const tokenId = eventCandidates[index]\n const packedBalance = maybePositionBalances[index]\n if (tokenId === undefined || typeof packedBalance !== 'bigint') {\n continue\n }\n const positionSize = packedBalance & ((1n << 128n) - 1n)\n if (positionSize > 0n) {\n openTokenIds.push(tokenId)\n }\n }\n tokenIdsByPool.push(sortBigintsAscending(openTokenIds))\n } catch {\n // If fallback verification fails, return no positions for safety.\n tokenIdsByPool.push([])\n }\n }\n\n return tokenIdsByPool\n}\n\nexport async function buildVaultManagerInput({\n viemClient,\n chainId,\n vaultAddress,\n underlyingToken,\n managerAddress,\n panopticSubgraphUrl,\n fetchFn,\n}: {\n viemClient: Client\n chainId: number\n vaultAddress: Address\n underlyingToken: Address\n managerAddress?: Address | null\n panopticSubgraphUrl?: string\n fetchFn?: FetchLike\n}): Promise<`0x${string}`> {\n const poolInfos = getVaultPoolInfos(vaultAddress, chainId)\n if (poolInfos.length === 0) {\n return DEFAULT_MANAGER_INPUT\n }\n\n const tokenIds = await resolveVaultTokenIdsByPool({\n viemClient,\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n fetchFn,\n })\n\n return buildManagerInput({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n })\n}\n\nexport async function buildVaultManagerInputAtBlock({\n viemClient,\n chainId,\n vaultAddress,\n underlyingToken,\n blockNumber,\n managerAddress,\n panopticSubgraphUrl,\n fetchFn,\n}: {\n viemClient: Client\n chainId: number\n vaultAddress: Address\n underlyingToken: Address\n blockNumber: bigint\n managerAddress?: Address | null\n panopticSubgraphUrl?: string\n fetchFn?: FetchLike\n}): Promise<`0x${string}`> {\n const poolInfos = getVaultPoolInfos(vaultAddress, chainId)\n if (poolInfos.length === 0) {\n return DEFAULT_MANAGER_INPUT\n }\n\n const tokenIds = await resolveVaultTokenIdsByPool({\n viemClient,\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n verificationBlockNumber: blockNumber,\n fetchFn,\n })\n\n return buildManagerInputAtBlock({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n blockNumber,\n })\n}\n","import type { Address, PublicClient } from 'viem'\n\nimport { getAccountCollateral } from '../../panoptic/v2/reads/account'\nimport { getCollateralData } from '../../panoptic/v2/reads/collateral'\nimport { getPoolMetadata } from '../../panoptic/v2/reads/pool'\nimport { getHypoVaultConfigForVault } from '../hypoVaultManagerConfigs/vaultToConfig'\nimport { getVaultPoolInfos } from '../utils/vaultManagerInput'\n\nconst erc20BalanceOfAbi = [\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256' }],\n stateMutability: 'view',\n },\n] as const\n\nexport type LendingAllocationRow = {\n market: string\n borrowRateWad: bigint | null\n supplyRateWad: bigint | null\n utilizationBps: bigint | null\n allocationUnderlying: bigint\n allocationPctBps: bigint\n isIdle: boolean\n poolAddress: Address | null\n collateralTrackerAddress: Address | null\n}\n\nexport type LendingAllocationResult = {\n rows: LendingAllocationRow[]\n totalUnderlying: bigint\n}\n\nfunction toLowerAddress(address: string): string {\n return address.toLowerCase()\n}\n\nfunction discoverPoolAddresses({\n chainId,\n vaultAddress,\n}: {\n chainId: number\n vaultAddress: Address\n}): Address[] {\n const discoveredAddresses: Address[] = []\n const seen = new Set<string>()\n\n const config = getHypoVaultConfigForVault(vaultAddress, chainId)\n const poolFromConfig = config?.addresses?.ethUsdc500bpsV4PanopticPool\n if (poolFromConfig !== undefined) {\n const key = toLowerAddress(poolFromConfig)\n if (!seen.has(key)) {\n seen.add(key)\n discoveredAddresses.push(poolFromConfig)\n }\n }\n\n const artifactPoolInfos = getVaultPoolInfos(vaultAddress, chainId)\n\n for (const poolInfo of artifactPoolInfos) {\n const key = toLowerAddress(poolInfo.pool)\n if (!seen.has(key)) {\n seen.add(key)\n discoveredAddresses.push(poolInfo.pool as Address)\n }\n }\n\n return discoveredAddresses\n}\n\nfunction getUnderlyingIndex({\n underlyingTokenAddress,\n token0Asset,\n token1Asset,\n}: {\n underlyingTokenAddress: Address\n token0Asset: Address\n token1Asset: Address\n}): 0 | 1 | null {\n const underlyingLower = toLowerAddress(underlyingTokenAddress)\n if (toLowerAddress(token0Asset) === underlyingLower) {\n return 0\n }\n if (toLowerAddress(token1Asset) === underlyingLower) {\n return 1\n }\n return null\n}\n\nexport async function getLendingAllocationRows({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n}: {\n client: PublicClient\n chainId: number\n vaultAddress: Address\n underlyingTokenAddress: Address\n blockNumber?: bigint\n}): Promise<LendingAllocationResult> {\n const poolAddresses = discoverPoolAddresses({\n chainId,\n vaultAddress,\n })\n\n const poolRows = await Promise.all(\n poolAddresses.map(async (poolAddress): Promise<LendingAllocationRow | null> => {\n const metadata = await getPoolMetadata({\n client,\n poolAddress,\n })\n\n const underlyingIndex = getUnderlyingIndex({\n underlyingTokenAddress,\n token0Asset: metadata.token0Asset,\n token1Asset: metadata.token1Asset,\n })\n\n if (underlyingIndex === null) {\n return null\n }\n\n const [collateralData, accountCollateral] = await Promise.all([\n getCollateralData({\n client,\n poolAddress,\n tokenIndex: underlyingIndex,\n blockNumber,\n }),\n getAccountCollateral({\n client,\n poolAddress,\n account: vaultAddress,\n blockNumber,\n }),\n ])\n\n const allocationUnderlying =\n underlyingIndex === 0 ? accountCollateral.token0.assets : accountCollateral.token1.assets\n\n return {\n market: `${metadata.token0Symbol}/${metadata.token1Symbol}`,\n borrowRateWad: collateralData.borrowRate,\n supplyRateWad: collateralData.supplyRate,\n utilizationBps: collateralData.utilization,\n allocationUnderlying,\n allocationPctBps: 0n,\n isIdle: false,\n poolAddress,\n collateralTrackerAddress:\n underlyingIndex === 0\n ? metadata.collateralToken0Address\n : metadata.collateralToken1Address,\n }\n }),\n )\n\n const nonNullPoolRows = poolRows.filter(\n (row): row is Exclude<LendingAllocationRow, null> => row !== null,\n )\n\n const idleBalance = await client.readContract({\n address: underlyingTokenAddress,\n abi: erc20BalanceOfAbi,\n functionName: 'balanceOf',\n args: [vaultAddress],\n blockNumber,\n })\n\n const idleRow: LendingAllocationRow = {\n market: 'Idle Funds',\n borrowRateWad: null,\n supplyRateWad: null,\n utilizationBps: null,\n allocationUnderlying: idleBalance,\n allocationPctBps: 0n,\n isIdle: true,\n poolAddress: null,\n collateralTrackerAddress: null,\n }\n\n const rowsBeforePct = [...nonNullPoolRows, idleRow]\n const totalUnderlying = rowsBeforePct.reduce((sum, row) => sum + row.allocationUnderlying, 0n)\n\n if (totalUnderlying === 0n) {\n return {\n rows: rowsBeforePct,\n totalUnderlying,\n }\n }\n\n return {\n rows: rowsBeforePct.map((row) => ({\n ...row,\n allocationPctBps: (row.allocationUnderlying * 10_000n) / totalUnderlying,\n })),\n totalUnderlying,\n }\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\n\nexport const getCancelDepositContractConfig = ({ vaultAddress }: { vaultAddress: Address }) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'cancelDeposit',\n args: [],\n }) as const\n\nexport function encodeCancelDepositFunctionData(): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'cancelDeposit',\n args: [],\n })\n}\n\nexport function simulateCancelDeposit({\n viemClient,\n vaultAddress,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getCancelDepositContractConfig({ vaultAddress }),\n account,\n })\n}\n\nexport function cancelDeposit({\n walletClient,\n vaultAddress,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getCancelDepositContractConfig({ vaultAddress }),\n account,\n })\n}\n","import { BaseError, ContractFunctionRevertedError } from 'viem'\n\nexport interface GenericError {\n name: string\n message: string\n}\n\nexport interface DecodedError extends GenericError {\n data?: string\n args?: any\n}\n\n/**\n * Parses a custom error from Viem's BaseError or ContractFunctionRevertedError using BaseError.walk.\n * Docs on walk usage: https://viem.sh/docs/contract/simulateContract.html#handling-custom-errors\n *\n * @param {Error} e - The error to parse.\n * @returns {BaseError | ContractFunctionRevertedError | Error} The parsed error.\n *\n * @example\n * To get typesafe access to revert error, can do something like:\n * if (e instanceof ContractFunctionRevertedError) {\n * // Access custom error properties through the `data` attribute:\n * console.error('Custom error name: ', e.data?.errorName)\n * console.error('Custom error args: ', e.data?.args)\n * } else {\n * console.error('Error name: ', e.name)\n * console.error('Error message: ', e.message)\n * }\n */\nexport const parseCustomError = (e: Error): BaseError | ContractFunctionRevertedError | Error => {\n if (e instanceof BaseError) {\n // If caught error is a revert with a solidity custom error, parse it with `walk`\n const revertError = e.walk((e) => e instanceof ContractFunctionRevertedError)\n if (revertError instanceof ContractFunctionRevertedError) {\n return revertError\n }\n // If no revert error found, return the Viem BaseError\n return e\n }\n\n // If error is not a Viem BaseError, return the original error object that was passed in.\n return e\n}\n\nexport const isErrorUserRejection = (errorMessage: string) =>\n errorMessage.includes('User rejected the request.')\n","import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type { Address } from 'viem'\nimport { zeroAddress } from 'viem'\nimport {\n useAccount,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport { getCancelDepositContractConfig } from '../cancelDeposit'\n\nexport const useCancelDeposit = ({\n chainId,\n vaultAddress,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n\n const canSimulate = vaultAddress !== zeroAddress && account != null && account !== zeroAddress\n\n const simulate = useSimulateContract({\n chainId,\n ...getCancelDepositContractConfig({ vaultAddress }),\n account,\n query: {\n enabled: canSimulate,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [simulate.data?.request, write])\n\n const actionLabel = useMemo(() => {\n if (simulate.isLoading) {\n return 'Simulating deposit cancellation...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Cancelling deposits...'\n }\n return 'Cancel All'\n }, [simulate.isLoading, write.isPending, wait.isLoading])\n\n const isLoading = simulate.isLoading || write.isPending || wait.isLoading\n const canSubmit = simulate.data?.request != null && !isLoading\n\n const error = useMemo(() => {\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [simulate.error, write.error])\n\n return {\n actionLabel,\n act,\n canSubmit,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\n\nexport function encodeExecuteWithdrawalFunctionData({\n user,\n epoch,\n}: {\n user: Address\n epoch: bigint\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'executeWithdrawal',\n args: [user, epoch],\n })\n}\n\nexport function encodeExecuteWithdrawalMulticallFunctionData({\n multicallCalldatas,\n}: {\n multicallCalldatas: Hex[]\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n })\n}\n\nexport const getExecuteWithdrawalContractConfig = ({\n vaultAddress,\n user,\n epoch,\n}: {\n vaultAddress: Address\n user: Address\n epoch: bigint\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'executeWithdrawal',\n args: [user, epoch],\n }) as const\n\nexport const getExecuteWithdrawalMulticallContractConfig = ({\n vaultAddress,\n multicallCalldatas,\n}: {\n vaultAddress: Address\n multicallCalldatas: Hex[]\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n }) as const\n\nexport function simulateExecuteWithdrawal({\n viemClient,\n vaultAddress,\n user,\n epoch,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n user: Address\n epoch: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getExecuteWithdrawalContractConfig({ vaultAddress, user, epoch }),\n account,\n })\n}\n\nexport function executeWithdrawal({\n walletClient,\n vaultAddress,\n user,\n epoch,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n user: Address\n epoch: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getExecuteWithdrawalContractConfig({ vaultAddress, user, epoch }),\n account,\n })\n}\n\nexport function simulateExecuteWithdrawalMulticall({\n viemClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getExecuteWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function executeWithdrawalMulticall({\n walletClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getExecuteWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function buildExecuteWithdrawalCalldatas({\n user,\n epochsToExecute,\n}: {\n user: Address\n epochsToExecute: bigint[]\n}): Hex[] {\n return epochsToExecute.map((epoch) => encodeExecuteWithdrawalFunctionData({ user, epoch }))\n}\n","export type QueuedWithdrawalSnapshot = {\n amount: bigint\n epoch: bigint\n}\n\nexport type WithdrawalEpochStateSnapshot = {\n epoch: bigint\n sharesWithdrawn: bigint\n assetsReceived: bigint\n sharesFulfilled: bigint\n}\n\nfunction mulDiv({\n value,\n numerator,\n denominator,\n}: {\n value: bigint\n numerator: bigint\n denominator: bigint\n}): bigint {\n if (denominator === 0n) {\n return 0n\n }\n return (value * numerator) / denominator\n}\n\nexport function calculateClaimableAssetsFromQueuedWithdrawals({\n queuedWithdrawals,\n withdrawalEpochStates,\n currentWithdrawalEpoch,\n}: {\n queuedWithdrawals: QueuedWithdrawalSnapshot[]\n withdrawalEpochStates: WithdrawalEpochStateSnapshot[]\n currentWithdrawalEpoch: bigint\n}) {\n const epochStatesByEpoch = new Map(withdrawalEpochStates.map((state) => [state.epoch, state]))\n\n const byEpoch: {\n epoch: bigint\n queuedShares: bigint\n userSharesFulfilled: bigint\n assetsToReceive: bigint\n }[] = []\n\n for (const withdrawal of queuedWithdrawals) {\n if (withdrawal.amount === 0n || withdrawal.epoch >= currentWithdrawalEpoch) {\n continue\n }\n\n const epochState = epochStatesByEpoch.get(withdrawal.epoch)\n if (!epochState) {\n continue\n }\n\n if (\n epochState.sharesWithdrawn === 0n ||\n epochState.sharesFulfilled === 0n ||\n epochState.assetsReceived === 0n\n ) {\n continue\n }\n\n const userSharesFulfilled = mulDiv({\n value: withdrawal.amount,\n numerator: epochState.sharesFulfilled,\n denominator: epochState.sharesWithdrawn,\n })\n\n if (userSharesFulfilled === 0n) {\n continue\n }\n\n const assetsToReceive = mulDiv({\n value: userSharesFulfilled,\n numerator: epochState.assetsReceived,\n denominator: epochState.sharesFulfilled,\n })\n\n if (assetsToReceive === 0n) {\n continue\n }\n\n byEpoch.push({\n epoch: withdrawal.epoch,\n queuedShares: withdrawal.amount,\n userSharesFulfilled,\n assetsToReceive,\n })\n }\n\n const epochsToExecute = byEpoch.map((entry) => entry.epoch).sort((a, b) => (a < b ? -1 : 1))\n\n const totalAssets = byEpoch.reduce((sum, entry) => sum + entry.assetsToReceive, 0n)\n\n return { byEpoch, epochsToExecute, totalAssets }\n}\n","import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type { Address } from 'viem'\nimport { zeroAddress } from 'viem'\nimport {\n useAccount,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport {\n buildExecuteWithdrawalCalldatas,\n getExecuteWithdrawalMulticallContractConfig,\n} from '../executeWithdrawal'\nimport type { QueuedWithdrawalSnapshot, WithdrawalEpochStateSnapshot } from '../utils'\nimport { calculateClaimableAssetsFromQueuedWithdrawals } from '../utils'\n\nexport const selectExecutableWithdrawalEpochs = ({\n desiredAssets,\n maxAssetsToExecute,\n claimableWithdrawals,\n}: {\n desiredAssets: bigint\n maxAssetsToExecute?: bigint\n claimableWithdrawals: ReturnType<typeof calculateClaimableAssetsFromQueuedWithdrawals>['byEpoch']\n}) => {\n if (desiredAssets <= 0n) {\n return { epochsToExecute: [] as bigint[], assetsToExecute: 0n }\n }\n\n const ordered = [...claimableWithdrawals].sort((a, b) => {\n if (maxAssetsToExecute !== undefined && a.assetsToReceive !== b.assetsToReceive) {\n return a.assetsToReceive > b.assetsToReceive ? -1 : 1\n }\n return a.epoch < b.epoch ? -1 : 1\n })\n\n const selectedEpochs: bigint[] = []\n let accumulatedAssets = 0n\n\n for (const entry of ordered) {\n const nextAccumulatedAssets = accumulatedAssets + entry.assetsToReceive\n if (maxAssetsToExecute !== undefined && nextAccumulatedAssets > maxAssetsToExecute) {\n continue\n }\n\n selectedEpochs.push(entry.epoch)\n accumulatedAssets = nextAccumulatedAssets\n\n if (accumulatedAssets >= desiredAssets) {\n break\n }\n }\n\n return { epochsToExecute: selectedEpochs, assetsToExecute: accumulatedAssets }\n}\n\nexport const useExecuteWithdrawal = ({\n chainId,\n vaultAddress,\n desiredAssets,\n maxAssetsToExecute,\n queuedWithdrawals,\n withdrawalEpochStates,\n currentWithdrawalEpoch,\n simulationAccount,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n desiredAssets: bigint\n maxAssetsToExecute?: bigint\n queuedWithdrawals: QueuedWithdrawalSnapshot[]\n withdrawalEpochStates: WithdrawalEpochStateSnapshot[]\n currentWithdrawalEpoch: bigint\n simulationAccount?: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n const simulatedAccount = simulationAccount ?? account\n const user = simulatedAccount ?? zeroAddress\n\n const claimableWithdrawals = useMemo(\n () =>\n calculateClaimableAssetsFromQueuedWithdrawals({\n queuedWithdrawals,\n withdrawalEpochStates,\n currentWithdrawalEpoch,\n }),\n [queuedWithdrawals, withdrawalEpochStates, currentWithdrawalEpoch],\n )\n\n const { epochsToExecute, assetsToExecute } = useMemo(() => {\n return selectExecutableWithdrawalEpochs({\n desiredAssets,\n maxAssetsToExecute,\n claimableWithdrawals: claimableWithdrawals.byEpoch,\n })\n }, [desiredAssets, maxAssetsToExecute, claimableWithdrawals.byEpoch])\n\n const multicallCalldatas = useMemo(() => {\n return epochsToExecute.length > 0\n ? buildExecuteWithdrawalCalldatas({ user, epochsToExecute })\n : []\n }, [epochsToExecute, user])\n\n const multicallDecoded = useMemo(() => {\n return epochsToExecute.map((epoch) => ({\n functionName: 'executeWithdrawal',\n args: [user, epoch] as const,\n }))\n }, [epochsToExecute, user])\n\n console.debug('executeWithdrawal multicall calldatas', {\n user,\n epochsToExecute,\n multicallCalldatas,\n multicallDecoded,\n assetsToExecute,\n claimableAssets: claimableWithdrawals.totalAssets,\n })\n\n const canSimulate =\n multicallCalldatas.length > 0 &&\n vaultAddress !== zeroAddress &&\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress\n\n const simulate = useSimulateContract({\n chainId,\n ...getExecuteWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account: simulatedAccount,\n query: {\n enabled: canSimulate,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [simulate.data?.request, write])\n\n const actionLabel = useMemo(() => {\n if (simulate.isLoading) {\n return 'Simulating withdrawal execution...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Executing withdrawal...'\n }\n return 'Execute Withdrawal'\n }, [simulate.isLoading, write.isPending, wait.isLoading])\n\n const isLoading = simulate.isLoading || write.isPending || wait.isLoading\n\n const error = useMemo(() => {\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [simulate.error, write.error])\n\n const output = {\n actionLabel,\n act,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n\n return {\n ...output,\n claimableAssets: claimableWithdrawals.totalAssets,\n assetsToExecute,\n epochsToExecute,\n multicallCalldatas,\n }\n}\n","export const BaseUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x345cA3407942f9d175c9eA8B90e83A36F570f852',\n BoringVaultAddress: '0xb452af299c565D04B05E601efF2840e000C922f1',\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 7,\n ManageRoot: '0x439b725656f4b039bc6f0e69637ca712b889fe92a67b7e3c3bfb048eeb24f54c',\n ManagerAddress: '0xdd6E2406a044582463CFE9F0C774870eAf4A310B',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x6ff765f56848bf7b492313985adc8bb3a473a3ad264f95d1dfeb22c6ec083090',\n PackedArgumentAddresses: '0x9ba1082ab3cb9edea988697a14bbe543a3dabed2',\n TargetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n },\n {\n AddressArguments: ['0xb452af299c565D04B05E601efF2840e000C922f1'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xaecbb22ecbdb783a69ea9936b99a8d9e21e9921c33eb7e9deee8002f16e2c653',\n PackedArgumentAddresses: '0xb452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xd42657b7a5e2ca4a277a22ec2a423213c751079d3bee560aa0c27503d3365882',\n PackedArgumentAddresses:\n '0xb452af299c565d04b05e601eff2840e000c922f1b452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x5aea6888874c2cb0d8cdebf1faf46597700148efb3b34eb9c45824d7be96fa08',\n PackedArgumentAddresses:\n '0xb452af299c565d04b05e601eff2840e000c922f1b452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: ['0xb452af299c565D04B05E601efF2840e000C922f1'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x0388d6fd19c028547765a79cfda374bc28b63fb5a7d7917140d3a4bf9291735c',\n PackedArgumentAddresses: '0xb452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x48991b25cb2c04123611ac39bb8a263b3b5e017df450f8b99043c6b011c47e04',\n PackedArgumentAddresses:\n '0xb452af299c565d04b05e601eff2840e000c922f1b452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xB50e8bb68f5855DA742f4579274902a20454174a',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0x439b725656f4b039bc6f0e69637ca712b889fe92a67b7e3c3bfb048eeb24f54c'],\n '1': [\n '0xd9d6b3d3269db0f4cf00c2cd272d4062df2755d6cb946ea297ef3d4dae263b53',\n '0x2402ea021b1c733b28a9994cff136ea03b25da458d771a3b6b439714a5f65189',\n ],\n '2': [\n '0x0f6b2076ed836e73653bccbeca0b14cd622a9008ce63207efe0b68ff8c1752bc',\n '0xa15b4791c182b7a60aba42320f3b0e546bc7b9f9c7f630405046fd9eb8a4e03b',\n '0x93fa6bdda33957e9c908718cae7b6422b249b1a4c173bb1504970f315c3e9175',\n '0x467a4c913fa1e6e405c9c223eb47ab4ea399eb79a20f231961d6fbc28836171f',\n ],\n '3': [\n '0x6ff765f56848bf7b492313985adc8bb3a473a3ad264f95d1dfeb22c6ec083090',\n '0xaecbb22ecbdb783a69ea9936b99a8d9e21e9921c33eb7e9deee8002f16e2c653',\n '0xd42657b7a5e2ca4a277a22ec2a423213c751079d3bee560aa0c27503d3365882',\n '0x5aea6888874c2cb0d8cdebf1faf46597700148efb3b34eb9c45824d7be96fa08',\n '0x0388d6fd19c028547765a79cfda374bc28b63fb5a7d7917140d3a4bf9291735c',\n '0x48991b25cb2c04123611ac39bb8a263b3b5e017df450f8b99043c6b011c47e04',\n '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const BaseWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x345cA3407942f9d175c9eA8B90e83A36F570f852',\n BoringVaultAddress: '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 8,\n ManageRoot: '0xf16b7de890ba886cfdd082d38de768914d04ccc8048da00d4ddc9c4a91e5a927',\n ManagerAddress: '0x2a4923456c79E9ebD10F5Bf5305a5C742bBc1D7C',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x49a37c69f7895816355583596b4be0aeacdde14b42ee6ab030db48060b76e65b',\n PackedArgumentAddresses: '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xe333260c717c7d627669bc93c828e0a7428e77a4123cf3cf8ddd34dcdc1c04d2',\n PackedArgumentAddresses:\n '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d0441b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x0c81b5dfdbae415ec481accb604d0242422780c21f03023d93b6965554645eaf',\n PackedArgumentAddresses:\n '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d0441b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: ['0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0xf67de3c599396a1de64f6e444371d3f535ca07fec79e45f32e5b59012247ec4e',\n PackedArgumentAddresses: '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x1c458519bcbe83c91581ae657571e885e5912920579433baae833f7b7d189444',\n PackedArgumentAddresses:\n '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d0441b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xB50e8bb68f5855DA742f4579274902a20454174a',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0xed6a02d4b0a38222eef73d975ec7adc5ca881f53678819679a498d6a9e1b01cc',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x4200000000000000000000000000000000000006',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0x318f82b3dc0e3981caaa2cb243c7f6db03baf1b181aea535e60af815c49d1420',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x4200000000000000000000000000000000000006',\n },\n ],\n MerkleTree: {\n '0': ['0xf16b7de890ba886cfdd082d38de768914d04ccc8048da00d4ddc9c4a91e5a927'],\n '1': [\n '0x568a4614a67249f65190b0a948555aa171897ba2ad5045a66366fbda3d007376',\n '0xbca42dbe1178a2df33362800b614a08e5ed5943f89c7feb03c90adccb974be09',\n ],\n '2': [\n '0x3ab7b6d39bf1809f2258285158d6b81c648c96f0bc8232bf16527c7e2b20ffce',\n '0x5c00194ec30f9320748cfbd831212d634db8c5b1c391e564c34df090ea7e8695',\n '0xec9b0f61187d82d9ef3c32779d17957899b456a92bdf60167d95ea0475393406',\n '0x92726c93facfe3bdc63d5185a232caeb254ac1820afbc57337476304fc233723',\n ],\n '3': [\n '0x49a37c69f7895816355583596b4be0aeacdde14b42ee6ab030db48060b76e65b',\n '0xe333260c717c7d627669bc93c828e0a7428e77a4123cf3cf8ddd34dcdc1c04d2',\n '0x0c81b5dfdbae415ec481accb604d0242422780c21f03023d93b6965554645eaf',\n '0xf67de3c599396a1de64f6e444371d3f535ca07fec79e45f32e5b59012247ec4e',\n '0x1c458519bcbe83c91581ae657571e885e5912920579433baae833f7b7d189444',\n '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n '0xed6a02d4b0a38222eef73d975ec7adc5ca881f53678819679a498d6a9e1b01cc',\n '0x318f82b3dc0e3981caaa2cb243c7f6db03baf1b181aea535e60af815c49d1420',\n ],\n },\n} as const\n","export const MainnetLegacyUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49',\n BoringVaultAddress: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 10,\n ManageRoot: '0x4df5c1b82729c2e070ab0923230e57bb0d0ee3a0f29159178c1315b4cb47d735',\n ManagerAddress: '0xf42EED8F0d3326ad59fc1f5d4c4009B5F6B4D87c',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0x6778d652A0BCe658C9a0E27D506eA20D179140e5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n PackedArgumentAddresses: '0x6778d652a0bce658c9a0e27d506ea20d179140e5',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x963Fe9c93bc353602656ee4051A75114bA74d6c5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x0ba88b5dab9627bfd3e0fdc7d71942f45d26a0fb325de026c1fbaf69e0e56dad',\n PackedArgumentAddresses: '0x963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xf0056965e40ae08d0b2008a238b1c534bdb8fe9a9781ed4b4210d46220c686a8',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x5dde5a861d62c41e316d6962260d8742601815f56f3b06f10b6543648e3ee1f0',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: ['0x963Fe9c93bc353602656ee4051A75114bA74d6c5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x0282b6e97c1a52b881c9480ea44fc4a2cdd46abbd0703b0c40388c6acefa715a',\n PackedArgumentAddresses: '0x963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0xf4c92c489022aae42690da9bbae84e23acb28b7495aa8a58965fd0173f0c16ad',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x000000007588B488d180899cDEa2080a886D2441',\n },\n {\n AddressArguments: ['0x963Fe9c93bc353602656ee4051A75114bA74d6c5'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xca0ff0331ca1493aa7c0a7c06e1ad55cb2dc63a4b854474a628b520fe45f480e',\n PackedArgumentAddresses: '0x963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xcf5f157610c7f41c82d5ab9fe7cfa154d399b9b374ead620b95df9bfe1150caf',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x0b5e6f71c235d36249a399400fa6741c4d6a56f3b458d85aeacd206e61aafeed',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0x4df5c1b82729c2e070ab0923230e57bb0d0ee3a0f29159178c1315b4cb47d735'],\n '1': [\n '0xbac4becc6803fad3b5048929ab579b3bcb2d3b5d746b8b0cbe83ffab3bd02af3',\n '0x114252b1f2edd8a0cd246246732ee3e293e423ff6de8631e42db3d1994c0b628',\n ],\n '2': [\n '0xdc61bb3a67e08f65ae5fb69d313d6145340a5b2d58ab80b22ce3eb9271444917',\n '0x1b07cee6fe14ac13400398311846511425edc4858a1179d1f0d8ad648544f98a',\n '0x7c66b4febed550fbb3f11d6b2814491f9423466cc7ef4e16325bac47e4a6bbd6',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0x032280a8f6377dba443a56ec7d00b3c6d2942fe090d3aeb30613a19fdc90569f',\n '0x8a117d51d3bd6ac0a55e9f6a574beed72c865f741ef824ae9784f3d721fc086d',\n '0x925bc995a913d6722560d46f4e0c1560a916430387ec44c1505c487ce7f2ee03',\n '0xeab476d6a326a74d5a1297a40d1a6af5cf0b37320e41f3b342b379cd6b5d6a65',\n '0xbf5201e2b1c88fbe98051b963eb82aaa2433395760c9816b8a7c502039792074',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n '0x0ba88b5dab9627bfd3e0fdc7d71942f45d26a0fb325de026c1fbaf69e0e56dad',\n '0xf0056965e40ae08d0b2008a238b1c534bdb8fe9a9781ed4b4210d46220c686a8',\n '0x5dde5a861d62c41e316d6962260d8742601815f56f3b06f10b6543648e3ee1f0',\n '0x0282b6e97c1a52b881c9480ea44fc4a2cdd46abbd0703b0c40388c6acefa715a',\n '0xf4c92c489022aae42690da9bbae84e23acb28b7495aa8a58965fd0173f0c16ad',\n '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n '0xca0ff0331ca1493aa7c0a7c06e1ad55cb2dc63a4b854474a628b520fe45f480e',\n '0xcf5f157610c7f41c82d5ab9fe7cfa154d399b9b374ead620b95df9bfe1150caf',\n '0x0b5e6f71c235d36249a399400fa6741c4d6a56f3b458d85aeacd206e61aafeed',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const MainnetLegacyWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49',\n BoringVaultAddress: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 12,\n ManageRoot: '0xd097509d7b1fc6f899a47b8d06f8a5e2b3337ee8b98e77ef612a1c54a79370c8',\n ManagerAddress: '0xcc80f113298DdF9D399323D5288aE5Eeaed20D44',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0x779a2aa634A004b3a3f3b322083744869BBC6D66'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x8c7514a7c7a2fcc2879277fddd57e0fb909a347d9870acec7072837bc6cc845f',\n PackedArgumentAddresses: '0x779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xe56b3e14b4827a05f29eb8831783ae2dc367fa07d4119dafcca902a21d57e580',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0xa8a9f210396743484d4b09e374d3e38af4d8d1a10197894c1ea3d16000bcf677',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: ['0x779a2aa634A004b3a3f3b322083744869BBC6D66'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x7b2a36717d43f06bb7a8247bf0929e4447f24ca49b119106b9e6925dfd84619e',\n PackedArgumentAddresses: '0x779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x6db67a9d9af5202848f4926f7aa5211d0d2cccbdda101637ca6c60fdf613281e',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x000000007588B488d180899cDEa2080a886D2441',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0x5f912d61b50a583c1384f1c66b6f082e2ad815da3c9c9e5c93171189e427b1f4',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0xdabf1f63a2737d544f0cb9d20b19b6da1a83e0f1998382f93e90d610e59cdca2',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: ['0x6778d652A0BCe658C9a0E27D506eA20D179140e5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n PackedArgumentAddresses: '0x6778d652a0bce658c9a0e27d506ea20d179140e5',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x779a2aa634A004b3a3f3b322083744869BBC6D66'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xf805e4d58110bd4d25a6d6af8935f12e79f157146f0c329466a3db4a4753bd21',\n PackedArgumentAddresses: '0x779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xc8c0f1a15ffe7ec0a97142e6415fa45dfd28a23025e4a59677a5c50ba375d719',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x59a5d4cb31e1fd7832969e599f02275bca7cacd43ed93f1b1058d7347d4f70f7',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0xd097509d7b1fc6f899a47b8d06f8a5e2b3337ee8b98e77ef612a1c54a79370c8'],\n '1': [\n '0xecc8eceb557095ac1ec73d22b889587cb4b62a247f71eaa240f5d15ae53b0442',\n '0xa3c80589d0591fa84692dd6fb1545db7d2a9bc83d5cb90d79b0a0c84cfb5877c',\n ],\n '2': [\n '0xbdefa4834d99bf83b5723a84a7936801f7b1a6c9f6d26c5728fc60b225707520',\n '0xafb4b8b386986170cc6c4c21e313ee1f62e232b040751016a66bcba8cf2f3ae4',\n '0x3c19856f0ddfa56b8146248d45b503d6ae2a7fd77f88f07b6feba55c963b2415',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0x44fd254707cf6c87ac0efe200b59f712e837dd6ad303b7f827110502d7e0ab7a',\n '0x6264743f8a226c88339ed52ad0a7abd546822c3dba83aab0c5fb12526b5f91d3',\n '0xdb2209c5b9952579d2b01f9410a8b6bd21db999cc7b9b88aa93b4322df84f2c7',\n '0x7e48b787e4c7cc699a80b9e8cee4d897b7641fce92237fdb1a7051549162f2dd',\n '0xf3f55d959a163add55810d3fc9b3fee19effbe69efe5f0fc9f0d0af1937803fa',\n '0xfabe01305db6cc9d463124975d40fade6e3b605795a318ce075352a750b3f494',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0x8c7514a7c7a2fcc2879277fddd57e0fb909a347d9870acec7072837bc6cc845f',\n '0xe56b3e14b4827a05f29eb8831783ae2dc367fa07d4119dafcca902a21d57e580',\n '0xa8a9f210396743484d4b09e374d3e38af4d8d1a10197894c1ea3d16000bcf677',\n '0x7b2a36717d43f06bb7a8247bf0929e4447f24ca49b119106b9e6925dfd84619e',\n '0x6db67a9d9af5202848f4926f7aa5211d0d2cccbdda101637ca6c60fdf613281e',\n '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n '0x5f912d61b50a583c1384f1c66b6f082e2ad815da3c9c9e5c93171189e427b1f4',\n '0xdabf1f63a2737d544f0cb9d20b19b6da1a83e0f1998382f93e90d610e59cdca2',\n '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n '0xf805e4d58110bd4d25a6d6af8935f12e79f157146f0c329466a3db4a4753bd21',\n '0xc8c0f1a15ffe7ec0a97142e6415fa45dfd28a23025e4a59677a5c50ba375d719',\n '0x59a5d4cb31e1fd7832969e599f02275bca7cacd43ed93f1b1058d7347d4f70f7',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const MainnetUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x65aA902AE3135658587FFC36ED51B61c927114e1',\n BoringVaultAddress: '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 12,\n ManageRoot: '0xed7d4ae055fd62c6edc93bd676456748f52fe4f4b78f60ab3ef6394bacc31b5d',\n ManagerAddress: '0x2ce65016366ef7320078e0758D58Cf1038bc7C4e',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0x12bF31955522BAC337D93e1bC0a39F68D8BDa216'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0xa4ff0f9069d415056a5ca71d6f564b3cb9948639de45f81830c44c3c13d5c0d6',\n PackedArgumentAddresses: '0x12bf31955522bac337d93e1bc0a39f68d8bda216',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xbb2c673192faea1e2c7bcf47132061066ff342c42176e91889a5876d9ae3ef77',\n PackedArgumentAddresses: '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0x174f9b40456f664fa1a0f9f2fb904df68f567720f7453dd62195297240bfcaf7',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x6c17d228bfbb30e970580cfaf2503a7a205836f8120b536fe94623204ac3d100',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: ['0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0xb47becce43e16f164eeebe57151b3a474a5810fad1bad8c8c502c82a534a0398',\n PackedArgumentAddresses: '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0xc91cc83e9b2230b47bb390d3be17407f42c3b9348cc6596803c269dec49e8d51',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x00000000563b70d704f4c6675a5f6ac989fbae13',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xb5731bb52d9dccf49773020a8ddc59afbf937d6e203ef104e085f94f18b50e9b',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0xa600a5aea3b025f316a4cc99e16c188953aeca6e1bf347d6b2ea8f549b859689',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: ['0x141cc517a6276542B59732Fd85C1A2C536eF7aCA'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Approve wSPCXx poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x51f664e3fbdd3e6780eebf725f83871971fedbc1344987982349ae6d636e04df',\n PackedArgumentAddresses: '0x141cc517a6276542b59732fd85c1a2c536ef7aca',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Deposit USDC for wSPCXx poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xb8baaad70acd2686ec36c69277ae1e53e2e5f515a3a6087187cfb6c00ec9f322',\n PackedArgumentAddresses: '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x141cc517a6276542B59732Fd85C1A2C536eF7aCA',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from wSPCXx poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0x4ede52d99a5e4722726abc80a939e2f94268cfb2a0584a184bcae79a1c6c82c2',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x141cc517a6276542B59732Fd85C1A2C536eF7aCA',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0xed7d4ae055fd62c6edc93bd676456748f52fe4f4b78f60ab3ef6394bacc31b5d'],\n '1': [\n '0xfdd68e4155c3f0143529939165390a7717848d745d5848b5de5dcbabc28e5bbb',\n '0x559d6a628cef4d55eabf143e84c270be2c3f61e236c2c36115fc29ebadc30bfa',\n ],\n '2': [\n '0x03ddbd298d0afd4b181cc56a653fcd6c4cc6124edba7ffcea1cf9abc1396b34a',\n '0x5a78f5fea4886abf9b990cb11d6c97d8d90fa3aef528289cd2c7da07f7188d15',\n '0x67b572f27c64d564c387cf62d05e228ee073dedf11cfad4f95ca78d2673354ce',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0xa48323079d50b7688f97c97276fe33bcc23c3664b0a94aa9f24162ad63e4c622',\n '0x9604e6ac6ac45ac3ec61d6ab2b52d96aeb9025c8e90cf93f7411b9c9a9dda29b',\n '0xa22cac1a8d963fd80eecce587c5833c77d944bc1dfaace739c66421431823263',\n '0x6bab63ba855d0ba1ef5fc9c8058253f278aec18f88be21d95b7cb11097d11e8a',\n '0x20b3b7048a0735825b5cb83b931b60eb4bbbd1c68c8466d86df5ae72361d5da4',\n '0xa0e8444c994231a2893a69086326624b42ad2973144580795d00406bb36b0b3f',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0xa4ff0f9069d415056a5ca71d6f564b3cb9948639de45f81830c44c3c13d5c0d6',\n '0xbb2c673192faea1e2c7bcf47132061066ff342c42176e91889a5876d9ae3ef77',\n '0x174f9b40456f664fa1a0f9f2fb904df68f567720f7453dd62195297240bfcaf7',\n '0x6c17d228bfbb30e970580cfaf2503a7a205836f8120b536fe94623204ac3d100',\n '0xb47becce43e16f164eeebe57151b3a474a5810fad1bad8c8c502c82a534a0398',\n '0xc91cc83e9b2230b47bb390d3be17407f42c3b9348cc6596803c269dec49e8d51',\n '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n '0xb5731bb52d9dccf49773020a8ddc59afbf937d6e203ef104e085f94f18b50e9b',\n '0xa600a5aea3b025f316a4cc99e16c188953aeca6e1bf347d6b2ea8f549b859689',\n '0x51f664e3fbdd3e6780eebf725f83871971fedbc1344987982349ae6d636e04df',\n '0xb8baaad70acd2686ec36c69277ae1e53e2e5f515a3a6087187cfb6c00ec9f322',\n '0x4ede52d99a5e4722726abc80a939e2f94268cfb2a0584a184bcae79a1c6c82c2',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const MainnetWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x65aA902AE3135658587FFC36ED51B61c927114e1',\n BoringVaultAddress: '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 10,\n ManageRoot: '0x14c4c96cc3730452ce71a447bdde6132f81acec862098a9ddd5e086805046a07',\n ManagerAddress: '0xB6Fc48e658C9B1a7dbdFA51A5E153ab60BB2e04d',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0xd4e2c720a760049cc4151bcf61e3a9348db9cd92'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xcde717428f55a23f1c5590ae350e411a96f376207e4cd74f2ad261072915782c',\n PackedArgumentAddresses: '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xcebfac0106f9d33ca5766a2f6054eeb9df218af39b9f87a446a54674481caa4f',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x6eacf89fb24e20afd26b47bc704571a6ae14675623678caf767ff4167b989b94',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: ['0xd4e2c720a760049cc4151bcf61e3a9348db9cd92'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x2393ae33b276888f3402cd9be5ac50c99f6c093ab26d76309fcde84f32ac5779',\n PackedArgumentAddresses: '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x7560d3271ed5c3e12cf98e16f3e6810c35a9da7ade8642ce4f4047012f768ae4',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x00000000563b70d704f4c6675a5f6ac989fbae13',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0x89484d127bf05d2f4fcc56181335b8d87023e41ccc81c042e9f922f578f1471b',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0x7f94c593f64614a4739e3005bc02e9db203ded2796c3104cc7609ecbc89bc240',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xa7b676c12e394da66e124d4611ddf107a1267f476fab0b3cbc3dc885a8e5a77c',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x219732b5a811c3167d72323963327d5ea266e27575caecab2d1f35746f30a2f2',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0x14c4c96cc3730452ce71a447bdde6132f81acec862098a9ddd5e086805046a07'],\n '1': [\n '0xcd0defea21f2f5625ba2d231bce9500ad31a12181821c3e44a9eab8091726ef9',\n '0xb456d992b88713679d0f26a8212a362b552e0f1b8e8f4730ef9d93260658e6f4',\n ],\n '2': [\n '0xd49b1154605f32b0e47658955ad9aa7f3fe8cd35358ee78a1cd96557e5c3aa4d',\n '0x6522d66ec4944c055a9004873f1d3eab7c42ec8328cad32a43f7cf5626099576',\n '0x106e1c4bfe0f35058431f70afe23aa18c131f9ed04c0e9442c15742800410377',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0xa6bf0406d4c1a9cc26bd7b8e443b3d933011eeed6f805e7f96c98f8ca7b6570c',\n '0x1b4e0fc75d960683a9b652c9f9aa14ee22ba29685a3253a96bf65aea93934cee',\n '0xc13cedfed63f868281097bfc4491f94573cf90c8d65c417aefc7c10ed03f60cf',\n '0xe684b7c98715395e7d8478eb48587181872712495d41b47760ac5fe24211fc5e',\n '0x9c00f68592aac90ff74b0f87e48d5a3f0ca6108c0af23ed83cbbdab4ea49ffb6',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0xcde717428f55a23f1c5590ae350e411a96f376207e4cd74f2ad261072915782c',\n '0xcebfac0106f9d33ca5766a2f6054eeb9df218af39b9f87a446a54674481caa4f',\n '0x6eacf89fb24e20afd26b47bc704571a6ae14675623678caf767ff4167b989b94',\n '0x2393ae33b276888f3402cd9be5ac50c99f6c093ab26d76309fcde84f32ac5779',\n '0x7560d3271ed5c3e12cf98e16f3e6810c35a9da7ade8642ce4f4047012f768ae4',\n '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n '0x89484d127bf05d2f4fcc56181335b8d87023e41ccc81c042e9f922f578f1471b',\n '0x7f94c593f64614a4739e3005bc02e9db203ded2796c3104cc7609ecbc89bc240',\n '0xa7b676c12e394da66e124d4611ddf107a1267f476fab0b3cbc3dc885a8e5a77c',\n '0x219732b5a811c3167d72323963327d5ea266e27575caecab2d1f35746f30a2f2',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const SepoliaUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab',\n BoringVaultAddress: '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 7,\n ManageRoot: '0xa1b9500717e9d72ec1ccd50a4eba78b7d076bb7a528bec91ef95120057dddb09',\n ManagerAddress: '0xFB5aa3e0b46F3859D90B14b52ffd287013b5Ec53',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0x7A5D178492dbdABcbBc6201D1021BEE145d48604'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x9461e89d49750d5907202338d134c6daddb0896535eae9c430d55d2cee82f59e',\n PackedArgumentAddresses: '0x7a5d178492dbdabcbbc6201d1021bee145d48604',\n TargetAddress: '0xFFFeD8254566B7F800f6D8CDb843ec75AE49B07A',\n },\n {\n AddressArguments: ['0xdd7a8d6c6975488e801129bC84302d74e2361208'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x9c93ec90c7ea88615dd65b6ff43ac7f98ed84b1c140101cc2ccdf098e608c9be',\n PackedArgumentAddresses: '0xdd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xad29e2070420c9e71c54289506f2bedf1db470c77e6162e1d6558e281ded2bff',\n PackedArgumentAddresses:\n '0xdd7a8d6c6975488e801129bc84302d74e2361208dd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x38a43f1c9c27df6ee14372a33dd96c6a9bc3e2b401778d3ec21155a70cb513db',\n PackedArgumentAddresses:\n '0xdd7a8d6c6975488e801129bc84302d74e2361208dd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: ['0xdd7a8d6c6975488e801129bC84302d74e2361208'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x562c2d451550cc51d46d40c3dc94c3e087a52562fdc46b304dca2ab88f4e19a8',\n PackedArgumentAddresses: '0xdd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0xd02acf42be262c0a898ec5ac6d5915b9bdbc9ab17b6901e1724869dee69b8a77',\n PackedArgumentAddresses:\n '0xdd7a8d6c6975488e801129bc84302d74e2361208dd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x03AFf7Be6A5afB2bC6830BC54778AF674006850A',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0xa1b9500717e9d72ec1ccd50a4eba78b7d076bb7a528bec91ef95120057dddb09'],\n '1': [\n '0x48dcc6e8707acd93af05fd08a0793459a05379aa707943e86a3b7847fc110bc1',\n '0xecd6d00ae00fd8a293f778b93ac6047d79636b5ca0a4612c27ee026e125c3a7b',\n ],\n '2': [\n '0xf606bf15edc845b246578ae14fc338e0076613566189996d3a70f762fad418ce',\n '0x8aba570a1bdefb55e1bf67844bc7f217d62f518a08f501c2df13b33f1184e675',\n '0x45daf701984f7971697756995579d83851ebc8bb77ad8f556bbfc305a918b88e',\n '0xbc8066705d2dce5ac2a8bbeb8b0b615abdecb64771f38ca6f3a9cea8191009e8',\n ],\n '3': [\n '0x9461e89d49750d5907202338d134c6daddb0896535eae9c430d55d2cee82f59e',\n '0x9c93ec90c7ea88615dd65b6ff43ac7f98ed84b1c140101cc2ccdf098e608c9be',\n '0xad29e2070420c9e71c54289506f2bedf1db470c77e6162e1d6558e281ded2bff',\n '0x38a43f1c9c27df6ee14372a33dd96c6a9bc3e2b401778d3ec21155a70cb513db',\n '0x562c2d451550cc51d46d40c3dc94c3e087a52562fdc46b304dca2ab88f4e19a8',\n '0xd02acf42be262c0a898ec5ac6d5915b9bdbc9ab17b6901e1724869dee69b8a77',\n '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const SepoliaWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab',\n BoringVaultAddress: '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 8,\n ManageRoot: '0x581793b57ae9c0ac8df9abcdef6b763b22a32660519fbb9dd1a01d2aaa248fe9',\n ManagerAddress: '0x95eC124FAAB70D7aE147c3BE0336E01a828AE2d5',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x9b24110737afcb987506ddd8f59900fd09eebe0ff42b2ffb03767b24412eaaf2',\n PackedArgumentAddresses: '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0x883ed54c6b548e15898585a07b7406c65e54b596b8787513d0ba3eeb3d4bff4b',\n PackedArgumentAddresses:\n '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1d58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x6d5fe941248716784e6a072a3af40be2d138ea562fa45fe36117e66d86b6cdf6',\n PackedArgumentAddresses:\n '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1d58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: ['0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x1828fd6242784147e797b5133befb53c343136c37071fb297cd1850f9974c33a',\n PackedArgumentAddresses: '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x2325b78e0933e6adb39562717808fcb76ef18749a1629d1fcce693471a6c712d',\n PackedArgumentAddresses:\n '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1d58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x03AFf7Be6A5afB2bC6830BC54778AF674006850A',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0xd5d314e003b7be0bc5b48dd95e8e90ace37442584bdc796a88adeb12b413bec3',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0x64a0a569cc5c1a480b8f063eea635c7e20755215cb2ed09491abd3f4b5fa0f9d',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n ],\n MerkleTree: {\n '0': ['0x581793b57ae9c0ac8df9abcdef6b763b22a32660519fbb9dd1a01d2aaa248fe9'],\n '1': [\n '0x4404bac2e837d3368e20f2ba8bbee9e132ba396819179b94051a460fd21614fe',\n '0x52c239a4ff7004b9762d0e2c966dac18e4637a2375036232005ac987c2cf0606',\n ],\n '2': [\n '0x82102132eac6d417a85265b8882ced5b86dbb1c264ee38e423a8e6009c9362ed',\n '0x1e1b2014941cafc046f1bd0a4cf910c2559b321b8ae22060b376121b8aaebe26',\n '0x3fec91b8bc52656dee6cd63345dbc0af7cc5a1ee92f0b13fa5fd7e636c91d339',\n '0x795e43f4fa81b9adc25d49179991d447ffdb6726b33e57616331e226a88c754d',\n ],\n '3': [\n '0x9b24110737afcb987506ddd8f59900fd09eebe0ff42b2ffb03767b24412eaaf2',\n '0x883ed54c6b548e15898585a07b7406c65e54b596b8787513d0ba3eeb3d4bff4b',\n '0x6d5fe941248716784e6a072a3af40be2d138ea562fa45fe36117e66d86b6cdf6',\n '0x1828fd6242784147e797b5133befb53c343136c37071fb297cd1850f9974c33a',\n '0x2325b78e0933e6adb39562717808fcb76ef18749a1629d1fcce693471a6c712d',\n '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n '0xd5d314e003b7be0bc5b48dd95e8e90ace37442584bdc796a88adeb12b413bec3',\n '0x64a0a569cc5c1a480b8f063eea635c7e20755215cb2ed09491abd3f4b5fa0f9d',\n ],\n },\n} as const\n","import { z } from 'zod'\n\nconst addressSchema = z.custom<`0x${string}`>((val) => {\n return typeof val === 'string' && /^0x[a-fA-F0-9]{40}$/.test(val)\n})\n\nexport const HypoVaultManagerConfigSchema = z.object({\n deployment: z.enum(['dev', 'prod']),\n artifactSet: z.enum(['base', 'mainnet-prod', 'mainnet-legacy', 'sepolia']).optional(),\n vaultAssetIndex: z.union([z.literal(0n), z.literal(1n)]),\n manageCycleIntervalMs: z.number().positive().optional(), // can be optional if only running manage cycles in response to websocket events instead of polling\n vaultCapInUnderlying: z.bigint().positive(),\n vaultCapInShares: z.bigint().positive().optional(), // when set, manager caps by totalSupply instead of totalAssets\n allowUnlimitedDepositRequestIfCapNotReached: z.boolean().optional(),\n maxBuyingPowerUsageBps: z.number().int().positive().max(10000), // skip auto-fulfilling a withdrawal if it would push requiredCollateral / collateralBalance past this, on the vault's asset side\n chainId: z.number().int().positive().optional(),\n poolDeploymentBlock: z.number().int().nonnegative().optional(),\n hypoVaultAddress: addressSchema.optional(),\n addresses: z\n .object({\n ethUsdc500bpsV4Collateral0: addressSchema.optional(),\n ethUsdc500bpsV4Collateral1: addressSchema.optional(),\n ethUsdc500bpsV4PanopticPool: addressSchema.optional(),\n hypoVaultManagerWithMerkleVerification: addressSchema.optional(),\n hypoVault: addressSchema.optional(),\n underlyingToken: addressSchema.optional(),\n })\n .optional(),\n manualTxDefaults: z\n .object({\n collateralAllocations: z\n .array(\n z.object({\n trackerAddress: addressSchema,\n allocationBps: z.number().int().positive().max(10000),\n }),\n )\n .optional(),\n })\n .optional(),\n deltaHedge: z\n .object({\n deltaThresholdBps: z.bigint().positive().optional(),\n maxHedgeSlots: z.number().int().positive().optional(),\n })\n .optional(),\n alerts: z\n .object({\n outOfRangeEnabled: z.boolean().optional(),\n })\n .optional(),\n})\n\nexport type HypoVaultManagerConfig = z.infer<typeof HypoVaultManagerConfigSchema>\n","import { type Hex, encodeFunctionData } from 'viem'\n\nimport { HypoVaultManagerWithMerkleVerificationAbi } from '../../abis/HypoVaultManagerWithMerkleVerification'\n\nexport function encodeFulfillDepositsFunctionData({\n assetsToFulfill,\n managerInput,\n}: {\n assetsToFulfill: bigint\n managerInput: Hex\n}) {\n return encodeFunctionData({\n abi: HypoVaultManagerWithMerkleVerificationAbi,\n functionName: 'fulfillDeposits',\n args: [assetsToFulfill, managerInput],\n })\n}\n","import { type Hex, encodeFunctionData } from 'viem'\n\nimport { HypoVaultManagerWithMerkleVerificationAbi } from '../../abis/HypoVaultManagerWithMerkleVerification'\n\nexport function encodeFulfillWithdrawalsFunctionData({\n sharesToFulfill,\n maxAssetsReceived,\n managerInput,\n}: {\n sharesToFulfill: bigint\n maxAssetsReceived: bigint\n managerInput: Hex\n}) {\n return encodeFunctionData({\n abi: HypoVaultManagerWithMerkleVerificationAbi,\n functionName: 'fulfillWithdrawals',\n args: [sharesToFulfill, maxAssetsReceived, managerInput],\n })\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\n\nexport const getRequestDepositContractConfig = ({\n vaultAddress,\n assets,\n}: {\n vaultAddress: Address\n assets: bigint\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'requestDeposit',\n args: [assets],\n }) as const\n\nexport function encodeRequestDepositFunctionData({ assets }: { assets: bigint }): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'requestDeposit',\n args: [assets],\n })\n}\n\nexport function simulateRequestDeposit({\n viemClient,\n vaultAddress,\n assets,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n assets: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getRequestDepositContractConfig({ vaultAddress, assets }),\n account,\n })\n}\n\nexport function requestDeposit({\n walletClient,\n vaultAddress,\n assets,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n assets: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getRequestDepositContractConfig({ vaultAddress, assets }),\n account,\n })\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { Address } from 'viem'\nimport { maxUint256, zeroAddress } from 'viem'\nimport {\n useAccount,\n useReadContract,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { Erc20Abi } from '../../../abis/erc20ABI'\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport { getRequestDepositContractConfig } from '../requestDeposit'\n\nconst APPROVAL_SYNC_POLL_INTERVAL_MS = 1200\nconst APPROVAL_SYNC_MAX_ATTEMPTS = 20\n\nexport const useRequestDeposit = ({\n chainId,\n vaultAddress,\n assets,\n tokenAddress,\n simulationAccount,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n assets: bigint\n tokenAddress: Address\n simulationAccount?: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n const simulatedAccount = simulationAccount ?? account\n const canReadAllowance =\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress &&\n tokenAddress !== zeroAddress &&\n vaultAddress !== zeroAddress\n\n const allowanceRead = useReadContract({\n chainId,\n address: canReadAllowance ? tokenAddress : undefined,\n abi: Erc20Abi,\n functionName: 'allowance',\n args: canReadAllowance ? [simulatedAccount, vaultAddress] : undefined,\n query: {\n enabled: canReadAllowance,\n },\n })\n\n const allowanceKnown = allowanceRead.data !== undefined\n\n const tokenNeedsApproval = canReadAllowance && allowanceKnown && allowanceRead.data < assets\n const normalizedAccount = account?.toLowerCase()\n const normalizedSimulationAccount = simulationAccount?.toLowerCase()\n const canApproveForSimulatedAccount =\n normalizedAccount != null &&\n normalizedAccount !== zeroAddress &&\n (normalizedSimulationAccount === undefined || normalizedSimulationAccount === normalizedAccount)\n\n const refetchAllowance = allowanceRead.refetch\n\n const approveSimulate = useSimulateContract({\n chainId,\n address: tokenAddress,\n abi: Erc20Abi,\n functionName: 'approve',\n args: [vaultAddress, maxUint256],\n account,\n query: {\n enabled:\n allowanceKnown &&\n tokenNeedsApproval &&\n assets > 0n &&\n account != null &&\n canApproveForSimulatedAccount,\n retry: false,\n },\n })\n\n const approveWrite = useWriteContract()\n\n const approveWait = useWaitForTransactionReceipt({\n chainId,\n hash: approveWrite.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const simulate = useSimulateContract({\n chainId,\n ...getRequestDepositContractConfig({ vaultAddress, assets }),\n account: simulatedAccount,\n query: {\n enabled:\n allowanceKnown &&\n !tokenNeedsApproval &&\n assets > 0n &&\n vaultAddress !== zeroAddress &&\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledApproveHashRef = useRef<`0x${string}` | undefined>(undefined)\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n const approvalSyncAttemptCountRef = useRef(0)\n const [isApprovalSyncing, setIsApprovalSyncing] = useState(false)\n\n useEffect(() => {\n const approveHash = approveWrite.data\n if (!approveWait.isSuccess || approveHash == null) {\n return\n }\n if (handledApproveHashRef.current === approveHash) {\n return\n }\n\n handledApproveHashRef.current = approveHash\n approvalSyncAttemptCountRef.current = 0\n setIsApprovalSyncing(true)\n void refetchAllowance()\n }, [approveWait.isSuccess, approveWrite.data, refetchAllowance])\n\n useEffect(() => {\n if (!isApprovalSyncing) {\n return\n }\n if (!tokenNeedsApproval) {\n setIsApprovalSyncing(false)\n return\n }\n if (approvalSyncAttemptCountRef.current >= APPROVAL_SYNC_MAX_ATTEMPTS) {\n setIsApprovalSyncing(false)\n return\n }\n\n const timeoutId = setTimeout(() => {\n approvalSyncAttemptCountRef.current += 1\n void refetchAllowance()\n }, APPROVAL_SYNC_POLL_INTERVAL_MS)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [isApprovalSyncing, tokenNeedsApproval, refetchAllowance])\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n if (isApprovalSyncing) {\n return undefined\n }\n if (tokenNeedsApproval) {\n const request = approveSimulate.data?.request\n return request != null ? approveWrite.writeContract(request) : undefined\n }\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [\n tokenNeedsApproval,\n approveSimulate.data?.request,\n approveWrite,\n isApprovalSyncing,\n simulate.data?.request,\n write,\n ])\n\n const actionLabel = useMemo(() => {\n if (isApprovalSyncing) {\n return 'Approval confirmed. Syncing allowance...'\n }\n if (tokenNeedsApproval) {\n if (!canApproveForSimulatedAccount) {\n return 'Approval Required'\n }\n if (approveSimulate.isLoading) {\n return 'Simulating approval...'\n }\n if (approveWrite.isPending || approveWait.isLoading) {\n return 'Approving...'\n }\n return 'Approve Token'\n }\n if (simulate.isLoading) {\n return 'Simulating deposit request...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Requesting deposit...'\n }\n return 'Request Deposit'\n }, [\n isApprovalSyncing,\n tokenNeedsApproval,\n canApproveForSimulatedAccount,\n approveSimulate.isLoading,\n approveWrite.isPending,\n approveWait.isLoading,\n simulate.isLoading,\n write.isPending,\n wait.isLoading,\n ])\n\n const isLoading =\n isApprovalSyncing ||\n (tokenNeedsApproval &&\n (approveSimulate.isLoading || approveWrite.isPending || approveWait.isLoading)) ||\n (!tokenNeedsApproval && (simulate.isLoading || write.isPending || wait.isLoading))\n\n const error = useMemo(() => {\n if (tokenNeedsApproval) {\n if (approveSimulate.error) {\n return parseCustomError(approveSimulate.error)\n }\n if (approveWrite.error) {\n return parseCustomError(approveWrite.error)\n }\n }\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [tokenNeedsApproval, approveSimulate.error, approveWrite.error, simulate.error, write.error])\n\n return {\n actionLabel,\n act,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n}\n","export type QueuedDepositSnapshot = {\n amount: bigint\n epoch: bigint\n}\n\nexport type DepositEpochStateSnapshot = {\n assetsDeposited: bigint\n assetsFulfilled: bigint\n epoch: bigint\n sharesReceived: bigint\n}\n\nexport type SharePrice = {\n numerator: bigint\n denominator: bigint\n}\n\nexport type ClaimableSharesByEpoch = {\n epoch: bigint\n queuedAssets: bigint\n userAssetsDeposited: bigint\n sharesToMint: bigint\n}\n\nexport type ClaimableExecutionSharesByEpoch = {\n epoch: bigint\n sharesToMint: bigint\n}\n\nfunction mulDiv({\n value,\n numerator,\n denominator,\n}: {\n value: bigint\n numerator: bigint\n denominator: bigint\n}): bigint {\n if (denominator === 0n) {\n return 0n\n }\n return (value * numerator) / denominator\n}\n\nexport function getMinQueuedDepositEpoch({\n queuedDeposits,\n}: {\n queuedDeposits: QueuedDepositSnapshot[]\n}): bigint | null {\n const eligible = queuedDeposits\n .filter((deposit) => deposit.amount > 0n)\n .map((deposit) => deposit.epoch)\n\n if (eligible.length === 0) {\n return null\n }\n\n return eligible.reduce((min, epoch) => (epoch < min ? epoch : min))\n}\n\nexport function calculateClaimableSharesFromQueuedDeposits({\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n}: {\n queuedDeposits: QueuedDepositSnapshot[]\n depositEpochStates: DepositEpochStateSnapshot[]\n currentDepositEpoch: bigint\n}) {\n const epochStatesByEpoch = new Map(depositEpochStates.map((state) => [state.epoch, state]))\n\n const byEpoch: ClaimableSharesByEpoch[] = []\n const executionSharesByEpoch = new Map<bigint, bigint>()\n\n for (const deposit of queuedDeposits) {\n if (deposit.amount === 0n || deposit.epoch >= currentDepositEpoch) {\n continue\n }\n\n let remainingAssets = deposit.amount\n let userAssetsDeposited = 0n\n let sharesToMint = 0n\n\n for (let epoch = deposit.epoch; epoch < currentDepositEpoch; epoch += 1n) {\n const epochState = epochStatesByEpoch.get(epoch)\n if (\n epochState === undefined ||\n epochState.assetsDeposited <= 0n ||\n epochState.assetsFulfilled <= 0n ||\n remainingAssets <= 0n\n ) {\n continue\n }\n\n const rawFulfilledPortion = mulDiv({\n value: remainingAssets,\n numerator: epochState.assetsFulfilled,\n denominator: epochState.assetsDeposited,\n })\n if (rawFulfilledPortion <= 0n) {\n continue\n }\n\n const fulfilledPortion =\n rawFulfilledPortion > remainingAssets ? remainingAssets : rawFulfilledPortion\n userAssetsDeposited += fulfilledPortion\n remainingAssets -= fulfilledPortion\n\n if (epochState.sharesReceived > 0n) {\n const sharesForEpoch = mulDiv({\n value: fulfilledPortion,\n numerator: epochState.sharesReceived,\n denominator: epochState.assetsFulfilled,\n })\n sharesToMint += sharesForEpoch\n const existingExecutionShares = executionSharesByEpoch.get(epoch) ?? 0n\n executionSharesByEpoch.set(epoch, existingExecutionShares + sharesForEpoch)\n }\n }\n\n if (sharesToMint === 0n) {\n continue\n }\n\n byEpoch.push({\n epoch: deposit.epoch,\n queuedAssets: deposit.amount,\n userAssetsDeposited,\n sharesToMint,\n })\n }\n\n const byExecutionEpoch: ClaimableExecutionSharesByEpoch[] = Array.from(\n executionSharesByEpoch.entries(),\n ).map(([epoch, sharesToMint]) => ({ epoch, sharesToMint }))\n\n const epochsToExecute = byExecutionEpoch\n .map((entry) => entry.epoch)\n .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n\n const totalShares = byEpoch.reduce((sum, entry) => sum + entry.sharesToMint, 0n)\n\n return { byEpoch, byExecutionEpoch, epochsToExecute, totalShares }\n}\n\nexport function selectExecuteDepositEpochs({\n claimableByExecutionEpoch,\n requiredClaimableShares,\n requestAllAvailableShares = false,\n}: {\n claimableByExecutionEpoch: ClaimableExecutionSharesByEpoch[]\n requiredClaimableShares: bigint\n requestAllAvailableShares?: boolean\n}): bigint[] {\n const claimableSharesByEpoch = new Map<bigint, bigint>()\n\n for (const entry of claimableByExecutionEpoch) {\n if (entry.sharesToMint <= 0n) {\n continue\n }\n\n const existing = claimableSharesByEpoch.get(entry.epoch) ?? 0n\n claimableSharesByEpoch.set(entry.epoch, existing + entry.sharesToMint)\n }\n\n const candidates = Array.from(claimableSharesByEpoch.entries()).map(([epoch, sharesToMint]) => ({\n epoch,\n sharesToMint,\n }))\n\n if (requestAllAvailableShares) {\n return candidates\n .sort((a, b) => (a.epoch < b.epoch ? -1 : a.epoch > b.epoch ? 1 : 0))\n .map((entry) => entry.epoch)\n }\n\n if (requiredClaimableShares <= 0n) {\n return []\n }\n\n const sortedCandidates = [...candidates].sort((a, b) => {\n if (a.sharesToMint === b.sharesToMint) {\n return a.epoch < b.epoch ? -1 : a.epoch > b.epoch ? 1 : 0\n }\n return a.sharesToMint > b.sharesToMint ? -1 : 1\n })\n\n const selectedEpochs: bigint[] = []\n let accumulatedShares = 0n\n for (const candidate of sortedCandidates) {\n if (accumulatedShares >= requiredClaimableShares) {\n break\n }\n selectedEpochs.push(candidate.epoch)\n accumulatedShares += candidate.sharesToMint\n }\n\n return selectedEpochs\n}\n\nexport function calculateAvailableShares({\n walletShares,\n claimableDepositShares,\n}: {\n walletShares: bigint\n claimableDepositShares: bigint\n}): bigint {\n return walletShares + claimableDepositShares\n}\n\nexport function calculateSharesFromAssets({\n assets,\n sharePrice,\n}: {\n assets: bigint\n sharePrice: SharePrice\n}): bigint {\n return mulDiv({\n value: assets,\n numerator: sharePrice.denominator,\n denominator: sharePrice.numerator,\n })\n}\n\nexport function calculateAssetsFromShares({\n shares,\n sharePrice,\n}: {\n shares: bigint\n sharePrice: SharePrice\n}): bigint {\n return mulDiv({\n value: shares,\n numerator: sharePrice.numerator,\n denominator: sharePrice.denominator,\n })\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\nimport {\n type DepositEpochStateSnapshot,\n type QueuedDepositSnapshot,\n type SharePrice,\n calculateAvailableShares,\n calculateClaimableSharesFromQueuedDeposits,\n calculateSharesFromAssets,\n selectExecuteDepositEpochs,\n} from './utils'\n\nexport function encodeExecuteDepositFunctionData({\n user,\n epoch,\n}: {\n user: Address\n epoch: bigint\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'executeDeposit',\n args: [user, epoch],\n })\n}\n\nexport function encodeRequestWithdrawalFunctionData({ shares }: { shares: bigint }): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'requestWithdrawal',\n args: [shares],\n })\n}\n\nexport function encodeRequestWithdrawalMulticallFunctionData({\n multicallCalldatas,\n}: {\n multicallCalldatas: Hex[]\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n })\n}\n\nexport const getRequestWithdrawalContractConfig = ({\n vaultAddress,\n shares,\n}: {\n vaultAddress: Address\n shares: bigint\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'requestWithdrawal',\n args: [shares],\n }) as const\n\nexport const getRequestWithdrawalMulticallContractConfig = ({\n vaultAddress,\n multicallCalldatas,\n}: {\n vaultAddress: Address\n multicallCalldatas: Hex[]\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n }) as const\n\nexport function simulateRequestWithdrawal({\n viemClient,\n vaultAddress,\n shares,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n shares: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getRequestWithdrawalContractConfig({ vaultAddress, shares }),\n account,\n })\n}\n\nexport function requestWithdrawal({\n walletClient,\n vaultAddress,\n shares,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n shares: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getRequestWithdrawalContractConfig({ vaultAddress, shares }),\n account,\n })\n}\n\nexport function simulateRequestWithdrawalMulticall({\n viemClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getRequestWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function requestWithdrawalMulticall({\n walletClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getRequestWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function buildExecuteDepositCalldatas({\n user,\n epochsToExecute,\n}: {\n user: Address\n epochsToExecute: bigint[]\n}): Hex[] {\n return epochsToExecute.map((epoch) => encodeExecuteDepositFunctionData({ user, epoch }))\n}\n\nexport function buildRequestWithdrawalCalldatas({\n user,\n desiredAssets,\n requestAllAvailableShares = false,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n}: {\n user: Address\n desiredAssets: bigint\n requestAllAvailableShares?: boolean\n sharePrice: SharePrice\n walletShares: bigint\n queuedDeposits: QueuedDepositSnapshot[]\n depositEpochStates: DepositEpochStateSnapshot[]\n currentDepositEpoch: bigint\n}) {\n const claimable = calculateClaimableSharesFromQueuedDeposits({\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n })\n\n const availableShares = calculateAvailableShares({\n walletShares,\n claimableDepositShares: claimable.totalShares,\n })\n\n const sharesForAssets = calculateSharesFromAssets({\n assets: desiredAssets,\n sharePrice,\n })\n\n const sharesToRequest = requestAllAvailableShares\n ? availableShares\n : sharesForAssets > availableShares\n ? availableShares\n : sharesForAssets\n\n const requiredClaimableShares =\n sharesToRequest > walletShares ? sharesToRequest - walletShares : 0n\n\n const selectedExecuteDepositEpochs = selectExecuteDepositEpochs({\n claimableByExecutionEpoch: claimable.byExecutionEpoch,\n requiredClaimableShares,\n requestAllAvailableShares,\n })\n\n const executeDepositCalldatas = buildExecuteDepositCalldatas({\n user,\n epochsToExecute: selectedExecuteDepositEpochs,\n })\n\n const requestWithdrawalCalldata =\n sharesToRequest > 0n ? encodeRequestWithdrawalFunctionData({ shares: sharesToRequest }) : null\n\n const multicallCalldatas = requestWithdrawalCalldata\n ? [...executeDepositCalldatas, requestWithdrawalCalldata]\n : executeDepositCalldatas\n\n return {\n claimableDepositShares: claimable,\n selectedExecuteDepositEpochs,\n availableShares,\n sharesToRequest,\n multicallCalldatas,\n }\n}\n","import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type { Address } from 'viem'\nimport { zeroAddress } from 'viem'\nimport {\n useAccount,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport {\n buildRequestWithdrawalCalldatas,\n getRequestWithdrawalMulticallContractConfig,\n} from '../requestWithdrawal'\nimport type { DepositEpochStateSnapshot, QueuedDepositSnapshot, SharePrice } from '../utils'\n\nexport const useRequestWithdrawal = ({\n chainId,\n vaultAddress,\n desiredAssets,\n requestAllAvailableShares = false,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n simulationAccount,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n desiredAssets: bigint\n requestAllAvailableShares?: boolean\n sharePrice: SharePrice\n walletShares: bigint\n queuedDeposits: QueuedDepositSnapshot[]\n depositEpochStates: DepositEpochStateSnapshot[]\n currentDepositEpoch: bigint\n simulationAccount?: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n const simulatedAccount = simulationAccount ?? account\n const user = simulatedAccount ?? zeroAddress\n\n const {\n claimableDepositShares,\n selectedExecuteDepositEpochs,\n availableShares,\n sharesToRequest,\n multicallCalldatas,\n } = useMemo(\n () =>\n buildRequestWithdrawalCalldatas({\n user,\n desiredAssets,\n requestAllAvailableShares,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n }),\n [\n user,\n desiredAssets,\n requestAllAvailableShares,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n ],\n )\n\n const canSimulate =\n multicallCalldatas.length > 0 &&\n vaultAddress !== zeroAddress &&\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress\n\n const simulate = useSimulateContract({\n chainId,\n ...getRequestWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account: simulatedAccount,\n query: {\n enabled: canSimulate,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [simulate.data?.request, write])\n\n const actionLabel = useMemo(() => {\n if (simulate.isLoading) {\n return 'Simulating withdrawal request...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Requesting withdrawal...'\n }\n return 'Request Withdrawal'\n }, [simulate.isLoading, write.isPending, wait.isLoading])\n\n const isLoading = simulate.isLoading || write.isPending || wait.isLoading\n\n const error = useMemo(() => {\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [simulate.error, write.error])\n\n const output = {\n actionLabel,\n act,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n\n return {\n ...output,\n claimableDepositShares,\n selectedExecuteDepositEpochs,\n availableShares,\n sharesToRequest,\n multicallCalldatas,\n }\n}\n","import type { Address, Hex } from 'viem'\n\nconst PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE =\n '0x608060405234801561000f575f5ffd5b5060043610610090575f3560e01c80638da5cb5b116100635780638da5cb5b14610135578063995cac6d14610145578063a519c19814610158578063d597b7361461016b578063f2fde38b1461017e575f5ffd5b8063016ff32e1461009457806328d6ae4a146100cb5780634f0e0ef3146100ec578063715018a61461012b575b5f5ffd5b6100b66100a236600461274b565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100de6100d9366004612766565b610191565b6040519081526020016100c2565b6101137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c2565b6101336101b3565b005b5f546001600160a01b0316610113565b6101336101533660046127d0565b6101c6565b61013361016636600461274b565b610598565b6100de610179366004612881565b6105c3565b61013361018c36600461274b565b611865565b6001602052815f5260405f2081600281106101aa575f80fd5b01549150829050565b6101bb6118a7565b6101c45f6118d3565b565b6101ce6118a7565b6001600160a01b0385165f9081526002602052604090205460ff1615610207576040516372b89e9760e11b815260040160405180910390fd5b5f5b838110156102ac575f5b818110156102a35785858281811061022d5761022d61290d565b610243926020608090920201908101915061274b565b6001600160a01b031686868481811061025e5761025e61290d565b610274926020608090920201908101915061274b565b6001600160a01b03160361029b57604051635c1523a360e11b815260040160405180910390fd5b600101610213565b50600101610209565b505f5b8181101561050a575f5b81811015610347578383828181106102d3576102d361290d565b90506020020160208101906102e8919061274b565b6001600160a01b03168484848181106103035761030361290d565b9050602002016020810190610318919061274b565b6001600160a01b03160361033f57604051637542915f60e11b815260040160405180910390fd5b6001016102b9565b505f5b84811015610501578585828181106103645761036461290d565b61037a926020608090920201908101915061274b565b6001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d99190612921565b6001600160a01b03168484848181106103f4576103f461290d565b9050602002016020810190610409919061274b565b6001600160a01b031614806104db575085858281811061042b5761042b61290d565b610441926020608090920201908101915061274b565b6001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a09190612921565b6001600160a01b03168484848181106104bb576104bb61290d565b90506020020160208101906104d0919061274b565b6001600160a01b0316145b156104f957604051637542915f60e11b815260040160405180910390fd5b60010161034a565b506001016102af565b50838360405160200161051e92919061294a565b60408051808303601f1901815282825280516020918201206001600160a01b0389165f90815260018352929092209190915561055e9184918491016129e4565b60408051808303601f1901815291815281516020928301206001600160a01b03979097165f90815260019283905220019490945550505050565b6105a06118a7565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b5f8080806105d385870187612cd2565b506001600160a01b038b165f90815260016020526040812093965091945092500154826040516020016106069190612e29565b604051602081830303815290604052805190602001201461063a576040516395241ae360e01b815260040160405180910390fd5b5f825160026106499190612eb8565b6001600160401b0381111561066057610660612a26565b604051908082528060200260200182016040528015610689578160200160208202803683370190505b509050885f5b8451811015611537575f5f5f8784815181106106ad576106ad61290d565b60200260200101515f01516001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107179190612ecf565b905087848151811061072b5761072b61290d565b60200260200101516060015160020b61076d828b87815181106107505761075061290d565b60200260200101515f01516107659190612eea565b60020b611922565b131561078c57604051631510fe5b60e31b815260040160405180910390fd5b60605f5f8a87815181106107a2576107a261290d565b60200260200101515f01516001600160a01b031663011492288960018d8b815181106107d0576107d061290d565b60200260200101516040518463ffffffff1660e01b81526004016107f693929190612f0f565b5f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108379190810190612fca565b50909550919350915061085890506001600160801b038083169084166130c2565b95506108648160801c90565b6001600160801b03166108778360801c90565b6001600160801b031661088a91906130c2565b945050505f8986815181106108a1576108a161290d565b60200260200101515f01516001600160a01b03166353aad1d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b9190612ecf565b90505f805b8a88815181106109225761092261290d565b602002602001015151811015610aa8575f8482815181106109455761094561290d565b60200260200101519050806001600160801b03165f0361097857604051632276762d60e11b815260040160405180910390fd5b5f8c8a8151811061098b5761098b61290d565b602002602001015183815181106109a4576109a461290d565b602002602001015190505f6109b882611940565b90505f5b81811015610a24576109ce838261197a565b60020b15610a1c575f5f6109ec896109e787868a611991565b6119fa565b90925090506109fb8584611a79565b5f03610a0e579b81019b9a8b019a610a19565b818d039c50808c039b505b50505b6001016109bc565b505f5f610a3384866001611a8b565b91509150610a3e8190565b600f0b82600f0b610a4f91906130c2565b610a59908d6130e8565b9b50610a658160801d90565b600f0b610a728360801d90565b600f0b610a7f91906130c2565b610a89908c6130e8565b9a50610a95838861310f565b9650506001909401935061091092505050565b508a8781518110610abb57610abb61290d565b60209081029190910101515160405163c79ee60d60e01b81526001600160a01b038a811660048301529091169063c79ee60d90602401602060405180830381865afa158015610b0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190613122565b8114610b4f57604051632276762d60e11b815260040160405180910390fd5b5050505f6001600160a01b0316888581518110610b6e57610b6e61290d565b6020026020010151602001516001600160a01b031603610bca5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888581518110610baf57610baf61290d565b6020908102919091018101516001600160a01b039092169101525b5f808080805b8a51811015610d86578c8981518110610beb57610beb61290d565b6020026020010151602001516001600160a01b03168b8281518110610c1257610c1261290d565b60200260200101516001600160a01b031603610c2d57600192505b8c8981518110610c3f57610c3f61290d565b6020026020010151604001516001600160a01b03168b8281518110610c6657610c6661290d565b60200260200101516001600160a01b031603610c8157600191505b5f6001600160a01b03168b8281518110610c9d57610c9d61290d565b60200260200101516001600160a01b031603610d7e5782610d09578c8981518110610cca57610cca61290d565b6020026020010151602001518b8281518110610ce857610ce861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b81610d79578c8981518110610d2057610d2061290d565b6020026020010151604001518b84610d39576001610d3b565b5f5b610d489060ff168461310f565b81518110610d5857610d5861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b610d86565b600101610bd0565b5081610e735773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168c8981518110610dbc57610dbc61290d565b6020026020010151602001516001600160a01b031614610e64578b8881518110610de857610de861290d565b60209081029190910181015101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa158015610e3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5f9190613122565b610e70565b886001600160a01b0316315b93505b80610f12578b8881518110610e8a57610e8a61290d565b6020026020010151604001516001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401610ed091906001600160a01b0391909116815260200190565b602060405180830381865afa158015610eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0f9190613122565b92505b5f8c8981518110610f2557610f2561290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8f9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190613122565b90508c898151811061100d5761100d61290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b81526004016110a491815260200190565b602060405180830381865afa1580156110bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e39190613122565b6110ed90896130e8565b97508c89815181106111015761110161290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa1580156111b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190613122565b90508c89815181106111e9576111e961290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112539190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161128091815260200190565b602060405180830381865afa15801561129b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190613122565b6112c990886130e8565b96505050508e6001600160a01b03168a87815181106112ea576112ea61290d565b6020026020010151602001516001600160a01b0316146114245773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168a87815181106113345761133461290d565b6020026020010151602001516001600160a01b031614801561138757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f6001600160a01b0316145b6114245789868151811061139d5761139d61290d565b60200260200101516060015160020b6113d88c88815181106113c1576113c161290d565b602002602001015160200151856107659190612eea565b13156113f757604051631510fe5b60e31b815260040160405180910390fd5b5f61140184611ae4565b905061140d8682611dff565b955082156114225761141f8382611dff565b92505b505b8e6001600160a01b03168a87815181106114405761144061290d565b6020026020010151604001516001600160a01b0316146114f35789868151811061146c5761146c61290d565b60200260200101516060015160020b6114a78c88815181106114905761149061290d565b602002602001015160400151856107659190612eea565b13156114c657604051631510fe5b60e31b815260040160405180910390fd5b5f6114d084611ae4565b90506114dc8582611e82565b945081156114f1576114ee8282611e82565b91505b505b61150661150085876130e8565b5f611eef565b611510828461310f565b61151a919061310f565b611524908d61310f565b9b50506001909401935061068f92505050565b505f611545888a018a612cd2565b6001600160a01b0386165f908152600160208190526040909120919550909350915061156e9050565b0154816040516020016115819190613139565b60405160208183030381529060405280519060200120146115b557604051637560978b60e11b815260040160405180910390fd5b5f5b815181101561178e578a6001600160a01b03168282815181106115dc576115dc61290d565b60200260200101516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116439190612921565b6001600160a01b03161461166a57604051635de194d760e01b815260040160405180910390fd5b5f82828151811061167d5761167d61290d565b60209081029190910101516040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa1580156116cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f19190613122565b90508282815181106117055761170561290d565b60200260200101516001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611755573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117799190613122565b611783908a61310f565b9850506001016115b7565b505f9050805b83518110156117dc578a6001600160a01b03168482815181106117b9576117b961290d565b60200260200101516001600160a01b0316036117d457600191505b600101611794565b5080611857576040516370a0823160e01b81526001600160a01b0383811660048301528b16906370a0823190602401602060405180830381865afa158015611826573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184a9190613122565b611854908861310f565b96505b505050505050949350505050565b61186d6118a7565b6001600160a01b03811661189b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6118a4816118d3565b50565b5f546001600160a01b031633146101c45760405163118cdaa760e01b8152336004820152602401611892565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f82136119385761193382613179565b61193a565b815b92915050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b81106119745781600101915061195c565b50919050565b5f6110006064603084020184901c5b069392505050565b5f808061199e8686611f04565b90925090505f6119ae8787611f3b565b6119c1906001600160801b038716612eb8565b90506119cd8787611f4d565b5f036119e8576119de838383611f5f565b93505050506119f3565b6119de838383612008565b9392505050565b5f5f611a068360e81c90565b60020b8460020b1215611a2357611a1c8361203c565b9150611a72565b611a2d8360d01c90565b60020b8460020b12611a4957611a42836120ae565b9050611a72565b611a5b611a5684866120f5565b61203c565b9150611a6f611a6a8486612115565b6120ae565b90505b9250929050565b5f60026048603084020184901c611989565b5f5f5f611a9786611940565b90505f5b818114611ada575f5f611ab08989858a612133565b9092509050611abf86836121d9565b9550611acb85826121d9565b94508260010192505050611a9b565b5050935093915050565b5f5f5f8360020b12611af9578260020b611b00565b8260020b5f035b9050620d89e8811115611b26576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03611b3b57600160801b611b4d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611b81576ffff97272373d413259a46990580e213a0260801c5b6004821615611ba0576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611bbf576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611bde576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611bfd576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611c1c576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611c3b576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611c5b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611c7b576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611c9b576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611cbb576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611cdb576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611cfb576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611d1b576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611d3b576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611d5c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611d7c576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611d9b576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611db8576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611dd757805f1981611dd357611dd3613193565b0490505b640100000000810615611deb576001611ded565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0383161015611e5a575f611e3f611e3a611e288661225f565b6002866001600160a01b03160a61226f565b6122cd565b90505f8412611e4e5780611e52565b805f035b91505061193a565b5f611e3f611e3a611e6a8661225f565b611e7d6001600160a01b038716806122f6565b612354565b5f6001600160801b036001600160a01b0383161015611ec2575f611e3f611e3a611eab8661225f565b600160c01b6002876001600160a01b03160a6123b2565b5f611e3f611e3a611ed28661225f565b600160801b611eea6001600160a01b038816806122f6565b6123b2565b5f818313611efd57816119f3565b5090919050565b5f80611f30611f188585603002604c011c90565b611f22868661197a565b603087901c61ffff1661245c565b909590945092505050565b5f60806041603084020184901c611989565b5f60026040603084020184901c611989565b5f5f611f6a85611ae4565b90505f611f7685611ae4565b90505f611faa85611f99846001600160a01b0316866001600160a01b031661247a565b8585036001600160a01b03166123b2565b90506001600160801b03811115611fd45760405163528073f560e11b815260040160405180910390fd5b6001600160801b03811660d087901b62ffffff60d01b1660e889901b6001600160e81b03191601015b979650505050505050565b5f5f61201385611ae4565b90505f61201f85611ae4565b90505f611faa85600160601b8585036001600160a01b03166123b2565b5f5f61205061204b8460e81c90565b611ae4565b90505f61206061204b8560d01c90565b90506001600160a01b0382166120986060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166123b2565b816120a5576120a5613193565b04949350505050565b5f5f6120bd61204b8460e81c90565b90505f6120cd61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b031661247a565b949350505050565b5f6119f36001600160e81b0384168360e81b6001600160e81b0319160190565b5f6119f362ffffff60d01b1984168360d01b62ffffff60d01b160190565b5f5f5f612142878787876124d8565b90505f61214f8887611a79565b15905061215c88876125ab565b5f0361219f57801561218c57612185612179836125bd565b6125bd565b6001600160801b031690565b92506121ce565b612198612179836125bd565b93506121ce565b80156121bb576121856121b56121748460801c90565b60801b90565b6121cb6121b56121748460801c90565b93505b505094509492505050565b5f5f6121e58360801d90565b600f0b6121f28560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061221e57508181600f0b14155b1561223c57604051633486405d60e21b815260040160405180910390fd5b608083901b6001600160801b03828701166001600160801b031987160101611ffd565b5f5f821361193857815f0361193a565b5f80805f19848609848602925082811083820303915050805f03612298575060c01c905061193a565b80600160c01b116122a7575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f6001600160ff1b038211156119385760405163b668004560e01b815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f0361231f575060401c905061193a565b80600160401b1161232e575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f0361237d575060801c905061193a565b80600160801b1161238c575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f036123e6575f84116123db575f5ffd5b5082900490506119f3565b8084116123f1575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f5f5f61246a86866125e8565b9088039897019695505050505050565b5f80805f19848609848602925082811083820303915050805f036124a3575060601c905061193a565b80600160601b116124b2575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f8080806124e6888761197a565b60020b1515905080612501576002606460308802011b880197505b5f61250d89888a611991565b90506125198988611a79565b1580156125235750855b8061253f57506125338988611a79565b1580159061253f575085155b80612548575081155b15612568576125568161262a565b93506125618161268b565b925061257f565b6125718161203c565b935061257c816120ae565b92505b61259e6001600160801b0385168460801b6001600160801b0319160190565b9998505050505050505050565b5f60026049603084020184901c611989565b805f600f82900b12156125e35760405163b668004560e01b815260040160405180910390fd5b919050565b5f8060026125f684866131a7565b61260091906131c6565b61261f61260d858761320a565b62ffffff166002808204910615150190565b915091509250929050565b5f5f61263961204b8460e81c90565b90505f61264961204b8560d01c90565b90506120ed61267a6060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166126ca565b6001846001600160a01b03166126ca565b5f5f61269a61204b8460e81c90565b90505f6126aa61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b0316612706565b5f6126d68484846123b2565b90505f82806126e7576126e7613193565b84860911156119f3575f1981106126fc575f5ffd5b6001019392505050565b5f612711838361247a565b90505f600160601b838509111561193a575f19811061272e575f5ffd5b60010192915050565b6001600160a01b03811681146118a4575f5ffd5b5f6020828403121561275b575f5ffd5b81356119f381612737565b5f5f60408385031215612777575f5ffd5b823561278281612737565b946020939093013593505050565b5f5f83601f8401126127a0575f5ffd5b5081356001600160401b038111156127b6575f5ffd5b6020830191508360208260051b8501011115611a72575f5ffd5b5f5f5f5f5f606086880312156127e4575f5ffd5b85356127ef81612737565b945060208601356001600160401b03811115612809575f5ffd5b8601601f81018813612819575f5ffd5b80356001600160401b0381111561282e575f5ffd5b8860208260071b8401011115612842575f5ffd5b6020919091019450925060408601356001600160401b03811115612864575f5ffd5b61287088828901612790565b969995985093965092949392505050565b5f5f5f5f60608587031215612894575f5ffd5b843561289f81612737565b935060208501356128af81612737565b925060408501356001600160401b038111156128c9575f5ffd5b8501601f810187136128d9575f5ffd5b80356001600160401b038111156128ee575f5ffd5b8760208284010111156128ff575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612931575f5ffd5b81516119f381612737565b8060020b81146118a4575f5ffd5b602080825281018290525f8360408301825b858110156129da57823561296f81612737565b6001600160a01b03168252602083013561298881612737565b6001600160a01b0316602083015260408301356129a481612737565b6001600160a01b0316604083015260608301356129c08161293c565b60020b60608301526080928301929091019060010161295c565b5095945050505050565b602080825281018290525f8360408301825b858110156129da578235612a0981612737565b6001600160a01b03168252602092830192909101906001016129f6565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612a5c57612a5c612a26565b60405290565b604051606081016001600160401b0381118282101715612a5c57612a5c612a26565b604051601f8201601f191681016001600160401b0381118282101715612aac57612aac612a26565b604052919050565b5f6001600160401b03821115612acc57612acc612a26565b5060051b60200190565b5f82601f830112612ae5575f5ffd5b8135612af8612af382612ab4565b612a84565b8082825260208201915060208360071b860101925085831115612b19575f5ffd5b602085015b838110156129da5760808188031215612b35575f5ffd5b612b3d612a3a565b8135612b4881612737565b81526020820135612b5881612737565b60208201526040820135612b6b81612737565b60408201526060820135612b7e8161293c565b60608201528352602090920191608001612b1e565b5f82601f830112612ba2575f5ffd5b8135612bb0612af382612ab4565b8082825260208201915060208360051b860101925085831115612bd1575f5ffd5b602085015b838110156129da5780356001600160401b03811115612bf3575f5ffd5b8601603f81018813612c03575f5ffd5b6020810135612c14612af382612ab4565b808282526020820191506020808460051b8601010192508a831115612c37575f5ffd5b6040840193505b82841015612c59578335825260209384019390910190612c3e565b86525050602093840193919091019050612bd6565b5f82601f830112612c7d575f5ffd5b8135612c8b612af382612ab4565b8082825260208201915060208360051b860101925085831115612cac575f5ffd5b602085015b838110156129da578035612cc481612737565b835260209283019201612cb1565b5f5f5f5f60808587031215612ce5575f5ffd5b84356001600160401b03811115612cfa575f5ffd5b8501601f81018713612d0a575f5ffd5b8035612d18612af382612ab4565b80828252602082019150602060608402850101925089831115612d39575f5ffd5b6020840193505b82841015612da6576060848b031215612d57575f5ffd5b612d5f612a62565b8435612d6a8161293c565b81526020850135612d7a8161293c565b60208201526040850135612d8d8161293c565b6040820152825260609390930192602090910190612d40565b965050505060208501356001600160401b03811115612dc3575f5ffd5b612dcf87828801612ad6565b93505060408501356001600160401b03811115612dea575f5ffd5b612df687828801612b93565b92505060608501356001600160401b03811115612e11575f5ffd5b612e1d87828801612c6e565b91505092959194509250565b602080825282518282018190525f918401906040840190835b81811015612e9957835180516001600160a01b0390811685526020808301518216818701526040808401519092169186019190915260609182015160020b9185019190915290930192608090920191600101612e42565b509095945050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761193a5761193a612ea4565b5f60208284031215612edf575f5ffd5b81516119f38161293c565b600282810b9082900b03627fffff198112627fffff8213171561193a5761193a612ea4565b6001600160a01b038416815282151560208083019190915260606040830181905283519083018190525f918401906080840190835b81811015612f62578351835260209384019390920191600101612f44565b5090979650505050505050565b5f82601f830112612f7e575f5ffd5b8151612f8c612af382612ab4565b8082825260208201915060208360051b860101925085831115612fad575f5ffd5b602085015b838110156129da578051835260209283019201612fb2565b5f5f5f5f5f60a08688031215612fde575f5ffd5b85516020870151604088015191965094506001600160401b03811115613002575f5ffd5b8601601f81018813613012575f5ffd5b8051613020612af382612ab4565b8082825260208201915060208360051b85010192508a831115613041575f5ffd5b6020840193505b82841015613063578351825260209384019390910190613048565b8096505050505060608601516001600160401b03811115613082575f5ffd5b61308e88828901612f6f565b92505060808601516001600160401b038111156130a9575f5ffd5b6130b588828901612f6f565b9150509295509295909350565b8181035f8312801583831316838312821617156130e1576130e1612ea4565b5092915050565b8082018281125f83128015821682158216171561310757613107612ea4565b505092915050565b8082018082111561193a5761193a612ea4565b5f60208284031215613132575f5ffd5b5051919050565b602080825282518282018190525f918401906040840190835b81811015612e995783516001600160a01b0316835260209384019390920191600101613152565b5f600160ff1b820161318d5761318d612ea4565b505f0390565b634e487b7160e01b5f52601260045260245ffd5b5f8260020b8260020b028060020b91508082146130e1576130e1612ea4565b5f8160020b8360020b806131e857634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f198214161561320157613201612ea4565b90059392505050565b62ffffff81811683821602908116908181146130e1576130e1612ea456' as const\n\nconst BASE_ACCOUNTANT_ADDRESS = '0x345cA3407942f9d175c9eA8B90e83A36F570f852' as const\nconst MAINNET_ACCOUNTANT_ADDRESS = '0x65aA902AE3135658587FFC36ED51B61c927114e1' as const\nconst LEGACY_MAINNET_ACCOUNTANT_ADDRESS = '0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49' as const\nconst SEPOLIA_ACCOUNTANT_ADDRESS = '0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab' as const\nconst TEST_ACCOUNTANT_ADDRESS = '0x3fE074e8131bE6D8B94700860E1D9E8ece97AA54' as const\nconst BASE_WETH_ADDRESS = '0x4200000000000000000000000000000000000006' as const\nconst MAINNET_WETH_ADDRESS = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' as const\nconst SEPOLIA_WETH_ADDRESS = '0xfff9976782d46cc05630d1f6ebab18b2324d6b14' as const\n\n// PanopticVaultAccountant deployedBytecode immutableReferences offsets for wethAddress.\nconst WETH_IMMUTABLE_OFFSETS = [241, 4947] as const\n\nfunction normalizeAddressLower(address: Address): string {\n return address.toLowerCase()\n}\n\nfunction leftPadAddressToWord(address: Address): string {\n return `${'0'.repeat(24)}${normalizeAddressLower(address).slice(2)}`\n}\n\nfunction hydrateWethImmutables({\n bytecode,\n wethAddress,\n}: {\n bytecode: Hex\n wethAddress: Address\n}): Hex {\n const bytes = bytecode.slice(2).toLowerCase()\n const word = leftPadAddressToWord(wethAddress)\n let hydrated = bytes\n\n for (const offset of WETH_IMMUTABLE_OFFSETS) {\n const start = offset * 2\n const end = start + 64\n if (end > hydrated.length) {\n continue\n }\n hydrated = `${hydrated.slice(0, start)}${word}${hydrated.slice(end)}`\n }\n\n return `0x${hydrated}`\n}\n\nconst STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT: Partial<Record<string, Hex>> = {\n [normalizeAddressLower(BASE_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: BASE_WETH_ADDRESS as Address,\n }),\n [normalizeAddressLower(MAINNET_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: MAINNET_WETH_ADDRESS as Address,\n }),\n [normalizeAddressLower(LEGACY_MAINNET_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: MAINNET_WETH_ADDRESS as Address,\n }),\n [normalizeAddressLower(SEPOLIA_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: SEPOLIA_WETH_ADDRESS as Address,\n }),\n // Test accountant mirrors sepolia deployment semantics.\n [normalizeAddressLower(TEST_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: SEPOLIA_WETH_ADDRESS as Address,\n }),\n}\n\nexport function getStaleOracleOverrideBytecodeForAccountant(\n accountantAddress: Address,\n): Hex | undefined {\n return STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT[normalizeAddressLower(accountantAddress)]\n}\n\nexport function getStaleOracleStateOverrideForAccountant(\n accountantAddress: Address,\n): Array<{ address: Address; code: Hex }> | undefined {\n const bytecode = getStaleOracleOverrideBytecodeForAccountant(accountantAddress)\n if (bytecode === undefined) {\n return undefined\n }\n return [\n {\n address: accountantAddress,\n code: bytecode,\n },\n ]\n}\n","// TODO: generated by claude. test against real solidity groundtruth\nimport { type Address, type Hex, encodePacked, keccak256 } from 'viem'\n\n/**\n * Represents a leaf in the manage tree for authorization purposes\n */\nexport interface ManageLeaf {\n target: Address\n canSendValue: boolean\n signature: string\n argumentAddresses: Address[]\n description: string\n decoderAndSanitizer: Address\n}\n\n/**\n * Efficiently hashes two bytes32 values together\n * Equivalent to Solidity's keccak256(abi.encodePacked(a, b))\n */\nfunction efficientHash(a: Hex, b: Hex): Hex {\n return keccak256(encodePacked(['bytes32', 'bytes32'], [a, b]))\n}\n\n/**\n * Hashes a pair of bytes32 values in sorted order (mimics OpenZeppelin's approach)\n * This ensures that hashPair(a, b) === hashPair(b, a)\n */\nfunction hashPair(a: Hex, b: Hex): Hex {\n return a < b ? efficientHash(a, b) : efficientHash(b, a)\n}\n\n/**\n * Generates a Merkle proof for a given leaf within a Merkle tree\n * @param leaf The leaf hash to generate a proof for\n * @param tree The complete Merkle tree (array of layers, where tree[0] is the bottom layer)\n * @returns Array of sibling hashes that form the proof\n * @throws Error if the leaf is not found in the tree\n */\nexport function generateProof(leaf: Hex, tree: Hex[][]): Hex[] {\n // The length of each proof is the height of the tree - 1\n const treeLength = tree.length\n const proof: Hex[] = new Array(treeLength - 1)\n\n let currentLeaf = leaf\n\n // Build the proof by traversing up the tree\n for (let i = 0; i < treeLength - 1; i++) {\n const layer = tree[i]\n let found = false\n\n // Find the leaf in the current layer\n for (let j = 0; j < layer.length; j++) {\n if (currentLeaf === layer[j]) {\n // Found the leaf, determine if we need the next or previous sibling\n proof[i] = j % 2 === 0 ? layer[j + 1] : layer[j - 1]\n currentLeaf = hashPair(currentLeaf, proof[i])\n found = true\n break\n }\n }\n\n if (!found) {\n throw new Error('Leaf not found in tree')\n }\n }\n\n return proof\n}\n\n/**\n * Generates Merkle proofs for multiple manage leaves using a pre-built Merkle tree\n * @param manageLeafs Array of manage leaves to generate proofs for\n * @param tree The complete Merkle tree structure\n * @param rawDataDecoderAddress Address of the raw data decoder and sanitizer contract\n * @returns Array of proofs, one for each manage leaf\n */\nexport function getProofsUsingTree(\n manageLeafs: ManageLeaf[],\n tree: Hex[][],\n rawDataDecoderAddress: Address,\n): Hex[][] {\n const proofs: Hex[][] = []\n\n for (let i = 0; i < manageLeafs.length; i++) {\n const manageLeaf = manageLeafs[i]\n\n // Generate the function selector (first 4 bytes of keccak256 hash of signature)\n const selectorHash = keccak256(encodePacked(['string'], [manageLeaf.signature]))\n const selector = selectorHash.slice(0, 10) as Hex // '0x' + 8 hex chars = 10 chars total\n\n // Build the raw digest by encoding packed:\n // rawDataDecoderAddress + target + canSendValue + selector + argumentAddresses\n let rawDigest = encodePacked(\n ['address', 'address', 'bool', 'bytes4'],\n [rawDataDecoderAddress, manageLeaf.target, manageLeaf.canSendValue, selector],\n )\n\n // Append each argument address to the raw digest\n for (const argAddress of manageLeaf.argumentAddresses) {\n rawDigest = encodePacked(['bytes', 'address'], [rawDigest, argAddress])\n }\n\n // Hash the raw digest to get the leaf\n const leaf = keccak256(rawDigest)\n\n // Generate and store the proof for this leaf\n proofs.push(generateProof(leaf, tree))\n }\n\n return proofs\n}\n\n/**\n * Generates Merkle proofs using pre-computed leaf digests\n * @param leafDigests Array of pre-computed leaf digest hashes\n * @param tree The complete Merkle tree structure (tree[0] is the leaf layer)\n * @returns Array of proofs, one for each leaf digest\n */\nexport function getProofsFromDigests(leafDigests: Hex[], tree: Hex[][]): Hex[][] {\n const proofs: Hex[][] = []\n\n for (const leafDigest of leafDigests) {\n proofs.push(generateProof(leafDigest, tree))\n }\n\n return proofs\n}\n\n/**\n * Converts a Merkle tree from JSON format to the expected format for proof generation\n * JSON format stores layers as: { \"0\": [root], \"1\": [...], \"N\": [leaves] }\n * Expected format: [[leaves], [...], [root]]\n * @param jsonTree The tree structure from JSON (keyed by layer index)\n * @returns Array of layers with leaves at index 0 and root at the end\n */\nexport function convertJsonTreeToArray(jsonTree: Record<string, readonly Hex[]>): Hex[][] {\n // Get the keys and sort them numerically to get layer indices\n const layerIndices = Object.keys(jsonTree)\n .map(Number)\n .sort((a, b) => a - b)\n\n // Reverse the order: JSON has [root, ..., leaves], we need [leaves, ..., root]\n const reversedIndices = [...layerIndices].reverse()\n\n return reversedIndices.map((index) => [...jsonTree[index.toString()]])\n}\n","import type { Address, Hex } from 'viem'\n\nimport { convertJsonTreeToArray, getProofsFromDigests } from './merkleTreeHelper'\n\n/**\n * Represents a strategist leaf from the pre-generated artifacts.\n * This type matches the structure of leaves in SepoliaWETHPLPStrategistLeaves,\n * SepoliaUSDCPLPStrategistLeaves, etc.\n */\nexport type StrategistLeaf = {\n readonly LeafDigest: string\n readonly DecoderAndSanitizerAddress: string\n readonly TargetAddress: string\n readonly Description: string\n readonly FunctionSignature: string\n readonly FunctionSelector: string\n readonly AddressArguments: readonly string[]\n readonly CanSendValue: boolean\n readonly PackedArgumentAddresses: string\n}\n\n/**\n * Represents the structure of a strategist leaves artifact (e.g., SepoliaWETHPLPStrategistLeaves).\n * Generic over the leaf type to preserve literal types for autocomplete.\n */\nexport type StrategistLeavesArtifact<TLeaf extends StrategistLeaf = StrategistLeaf> = {\n readonly metadata: {\n readonly AccountantAddress: string\n readonly BoringVaultAddress: string\n readonly DecoderAndSanitizerAddress: string\n readonly DigestComposition: readonly string[]\n readonly LeafCount: number\n readonly ManageRoot: string\n readonly ManagerAddress: string\n readonly TreeCapacity: number\n }\n readonly leafs: readonly TLeaf[]\n readonly MerkleTree: Record<string, readonly Hex[]>\n}\n\n/**\n * Extracts the leaf type from a strategist leaves artifact.\n * Useful for typing variables that hold leaves from a specific artifact.\n *\n * @example\n * type WETHLeaf = InferLeaf<typeof SepoliaWETHPLPStrategistLeaves>\n */\nexport type InferLeaf<T extends StrategistLeavesArtifact> = T['leafs'][number]\n\n/**\n * Extracts the valid description strings from a strategist leaves artifact.\n * Used internally for autocomplete in findLeaf.\n */\nexport type LeafDescription<T extends StrategistLeavesArtifact> = T['leafs'][number]['Description']\n\n/**\n * Finds a leaf by its description with full type safety and autocomplete.\n * Throws if the leaf is not found.\n *\n * @param artifact - The strategist leaves artifact (e.g., SepoliaWETHPLPStrategistLeaves)\n * @param description - The description of the leaf to find (autocomplete enabled)\n * @returns The matching leaf\n * @throws Error if no leaf matches the description\n *\n * @example\n * ```ts\n * // Autocomplete shows all valid descriptions for this artifact\n * const approveLeaf = findLeaf(SepoliaWETHPLPStrategistLeaves, 'Approve poWETH to spend WETH')\n * const depositLeaf = findLeaf(SepoliaUSDCPLPStrategistLeaves, 'Deposit USDC for poUSDC')\n * ```\n */\nexport function findLeaf<T extends StrategistLeavesArtifact>(\n artifact: T,\n description: LeafDescription<T>,\n): Extract<T['leafs'][number], { Description: typeof description }> {\n const leaf = artifact.leafs.find((l) => l.Description === description)\n if (!leaf) {\n throw new Error(`Leaf not found: \"${description}\"`)\n }\n return leaf as Extract<T['leafs'][number], { Description: typeof description }>\n}\n\n/**\n * Represents a single action to execute via manageVaultWithMerkleVerification.\n * Pairs a strategist leaf with the encoded call data for that action.\n */\nexport type ManageAction = {\n /** The strategist leaf authorizing this action */\n leaf: StrategistLeaf\n /** The encoded function call data (use viem's encodeFunctionData) */\n data: Hex\n /** Native value to send with the call (defaults to 0n) */\n value?: bigint\n}\n\n/**\n * The tuple of arguments for manageVaultWithMerkleVerification\n */\nexport type ManageVaultArgs = [\n proofs: Hex[][],\n decodersAndSanitizers: Address[],\n targets: Address[],\n targetData: Hex[],\n values: bigint[],\n]\n\n/**\n * Transforms an array of ManageActions into the argument tuple required by\n * manageVaultWithMerkleVerification.\n *\n * @param actions - Array of manage actions to execute\n * @param artifact - The strategist leaves artifact (e.g., SepoliaWETHPLPStrategistLeaves)\n * @returns Tuple of [proofs, decodersAndSanitizers, targets, targetData, values]\n *\n * @example\n * ```ts\n * const actions: ManageAction[] = [\n * {\n * leaf: findLeaf(SepoliaWETHPLPStrategistLeaves, 'Approve poWETH to spend WETH'),\n * data: encodeFunctionData({ abi: erc20Abi, functionName: 'approve', args: [spender, amount] }),\n * },\n * {\n * leaf: findLeaf(SepoliaWETHPLPStrategistLeaves, 'Deposit WETH for poWETH'),\n * data: encodeFunctionData({ abi: CollateralTrackerAbi, functionName: 'deposit', args: [assets, receiver] }),\n * },\n * ]\n *\n * const [proofs, decodersAndSanitizers, targets, targetData, values] = buildManageArgs(\n * actions,\n * SepoliaWETHPLPStrategistLeaves\n * )\n * ```\n */\nexport function buildManageArgs(\n actions: ManageAction[],\n artifact: StrategistLeavesArtifact,\n): ManageVaultArgs {\n const leafDigests = actions.map((a) => a.leaf.LeafDigest as Hex)\n const tree = convertJsonTreeToArray(artifact.MerkleTree)\n\n const proofs = getProofsFromDigests(leafDigests, tree)\n const decodersAndSanitizers = actions.map((a) => a.leaf.DecoderAndSanitizerAddress as Address)\n const targets = actions.map((a) => a.leaf.TargetAddress as Address)\n const targetData = actions.map((a) => a.data)\n const values = actions.map((a) => a.value ?? 0n)\n\n return [proofs, decodersAndSanitizers, targets, targetData, values]\n}\n","import type { Address, Hex } from 'viem'\nimport { encodeFunctionData } from 'viem'\n\nimport { CollateralTrackerAbi } from '../../../abis/CollateralTracker'\n\nexport function encodeDepositFunctionData({\n assets,\n receiver,\n}: {\n assets: bigint\n receiver: Address\n}): Hex {\n return encodeFunctionData({\n abi: CollateralTrackerAbi,\n functionName: 'deposit',\n args: [assets, receiver],\n })\n}\n","import type { Address } from 'viem'\nimport { encodeFunctionData } from 'viem'\n\nimport { CollateralTrackerAbi } from '../../../abis/CollateralTracker'\n\nexport function encodeWithdrawFunctionData({\n assets,\n receiver,\n owner,\n}: {\n assets: bigint\n receiver: Address\n owner: Address\n}): `0x${string}` {\n return encodeFunctionData({\n abi: CollateralTrackerAbi,\n functionName: 'withdraw',\n args: [assets, receiver, owner],\n })\n}\n","import type { Address } from 'viem'\nimport { encodeFunctionData } from 'viem'\n\nimport { Erc20Abi } from '../../abis/erc20ABI'\n\nexport function encodeApproveFunctionData({\n spender,\n amount,\n}: {\n spender: Address\n amount: bigint\n}): `0x${string}` {\n return encodeFunctionData({\n abi: Erc20Abi,\n functionName: 'approve',\n args: [spender, amount],\n })\n}\n","const alchemyChains = {\n 1: 'eth-mainnet',\n 137: 'polygon-mainnet',\n 42161: 'arb-mainnet',\n 8453: 'base-mainnet',\n 10: 'opt-mainnet',\n 130: 'unichain-mainnet',\n 11155111: 'eth-sepolia',\n} as const\n\nexport function getAlchemyRpcUrl(\n chainId: keyof typeof alchemyChains,\n alchemyApiKey: string,\n): string {\n if (alchemyChains[chainId]) {\n return `https://${alchemyChains[chainId]}.g.alchemy.com/v2/${alchemyApiKey}`\n } else {\n throw new Error(`Unsupported chainId: ${chainId}`)\n }\n}\n\nexport function getAlchemyWsRpcUrl(\n chainId: keyof typeof alchemyChains,\n alchemyApiKey: string,\n): string {\n if (alchemyChains[chainId]) {\n return `wss://${alchemyChains[chainId]}.g.alchemy.com/v2/${alchemyApiKey}`\n } else {\n throw new Error(`Unsupported chainId: ${chainId}`)\n }\n}\n","import * as Types from './hypoVault-types.generated';\n\nimport { GraphQLClient, RequestOptions } from 'graphql-request';\nimport gql from 'graphql-tag';\ntype GraphQLClientRequestHeaders = RequestOptions['requestHeaders'];\nexport const DepositEpochStateFragmentDoc = gql`\n fragment DepositEpochState on DepositEpochState {\n id\n epoch\n assetsDeposited\n assetsFulfilled\n sharesReceived\n hypoVault {\n id\n }\n}\n `;\nexport const HypoVaultFragmentDoc = gql`\n fragment HypoVault on HypoVault {\n id\n symbol\n name\n underlyingToken {\n id\n symbol\n decimals\n name\n }\n performanceFeeBps\n owner\n feeWallet\n manager\n accountant\n withdrawalEpoch\n depositEpoch\n reservedWithdrawalAssets\n depositEpochStates {\n id\n }\n withdrawalEpochStates {\n id\n }\n userBalances {\n id\n }\n totalAssetsDeposited\n totalAssetsWithdrawn\n totalPerformanceFeesCollected\n createdAt\n updatedAt\n createdAtBlock\n updatedAtBlock\n}\n `;\nexport const WithdrawalEpochStateFragmentDoc = gql`\n fragment WithdrawalEpochState on WithdrawalEpochState {\n id\n epoch\n sharesWithdrawn\n assetsReceived\n sharesFulfilled\n hypoVault {\n id\n }\n}\n `;\nexport const GetDepositOverviewDocument = gql`\n query GetDepositOverview($account: String!, $hypoVault: String!, $hypoVaultId: ID!, $historyLimit: Int = 5) {\n hypoVault(id: $hypoVaultId) {\n id\n underlyingToken {\n symbol\n decimals\n }\n }\n queuedDeposits(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: desc\n ) {\n amount\n epoch\n }\n queuedWithdrawals(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: desc\n ) {\n amount\n epoch\n }\n depositExecuteds(\n first: $historyLimit\n orderBy: blockTimestamp\n orderDirection: desc\n where: {user: $account, hypoVault: $hypoVault}\n ) {\n assets\n blockTimestamp\n }\n withdrawalExecuteds(\n first: $historyLimit\n orderBy: blockTimestamp\n orderDirection: desc\n where: {user: $account, hypoVault: $hypoVault}\n ) {\n assets\n blockTimestamp\n }\n}\n `;\nexport const GetLatestDepositAndWithdrawEpochDocument = gql`\n query GetLatestDepositAndWithdrawEpoch($hypoVault: String!) {\n depositEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...DepositEpochState\n }\n withdrawalEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...WithdrawalEpochState\n }\n}\n ${DepositEpochStateFragmentDoc}\n${WithdrawalEpochStateFragmentDoc}`;\nexport const GetLatestEpochDocument = gql`\n query GetLatestEpoch($hypoVault: String!) {\n depositEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...DepositEpochState\n }\n withdrawalEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...WithdrawalEpochState\n }\n}\n ${DepositEpochStateFragmentDoc}\n${WithdrawalEpochStateFragmentDoc}`;\nexport const GetVaultHistoryDocument = gql`\n query GetVaultHistory($hypoVault: String!, $first: Int = 200, $skip: Int = 0) {\n depositRequesteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n depositsFulfilleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assetsFulfilled\n sharesReceived\n blockTimestamp\n transactionHash\n }\n withdrawalRequesteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n shares\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n withdrawalsFulfilleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assetsReceived\n sharesFulfilled\n blockTimestamp\n transactionHash\n }\n depositCancelleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n withdrawalCancelleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n shares\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n depositExecuteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n shares\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n withdrawalExecuteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n shares\n performanceFee\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n}\n `;\nexport const GetFilteredHypoVaultsDocument = gql`\n query GetFilteredHypoVaults($hypoVaultWhitelist: [Bytes!]!) {\n hypoVaults(where: {id_in: $hypoVaultWhitelist}) {\n ...HypoVault\n }\n}\n ${HypoVaultFragmentDoc}`;\nexport const GetQueuedWithdrawalsForExecutionDocument = gql`\n query GetQueuedWithdrawalsForExecution($account: String!, $hypoVault: String!, $hypoVaultId: ID!) {\n hypoVault(id: $hypoVaultId) {\n id\n withdrawalEpoch\n }\n queuedWithdrawals(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: asc\n ) {\n amount\n epoch\n }\n}\n `;\nexport const GetWithdrawalEpochStatesForExecutionDocument = gql`\n query GetWithdrawalEpochStatesForExecution($hypoVault: String!, $epochs: [BigInt!]!) {\n withdrawalEpochStates(where: {hypoVault: $hypoVault, epoch_in: $epochs}) {\n ...WithdrawalEpochState\n }\n}\n ${WithdrawalEpochStateFragmentDoc}`;\nexport const GetQueuedDepositsForWithdrawalDocument = gql`\n query GetQueuedDepositsForWithdrawal($account: String!, $hypoVault: String!, $hypoVaultId: ID!) {\n hypoVault(id: $hypoVaultId) {\n id\n depositEpoch\n }\n userBalances(where: {account: $account, hypoVault: $hypoVault}) {\n shares\n }\n queuedDeposits(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: asc\n ) {\n amount\n epoch\n }\n}\n `;\nexport const GetDepositEpochStatesForWithdrawalDocument = gql`\n query GetDepositEpochStatesForWithdrawal($hypoVault: String!, $minEpoch: BigInt!, $maxEpoch: BigInt!) {\n depositEpochStates(\n where: {hypoVault: $hypoVault, epoch_gte: $minEpoch, epoch_lt: $maxEpoch}\n orderBy: epoch\n orderDirection: asc\n ) {\n ...DepositEpochState\n }\n}\n ${DepositEpochStateFragmentDoc}`;\n\nexport type SdkFunctionWrapper = <T>(action: (requestHeaders?:Record<string, string>) => Promise<T>, operationName: string, operationType?: string, variables?: any) => Promise<T>;\n\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) => action();\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n GetDepositOverview(variables: Types.GetDepositOverviewQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetDepositOverviewQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetDepositOverviewQuery>(GetDepositOverviewDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetDepositOverview', 'query', variables);\n },\n GetLatestDepositAndWithdrawEpoch(variables: Types.GetLatestDepositAndWithdrawEpochQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetLatestDepositAndWithdrawEpochQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetLatestDepositAndWithdrawEpochQuery>(GetLatestDepositAndWithdrawEpochDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetLatestDepositAndWithdrawEpoch', 'query', variables);\n },\n GetLatestEpoch(variables: Types.GetLatestEpochQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetLatestEpochQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetLatestEpochQuery>(GetLatestEpochDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetLatestEpoch', 'query', variables);\n },\n GetVaultHistory(variables: Types.GetVaultHistoryQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetVaultHistoryQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetVaultHistoryQuery>(GetVaultHistoryDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetVaultHistory', 'query', variables);\n },\n GetFilteredHypoVaults(variables: Types.GetFilteredHypoVaultsQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetFilteredHypoVaultsQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetFilteredHypoVaultsQuery>(GetFilteredHypoVaultsDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetFilteredHypoVaults', 'query', variables);\n },\n GetQueuedWithdrawalsForExecution(variables: Types.GetQueuedWithdrawalsForExecutionQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetQueuedWithdrawalsForExecutionQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetQueuedWithdrawalsForExecutionQuery>(GetQueuedWithdrawalsForExecutionDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetQueuedWithdrawalsForExecution', 'query', variables);\n },\n GetWithdrawalEpochStatesForExecution(variables: Types.GetWithdrawalEpochStatesForExecutionQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetWithdrawalEpochStatesForExecutionQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetWithdrawalEpochStatesForExecutionQuery>(GetWithdrawalEpochStatesForExecutionDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetWithdrawalEpochStatesForExecution', 'query', variables);\n },\n GetQueuedDepositsForWithdrawal(variables: Types.GetQueuedDepositsForWithdrawalQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetQueuedDepositsForWithdrawalQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetQueuedDepositsForWithdrawalQuery>(GetQueuedDepositsForWithdrawalDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetQueuedDepositsForWithdrawal', 'query', variables);\n },\n GetDepositEpochStatesForWithdrawal(variables: Types.GetDepositEpochStatesForWithdrawalQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetDepositEpochStatesForWithdrawalQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetDepositEpochStatesForWithdrawalQuery>(GetDepositEpochStatesForWithdrawalDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetDepositEpochStatesForWithdrawal', 'query', variables);\n }\n };\n}\nexport type Sdk = ReturnType<typeof getSdk>;","import { GraphQLClient } from 'graphql-request'\n\nimport { getSdk as getHypoVaultSdk } from './graphql/hypoVault-sdk.generated'\nimport { CHAIN_DEPLOYMENTS } from './hypoVault/chainDeployments'\n\n// const chainToPanopticGraphQlAPI: Record<number, string> = {\n// // mainnet\n// 1: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/dev/gn',\n// // anvil\n// 31337:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/dev/gn',\n// // unichain\n// 130: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-unichain/dev/gn',\n// // polygon\n// 137: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// // arbitrum\n// 42161:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// // base\n// 8453: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/dev/gn',\n// // sepolia\n// 11155111:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/dev/gn',\n// // avalanche\n// 43114:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// // op\n// 10: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// }\n\nexport const chainToHypoVaultGraphQlAPI: Record<number, string> = {}\n\nfor (const deployment of Object.values(CHAIN_DEPLOYMENTS)) {\n chainToHypoVaultGraphQlAPI[deployment.chainId] = deployment.subgraphs.hypovault\n}\n\n// TODO: move Panoptic subgraph queries and sdk construction into SDK here\n// export const getPanopticGraphQLClient = (chainId: number) => {\n// const apiUrl = chainToPanopticGraphQlAPI[chainId];\n// const client = new GraphQLClient(apiUrl);\n// return getPanopticSdk(client);\n// };\n\nexport function getHypoVaultGraphQLClient(chainId: number): ReturnType<typeof getHypoVaultSdk> {\n const apiUrl = chainToHypoVaultGraphQlAPI[chainId]\n if (apiUrl === undefined) {\n throw new Error(`Unsupported HypoVault subgraph chainId: ${chainId}`)\n }\n const client = new GraphQLClient(apiUrl)\n return getHypoVaultSdk(client)\n}\n\nexport type HypoVaultGraphQLClient = ReturnType<typeof getHypoVaultGraphQLClient>\n"],"mappings":";;;;;;;;;;;AAAA,MAAa,uBAAuB;CAClC;EACE,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS;GACP;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;EACF;EACD,WAAW;CACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;EACF;EACD,WAAW;CACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;EACF;EACD,WAAW;CACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf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Cd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;AACF;;;;AC/QD,MAAa,aAAa;CACxB;EACE,QAAQ,CAAE;EACV,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,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QAAQ,CAAE;CAAE;CAC5E;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;CACX;AACF;;;;AClUD,MAAa,gCAAgC;CAC3C;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,YAAY;IACV;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;GACF;GACD,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd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AAE;EACV,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;AACF;;;;AC3OD,MAAa,mBAAmB;CAC9B;EACE,QAAQ,CAAE;EACV,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAA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;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IAAE,MAAM;IAAQ,cAAc;IAAW,MAAM;IAAW,SAAS;GAAM;GACzE;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IAAE,MAAM;IAAQ,cAAc;IAAW,MAAM;IAAW,SAAS;GAAM;GACzE;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,QAAQ,CACN;GAAE,MAAM;GAAW,cAAc;GAAW,MAAM;EAAW,GAC7D;GAAE,MAAM;GAAiB,cAAc;GAAW,MAAM;EAAW,CACpE;EACD,MAAM;CACP;CACD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAsB;CACzD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAgB;CACnD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAoB;CACvD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAoC;CACvE;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAiB;CACpD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAe;CAClD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAoB;CACvD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAoB;CACvD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAoB;CACvD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAqB;CACxD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAe;CAClD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAmB;CACtD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAoB;CACvD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAuB;CAC1D;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAc;CACjD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAe;CAClD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAsB;CACzD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAmB;CACtD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAiB;CACpD;EAAE,MAAM;EAAS,QAAQ,CAAE;EAAE,MAAM;CAAe;AACnD;;;;SCr6DM;CACH,WAAW;CACX,kBAAkB;EAChB,oBAAoB;EACpB,eAAe;EACf,aAAa;CACd;CACD,aAAa;EACX,QAAQ;GACN,2BAA2B;GAC3B,WAAW;GACX,cAAc;GACd,kBAAkB;GAClB,wCAAwC;EACzC;EACD,UAAU;GACR,gBAAgB;GAChB,gBAAgB;EACjB;EACD,YAAY;GACV,uBAAuB;GACvB,uBAAuB;EACxB;EACD,kBAAkB;GAChB,uBAAuB;GACvB,uBAAuB;EACxB;CACF;CACD,YAAY;EACV,QAAQ;GACN,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;EACvB;EACD,MAAM;GACJ,iCAAiC;GACjC,iCAAiC;GACjC,kBAAkB;GAClB,cAAc;GACd,8BAA8B;GAC9B,mCAAmC;GACnC,qBAAqB;GACrB,qBAAqB;GACrB,kBAAkB;GAClB,gBAAgB;GAChB,iBAAiB;GACjB,qBAAqB;EACtB;CACF;CACD,eAAe;EACb;EACA;EACA;CACD;CACD,WAAW,EACT,gBAAgB;EACd,aAAa;EACb,aAAa;EACb,OAAO;EACP,eAAe;EACf,UAAU;CACX,EACF;CACD,aAAa;EACX,aAAa;EACb,YAAY;CACb;AACF;YACO;CACN,WAAW;CACX,kBAAkB;EAChB,oBAAoB;EACpB,eAAe;EACf,aAAa;CACd;CACD,aAAa;EACX,QAAQ;GACN,2BAA2B;GAC3B,WAAW;GACX,cAAc;GACd,kBAAkB;GAClB,wCAAwC;EACzC;EACD,UAAU;GACR,gBAAgB;GAChB,gBAAgB;EACjB;EACD,YAAY;GACV,uBAAuB;GACvB,uBAAuB;EACxB;EACD,kBAAkB;GAChB,uBAAuB;GACvB,uBAAuB;EACxB;CACF;CACD,YAAY;EACV,QAAQ;GACN,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;EACvB;EACD,MAAM;GACJ,iCAAiC;GACjC,iCAAiC;GACjC,kBAAkB;GAClB,cAAc;GACd,8BAA8B;GAC9B,mCAAmC;GACnC,qBAAqB;GACrB,qBAAqB;GACrB,kBAAkB;GAClB,gBAAgB;GAChB,iBAAiB;GACjB,qBAAqB;EACtB;CACF;CACD,eAAe,CAAC,4CAA6C;CAC7D,WAAW,EACT,eAAe;EACb,aAAa;EACb,aAAa;EACb,OAAO;EACP,eAAe;EACf,UAAU;CACX,EACF;CACD,aAAa;EACX,aAAa;EACb,YAAY;CACb;AACF;gBACW;CACV,WAAW;CACX,kBAAkB;EAChB,oBAAoB;EACpB,eAAe;EACf,aAAa;CACd;CACD,aAAa;EACX,QAAQ;GACN,2BAA2B;GAC3B,WAAW;GACX,cAAc;GACd,kBAAkB;GAClB,wCAAwC;EACzC;EACD,UAAU;GACR,gBAAgB;GAChB,gBAAgB;EACjB;EACD,YAAY;GACV,uBAAuB;GACvB,uBAAuB;EACxB;EACD,kBAAkB;GAChB,uBAAuB;GACvB,uBAAuB;EACxB;CACF;CACD,YAAY;EACV,QAAQ;GACN,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;EACvB;EACD,MAAM;GACJ,iCAAiC;GACjC,iCAAiC;GACjC,kBAAkB;GAClB,cAAc;GACd,8BAA8B;GAC9B,mCAAmC;GACnC,qBAAqB;GACrB,qBAAqB;GACrB,kBAAkB;GAClB,gBAAgB;GAChB,iBAAiB;GACjB,qBAAqB;EACtB;CACF;CACD,eAAe,CAAC,4CAA6C;CAC7D,WAAW,EACT,eAAe;EACb,aAAa;EACb,aAAa;EACb,OAAO;EACP,eAAe;EACf,UAAU;CACX,EACF;CACD,aAAa;EACX,aAAa;EACb,YAAY;CACb;AACF;oCApMH;CACE;CAoEA;CAgEA;AAgED;;;;ACnMD,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,gBAAgB;AAE7B,MAAa,oBAAoBC;AAEjC,SAAgB,mBAAmB,SAAS;AAC1C,QAAO,kBAAkB;AAC1B;AAED,SAAgB,uBAAuB,SAAS;CAC9C,MAAM,aAAa,mBAAmB,QAAQ;AAC9C,KAAI,sBACF,OAAM,IAAI,OAAO,2CAA2C,QAAQ;AAEtE,QAAO;AACR;AAED,SAAgB,iBAAiB,SAAS;AACxC,QAAO,mBAAmB,QAAQ;AACnC;AAED,SAAgB,iBAAiB,YAAY;CAC3C,MAAM,SAAS,WAAW,QAAQ,eAAe,WAAW,QAAQ;AACpE,KAAI,kBACF,OAAM,IAAI,OAAO,sCAAsC,WAAW,QAAQ;AAE5E,QAAO;AACR;AAGD,MAAa,qBAAqB,kBAAkB;AACpD,MAAa,gCAAgC,mBAAmB,SAAS;AACzE,MAAa,qBAAqB,kBAAkB;AACpD,MAAa,mCAAmC,mBAAmB,UAAU;AAC7E,MAAa,8BAA8B,mBAAmB,UAAU;AACxE,MAAa,sCAAsC,mBAAmB,UAAU;AAChF,MAAa,4CAA4C,mBAAmB,UAAU;AACtF,MAAa,kCAAkC,mBAAmB,SAAS;AAC3E,MAAa,gCAAgC,mBAAmB,SAAS;AACzE,MAAa,kBAAkB,kBAAkB;AACjD,MAAa,gCAAgC,gBAAgB,UAAU;AACvE,MAAa,2BAA2B,gBAAgB,UAAU;AAClE,MAAa,mCAAmC,gBAAgB,UAAU;AAC1E,MAAa,yCAAyC,gBAAgB,UAAU;AAChF,MAAa,+BAA+B,gBAAgB,SAAS;AACrE,MAAa,6BAA6B,gBAAgB,SAAS;AACnE,MAAa,4BAA4B,iBAAiB,gBAAgB;AAC1E,MAAa,+BAA+B,iBAAiB,mBAAmB;;;;AC3ChF,MAAM,oBAAoB,uBAAuB,iBAAiB;AAClE,MAAM,gBAAgB,kBAAkB,UAAU;AAClD,MAAM,sBAAsB;CAC1B,cAAc;CACd,cAAc;AACf;AACD,MAAM,oBAAoB,uBAAuB,iBAAiB;AAClE,MAAM,gBAAgB,kBAAkB,UAAU;AAClD,MAAM,iBAAiB,uBAAuB,cAAc;AAC5D,MAAM,aAAa,eAAe,UAAU;AAE5C,MAAa,gCAAgC;EAC1C,mBAAmB;GACjB,cAAc,aAAa,aAAa,GAAG;GAC3C,cAAc,aAAa,aAAa,GAAG;GAC3C,oBAAoB,aAAa,aAAa,GAAG;GACjD,oBAAoB,aAAa,aAAa,GAAG;CACnD;EACA,gBAAgB;GACd,WAAW,aAAa,aAAa,GAAG;GACxC,WAAW,aAAa,aAAa,GAAG;CAC1C;EACA,mBAAmB;GACjB,cAAc,aAAa,aAAa,GAAG;GAC3C,cAAc,aAAa,aAAa,GAAG;CAC7C;AACF;AAED,MAAa,yCAAyC;EACnD,mBAAmB;GACjB,cAAc,aAAa,aAAa,GAAG,MAAM;GACjD,cAAc,aAAa,aAAa,GAAG,MAAM;GACjD,oBAAoB,aAAa,aAAa,GAAG,MAAM;GACvD,oBAAoB,aAAa,aAAa,GAAG,MAAM;CACzD;EACA,gBAAgB;GACd,WAAW,aAAa,aAAa,GAAG,MAAM;GAC9C,WAAW,aAAa,aAAa,GAAG,MAAM;CAChD;EACA,mBAAmB;GACjB,cAAc,aAAa,aAAa,GAAG,MAAM;GACjD,cAAc,aAAa,aAAa,GAAG,MAAM;CACnD;AACF;AAED,SAAgB,wBAAwB,EAAE,SAAS,cAAc,kBAAkB,cAAc,EAAE;CACjG,MAAM,oBAAoB,aAAa,aAAa;CACpD,MAAM,WAAW,uCAAuC,WAAW;AACnE,KAAI,oBACF,QAAO,SAAS;EACd;EACA,cAAc;EACd;EACA;CACD,EAAC;CAGJ,MAAM,aAAa,8BAA8B,WAAW;AAC5D,KAAI,sBACF,QAAO;AAGT,KAAI,2BAA8B,iBAAiB,KACjD,QAAO;AAGT,QAAO;AACR;;;;ACvED,MAAMC,oBAAkB,uBAAuB,cAAc;AAC7D,MAAMC,8BAA4B,iBAAiBD,kBAAgB;AACnE,MAAME,6BAA2BF,kBAAgB,UAAU;AAC3D,MAAMG,qCAAmCH,kBAAgB,UAAU;AACnE,MAAMI,iCAA+BJ,kBAAgB,SAAS;AAE9D,MAAaK,6BAAqD;CAChE,YAAY;CACZ,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,kBAAkB;CAClB,6CAA6C;CAC7C,wBAAwB;CACxB,SAAS;CACT,qBAAqB;CACrB,kBAAkBH,2BAAyB;CAC3C,WAAW;EACT,4BAA4BE,+BAA6B;EACzD,6BAA6BA,+BAA6B;EAC1D,wCAAwCD,mCAAiC;EACzE,WAAWD,2BAAyB;EACpC,iBAAiBD,4BAA0B;CAC5C;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBG,+BAA6B;EAC7C,eAAe;CAChB,CACF,EACF;CACD,YAAY;EACV,mBAAmB;EACnB,eAAe;CAChB;CACD,QAAQ,EACN,mBAAmB,KACpB;AACF;;;;ACvCD,MAAME,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAM,0BAA0B,iBAAiBA,qBAAmB;AACpE,MAAMC,gCAA8BD,qBAAmB,UAAU;AACjE,MAAME,wCAAsCF,qBAAmB,UAAU;AACzE,MAAMG,oCAAkCH,qBAAmB,SAAS;AACpE,MAAMI,2CAAyC;CAC7C,cAAc;CACd,oBAAoB;CACpB,oBAAoB;AACrB;AAED,MAAaC,gCAAwD;CACnE,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,kBAAkB;CAClB,6CAA6C;CAC7C,wBAAwB;CACxB,qBAAqB;CACrB,SAAS;CACT,kBAAkBJ,8BAA4B;CAC9C,WAAW;EACT,4BAA4BE,kCAAgC;EAC5D,6BAA6BA,kCAAgC;EAC7D,wCAAwCD,sCAAoC;EAC5E,WAAWD,8BAA4B;EACvC,iBAAiB,wBAAwB;CAC1C;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBE,kCAAgC;EAChD,eAAe;CAChB,CACF,EACF;CACD,YAAY;EACV,mBAAmB;EACnB,eAAe;CAChB;CACD,QAAQ,EACN,mBAAmB,KACpB;AACF;AAED,MAAaG,kCAA0D;CACrE,GAAG;CACH,aAAa;CACb,uBAAuB;CACvB,qBAAqB;CACrB,kBAAkB;CAClB,WAAW;EACT,GAAG,8BAA8B;EACjC,4BAA4BF,yCAAuC;EACnE,4BAA4BA,yCAAuC;EACnE,6BAA6BA,yCAAuC;EACpE,wCAAwC;EACxC,WAAW;CACZ;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBA,yCAAuC;EACvD,eAAe;CAChB,CACF,EACF;AACF;;;;ACrED,MAAMG,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAMC,iCAA+B,iBAAiBD,qBAAmB;AACzE,MAAME,gCAA8BF,qBAAmB,UAAU;AACjE,MAAMG,wCAAsCH,qBAAmB,UAAU;AACzE,MAAMI,oCAAkCJ,qBAAmB,SAAS;AAEpE,MAAaK,+BAAuD;CAClE,YAAY;CACZ,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,6CAA6C;CAC7C,wBAAwB;CACxB,SAAS;CACT,kBAAkBH,8BAA4B;CAC9C,WAAW;EACT,4BAA4BE,kCAAgC;EAC5D,6BAA6BA,kCAAgC;EAC7D,wCAAwCD,sCAAoC;EAC5E,WAAWD,8BAA4B;EACvC,iBAAiBD,+BAA6B;CAC/C;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBG,kCAAgC;EAChD,eAAe;CAChB,CACF,EACF;CACD,YAAY,EACV,eAAe,GAChB;AACF;;;;ACjCD,MAAME,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAMC,iCAA+B,iBAAiBD,qBAAmB;AACzE,MAAME,gCAA8BF,qBAAmB,UAAU;AACjE,MAAMG,wCAAsCH,qBAAmB,UAAU;AACzE,MAAMI,oCAAkCJ,qBAAmB,SAAS;AAEpE,MAAaK,gCAAwD;CACnE,YAAY;CACZ,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,6CAA6C;CAC7C,wBAAwB;CACxB,SAAS;CACT,kBAAkBH,8BAA4B;CAC9C,WAAW;EACT,4BAA4BE,kCAAgC;EAC5D,6BAA6BA,kCAAgC;EAC7D,wCAAwCD,sCAAoC;EAC5E,WAAWD,8BAA4B;EACvC,iBAAiBD,+BAA6B;CAC/C;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBG,kCAAgC;EAChD,eAAe;CAChB,CACF,EACF;CACD,YAAY,EACV,eAAe,GAChB;AACF;;;;ACjCD,MAAME,oBAAkB,uBAAuB,cAAc;AAC7D,MAAMC,6BAA2BD,kBAAgB,UAAU;AAC3D,MAAME,qCAAmCF,kBAAgB,UAAU;AACnE,MAAMG,iCAA+BH,kBAAgB,SAAS;AAE9D,MAAaI,6BAAqD;CAChE,YAAY;CACZ,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,kBAAkB;CAClB,6CAA6C;CAC7C,wBAAwB;CACxB,SAAS;CACT,qBAAqB;CACrB,kBAAkBH,2BAAyB;CAC3C,WAAW;EACT,4BAA4BE,+BAA6B;EACzD,6BAA6BA,+BAA6B;EAC1D,wCAAwCD,mCAAiC;EACzE,WAAWD,2BAAyB;EACpC,iBAAiB;CAClB;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBE,+BAA6B;EAC7C,eAAe;CAChB,CACF,EACF;CACD,YAAY,EACV,eAAe,EAChB;CACD,QAAQ,EACN,mBAAmB,KACpB;AACF;;;;ACrCD,MAAME,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAM,8BAA8BA,qBAAmB,UAAU;AACjE,MAAM,sCAAsCA,qBAAmB,UAAU;AACzE,MAAM,kCAAkCA,qBAAmB,SAAS;AACpE,MAAM,yCAAyC;CAC7C,cAAc;CACd,oBAAoB;CACpB,oBAAoB;AACrB;AAED,MAAaC,gCAAwD;CACnE,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,kBAAkB;CAClB,6CAA6C;CAC7C,wBAAwB;CACxB,qBAAqB;CACrB,SAAS;CACT,kBAAkB,4BAA4B;CAC9C,WAAW;EACT,4BAA4B,gCAAgC;EAC5D,6BAA6B,gCAAgC;EAC7D,wCAAwC,oCAAoC;EAC5E,WAAW,4BAA4B;EACvC,iBAAiB;CAClB;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgB,gCAAgC;EAChD,eAAe;CAChB,CACF,EACF;CACD,YAAY;EACV,mBAAmB;EACnB,eAAe;CAChB;CACD,QAAQ,EACN,mBAAmB,KACpB;AACF;AAED,MAAaC,kCAA0D;CACrE,GAAG;CACH,aAAa;CACb,uBAAuB;CACvB,qBAAqB;CACrB,kBAAkB;CAClB,WAAW;EACT,GAAG,8BAA8B;EACjC,4BAA4B,uCAAuC;EACnE,4BAA4B,uCAAuC;EACnE,6BAA6B,uCAAuC;EACpE,wCAAwC;EACxC,WAAW;CACZ;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgB,uCAAuC;EACvD,eAAe;CAChB,CACF,EACF;AACF;;;;ACpED,MAAMC,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAMC,gCAA8BD,qBAAmB,UAAU;AACjE,MAAME,wCAAsCF,qBAAmB,UAAU;AACzE,MAAMG,oCAAkCH,qBAAmB,SAAS;AAEpE,MAAaI,+BAAuD;CAClE,YAAY;CACZ,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,6CAA6C;CAC7C,wBAAwB;CACxB,SAAS;CACT,kBAAkBH,8BAA4B;CAC9C,WAAW;EACT,4BAA4BE,kCAAgC;EAC5D,6BAA6BA,kCAAgC;EAC7D,wCAAwCD,sCAAoC;EAC5E,WAAWD,8BAA4B;EACvC,iBAAiB;CAClB;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBE,kCAAgC;EAChD,eAAe;CAChB,CACF,EACF;CACD,YAAY,EACV,eAAe,GAChB;AACF;;;;AChCD,MAAME,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAMC,gCAA8BD,qBAAmB,UAAU;AACjE,MAAME,wCAAsCF,qBAAmB,UAAU;AACzE,MAAMG,oCAAkCH,qBAAmB,SAAS;AAEpE,MAAaI,gCAAwD;CACnE,YAAY;CACZ,iBAAiB;CACjB,uBAAuB;CACvB,sBAAsB;CACtB,6CAA6C;CAC7C,wBAAwB;CACxB,SAAS;CACT,kBAAkBH,8BAA4B;CAC9C,WAAW;EACT,4BAA4BE,kCAAgC;EAC5D,6BAA6BA,kCAAgC;EAC7D,wCAAwCD,sCAAoC;EAC5E,WAAWD,8BAA4B;EACvC,iBAAiB;CAClB;CACD,kBAAkB,EAChB,uBAAuB,CACrB;EACE,gBAAgBE,kCAAgC;EAChD,eAAe;CAChB,CACF,EACF;CACD,YAAY,EACV,eAAe,GAChB;AACF;;;;ACjBD,MAAME,yBAAmD;CACvD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AAMD,SAAgB,2BACdC,cACAC,SACAC,SACoC;CACpC,MAAM,aAAa,aAAa,aAAa;CAC7C,MAAM,kBAAkB,uBAAuB,OAC7C,CAAC,MAAM,EAAE,kBAAkB,aAAa,KAAK,cAAc,EAAE,YAAY,QAC1E;AACD,KAAI,gBAAgB,WAAW,EAC7B;CAGF,MAAM,sBAAsB,SAAS;AACrC,KAAI,gCAAmC;EACrC,MAAM,kBAAkB,gBAAgB,KAAK,CAAC,MAAM,EAAE,eAAe,oBAAoB;AACzF,MAAI,2BACF,QAAO;CAEV;CAED,MAAMC,iBAAuE;EAC3E,MAAM;EACN,KAAK;CACN;AACD,QAAO,CAAC,GAAG,eAAgB,EAAC,KAC1B,CAAC,GAAG,MAAM,eAAe,EAAE,cAAc,eAAe,EAAE,YAC3D,CAAC;AACH;;;;ACvDD,MAAMC,uBAAqB,uBAAuB,iBAAiB;AACnE,MAAMC,oBAAkB,uBAAuB,cAAc;AAC7D,MAAMC,uBAAqB,uBAAuB,iBAAiB;AAEnE,MAAa,sBAAsB;AACnC,MAAa,kCAAkC;AAC/C,MAAa,uBAAuB;AAEpC,MAAa,6BAA6B,CACxC;CACE,mBAAmB;CACnB,MAAMF,qBAAmB,SAAS,KAAK;CACvC,QAAQ,iBAAiBA,qBAAmB,CAAC;CAC7C,QAAQ,iBAAiBA,qBAAmB,CAAC;AAC9C,CACF;AAED,MAAa,0BAA0BA,qBAAmB,UAAU;AAEpE,MAAa,0BAA0B,CACrC;CACE,mBAAmB;CACnB,MAAMC,kBAAgB,SAAS,KAAK;CACpC,QAAQ,iBAAiBA,kBAAgB,CAAC;CAC1C,QAAQ,iBAAiBA,kBAAgB,CAAC;AAC3C,CACF;AAED,MAAa,uBAAuBA,kBAAgB,UAAU;AAE9D,MAAa,6BAA6B,CACxC;CACE,mBAAmB;CACnB,MAAMC,qBAAmB,SAAS,KAAK;CACvC,QAAQ,iBAAiBA,qBAAmB,CAAC;CAC7C,QAAQ,iBAAiBA,qBAAmB,CAAC;AAC9C,CACF;AAED,MAAa,8BAA8B,CACzC,GAAG,4BACH;CACE,mBAAmB;CACnB,MAAM;CACN,QAAQ;CACR,QAAQ;AACT,CACF;AAED,MAAa,oCAAoC,CAC/C;CACE,mBAAmB;CACnB,MAAM;CACN,QAAQ,iBAAiBA,qBAAmB,CAAC;CAC7C,QAAQ,iBAAiBA,qBAAmB,CAAC;AAC9C,CACF;AAED,MAAa,0BAA0BA,qBAAmB,UAAU;AACpE,MAAa,iCAAiC;CAC5C,cAAc;CACd,cAAc;AACf;;;;AChED,MAAa,4BAA4B;CACvC,cAAc,qBAAqB;CACnC,WAAW,wBAAwB,IAAI,CAAC,cAAc;EACpD,GAAG;EACH,aAAa;CACd,GAAE;AACJ;;;;ACND,MAAa,4BAA4B;CACvC,cAAc,qBAAqB;CACnC,WAAW,wBAAwB,IAAI,CAAC,cAAc;EACpD,GAAG;EACH,aAAa;CACd,GAAE;AACJ;;;;ACJD,MAAa,+BAA+B;CAC1C,cAAc,wBAAwB;CACtC,WAAW,4BAA4B,IAAI,CAAC,cAAc;EACxD,GAAG;EACH,aAAa;CACd,GAAE;AACJ;AAED,MAAa,qCAAqC;CAChD,cAAc,+BAA+B;CAC7C,WAAW,kCAAkC,IAAI,CAAC,cAAc;EAC9D,GAAG;EACH,aAAa;CACd,GAAE;AACJ;;;;ACdD,MAAa,+BAA+B;CAC1C,cAAc,wBAAwB;CACtC,WAAW,2BAA2B,IAAI,CAAC,cAAc;EACvD,GAAG;EACH,aAAa;CACd,GAAE;AACJ;AAED,MAAa,qCAAqC;CAChD,cAAc,+BAA+B;CAC7C,WAAW,kCAAkC,IAAI,CAAC,cAAc;EAC9D,GAAG;EACH,aAAa;CACd,GAAE;AACJ;;;;AChBD,MAAa,+BAA+B;CAC1C,cAAc,wBAAwB;CACtC,WAAW,2BAA2B,IAAI,CAAC,cAAc;EACvD,GAAG;EACH,aAAa;CACd,GAAE;AACJ;;;;ACND,MAAa,+BAA+B;CAC1C,cAAc,wBAAwB;CACtC,WAAW,2BAA2B,IAAI,CAAC,cAAc;EACvD,GAAG;EACH,aAAa;CACd,GAAE;AACJ;;;;ACUD,MAAM,sBAAsB;AAC5B,MAAM,2BAA2B;AAEjC,SAAgB,4BAA4B,EAC1C,OACA,iBACA,aAKD,EAAW;CACV,MAAM,aAAa,MAAM,aAAa;CACtC,MAAM,kBAAkB,gBAAgB,aAAa;AACrD,KAAI,eAAe,gBACjB,QAAO;AAGT,KAAI,uBACF,QAAO;CAGT,MAAM,YAAY,YAAY,aAAa;CAC3C,MAAM,qBACJ,eAAe,uBAAuB,eAAe;AACvD,QAAO,sBAAsB,oBAAoB;AAClD;;;;;;;;;;;;;;;AAgBD,eAAsB,kBAAkB,EACtC,YACA,WACA,UACA,iBACA,aACA,gBAAgB,CAAE,GACM,EAAgB;AACxC,KAAI,SAAS,WAAW,UAAU,OAChC,OAAM,IAAI,OACP,iDAAiD,UAAU,OAAO,aAAa,SAAS,OAAO;CAKpG,MAAM,YAAY,MAAM,QAAQ,IAC9B,UAAU,IAAI,CAAC,aACb,aAAa,YAAY;EACvB,SAAS,SAAS;EAClB,KAAK,SAAS,CAAC,yCAA0C,EAAC;EAC1D,cAAc;CACf,EAAC,CACH,CACF;CAOD,MAAM,gBAAgB,UAAU,IAAI,CAAC,UAAU,MAAM;EACnD,MAAM,WAAW,OAAO,UAAU,GAAG;EACrC,MAAM,qBAAqB,4BAA4B;GACrD,OAAO,SAAS;GAChB;GACA;EACD,EAAC;EACF,MAAM,qBAAqB,4BAA4B;GACrD,OAAO,SAAS;GAChB;GACA;EACD,EAAC;AAEF,SAAO;GACL,WAAW;GACX,aAAa,qBAAqB,IAAI;GACtC,aAAa,qBAAqB,IAAI;EACvC;CACF,EAAC;AACF,KAAI,cAAc,WAAW,UAAU,OACrC,OAAM,IAAI,OACP,sDAAsD,UAAU,OAAO,aAAa,cAAc,OAAO;AAK9G,QAAO,oBAAoB,wCAAwC;EACjE;EACA,UAAU,IAAI,CAAC,cAAc;GAC3B,MAAM,SAAS;GACf,QAAQ,SAAS;GACjB,QAAQ,SAAS;GACjB,mBAAmB,SAAS;EAC7B,GAAE;EACH;EACA;CACD,EAAC;AACH;;;;;;;AC/GD,eAAsB,yBAAyB,EAC7C,YACA,WACA,UACA,iBACA,aACA,aACA,gBAAgB,CAAE,GACa,EAAgB;AAC/C,KAAI,SAAS,WAAW,UAAU,OAChC,OAAM,IAAI,OACP,iDAAiD,UAAU,OAAO,aAAa,SAAS,OAAO;CAIpG,MAAM,YAAY,MAAM,QAAQ,IAC9B,UAAU,IAAI,CAAC,aACb,aAAa,YAAY;EACvB,SAAS,SAAS;EAClB,KAAK,SAAS,CAAC,yCAA0C,EAAC;EAC1D,cAAc;EACd;CACD,EAAC,CACH,CACF;CAED,MAAM,gBAAgB,UAAU,IAAI,CAAC,UAAU,MAAM;EACnD,MAAM,WAAW,OAAO,UAAU,GAAG;EACrC,MAAM,qBAAqB,4BAA4B;GACrD,OAAO,SAAS;GAChB;GACA;EACD,EAAC;EACF,MAAM,qBAAqB,4BAA4B;GACrD,OAAO,SAAS;GAChB;GACA;EACD,EAAC;AAEF,SAAO;GACL,WAAW;GACX,aAAa,qBAAqB,IAAI;GACtC,aAAa,qBAAqB,IAAI;EACvC;CACF,EAAC;AACF,KAAI,cAAc,WAAW,UAAU,OACrC,OAAM,IAAI,OACP,sDAAsD,UAAU,OAAO,aAAa,cAAc,OAAO;AAI9G,QAAO,oBAAoB,wCAAwC;EACjE;EACA,UAAU,IAAI,CAAC,cAAc;GAC3B,MAAM,SAAS;GACf,QAAQ,SAAS;GACjB,QAAQ,SAAS;GACjB,mBAAmB,SAAS;EAC7B,GAAE;EACH;EACA;CACD,EAAC;AACH;;;;ACzDD,MAAM,wBAAwB;AAC9B,MAAM,YAAY;AASlB,MAAMC,4BAA8E;EACjF,mBAAmB;EAClB;EACA;EACA;EACA;CACD;EACA,mBAAmB,CAAC,8BAA8B,4BAA6B;EAC/E,gBAAgB,CAAC,2BAA2B,yBAA0B;AACxE;AAED,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;AAwB7C,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+ErC,SAASC,iBAAeC,SAAyB;AAC/C,QAAO,QAAQ,aAAa;AAC7B;AAED,SAAS,aAAaC,OAAiD;AACrE,KAAI,oBAAuB,UAAU,QAAQ,MAAM,WAAW,EAC5D,QAAO;AAGT,KAAI;AACF,SAAO,OAAO,MAAM;CACrB,QAAO;AACN,SAAO;CACR;AACF;AAED,SAAS,uBACPC,kBACAC,aACa;CACb,MAAM,mBAAmB,iBAAe,YAAY;CACpD,MAAM,WAAW,iBAAiB,IAAI,iBAAiB;AACvD,KAAI,oBACF,QAAO;CAET,MAAM,UAAU,IAAI;AACpB,kBAAiB,IAAI,kBAAkB,QAAQ;AAC/C,QAAO;AACR;AAED,eAAe,YAAe,EAC5B,UACA,OACA,WACA,SAMD,EAAc;CACb,MAAM,WAAW,MAAM,QAAQ,UAAU;EACvC,QAAQ;EACR,SAAS,EAAE,gBAAgB,mBAAoB;EAC/C,MAAM,KAAK,UAAU;GACnB;GACA;EACD,EAAC;CACH,EAAC;AAEF,MAAK,SAAS,GACZ,OAAM,IAAI,OAAO,0BAA0B,SAAS,OAAO;CAG7D,MAAM,OAAQ,MAAM,SAAS,MAAM;AACnC,MAAK,KAAK,QAAQ,UAAU,KAAK,EAC/B,OAAM,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW;AAE/C,KAAI,KAAK,gBACP,OAAM,IAAI,MAAM;AAGlB,QAAO,KAAK;AACb;AAED,eAAe,oCAAoC,EACjD,UACA,SACA,cACA,kBACA,SAOD,EAAiB;AAChB,MAAK,IAAI,OAAO,IAAK,QAAQ,WAAW;EACtC,MAAM,OAAO,MAAM,YAAkD;GACnE;GACA,OAAO;GACP,WAAW;IACT,OAAO;IACP;IACA;IACA,OAAO;GACR;GACD;EACD,EAAC;AAEF,OAAK,MAAM,WAAW,KAAK,sBAAsB;GAC/C,MAAM,UAAU,uBAAuB,kBAAkB,QAAQ,aAAa,GAAG;AACjF,QAAK,MAAM,WAAW,QAAQ,iBAAiB;IAC7C,MAAM,UAAU,aAAa,QAAQ,SAAS,GAAG;AACjD,QAAI,YAAY,KACd,SAAQ,IAAI,QAAQ;GAEvB;EACF;AAED,MAAI,KAAK,qBAAqB,SAAS,UACrC;CAEH;AACF;AAED,eAAe,6BAA6B,EAC1C,UACA,SACA,oBACA,kBACA,SAOD,EAAiB;AAChB,MAAK,IAAI,OAAO,IAAK,QAAQ,WAAW;EACtC,MAAM,OAAO,MAAM,YAA2C;GAC5D;GACA,OAAO;GACP,WAAW;IACT,OAAO;IACP;IACA;IACA,YAAY;GACb;GACD;EACD,EAAC;EAEF,MAAM,SAAS,CAAC,GAAG,KAAK,aAAa,GAAG,KAAK,WAAY;AACzD,OAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,UAAU,uBAAuB,kBAAkB,MAAM,aAAa,GAAG;GAC/E,MAAM,gBAAgB,aAAa,MAAM,QAAQ,YAAY;AAC7D,OAAI,kBAAkB,KACpB,SAAQ,IAAI,cAAc;GAE5B,MAAM,eAAe,aAAa,MAAM,QAAQ,GAAG;AACnD,OAAI,iBAAiB,KACnB,SAAQ,IAAI,aAAa;EAE5B;AAED,MAAI,KAAK,YAAY,SAAS,aAAa,KAAK,YAAY,SAAS,UACnE;CAEH;AACF;AAED,SAAS,qBAAqBC,QAAoC;AAChE,QAAO,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,UAAU;AAC9C,MAAI,OAAO,MACT,QAAO;AAET,MAAI,OAAO,MACT,QAAO;AAET,SAAO;CACR,EAAC;AACH;AAED,SAAS,qCAAqCC,OAA+B;AAC3E,YAAW,UAAU,SACnB,QAAO;AAET,QAAO,SAAU,MAAM,QAAQ;AAChC;AAQD,MAAM,wBAAwB;AAE9B,eAAe,qBAAqB,EAClC,YACA,aACA,SACA,YACA,aAOD,EAAsC;CACrC,IAAIC;AACJ,KAAI;AACF,WAAS,MAAM,aAAa,YAAY;GACtC,SAAS;GACT,KAAKC;GACL,cAAc;GACd,MAAM;IAAC;IAAS;IAAO;GAAW;GAClC;EACD,EAAC;CACH,SAAQ,OAAO;AAKd,MAAI,iBAAiB,+BACnB,QAAO;AAET,QAAM;CACP;CACD,MAAM,wBAAwB,MAAM,QAAQ,OAAO,GAAG,OAAO;AAC7D,MAAK,MAAM,QAAQ,sBAAsB,CACvC,QAAO;AAET,QAAO;AACR;AAED,eAAe,0BAA0B,EACvC,YACA,aACA,SACA,YACA,aAOD,EAAqB;AACpB,KAAI,WAAW,WAAW,EACxB,QAAO,CAAE;CAGX,MAAM,cAAc,OAAOC,UAAgD;AACzE,MAAI,MAAM,WAAW,EACnB,QAAO,CAAE;EAGX,MAAM,WAAW,MAAM,qBAAqB;GAC1C;GACA;GACA;GACA,YAAY;GACZ;EACD,EAAC;AAEF,MAAI,aAAa,MAAM;GACrB,MAAMC,OAAiB,CAAE;AACzB,QAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;IACpD,MAAM,UAAU,MAAM;IACtB,MAAM,eAAe,qCAAqC,SAAS,OAAO;AAC1E,QAAI,sBAAyB,iBAAiB,QAAQ,eAAe,GACnE,MAAK,KAAK,QAAQ;GAErB;AACD,UAAO;EACR;AAED,MAAI,MAAM,UAAU,sBAElB,QAAO,CAAE;EAGX,MAAM,MAAM,MAAM,UAAU;EAC5B,MAAM,CAAC,UAAU,UAAU,GAAG,MAAM,QAAQ,IAAI,CAC9C,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,EAChC,YAAY,MAAM,MAAM,IAAI,CAAC,AAC9B,EAAC;AACF,SAAO,CAAC,GAAG,UAAU,GAAG,SAAU;CACnC;CAED,MAAM,eAAe,MAAM,YAAY,WAAW;AAClD,QAAO,qBAAqB,aAAa;AAC1C;AAED,SAAgB,kBAAkBC,cAAuBC,SAAuC;CAC9F,MAAM,oBAAoB,iBAAe,aAAa;CACtD,MAAM,YACJ,qBACI,OAAO,OAAO,0BAA0B,CAAC,MAAM,GAC9C,0BAA0B,YAAY,CAAE;CAC/C,MAAM,WAAW,UAAU,KACzB,CAAC,cAAc,iBAAe,UAAU,aAAa,KAAK,kBAC3D;AACD,QAAO,UAAU,aAAa,CAAE;AACjC;;;;;;;;;AAmBD,eAAsB,uCAAuC,EAC3D,SACA,cACA,gBACA,WACA,qBACA,UAAU,OAQX,EAAyC;CACxC,MAAM,oBAAoB,aAAa,kBAAkB,cAAc,QAAQ;AAC/E,KAAI,kBAAkB,WAAW,EAC/B,QAAO,CAAE;CAGX,MAAM,qBACJ,uBAAuB,uBAAuB,QAAQ,CAAC,UAAU;AACnE,KAAI,8BACF,QAAO,kBAAkB,IAAI,CAAC,cAAc;EAAE,aAAa,SAAS;EAAM,YAAY,CAAE;CAAE,GAAE;CAG9F,MAAM,oBAAoB,iBAAe,aAAa;CACtD,MAAM,qBAAqB,MAAM,KAC/B,IAAI,IACF,CAAC,mBAAmB,gBAAgB,aAAa,AAAC,EAC/C,OAAO,CAAC,UAA2B,oBAAuB,MAAM,SAAS,EAAE,CAC3E,IAAI,CAAC,UAAU,MAAM,aAAa,CAAC,EAEzC;CACD,MAAM,UAAU,MAAM,KACpB,IAAI,IAAI,kBAAkB,IAAI,CAAC,aAAa,iBAAe,SAAS,KAAK,CAAC,EAC3E;CAED,MAAMC,0BAAmD,IAAI;CAC7D,MAAMC,wBAAiD,IAAI;AAE3D,OAAM,oCAAoC;EACxC,UAAU;EACV;EACA,cAAc;EACd,kBAAkB;EAClB;CACD,EAAC;AAEF,OAAM,6BAA6B;EACjC,UAAU;EACV;EACA;EACA,kBAAkB;EAClB;CACD,EAAC;AAEF,QAAO,kBAAkB,IAAI,CAAC,aAAa;EACzC,MAAM,mBAAmB,iBAAe,SAAS,KAAK;EACtD,MAAM,eAAe,wBAAwB,IAAI,iBAAiB,IAAI,IAAI;EAC1E,MAAM,kBAAkB,sBAAsB,IAAI,iBAAiB,IAAI,IAAI;EAC3E,MAAM,aAAa,qBAAqB,IAAI,IAAY,CAAC,GAAG,cAAc,GAAG,eAAgB,GAAE;AAC/F,SAAO;GAAE,aAAa,SAAS;GAAM;EAAY;CAClD,EAAC;AACH;;;;;;AAOD,eAAsB,+BAA+B,EACnD,YACA,cACA,kBACA,aAMD,EAAuB;CACtB,MAAMC,iBAA6B,CAAE;AACrC,MAAK,MAAM,EAAE,aAAa,YAAY,IAAI,kBAAkB;EAC1D,MAAM,eAAe,MAAM,0BAA0B;GACnD;GACA;GACA,SAAS;GACT;GACA;EACD,EAAC;AACF,iBAAe,KAAK,aAAa;CAClC;AACD,QAAO;AACR;AAED,eAAsB,2BAA2B,EAC/C,YACA,SACA,cACA,gBACA,WACA,qBACA,yBACA,UAAU,OAUX,EAAuB;CACtB,MAAM,oBAAoB,aAAa,kBAAkB,cAAc,QAAQ;AAC/E,KAAI,kBAAkB,WAAW,EAC/B,QAAO,CAAE;CAGX,MAAM,qBACJ,uBAAuB,uBAAuB,QAAQ,CAAC,UAAU;AACnE,KAAI,8BACF,QAAO,kBAAkB,IAAI,MAAM,CAAE,EAAC;CAGxC,MAAM,oBAAoB,iBAAe,aAAa;CACtD,MAAM,qBAAqB,MAAM,KAC/B,IAAI,IACF,CAAC,mBAAmB,gBAAgB,aAAa,AAAC,EAC/C,OAAO,CAAC,UAA2B,oBAAuB,MAAM,SAAS,EAAE,CAC3E,IAAI,CAAC,UAAU,MAAM,aAAa,CAAC,EAEzC;CACD,MAAM,UAAU,MAAM,KACpB,IAAI,IAAI,kBAAkB,IAAI,CAAC,aAAa,iBAAe,SAAS,KAAK,CAAC,EAC3E;CAED,MAAMF,0BAAmD,IAAI;CAC7D,MAAMC,wBAAiD,IAAI;AAE3D,OAAM,oCAAoC;EACxC,UAAU;EACV;EACA,cAAc;EACd,kBAAkB;EAClB;CACD,EAAC;AAEF,OAAM,6BAA6B;EACjC,UAAU;EACV;EACA;EACA,kBAAkB;EAClB;CACD,EAAC;CAEF,MAAMC,iBAA6B,CAAE;AACrC,MAAK,MAAM,YAAY,mBAAmB;EACxC,MAAM,mBAAmB,iBAAe,SAAS,KAAK;EACtD,MAAM,eAAe,qBAAqB,wBAAwB,IAAI,iBAAiB,IAAI,CAAE,EAAC;AAE9F,MAAI,oCAAuC;GACzC,MAAMC,oBAAkB,qBACtB,sBAAsB,IAAI,iBAAiB,IAAI,CAAE,EAClD;GACD,MAAM,uBAAuB,qBAC3B,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,cAAc,GAAGA,iBAAgB,GAAE,CAC3D;GACD,MAAM,yBAAyB,MAAM,0BAA0B;IAC7D;IACA,aAAa,SAAS;IACtB,SAAS;IACT,YAAY;IACZ,aAAa;GACd,EAAC;AACF,kBAAe,KAAK,uBAAuB;AAC3C;EACD;AAED,MAAI,aAAa,SAAS,GAAG;AAC3B,kBAAe,KAAK,aAAa;AACjC;EACD;EAED,MAAM,kBAAkB,qBAAqB,sBAAsB,IAAI,iBAAiB,IAAI,CAAE,EAAC;AAC/F,MAAI,gBAAgB,WAAW,GAAG;AAChC,kBAAe,KAAK,CAAE,EAAC;AACvB;EACD;AAED,MAAI;GACF,MAAM,SAAS,MAAM,aAAa,YAAY;IAC5C,SAAS,SAAS;IAClB,KAAKR;IACL,cAAc;IACd,MAAM;KAAC;KAAc;KAAO;IAAgB;IAC5C,GAAI,qCAAwC,CAAE,IAAG,EAAE,aAAa,wBAAyB;GAC1F,EAAC;GAEF,MAAM,wBAAwB,MAAM,QAAQ,OAAO,GAAG,OAAO;AAC7D,QAAK,MAAM,QAAQ,sBAAsB,EAAE;AACzC,mBAAe,KAAK,CAAE,EAAC;AACvB;GACD;GAED,MAAMS,eAAyB,CAAE;AACjC,QAAK,IAAI,QAAQ,GAAG,QAAQ,gBAAgB,QAAQ,SAAS,GAAG;IAC9D,MAAM,UAAU,gBAAgB;IAChC,MAAM,gBAAgB,sBAAsB;AAC5C,QAAI,6BAAgC,kBAAkB,SACpD;IAEF,MAAM,eAAe,iBAAkB,MAAM,QAAQ;AACrD,QAAI,eAAe,GACjB,cAAa,KAAK,QAAQ;GAE7B;AACD,kBAAe,KAAK,qBAAqB,aAAa,CAAC;EACxD,QAAO;AAEN,kBAAe,KAAK,CAAE,EAAC;EACxB;CACF;AAED,QAAO;AACR;AAED,eAAsB,uBAAuB,EAC3C,YACA,SACA,cACA,iBACA,gBACA,qBACA,SASD,EAA0B;CACzB,MAAM,YAAY,kBAAkB,cAAc,QAAQ;AAC1D,KAAI,UAAU,WAAW,EACvB,QAAO;CAGT,MAAM,WAAW,MAAM,2BAA2B;EAChD;EACA;EACA;EACA;EACA;EACA;EACA;CACD,EAAC;AAEF,QAAO,kBAAkB;EACvB;EACA;EACA;EACA;CACD,EAAC;AACH;AAED,eAAsB,8BAA8B,EAClD,YACA,SACA,cACA,iBACA,aACA,gBACA,qBACA,SAUD,EAA0B;CACzB,MAAM,YAAY,kBAAkB,cAAc,QAAQ;AAC1D,KAAI,UAAU,WAAW,EACvB,QAAO;CAGT,MAAM,WAAW,MAAM,2BAA2B;EAChD;EACA;EACA;EACA;EACA;EACA;EACA,yBAAyB;EACzB;CACD,EAAC;AAEF,QAAO,yBAAyB;EAC9B;EACA;EACA;EACA;EACA;CACD,EAAC;AACH;;;;ACrvBD,MAAM,oBAAoB,CACxB;CACE,MAAM;CACN,MAAM;CACN,QAAQ,CAAC;EAAE,MAAM;EAAW,MAAM;CAAW,CAAC;CAC9C,SAAS,CAAC;EAAE,MAAM;EAAW,MAAM;CAAW,CAAC;CAC/C,iBAAiB;AAClB,CACF;AAmBD,SAAS,eAAeC,SAAyB;AAC/C,QAAO,QAAQ,aAAa;AAC7B;AAED,SAAS,sBAAsB,EAC7B,SACA,cAID,EAAa;CACZ,MAAMC,sBAAiC,CAAE;CACzC,MAAM,OAAO,IAAI;CAEjB,MAAM,SAAS,2BAA2B,cAAc,QAAQ;CAChE,MAAM,iBAAiB,QAAQ,WAAW;AAC1C,KAAI,2BAA8B;EAChC,MAAM,MAAM,eAAe,eAAe;AAC1C,OAAK,KAAK,IAAI,IAAI,EAAE;AAClB,QAAK,IAAI,IAAI;AACb,uBAAoB,KAAK,eAAe;EACzC;CACF;CAED,MAAM,oBAAoB,kBAAkB,cAAc,QAAQ;AAElE,MAAK,MAAM,YAAY,mBAAmB;EACxC,MAAM,MAAM,eAAe,SAAS,KAAK;AACzC,OAAK,KAAK,IAAI,IAAI,EAAE;AAClB,QAAK,IAAI,IAAI;AACb,uBAAoB,KAAK,SAAS,KAAgB;EACnD;CACF;AAED,QAAO;AACR;AAED,SAAS,mBAAmB,EAC1B,wBACA,aACA,aAKD,EAAgB;CACf,MAAM,kBAAkB,eAAe,uBAAuB;AAC9D,KAAI,eAAe,YAAY,KAAK,gBAClC,QAAO;AAET,KAAI,eAAe,YAAY,KAAK,gBAClC,QAAO;AAET,QAAO;AACR;AAED,eAAsB,yBAAyB,EAC7C,QACA,SACA,cACA,wBACA,aAOD,EAAoC;CACnC,MAAM,gBAAgB,sBAAsB;EAC1C;EACA;CACD,EAAC;CAEF,MAAM,WAAW,MAAM,QAAQ,IAC7B,cAAc,IAAI,OAAO,gBAAsD;EAC7E,MAAM,WAAW,MAAM,gBAAgB;GACrC;GACA;EACD,EAAC;EAEF,MAAM,kBAAkB,mBAAmB;GACzC;GACA,aAAa,SAAS;GACtB,aAAa,SAAS;EACvB,EAAC;AAEF,MAAI,oBAAoB,KACtB,QAAO;EAGT,MAAM,CAAC,gBAAgB,kBAAkB,GAAG,MAAM,QAAQ,IAAI,CAC5D,kBAAkB;GAChB;GACA;GACA,YAAY;GACZ;EACD,EAAC,EACF,qBAAqB;GACnB;GACA;GACA,SAAS;GACT;EACD,EAAC,AACH,EAAC;EAEF,MAAM,uBACJ,oBAAoB,IAAI,kBAAkB,OAAO,SAAS,kBAAkB,OAAO;AAErF,SAAO;GACL,SAAS,EAAE,SAAS,aAAa,GAAG,SAAS,aAAa;GAC1D,eAAe,eAAe;GAC9B,eAAe,eAAe;GAC9B,gBAAgB,eAAe;GAC/B;GACA,kBAAkB;GAClB,QAAQ;GACR;GACA,0BACE,oBAAoB,IAChB,SAAS,0BACT,SAAS;EAChB;CACF,EAAC,CACH;CAED,MAAM,kBAAkB,SAAS,OAC/B,CAAC,QAAoD,QAAQ,KAC9D;CAED,MAAM,cAAc,MAAM,OAAO,aAAa;EAC5C,SAAS;EACT,KAAK;EACL,cAAc;EACd,MAAM,CAAC,YAAa;EACpB;CACD,EAAC;CAEF,MAAMC,UAAgC;EACpC,QAAQ;EACR,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;EAClB,QAAQ;EACR,aAAa;EACb,0BAA0B;CAC3B;CAED,MAAM,gBAAgB,CAAC,GAAG,iBAAiB,OAAQ;CACnD,MAAM,kBAAkB,cAAc,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,sBAAsB,GAAG;AAE9F,KAAI,oBAAoB,GACtB,QAAO;EACL,MAAM;EACN;CACD;AAGH,QAAO;EACL,MAAM,cAAc,IAAI,CAAC,SAAS;GAChC,GAAG;GACH,kBAAmB,IAAI,uBAAuB,SAAW;EAC1D,GAAE;EACH;CACD;AACF;;;;ACpMD,MAAa,iCAAiC,CAAC,EAAE,cAAyC,MACvF;CACC,SAAS;CACT,KAAK;CACL,cAAc;CACd,MAAM,CAAE;AACT;AAEH,SAAgB,kCAAuC;AACrD,QAAO,mBAAmB;EACxB,KAAK;EACL,cAAc;EACd,MAAM,CAAE;CACT,EAAC;AACH;AAED,SAAgB,sBAAsB,EACpC,YACA,cACA,SAKD,EAAoB;AACnB,QAAO,iBAAiB,YAAY;EAClC,GAAG,+BAA+B,EAAE,aAAc,EAAC;EACnD;CACD,EAAC;AACH;AAED,SAAgB,cAAc,EAC5B,cACA,cACA,SAKD,EAAoB;AACnB,QAAO,cAAc,cAAc;EACjC,GAAG,+BAA+B,EAAE,aAAc,EAAC;EACnD;CACD,EAAC;AACH;;;;;;;;;;;;;;;;;;;;;;ACpBD,MAAa,mBAAmB,CAACC,MAAgE;AAC/F,KAAI,aAAa,WAAW;EAE1B,MAAM,cAAc,EAAE,KAAK,CAACC,QAAMA,eAAa,8BAA8B;AAC7E,MAAI,uBAAuB,8BACzB,QAAO;AAGT,SAAO;CACR;AAGD,QAAO;AACR;AAED,MAAa,uBAAuB,CAACC,iBACnC,aAAa,SAAS,6BAA6B;;;;AChCrD,MAAa,mBAAmB,CAAC,EAC/B,SACA,cACA,eAKD,KAAK;CACJ,MAAM,EAAE,SAAS,SAAS,GAAG,YAAY;CAEzC,MAAM,cAAc,iBAAiB,eAAe,WAAW,QAAQ,YAAY;CAEnF,MAAM,WAAW,oBAAoB;EACnC;EACA,GAAG,+BAA+B,EAAE,aAAc,EAAC;EACnD;EACA,OAAO;GACL,SAAS;GACT,OAAO;EACR;CACF,EAAC;CAEF,MAAM,QAAQ,kBAAkB;CAEhC,MAAM,OAAO,6BAA6B;EACxC;EACA,MAAM,MAAM;EACZ,OAAO;GACL,sBAAsB;GACtB,gBAAgB;EACjB;CACF,EAAC;CAEF,MAAM,wBAAwB,cAA4C;AAE1E,WAAU,MAAM;EACd,MAAM,cAAc,MAAM;AAC1B,OAAK,KAAK,aAAa,eAAe,KACpC;AAEF,MAAI,sBAAsB,YAAY,YACpC;AAGF,wBAAsB,UAAU;AAChC,mBAAiB;CAClB,GAAE;EAAC;EAAe,KAAK;EAAW,MAAM;CAAK,EAAC;CAE/C,MAAM,MAAM,YAAY,MAAM;EAC5B,MAAM,UAAU,SAAS,MAAM;AAC/B,SAAO,WAAW,OAAO,MAAM,cAAc,QAAQ;CACtD,GAAE,CAAC,SAAS,MAAM,SAAS,KAAM,EAAC;CAEnC,MAAM,cAAc,QAAQ,MAAM;AAChC,MAAI,SAAS,UACX,QAAO;AAET,MAAI,MAAM,aAAa,KAAK,UAC1B,QAAO;AAET,SAAO;CACR,GAAE;EAAC,SAAS;EAAW,MAAM;EAAW,KAAK;CAAU,EAAC;CAEzD,MAAM,YAAY,SAAS,aAAa,MAAM,aAAa,KAAK;CAChE,MAAM,YAAY,SAAS,MAAM,WAAW,SAAS;CAErD,MAAM,QAAQ,QAAQ,MAAM;AAC1B,MAAI,SAAS,MACX,QAAO,iBAAiB,SAAS,MAAM;AAEzC,MAAI,MAAM,UAAU,qBAAqB,MAAM,MAAM,QAAQ,CAC3D,QAAO,iBAAiB,MAAM,MAAM;AAEtC;CACD,GAAE,CAAC,SAAS,OAAO,MAAM,KAAM,EAAC;AAEjC,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD;AACF;;;;AC/FD,SAAgB,oCAAoC,EAClD,MACA,OAID,EAAO;AACN,QAAO,mBAAmB;EACxB,KAAK;EACL,cAAc;EACd,MAAM,CAAC,MAAM,KAAM;CACpB,EAAC;AACH;AAED,SAAgB,6CAA6C,EAC3D,oBAGD,EAAO;AACN,QAAO,mBAAmB;EACxB,KAAK;EACL,cAAc;EACd,MAAM,CAAC,kBAAmB;CAC3B,EAAC;AACH;AAED,MAAa,qCAAqC,CAAC,EACjD,cACA,MACA,OAKD,MACE;CACC,SAAS;CACT,KAAK;CACL,cAAc;CACd,MAAM,CAAC,MAAM,KAAM;AACpB;AAEH,MAAa,8CAA8C,CAAC,EAC1D,cACA,oBAID,MACE;CACC,SAAS;CACT,KAAK;CACL,cAAc;CACd,MAAM,CAAC,kBAAmB;AAC3B;AAEH,SAAgB,0BAA0B,EACxC,YACA,cACA,MACA,OACA,SAOD,EAAoB;AACnB,QAAO,iBAAiB,YAAY;EAClC,GAAG,mCAAmC;GAAE;GAAc;GAAM;EAAO,EAAC;EACpE;CACD,EAAC;AACH;AAED,SAAgB,kBAAkB,EAChC,cACA,cACA,MACA,OACA,SAOD,EAAoB;AACnB,QAAO,cAAc,cAAc;EACjC,GAAG,mCAAmC;GAAE;GAAc;GAAM;EAAO,EAAC;EACpE;CACD,EAAC;AACH;AAED,SAAgB,mCAAmC,EACjD,YACA,cACA,oBACA,SAMD,EAAoB;AACnB,QAAO,iBAAiB,YAAY;EAClC,GAAG,4CAA4C;GAAE;GAAc;EAAoB,EAAC;EACpF;CACD,EAAC;AACH;AAED,SAAgB,2BAA2B,EACzC,cACA,cACA,oBACA,SAMD,EAAoB;AACnB,QAAO,cAAc,cAAc;EACjC,GAAG,4CAA4C;GAAE;GAAc;EAAoB,EAAC;EACpF;CACD,EAAC;AACH;AAED,SAAgB,gCAAgC,EAC9C,MACA,iBAID,EAAS;AACR,QAAO,gBAAgB,IAAI,CAAC,UAAU,oCAAoC;EAAE;EAAM;CAAO,EAAC,CAAC;AAC5F;;;;AClID,SAASC,SAAO,EACd,OACA,WACA,aAKD,EAAU;AACT,KAAI,gBAAgB,GAClB,QAAO;AAET,QAAQ,QAAQ,YAAa;AAC9B;AAED,SAAgB,8CAA8C,EAC5D,mBACA,uBACA,wBAKD,EAAE;CACD,MAAM,qBAAqB,IAAI,IAAI,sBAAsB,IAAI,CAAC,UAAU,CAAC,MAAM,OAAO,KAAM,EAAC;CAE7F,MAAMC,UAKA,CAAE;AAER,MAAK,MAAM,cAAc,mBAAmB;AAC1C,MAAI,WAAW,WAAW,MAAM,WAAW,SAAS,uBAClD;EAGF,MAAM,aAAa,mBAAmB,IAAI,WAAW,MAAM;AAC3D,OAAK,WACH;AAGF,MACE,WAAW,oBAAoB,MAC/B,WAAW,oBAAoB,MAC/B,WAAW,mBAAmB,GAE9B;EAGF,MAAM,sBAAsB,SAAO;GACjC,OAAO,WAAW;GAClB,WAAW,WAAW;GACtB,aAAa,WAAW;EACzB,EAAC;AAEF,MAAI,wBAAwB,GAC1B;EAGF,MAAM,kBAAkB,SAAO;GAC7B,OAAO;GACP,WAAW,WAAW;GACtB,aAAa,WAAW;EACzB,EAAC;AAEF,MAAI,oBAAoB,GACtB;AAGF,UAAQ,KAAK;GACX,OAAO,WAAW;GAClB,cAAc,WAAW;GACzB;GACA;EACD,EAAC;CACH;CAED,MAAM,kBAAkB,QAAQ,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,MAAO,IAAI,IAAI,KAAK,EAAG;CAE5F,MAAM,cAAc,QAAQ,OAAO,CAAC,KAAK,UAAU,MAAM,MAAM,iBAAiB,GAAG;AAEnF,QAAO;EAAE;EAAS;EAAiB;CAAa;AACjD;;;;AC7ED,MAAa,mCAAmC,CAAC,EAC/C,eACA,oBACA,sBAKD,KAAK;AACJ,KAAI,iBAAiB,GACnB,QAAO;EAAE,iBAAiB,CAAE;EAAc,iBAAiB;CAAI;CAGjE,MAAM,UAAU,CAAC,GAAG,oBAAqB,EAAC,KAAK,CAAC,GAAG,MAAM;AACvD,MAAI,iCAAoC,EAAE,oBAAoB,EAAE,gBAC9D,QAAO,EAAE,kBAAkB,EAAE,kBAAkB,KAAK;AAEtD,SAAO,EAAE,QAAQ,EAAE,QAAQ,KAAK;CACjC,EAAC;CAEF,MAAMC,iBAA2B,CAAE;CACnC,IAAI,oBAAoB;AAExB,MAAK,MAAM,SAAS,SAAS;EAC3B,MAAM,wBAAwB,oBAAoB,MAAM;AACxD,MAAI,iCAAoC,wBAAwB,mBAC9D;AAGF,iBAAe,KAAK,MAAM,MAAM;AAChC,sBAAoB;AAEpB,MAAI,qBAAqB,cACvB;CAEH;AAED,QAAO;EAAE,iBAAiB;EAAgB,iBAAiB;CAAmB;AAC/E;AAED,MAAa,uBAAuB,CAAC,EACnC,SACA,cACA,eACA,oBACA,mBACA,uBACA,wBACA,mBACA,eAWD,KAAK;CACJ,MAAM,EAAE,SAAS,SAAS,GAAG,YAAY;CACzC,MAAM,mBAAmB,qBAAqB;CAC9C,MAAM,OAAO,oBAAoB;CAEjC,MAAM,uBAAuB,QAC3B,MACE,8CAA8C;EAC5C;EACA;EACA;CACD,EAAC,EACJ;EAAC;EAAmB;EAAuB;CAAuB,EACnE;CAED,MAAM,EAAE,iBAAiB,iBAAiB,GAAG,QAAQ,MAAM;AACzD,SAAO,iCAAiC;GACtC;GACA;GACA,sBAAsB,qBAAqB;EAC5C,EAAC;CACH,GAAE;EAAC;EAAe;EAAoB,qBAAqB;CAAQ,EAAC;CAErE,MAAM,qBAAqB,QAAQ,MAAM;AACvC,SAAO,gBAAgB,SAAS,IAC5B,gCAAgC;GAAE;GAAM;EAAiB,EAAC,GAC1D,CAAE;CACP,GAAE,CAAC,iBAAiB,IAAK,EAAC;CAE3B,MAAM,mBAAmB,QAAQ,MAAM;AACrC,SAAO,gBAAgB,IAAI,CAAC,WAAW;GACrC,cAAc;GACd,MAAM,CAAC,MAAM,KAAM;EACpB,GAAE;CACJ,GAAE,CAAC,iBAAiB,IAAK,EAAC;AAE3B,SAAQ,MAAM,yCAAyC;EACrD;EACA;EACA;EACA;EACA;EACA,iBAAiB,qBAAqB;CACvC,EAAC;CAEF,MAAM,cACJ,mBAAmB,SAAS,KAC5B,iBAAiB,eACjB,oBAAoB,QACpB,qBAAqB;CAEvB,MAAM,WAAW,oBAAoB;EACnC;EACA,GAAG,4CAA4C;GAAE;GAAc;EAAoB,EAAC;EACpF,SAAS;EACT,OAAO;GACL,SAAS;GACT,OAAO;EACR;CACF,EAAC;CAEF,MAAM,QAAQ,kBAAkB;CAEhC,MAAM,OAAO,6BAA6B;EACxC;EACA,MAAM,MAAM;EACZ,OAAO;GACL,sBAAsB;GACtB,gBAAgB;EACjB;CACF,EAAC;CAEF,MAAM,wBAAwB,cAA4C;AAE1E,WAAU,MAAM;EACd,MAAM,cAAc,MAAM;AAC1B,OAAK,KAAK,aAAa,eAAe,KACpC;AAEF,MAAI,sBAAsB,YAAY,YACpC;AAGF,wBAAsB,UAAU;AAChC,mBAAiB;CAClB,GAAE;EAAC;EAAe,KAAK;EAAW,MAAM;CAAK,EAAC;CAE/C,MAAM,MAAM,YAAY,MAAM;EAC5B,MAAM,UAAU,SAAS,MAAM;AAC/B,SAAO,WAAW,OAAO,MAAM,cAAc,QAAQ;CACtD,GAAE,CAAC,SAAS,MAAM,SAAS,KAAM,EAAC;CAEnC,MAAM,cAAc,QAAQ,MAAM;AAChC,MAAI,SAAS,UACX,QAAO;AAET,MAAI,MAAM,aAAa,KAAK,UAC1B,QAAO;AAET,SAAO;CACR,GAAE;EAAC,SAAS;EAAW,MAAM;EAAW,KAAK;CAAU,EAAC;CAEzD,MAAM,YAAY,SAAS,aAAa,MAAM,aAAa,KAAK;CAEhE,MAAM,QAAQ,QAAQ,MAAM;AAC1B,MAAI,SAAS,MACX,QAAO,iBAAiB,SAAS,MAAM;AAEzC,MAAI,MAAM,UAAU,qBAAqB,MAAM,MAAM,QAAQ,CAC3D,QAAO,iBAAiB,MAAM,MAAM;AAEtC;CACD,GAAE,CAAC,SAAS,OAAO,MAAM,KAAM,EAAC;CAEjC,MAAM,SAAS;EACb;EACA;EACA;EACA;EACA;EACA;EACA;CACD;AAED,QAAO;EACL,GAAG;EACH,iBAAiB,qBAAqB;EACtC;EACA;EACA;CACD;AACF;;;;AClND,MAAa,8BAA8B;CACzC,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AC9ID,MAAa,8BAA8B;CACzC,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AC9ID,MAAa,uCAAuC;CAClD,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AChQD,MAAa,uCAAuC;CAClD,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AChQD,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;ACpQD,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AChQD,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AC9ID,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GA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"}
1
+ {"version":3,"file":"index.js","names":["panopticPoolAbi","panopticPoolV2Abi","BASE_DEPLOYMENT","BASE_ETH_USDC_5BPS_MARKET","BASE_HYPOVAULT_ADDRESSES","BASE_HYPOVAULT_MANAGER_ADDRESSES","BASE_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultBaseProdConfig: HypoVaultManagerConfig","MAINNET_DEPLOYMENT","MAINNET_HYPOVAULT_ADDRESSES","MAINNET_HYPOVAULT_MANAGER_ADDRESSES","MAINNET_PANOPTIC_POOL_ADDRESSES","MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultMainnetProdConfig: HypoVaultManagerConfig","UsdcPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_ETH_USDC_5BPS_MARKET","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultSepoliaDevConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_ETH_USDC_5BPS_MARKET","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","UsdcPlpVaultSepoliaProdConfig: HypoVaultManagerConfig","BASE_DEPLOYMENT","BASE_HYPOVAULT_ADDRESSES","BASE_HYPOVAULT_MANAGER_ADDRESSES","BASE_PANOPTIC_POOL_ADDRESSES","WethPlpVaultBaseProdConfig: HypoVaultManagerConfig","MAINNET_DEPLOYMENT","WethPlpVaultMainnetProdConfig: HypoVaultManagerConfig","WethPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","WethPlpVaultSepoliaDevConfig: HypoVaultManagerConfig","SEPOLIA_DEPLOYMENT","SEPOLIA_HYPOVAULT_ADDRESSES","SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES","SEPOLIA_PANOPTIC_POOL_ADDRESSES","WethPlpVaultSepoliaProdConfig: HypoVaultManagerConfig","ALL_HYPO_VAULT_CONFIGS: HypoVaultManagerConfig[]","vaultAddress: Address","chainId: number","options?: GetHypoVaultConfigOptions","deploymentRank: Record<HypoVaultManagerConfig['deployment'], number>","SEPOLIA_DEPLOYMENT","BASE_DEPLOYMENT","MAINNET_DEPLOYMENT","DEFAULT_MANAGER_INPUT","VAULT_POOL_INFOS_BY_CHAIN: Record<number, readonly VaultPoolInfoArtifact[]>","toLowerAddress","address: string","value: string | null | undefined","candidatesByPool: CandidateTokenIdsByPool","poolAddress: string","values: Iterable<bigint>","value: unknown","result: unknown","panopticPoolAbi","chunk: readonly bigint[]","open: bigint[]","vaultAddress: Address","chainId?: number","balanceCandidatesByPool: CandidateTokenIdsByPool","eventCandidatesByPool: CandidateTokenIdsByPool","tokenIdsByPool: bigint[][]","eventCandidates","openTokenIds: bigint[]","address: string","discoverPoolAddresses","discoveredAddresses: Address[]","idleRow: LendingAllocationRow","erc20Abi","WAD","SECONDS_PER_YEAR","amount: bigint","sqrtPriceX96: bigint","tokenAddress: Address","a: Address","b: Address","addresses: Address[]","toBigInt","value: unknown","getAssetsDepositedFromDepositEpochState","inputs: VaultNetLendingApyTrackerInput[]","underlyingPoolTokenAddress","isUnderlyingIdle","rowsWithoutPct: RowWithoutPct[]","e: Error","e","errorMessage: string","mulDiv","byEpoch: {\n epoch: bigint\n queuedShares: bigint\n userSharesFulfilled: bigint\n assetsToReceive: bigint\n }[]","selectedEpochs: bigint[]","request","byEpoch: ClaimableSharesByEpoch[]","byExecutionEpoch: ClaimableExecutionSharesByEpoch[]","selectedEpochs: bigint[]","error: unknown","defaultWrapper: SdkFunctionWrapper","client: GraphQLClient","withWrapper: SdkFunctionWrapper","variables: Types.GetDepositOverviewQueryVariables","requestHeaders?: GraphQLClientRequestHeaders","variables: Types.GetLatestDepositAndWithdrawEpochQueryVariables","variables: Types.GetLatestEpochQueryVariables","variables: Types.GetVaultHistoryQueryVariables","variables: Types.GetFilteredHypoVaultsQueryVariables","variables: Types.GetQueuedWithdrawalsForExecutionQueryVariables","variables: Types.GetWithdrawalEpochStatesForExecutionQueryVariables","variables: Types.GetQueuedDepositsForWithdrawalQueryVariables","variables: Types.GetDepositEpochStatesForWithdrawalQueryVariables","chainToHypoVaultGraphQlAPI: Record<number, string>","chainId: number","value: string","address: Address","STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT: Partial<Record<string, Hex>>","accountantAddress: Address","chainId: number","vaultAddress: Address","deployment: ReturnType<typeof requireChainDeployment>","minBlock?: bigint","defaultStrategy: VaultApyStrategy","strategyOverridesByVaultKey: Record<string, VaultApyStrategy>","value: unknown","nav: bigint | null","navSource: VaultSharePriceSnapshot['navSource']","navRequest: ReadContractParams","sharePricePoints: VaultSharePriceSeriesPoint[]","points: VaultApySeriesPoint[]","a: Hex","b: Hex","leaf: Hex","tree: Hex[][]","proof: Hex[]","manageLeafs: ManageLeaf[]","rawDataDecoderAddress: Address","proofs: Hex[][]","leafDigests: Hex[]","jsonTree: Record<string, readonly Hex[]>","artifact: T","description: LeafDescription<T>","actions: ManageAction[]","artifact: StrategistLeavesArtifact","chainId: keyof typeof alchemyChains","alchemyApiKey: string"],"sources":["../src/abis/CollateralTracker.ts","../src/abis/CollateralTrackerV1_1.ts","../src/abis/erc20ABI.ts","../src/abis/erc1155ABI.ts","../src/abis/HypoVault.ts","../src/abis/HypoVaultManagerWithMerkleVerification.ts","../src/abis/NonFungiblePositionManager.ts","../src/abis/PanopticFactoryV3.ts","../src/abis/PanopticFactoryV4.ts","../src/abis/PanopticHelper.ts","../src/abis/SemiFungiblePositionManager.ts","../src/abis/PanopticPool.ts","../src/abis/SemiFungiblePositionManagerV1_1.ts","../src/abis/PanopticPoolV1_1.ts","../src/abis/PanopticQueryV1_1.ts","../src/abis/PanopticVaultAccountant.ts","../src/abis/PanopticVaultAccountantManagerInput.ts","../src/abis/PoolManager.ts","../src/abis/RescueDistributor.ts","../src/abis/Simple7702Account.ts","../src/abis/StateView.ts","../src/abis/UniswapHelper.ts","../src/abis/UniswapHelperV1_1.ts","../src/abis/UniswapMigrator.ts","../src/abis/UniswapV3Factory.ts","../src/abis/UniswapV3Pool.ts","../src/abis/WETH.ts","../src/abis/panoptic_v2_abis.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultBaseProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultMainnetProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultSepoliaDevConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/usdcPlpVaultSepoliaProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultBaseProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultMainnetProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultSepoliaDevConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/wethPlpVaultSepoliaProdConfig.ts","../src/hypoVault/hypoVaultManagerConfigs/vaultToConfig.ts","../src/hypoVault/hypoVaultManagerArtifacts/poolInfosConfig.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseUSDCPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseWETHPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetUSDCPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetWETHPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaUSDCPLPVaultPoolInfos.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaWETHPLPVaultPoolInfos.ts","../src/hypoVault/utils/buildManagerInput.ts","../src/hypoVault/utils/buildManagerInputAtBlock.ts","../src/hypoVault/utils/vaultManagerInput.ts","../src/hypoVault/analytics/lendingAllocation.ts","../src/hypoVault/analytics/vaultLendingAllocation.ts","../src/hypoVault/cancelDeposit/cancelDeposit.ts","../src/errors/ethereum.ts","../src/hypoVault/cancelDeposit/hooks/use-cancel-deposit.ts","../src/hypoVault/executeWithdrawal/executeWithdrawal.ts","../src/hypoVault/executeWithdrawal/utils/index.ts","../src/hypoVault/executeWithdrawal/hooks/use-execute-withdrawal.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/BaseWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetLegacyUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetLegacyWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/MainnetWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaUSDCPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerArtifacts/SepoliaWETHPLPStrategistLeaves.ts","../src/hypoVault/hypoVaultManagerConfigs/schema.ts","../src/hypoVault/hypoVaultManagerWithMerkleVerification/fulfillDeposits.ts","../src/hypoVault/hypoVaultManagerWithMerkleVerification/fulfillWithdrawals.ts","../src/hypoVault/requestDeposit/requestDeposit.ts","../src/hypoVault/requestDeposit/hooks/use-request-deposit.ts","../src/hypoVault/requestWithdrawal/utils/index.ts","../src/hypoVault/requestWithdrawal/requestWithdrawal.ts","../src/hypoVault/requestWithdrawal/hooks/use-request-withdrawal.ts","../src/hypoVault/sharePrice/errors.ts","../src/graphql/hypoVault-sdk.generated.ts","../src/graphqlClient.ts","../src/hypoVault/sharePrice/firstDeposit.ts","../src/hypoVault/sharePrice/math.ts","../src/hypoVault/staleOracleOverride.ts","../src/hypoVault/sharePrice/strategies.ts","../src/hypoVault/sharePrice/snapshot.ts","../src/hypoVault/sharePrice/timeseries.ts","../src/hypoVault/utils/merkleTreeHelper.ts","../src/hypoVault/utils/buildManageArgs.ts","../src/panoptic/v1/CollateralTracker/deposit.ts","../src/panoptic/v1/CollateralTracker/withdraw.ts","../src/token/erc20/approve.ts","../src/rpc.ts"],"sourcesContent":["export const CollateralTrackerAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_commissionFee',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_sellerCollateralRatio',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_buyerCollateralRatio',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_forceExerciseCost',\n type: 'int256',\n internalType: 'int256',\n },\n {\n name: '_targetPoolUtilization',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_saturatedPoolUtilization',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_ITMSpreadMultiplier',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'allowance',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'asset',\n inputs: [],\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n internalType: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n {\n name: 'account',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'balance',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToAssets',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToShares',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint8',\n internalType: 'uint8',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'delegate',\n inputs: [\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'delegate',\n inputs: [\n {\n name: 'delegator',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exercise',\n inputs: [\n {\n name: 'optionOwner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'longAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'shortAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'swappedAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'realizedPremium',\n type: 'int128',\n internalType: 'int128',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'int128',\n internalType: 'int128',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exerciseCost',\n inputs: [\n {\n name: 'currentTick',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'oracleTick',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'positionId',\n type: 'uint256',\n internalType: 'TokenId',\n },\n {\n name: 'positionBalance',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'longAmounts',\n type: 'int256',\n internalType: 'LeftRightSigned',\n },\n ],\n outputs: [\n {\n name: 'exerciseFees',\n type: 'int256',\n internalType: 'LeftRightSigned',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountMarginDetails',\n inputs: [\n {\n name: 'user',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'atTick',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'positionBalanceArray',\n type: 'uint256[2][]',\n internalType: 'uint256[2][]',\n },\n {\n name: 'shortPremium',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'longPremium',\n type: 'uint128',\n internalType: 'uint128',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'LeftRightUnsigned',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolData',\n inputs: [],\n outputs: [\n {\n name: 'poolAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'insideAMM',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'currentPoolUtilization',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxDeposit',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'maxMint',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxRedeem',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxWithdraw',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [\n {\n name: 'data',\n type: 'bytes[]',\n internalType: 'bytes[]',\n },\n ],\n outputs: [\n {\n name: 'results',\n type: 'bytes[]',\n internalType: 'bytes[]',\n },\n ],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'string',\n internalType: 'string',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewDeposit',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewMint',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewRedeem',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewWithdraw',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'redeem',\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'refund',\n inputs: [\n {\n name: 'refunder',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'refundee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'int256',\n internalType: 'int256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revoke',\n inputs: [\n {\n name: 'delegator',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revoke',\n inputs: [\n {\n name: 'delegatee',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'startToken',\n inputs: [\n {\n name: 'underlyingIsToken0',\n type: 'bool',\n internalType: 'bool',\n },\n {\n name: 'token0',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'token1',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'fee',\n type: 'uint24',\n internalType: 'uint24',\n },\n {\n name: 'panopticPool',\n type: 'address',\n internalType: 'contract PanopticPool',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'string',\n internalType: 'string',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'takeCommissionAddData',\n inputs: [\n {\n name: 'optionOwner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'longAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'shortAmount',\n type: 'int128',\n internalType: 'int128',\n },\n {\n name: 'swappedAmount',\n type: 'int128',\n internalType: 'int128',\n },\n ],\n outputs: [\n {\n name: 'utilization',\n type: 'uint32',\n internalType: 'uint32',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'totalAssets',\n inputs: [],\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n {\n name: 'from',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [\n {\n name: '',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'positionIdList',\n type: 'uint256[]',\n internalType: 'TokenId[]',\n },\n {\n name: 'usePremiaAsCollateral',\n type: 'bool',\n internalType: 'bool',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n internalType: 'address',\n },\n ],\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Deposit',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'shares',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n name: 'from',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'to',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdraw',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'receiver',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'assets',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'shares',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'CastingError',\n inputs: [],\n },\n {\n type: 'error',\n name: 'CollateralTokenAlreadyInitialized',\n inputs: [],\n },\n {\n type: 'error',\n name: 'DepositTooLarge',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ExceedsMaximumRedemption',\n inputs: [],\n },\n {\n type: 'error',\n name: 'InvalidTick',\n inputs: [],\n },\n {\n type: 'error',\n name: 'NotPanopticPool',\n inputs: [],\n },\n {\n type: 'error',\n name: 'PositionCountNotZero',\n inputs: [],\n },\n {\n type: 'error',\n name: 'TicksNotInitializable',\n inputs: [],\n },\n {\n type: 'error',\n name: 'TransferFailed',\n inputs: [],\n },\n {\n type: 'error',\n name: 'UnderOverFlow',\n inputs: [],\n },\n] as const\n","export const CollateralTrackerV1_1Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_commissionFee', type: 'uint256', internalType: 'uint256' },\n { name: '_sellerCollateralRatio', type: 'uint256', internalType: 'uint256' },\n { name: '_buyerCollateralRatio', type: 'uint256', internalType: 'uint256' },\n { name: '_forceExerciseCost', type: 'int256', internalType: 'int256' },\n { name: '_targetPoolUtilization', type: 'uint256', internalType: 'uint256' },\n { name: '_saturatedPoolUtilization', type: 'uint256', internalType: 'uint256' },\n { name: '_ITMSpreadFee', type: 'uint256', internalType: 'uint256' },\n { name: '_manager', type: 'address', internalType: 'contract IPoolManager' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'allowance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'asset',\n inputs: [],\n outputs: [{ name: 'assetTokenAddress', type: 'address', internalType: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToAssets',\n inputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'convertToShares',\n inputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'delegate',\n inputs: [{ name: 'delegatee', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'deposit',\n inputs: [\n { name: 'assets', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'exercise',\n inputs: [\n { name: 'optionOwner', type: 'address', internalType: 'address' },\n { name: 'longAmount', type: 'int128', internalType: 'int128' },\n { name: 'shortAmount', type: 'int128', internalType: 'int128' },\n { name: 'swappedAmount', type: 'int128', internalType: 'int128' },\n { name: 'realizedPremium', type: 'int128', internalType: 'int128' },\n ],\n outputs: [{ name: '', type: 'int128', internalType: 'int128' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exerciseCost',\n inputs: [\n { name: 'currentTick', type: 'int24', internalType: 'int24' },\n { name: 'oracleTick', type: 'int24', internalType: 'int24' },\n { name: 'positionId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'longAmounts', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n outputs: [{ name: 'exerciseFees', type: 'int256', internalType: 'LeftRightSigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountMarginDetails',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'atTick', type: 'int24', internalType: 'int24' },\n { name: 'positionBalanceArray', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n { name: 'shortPremium', type: 'uint128', internalType: 'uint128' },\n { name: 'longPremium', type: 'uint128', internalType: 'uint128' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'LeftRightUnsigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolData',\n inputs: [],\n outputs: [\n { name: 'poolAssets', type: 'uint256', internalType: 'uint256' },\n { name: 'insideAMM', type: 'uint256', internalType: 'uint256' },\n { name: 'currentPoolUtilization', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n { type: 'function', name: 'initialize', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'maxDeposit',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxAssets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'maxMint',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxShares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxRedeem',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxShares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxWithdraw',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'maxAssets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'shares', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewDeposit',\n inputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewMint',\n inputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewRedeem',\n inputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'previewWithdraw',\n inputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'redeem',\n inputs: [\n { name: 'shares', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'assets', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'refund',\n inputs: [\n { name: 'refunder', type: 'address', internalType: 'address' },\n { name: 'refundee', type: 'address', internalType: 'address' },\n { name: 'assets', type: 'int256', internalType: 'int256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revoke',\n inputs: [{ name: 'delegatee', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'settleLiquidation',\n inputs: [\n { name: 'liquidator', type: 'address', internalType: 'address' },\n { name: 'liquidatee', type: 'address', internalType: 'address' },\n { name: 'bonus', type: 'int256', internalType: 'int256' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'takeCommissionAddData',\n inputs: [\n { name: 'optionOwner', type: 'address', internalType: 'address' },\n { name: 'longAmount', type: 'int128', internalType: 'int128' },\n { name: 'shortAmount', type: 'int128', internalType: 'int128' },\n { name: 'swappedAmount', type: 'int128', internalType: 'int128' },\n { name: 'isCovered', type: 'bool', internalType: 'bool' },\n ],\n outputs: [\n { name: '', type: 'uint32', internalType: 'uint32' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'totalAssets',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'recipient', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unlockCallback',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: '', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n { name: 'assets', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdraw',\n inputs: [\n { name: 'assets', type: 'uint256', internalType: 'uint256' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [{ name: 'shares', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Deposit',\n inputs: [\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Withdraw',\n inputs: [\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'receiver', type: 'address', indexed: true, internalType: 'address' },\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'CollateralTokenAlreadyInitialized', inputs: [] },\n { type: 'error', name: 'DepositTooLarge', inputs: [] },\n { type: 'error', name: 'ExceedsMaximumRedemption', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'NotPanopticPool', inputs: [] },\n { type: 'error', name: 'PositionCountNotZero', inputs: [] },\n { type: 'error', name: 'TransferFailed', inputs: [] },\n { type: 'error', name: 'UnauthorizedUniswapCallback', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n] as const\n","export const Erc20Abi = [\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: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\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: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'subtractedValue',\n type: 'uint256',\n },\n ],\n name: 'decreaseAllowance',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'addedValue',\n type: 'uint256',\n },\n ],\n name: 'increaseAllowance',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n] as const\n","export const Erc1155Abi = [\n {\n inputs: [],\n name: 'NotAuthorized',\n type: 'error',\n },\n {\n inputs: [],\n name: 'UnsafeRecipient',\n type: 'error',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'ApprovalForAll',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256[]',\n name: 'ids',\n type: 'uint256[]',\n },\n {\n indexed: false,\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n ],\n name: 'TransferBatch',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'id',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'TransferSingle',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'account',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: 'balance',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address[]',\n name: 'owners',\n type: 'address[]',\n },\n {\n internalType: 'uint256[]',\n name: 'ids',\n type: 'uint256[]',\n },\n ],\n name: 'balanceOfBatch',\n outputs: [\n {\n internalType: 'uint256[]',\n name: 'balances',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n ],\n name: 'isApprovedForAll',\n outputs: [\n {\n internalType: 'bool',\n name: 'approvedForAll',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256[]',\n name: 'ids',\n type: 'uint256[]',\n },\n {\n internalType: 'uint256[]',\n name: 'amounts',\n type: 'uint256[]',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'safeBatchTransferFrom',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'id',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes4',\n name: 'interfaceId',\n type: 'bytes4',\n },\n ],\n name: 'supportsInterface',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n] as const\n","export const HypoVaultAbi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n { type: 'receive', stateMutability: 'payable' },\n {\n type: 'function',\n name: 'accountant',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IVaultAccountant' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'allowance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'cancelDeposit',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelDeposit',\n inputs: [{ name: 'depositor', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelWithdrawal',\n inputs: [{ name: 'withdrawer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'convertToAssets',\n inputs: [\n { name: 'shares', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: '', type: 'uint8', internalType: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'depositEpoch',\n inputs: [],\n outputs: [{ name: '', type: 'uint128', internalType: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'depositEpochState',\n inputs: [{ name: 'epoch', type: 'uint256', internalType: 'uint256' }],\n outputs: [\n { name: 'assetsDeposited', type: 'uint128', internalType: 'uint128' },\n { name: 'sharesReceived', type: 'uint128', internalType: 'uint128' },\n { name: 'assetsFulfilled', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'executeDeposit',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'executeWithdrawal',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'feeWallet',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'fulfillDeposits',\n inputs: [\n { name: 'assetsToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'fulfillWithdrawals',\n inputs: [\n { name: 'sharesToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'maxAssetsReceived', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n { name: '_underlyingToken', type: 'address', internalType: 'address' },\n { name: '_manager', type: 'address', internalType: 'address' },\n { name: '_accountant', type: 'address', internalType: 'contract IVaultAccountant' },\n { name: '_performanceFeeBps', type: 'uint256', internalType: 'uint256' },\n { name: '_symbol', type: 'string', internalType: 'string' },\n { name: '_name', type: 'string', internalType: 'string' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manage',\n inputs: [\n { name: 'targets', type: 'address[]', internalType: 'address[]' },\n { name: 'data', type: 'bytes[]', internalType: 'bytes[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manage',\n inputs: [\n { name: 'target', type: 'address', internalType: 'address' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'manager',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC721Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'optOutOfRedeposit',\n inputs: [{ name: 'epoch', type: 'uint256', internalType: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'performanceFeeBps',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'queuedDeposit',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'depositAmount', type: 'uint128', internalType: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'queuedWithdrawal',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'epoch', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'amount', type: 'uint128', internalType: 'uint128' },\n { name: 'basis', type: 'uint128', internalType: 'uint128' },\n { name: 'shouldRedeposit', type: 'bool', internalType: 'bool' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestDeposit',\n inputs: [{ name: 'assets', type: 'uint128', internalType: 'uint128' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestWithdrawal',\n inputs: [{ name: 'shares', type: 'uint128', internalType: 'uint128' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestWithdrawalFrom',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'shares', type: 'uint128', internalType: 'uint128' },\n { name: 'shouldRedeposit', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'reservedWithdrawalAssets',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setAccountant',\n inputs: [\n { name: '_newAccountant', type: 'address', internalType: 'contract IVaultAccountant' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setFeeWallet',\n inputs: [{ name: '_newFeeWallet', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setManager',\n inputs: [{ name: '_newManager', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalAssets',\n inputs: [{ name: 'managerInput', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'success', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'success', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'underlyingToken',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'userBasis',\n inputs: [{ name: 'user', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'basis', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdrawalEpoch',\n inputs: [],\n outputs: [{ name: '', type: 'uint128', internalType: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdrawalEpochState',\n inputs: [{ name: 'epoch', type: 'uint256', internalType: 'uint256' }],\n outputs: [\n { name: 'sharesWithdrawn', type: 'uint128', internalType: 'uint128' },\n { name: 'assetsReceived', type: 'uint128', internalType: 'uint128' },\n { name: 'sharesFulfilled', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountantUpdated',\n inputs: [\n {\n name: 'oldAccountant',\n type: 'address',\n indexed: true,\n internalType: 'contract IVaultAccountant',\n },\n {\n name: 'newAccountant',\n type: 'address',\n indexed: true,\n internalType: 'contract IVaultAccountant',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositCancelled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositExecuted',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'epoch', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositRequested',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'DepositsFulfilled',\n inputs: [\n { name: 'epoch', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'assetsFulfilled', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'sharesReceived', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'FeeWalletUpdated',\n inputs: [\n { name: 'oldFeeWallet', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newFeeWallet', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialized',\n inputs: [{ name: 'version', type: 'uint64', indexed: false, internalType: 'uint64' }],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ManagerUpdated',\n inputs: [\n { name: 'oldManager', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newManager', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'previousOwner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'RedepositStatusChanged',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'epoch', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'shouldRedeposit', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalCancelled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalExecuted',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'assets', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'performanceFee', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'epoch', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shouldRedeposit', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalRequested',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'shares', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'shouldRedeposit', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WithdrawalsFulfilled',\n inputs: [\n { name: 'epoch', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'assetsReceived', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'sharesFulfilled', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'EpochNotFulfilled', inputs: [] },\n { type: 'error', name: 'InvalidInitialization', inputs: [] },\n { type: 'error', name: 'NotInitializing', inputs: [] },\n { type: 'error', name: 'NotManager', inputs: [] },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [{ name: 'account', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'TransferFailed', inputs: [] },\n { type: 'error', name: 'WithdrawalNotFulfillable', inputs: [] },\n] as const\n","export const HypoVaultManagerWithMerkleVerificationAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_owner', type: 'address', internalType: 'address' },\n { name: '_hypovault', type: 'address', internalType: 'address' },\n { name: '_balancerVault', type: 'address', internalType: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authority',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract Authority' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balancerVault',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract BalancerVault' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'cancelDeposit',\n inputs: [{ name: 'depositor', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelWithdrawal',\n inputs: [{ name: 'withdrawer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'flashLoan',\n inputs: [\n { name: 'recipient', type: 'address', internalType: 'address' },\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'userData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'fulfillDeposits',\n inputs: [\n { name: 'assetsToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'fulfillWithdrawals',\n inputs: [\n { name: 'sharesToFulfill', type: 'uint256', internalType: 'uint256' },\n { name: 'maxAssetsReceived', type: 'uint256', internalType: 'uint256' },\n { name: 'managerInput', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isPaused',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'manageRoot',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'manageVaultWithMerkleVerification',\n inputs: [\n {\n name: 'manageProofs',\n type: 'bytes32[][]',\n internalType: 'bytes32[][]',\n },\n {\n name: 'decodersAndSanitizers',\n type: 'address[]',\n internalType: 'address[]',\n },\n { name: 'targets', type: 'address[]', internalType: 'address[]' },\n { name: 'targetData', type: 'bytes[]', internalType: 'bytes[]' },\n { name: 'values', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'receiveFlashLoan',\n inputs: [\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'feeAmounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'userData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'requestWithdrawalFrom',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'shares', type: 'uint128', internalType: 'uint128' },\n { name: 'shouldRedeposit', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setAuthority',\n inputs: [\n {\n name: 'newAuthority',\n type: 'address',\n internalType: 'contract Authority',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setManageRoot',\n inputs: [\n { name: 'strategist', type: 'address', internalType: 'address' },\n { name: '_manageRoot', type: 'bytes32', internalType: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vault',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract BoringVault' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AuthorityUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newAuthority',\n type: 'address',\n indexed: true,\n internalType: 'contract Authority',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'BoringVaultManaged',\n inputs: [\n {\n name: 'callsMade',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ManageRootUpdated',\n inputs: [\n {\n name: 'strategist',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'oldRoot',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n {\n name: 'newRoot',\n type: 'bytes32',\n indexed: false,\n internalType: 'bytes32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n { type: 'event', name: 'Paused', inputs: [], anonymous: false },\n { type: 'event', name: 'Unpaused', inputs: [], anonymous: false },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{ name: 'target', type: 'address', internalType: 'address' }],\n },\n { type: 'error', name: 'FailedInnerCall', inputs: [] },\n { type: 'error', name: 'HypoVaultManager__Unauthorized', inputs: [] },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__BadFlashLoanIntentHash',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__FailedToVerifyManageProof',\n inputs: [\n { name: 'target', type: 'address', internalType: 'address' },\n { name: 'targetData', type: 'bytes', internalType: 'bytes' },\n { name: 'value', type: 'uint256', internalType: 'uint256' },\n ],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__FlashLoanNotExecuted',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__FlashLoanNotInProgress',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidDecodersAndSanitizersLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidManageProofLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidTargetDataLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__InvalidValuesLength',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__OnlyCallableByBalancerVault',\n inputs: [],\n },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__OnlyCallableByBoringVault',\n inputs: [],\n },\n { type: 'error', name: 'ManagerWithMerkleVerification__Paused', inputs: [] },\n {\n type: 'error',\n name: 'ManagerWithMerkleVerification__TotalSupplyMustRemainConstantDuringPlatform',\n inputs: [],\n },\n] as const\n","export const NonFungiblePositionManagerAbi = [\n {\n inputs: [\n {\n internalType: 'address',\n name: '_factory',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '_WETH9',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '_tokenDescriptor_',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\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: '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 {\n indexed: false,\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'ApprovalForAll',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'Collect',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'DecreaseLiquidity',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'IncreaseLiquidity',\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 {\n indexed: true,\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\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: 'DOMAIN_SEPARATOR',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'PERMIT_TYPEHASH',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'WETH9',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'baseURI',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'burn',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint128',\n name: 'amount0Max',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1Max',\n type: 'uint128',\n },\n ],\n name: 'collect',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'tokenA',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'tokenB',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n ],\n name: 'createAndInitializePoolIfNecessary',\n outputs: [\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n ],\n name: 'decreaseLiquidity',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'factory',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'getApproved',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n ],\n name: 'increaseLiquidity',\n outputs: [\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n ],\n name: 'isApprovedForAll',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint256',\n name: 'amount0Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Desired',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount0Min',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Min',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n ],\n internalType: 'struct INonfungiblePositionManager.MintParams',\n name: 'params',\n type: 'tuple',\n },\n ],\n name: 'mint',\n outputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes[]',\n name: 'data',\n type: 'bytes[]',\n },\n ],\n name: 'multicall',\n outputs: [\n {\n internalType: 'bytes[]',\n name: 'results',\n type: 'bytes[]',\n },\n ],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'name',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'ownerOf',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'spender',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'positions',\n outputs: [\n {\n internalType: 'uint96',\n name: 'nonce',\n type: 'uint96',\n },\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed1',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: '_data',\n type: 'bytes',\n },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermit',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermitAllowed',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'nonce',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'expiry',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermitAllowedIfNecessary',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'value',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'deadline',\n type: 'uint256',\n },\n {\n internalType: 'uint8',\n name: 'v',\n type: 'uint8',\n },\n {\n internalType: 'bytes32',\n name: 'r',\n type: 'bytes32',\n },\n {\n internalType: 'bytes32',\n name: 's',\n type: 'bytes32',\n },\n ],\n name: 'selfPermitIfNecessary',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'operator',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'approved',\n type: 'bool',\n },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes4',\n name: 'interfaceId',\n type: 'bytes4',\n },\n ],\n name: 'supportsInterface',\n outputs: [\n {\n internalType: 'bool',\n name: '',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'token',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amountMinimum',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n ],\n name: 'sweepToken',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'tokenByIndex',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'index',\n type: 'uint256',\n },\n ],\n name: 'tokenOfOwnerByIndex',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'tokenURI',\n outputs: [\n {\n internalType: 'string',\n name: '',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'from',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'to',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'amount0Owed',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1Owed',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'uniswapV3MintCallback',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: 'amountMinimum',\n type: 'uint256',\n },\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n ],\n name: 'unwrapWETH9',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n stateMutability: 'payable',\n type: 'receive',\n },\n] as const\n","export const PanopticFactoryV3Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_SFPM', type: 'address', internalType: 'contract SemiFungiblePositionManagerV3' },\n { name: '_univ3Factory', type: 'address', internalType: 'contract IUniswapV3Factory' },\n { name: '_poolReference', type: 'address', internalType: 'address' },\n { name: '_collateralReference', type: 'address', internalType: 'address' },\n { name: 'properties', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'indices', type: 'uint256[][]', internalType: 'uint256[][]' },\n { name: 'pointers', type: 'uint256[][]', internalType: 'Pointer[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'constructMetadata',\n inputs: [\n { name: 'panopticPool', type: 'address', internalType: 'address' },\n { name: 'symbol0', type: 'string', internalType: 'string' },\n { name: 'symbol1', type: 'string', internalType: 'string' },\n { name: 'fee', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployNewPool',\n inputs: [\n { name: 'token0', type: 'address', internalType: 'address' },\n { name: 'token1', type: 'address', internalType: 'address' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n ],\n outputs: [\n { name: 'newPoolContract', type: 'address', internalType: 'contract PanopticPoolV2' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getApproved',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPanopticPool',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'contract IUniswapV3Pool' },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n ],\n outputs: [{ name: '', type: 'address', internalType: 'contract PanopticPoolV2' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'minePoolAddress',\n inputs: [\n { name: 'deployerAddress', type: 'address', internalType: 'address' },\n { name: 'v3Pool', type: 'address', internalType: 'address' },\n { name: 'riskEngine', type: 'address', internalType: 'address' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n { name: 'loops', type: 'uint256', internalType: 'uint256' },\n { name: 'minTargetRarity', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'bestSalt', type: 'uint96', internalType: 'uint96' },\n { name: 'highestRarity', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ownerOf',\n inputs: [{ name: 'id', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenURI',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'spender', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'operator', type: 'address', internalType: 'address', indexed: true },\n { name: 'approved', type: 'bool', internalType: 'bool', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'PoolDeployed',\n inputs: [\n {\n name: 'poolAddress',\n type: 'address',\n internalType: 'contract PanopticPoolV2',\n indexed: true,\n },\n {\n name: 'uniswapPool',\n type: 'address',\n internalType: 'contract IUniswapV3Pool',\n indexed: true,\n },\n {\n name: 'collateralTracker0',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address', indexed: true },\n { name: 'to', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n { type: 'error', name: 'AlreadyInitialized', inputs: [] },\n { type: 'error', name: 'CreateFail', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const\n","export const PanopticFactoryV4Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_SFPM', type: 'address', internalType: 'contract SemiFungiblePositionManagerV4' },\n { name: '_manager', type: 'address', internalType: 'contract IPoolManager' },\n { name: '_poolReference', type: 'address', internalType: 'address' },\n { name: '_collateralReference', type: 'address', internalType: 'address' },\n { name: 'properties', type: 'bytes32[]', internalType: 'bytes32[]' },\n { name: 'indices', type: 'uint256[][]', internalType: 'uint256[][]' },\n { name: 'pointers', type: 'uint256[][]', internalType: 'Pointer[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'constructMetadata',\n inputs: [\n { name: 'panopticPool', type: 'address', internalType: 'address' },\n { name: 'symbol0', type: 'string', internalType: 'string' },\n { name: 'symbol1', type: 'string', internalType: 'string' },\n { name: 'fee', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'deployNewPool',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n ],\n outputs: [\n { name: 'newPoolContract', type: 'address', internalType: 'contract PanopticPoolV2' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getApproved',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPanopticPool',\n inputs: [\n {\n name: 'keyV4',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine' },\n ],\n outputs: [{ name: '', type: 'address', internalType: 'contract PanopticPoolV2' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'minePoolAddress',\n inputs: [\n { name: 'deployerAddress', type: 'address', internalType: 'address' },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'riskEngine', type: 'address', internalType: 'address' },\n { name: 'salt', type: 'uint96', internalType: 'uint96' },\n { name: 'loops', type: 'uint256', internalType: 'uint256' },\n { name: 'minTargetRarity', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: 'bestSalt', type: 'uint96', internalType: 'uint96' },\n { name: 'highestRarity', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'ownerOf',\n inputs: [{ name: 'id', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: 'owner', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenURI',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'spender', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address', indexed: true },\n { name: 'operator', type: 'address', internalType: 'address', indexed: true },\n { name: 'approved', type: 'bool', internalType: 'bool', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'PoolDeployed',\n inputs: [\n {\n name: 'poolAddress',\n type: 'address',\n internalType: 'contract PanopticPoolV2',\n indexed: true,\n },\n { name: 'idV4', type: 'bytes32', internalType: 'PoolId', indexed: true },\n {\n name: 'collateralTracker0',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n type: 'address',\n internalType: 'contract CollateralTrackerV2',\n indexed: false,\n },\n { name: 'riskEngine', type: 'address', internalType: 'contract IRiskEngine', indexed: false },\n ],\n },\n {\n type: 'event',\n anonymous: false,\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address', indexed: true },\n { name: 'to', type: 'address', internalType: 'address', indexed: true },\n { name: 'id', type: 'uint256', internalType: 'uint256', indexed: true },\n ],\n },\n { type: 'error', name: 'AlreadyInitialized', inputs: [] },\n { type: 'error', name: 'CreateFail', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'ZeroAddress', inputs: [] },\n] as const\n","export const PanopticHelperAbi = [\n {\n inputs: [\n { internalType: 'contract SemiFungiblePositionManager', name: 'SFPM_', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n { inputs: [], name: 'CastingError', type: 'error' },\n { inputs: [], name: 'InvalidTick', type: 'error' },\n { inputs: [], name: 'UnderOverFlow', type: 'error' },\n {\n inputs: [\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'uint256', name: 'asset', type: 'uint256' },\n { internalType: 'uint256', name: 'optionRatio', type: 'uint256' },\n { internalType: 'uint128', name: 'buysideDemand', type: 'uint128' },\n { internalType: 'uint128', name: 'preexistingSellsideLiquidity', type: 'uint128' },\n ],\n name: 'calculateRequiredSaleSize',\n outputs: [{ internalType: 'uint128', name: 'requiredSize', type: 'uint128' }],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256[4]', name: 'collateralBalances0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'collateralBalances1', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals1', type: 'uint256[4]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256', name: 'collateralBalance0', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral0', type: 'uint256' },\n { internalType: 'uint256', name: 'collateralBalance1', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral1', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateralAndGetLiquidationPrices',\n outputs: [\n { internalType: 'uint256', name: 'collateralBalance0', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral0', type: 'uint256' },\n { internalType: 'uint256', name: 'collateralBalance1', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral1', type: 'uint256' },\n { internalType: 'int24', name: 'liquidationPriceDown', type: 'int24' },\n { internalType: 'int24', name: 'liquidationPriceUp', type: 'int24' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateralListOutput',\n outputs: [\n { internalType: 'uint256[2][]', name: '', type: 'uint256[2][]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int24[]', name: '', type: 'int24[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n { internalType: 'uint256', name: 'medianData', type: 'uint256' },\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n ],\n name: 'computeInternalMedian',\n outputs: [\n { internalType: 'int24', name: '', type: 'int24' },\n { internalType: 'uint256', name: '', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n { internalType: 'uint256', name: 'cardinality', type: 'uint256' },\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n ],\n name: 'computeMedianObservedPrice',\n outputs: [{ internalType: 'int24', name: 'medianTick', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n ],\n name: 'computeMinimumSize',\n outputs: [{ internalType: 'uint128', name: 'minPositionSize', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n { internalType: 'uint128', name: 'positionSize', type: 'uint128' },\n ],\n name: 'computeSoldPositionToSatisfyLongLegs',\n outputs: [\n { internalType: 'TokenId', name: 'sellsidePosition', type: 'uint256' },\n { internalType: 'uint128', name: 'sellsidePositionSize', type: 'uint128' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getChunkData',\n outputs: [{ internalType: 'uint256[2][4][]', name: '', type: 'uint256[2][4][]' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'bool', name: 'includePendingPremium', type: 'bool' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n ],\n name: 'getNetLiquidationValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getPortfolioValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n { internalType: 'uint32', name: 'twapWindow', type: 'uint32' },\n ],\n name: 'twapFilter',\n outputs: [{ internalType: 'int24', name: '', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const SemiFungiblePositionManagerAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_factory', type: 'address', internalType: 'contract IUniswapV3Factory' },\n { name: '_minEnforcedTickFillCost', type: 'uint256', internalType: 'uint256' },\n { name: '_supplyMultiplierTickFill', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOfBatch',\n inputs: [\n { name: 'owners', type: 'address[]', internalType: 'address[]' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'balances', type: 'uint256[]', internalType: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnTokenizedPosition',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'expandEnforcedTickRange',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccountFeesBase',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: 'feesBase0', type: 'int128', internalType: 'int128' },\n { name: 'feesBase1', type: 'int128', internalType: 'int128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountLiquidity',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n ],\n outputs: [{ name: 'accountLiquidities', type: 'uint256', internalType: 'LeftRightUnsigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountPremium',\n inputs: [\n { name: 'univ3pool', type: 'address', internalType: 'address' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n { name: 'atTick', type: 'int24', internalType: 'int24' },\n { name: 'isLong', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: '', type: 'uint128', internalType: 'uint128' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getEnforcedTickLimits',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolId',\n inputs: [{ name: 'univ3pool', type: 'address', internalType: 'address' }],\n outputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUniswapV3PoolFromId',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [{ name: 'uniswapV3Pool', type: 'address', internalType: 'contract IUniswapV3Pool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initializeAMMPool',\n inputs: [\n { name: 'token0', type: 'address', internalType: 'address' },\n { name: 'token1', type: 'address', internalType: 'address' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'approvedForAll', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mintTokenizedPosition',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'safeBatchTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'uniswapV3MintCallback',\n inputs: [\n { name: 'amount0Owed', type: 'uint256', internalType: 'uint256' },\n { name: 'amount1Owed', type: 'uint256', internalType: 'uint256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'uniswapV3SwapCallback',\n inputs: [\n { name: 'amount0Delta', type: 'int256', internalType: 'int256' },\n { name: 'amount1Delta', type: 'int256', internalType: 'int256' },\n { name: 'data', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'EnforcedTicksUpdated',\n inputs: [\n { name: 'uniswapPool', type: 'address', indexed: true, internalType: 'address' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PoolInitialized',\n inputs: [\n { name: 'uniswapPool', type: 'address', indexed: true, internalType: 'address' },\n { name: 'poolId', type: 'uint64', indexed: false, internalType: 'uint64' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionMinted',\n inputs: [\n { name: 'caller', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferBatch',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'ids', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n { name: 'amounts', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferSingle',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'InvalidTickBound', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'InvalidUniswapCallback', inputs: [] },\n { type: 'error', name: 'NotAuthorized', inputs: [] },\n { type: 'error', name: 'NotEnoughLiquidity', inputs: [] },\n { type: 'error', name: 'PositionTooLarge', inputs: [] },\n { type: 'error', name: 'PriceBoundFail', inputs: [] },\n { type: 'error', name: 'TransferFailed', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n { type: 'error', name: 'UniswapPoolNotInitialized', inputs: [] },\n { type: 'error', name: 'UnsafeRecipient', inputs: [] },\n { type: 'error', name: 'ZeroLiquidity', inputs: [] },\n] as const\n","import { SemiFungiblePositionManagerAbi as SFPMAbi } from './SemiFungiblePositionManager'\n\nconst panopticPoolAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_sfpm',\n type: 'address',\n internalType: 'contract SemiFungiblePositionManager',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'assertMinCollateralValues',\n inputs: [\n { name: 'minValue0', type: 'uint256', internalType: 'uint256' },\n { name: 'minValue1', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collateralToken0',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'collateralToken1',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'forceExercise',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionIdListExercisee', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionIdListExercisor', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccumulatedFeesAndPositionsData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'includePendingPremium', type: 'bool', internalType: 'bool' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOracleTicks',\n inputs: [],\n outputs: [\n { name: 'currentTick', type: 'int24', internalType: 'int24' },\n { name: 'fastOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'slowOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'latestObservation', type: 'int24', internalType: 'int24' },\n { name: 'medianData', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isSafeMode',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'liquidate',\n inputs: [\n { name: 'positionIdListLiquidator', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'liquidatee', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'mintOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'effectiveLiquidityLimitX32', type: 'uint64', internalType: 'uint64' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'numberOfPositions',\n inputs: [{ name: 'user', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155BatchReceived',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'pokeMedian',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'positionData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n ],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'settleLongPremium',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'legIndex', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collectPremium',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'TokenId' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'startPool',\n inputs: [\n { name: '_univ3pool', type: 'address', internalType: 'contract IUniswapV3Pool' },\n { name: 'token0', type: 'address', internalType: 'address' },\n { name: 'token1', type: 'address', internalType: 'address' },\n {\n name: 'collateralTracker0',\n type: 'address',\n internalType: 'contract CollateralTracker',\n },\n {\n name: 'collateralTracker1',\n type: 'address',\n internalType: 'contract CollateralTracker',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'univ3pool',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IUniswapV3Pool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'validateCollateralWithdrawable',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountLiquidated',\n inputs: [\n { name: 'liquidator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'liquidatee', type: 'address', indexed: true, internalType: 'address' },\n {\n name: 'bonusAmounts',\n type: 'int256',\n indexed: false,\n internalType: 'LeftRightSigned',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ForcedExercised',\n inputs: [\n { name: 'exercisor', type: 'address', indexed: true, internalType: 'address' },\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'exerciseFee',\n type: 'int256',\n indexed: false,\n internalType: 'LeftRightSigned',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'premiaByLeg',\n type: 'int256[4]',\n indexed: false,\n internalType: 'LeftRightSigned[4]',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionMinted',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'balanceData',\n type: 'uint256',\n indexed: false,\n internalType: 'PositionBalance',\n },\n {\n name: 'commissions',\n type: 'uint256',\n indexed: false,\n internalType: 'LeftRightUnsigned',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PremiumSettled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'legIndex', type: 'uint256', indexed: false, internalType: 'uint256' },\n {\n name: 'settledAmounts',\n type: 'int256',\n indexed: false,\n internalType: 'LeftRightSigned',\n },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AccountInsolvent', inputs: [] },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'EffectiveLiquidityAboveThreshold', inputs: [] },\n { type: 'error', name: 'InputListFail', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'NoLegsExercisable', inputs: [] },\n { type: 'error', name: 'NotALongLeg', inputs: [] },\n { type: 'error', name: 'NotMarginCalled', inputs: [] },\n { type: 'error', name: 'PoolAlreadyInitialized', inputs: [] },\n { type: 'error', name: 'PositionAlreadyMinted', inputs: [] },\n { type: 'error', name: 'StaleTWAP', inputs: [] },\n { type: 'error', name: 'TooManyPositionsOpen', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n] as const\n\n// Add sfpm errors to PanopticPoolABI so error types can be inferred using the (`walk` method) when PanopticPool call reverts with a custom error defined in the SFPM.\nexport const PanopticPoolAbi = [\n ...panopticPoolAbi,\n ...SFPMAbi.filter((abiEntry) => abiEntry.type === 'error'),\n] as const\n","export const SemiFungiblePositionManagerV1_1Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'poolManager', type: 'address', internalType: 'contract IPoolManager' },\n { name: '_minEnforcedTickFillCost', type: 'uint256', internalType: 'uint256' },\n { name: '_nativeEnforcedTickFillCost', type: 'uint256', internalType: 'uint256' },\n { name: '_supplyMultiplierTickFill', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOfBatch',\n inputs: [\n { name: 'owners', type: 'address[]', internalType: 'address[]' },\n { name: 'ids', type: 'uint256[]', internalType: 'uint256[]' },\n ],\n outputs: [{ name: 'balances', type: 'uint256[]', internalType: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnTokenizedPosition',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'expandEnforcedTickRange',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccountLiquidity',\n inputs: [\n { name: 'idV4', type: 'bytes32', internalType: 'PoolId' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n ],\n outputs: [{ name: 'accountLiquidities', type: 'uint256', internalType: 'LeftRightUnsigned' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAccountPremium',\n inputs: [\n { name: 'idV4', type: 'bytes32', internalType: 'PoolId' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'tokenType', type: 'uint256', internalType: 'uint256' },\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n { name: 'atTick', type: 'int24', internalType: 'int24' },\n { name: 'isLong', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [\n { name: '', type: 'uint128', internalType: 'uint128' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getEnforcedTickLimits',\n inputs: [{ name: 'idV4', type: 'bytes32', internalType: 'PoolId' }],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolId',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n outputs: [{ name: '', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolId',\n inputs: [{ name: 'idV4', type: 'bytes32', internalType: 'PoolId' }],\n outputs: [{ name: '', type: 'uint64', internalType: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUniswapV4PoolKeyFromId',\n inputs: [{ name: 'poolId', type: 'uint64', internalType: 'uint64' }],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initializeAMMPool',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'approvedForAll', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mintTokenizedPosition',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'slippageTickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'slippageTickLimitHigh', type: 'int24', internalType: 'int24' },\n ],\n outputs: [\n { name: '', type: 'uint256[4]', internalType: 'LeftRightUnsigned[4]' },\n { name: '', type: 'int256', internalType: 'LeftRightSigned' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'safeBatchTransferFrom',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'uint256[]', internalType: 'uint256[]' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'unlockCallback',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: '', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'EnforcedTicksUpdated',\n inputs: [\n { name: 'idV4', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PoolInitialized',\n inputs: [\n { name: 'idV4', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'poolId', type: 'uint64', indexed: false, internalType: 'uint64' },\n { name: 'minEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'maxEnforcedTick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TokenizedPositionMinted',\n inputs: [\n { name: 'caller', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferBatch',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'ids', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n { name: 'amounts', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferSingle',\n inputs: [\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'InvalidTickBound', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'NotAuthorized', inputs: [] },\n { type: 'error', name: 'NotEnoughLiquidity', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'PositionTooLarge', inputs: [] },\n { type: 'error', name: 'PriceBoundFail', inputs: [] },\n { type: 'error', name: 'UnauthorizedUniswapCallback', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n { type: 'error', name: 'UniswapPoolNotInitialized', inputs: [] },\n { type: 'error', name: 'UnsafeRecipient', inputs: [] },\n { type: 'error', name: 'ZeroLiquidity', inputs: [] },\n] as const\n","import { SemiFungiblePositionManagerV1_1Abi as SFPMV1_1Abi } from './SemiFungiblePositionManagerV1_1'\n\nconst panopticPoolAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_sfpm', type: 'address', internalType: 'contract SemiFungiblePositionManager' },\n { name: '_poolManager', type: 'address', internalType: 'contract IPoolManager' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'assertMinCollateralValues',\n inputs: [\n { name: 'minValue0', type: 'uint256', internalType: 'uint256' },\n { name: 'minValue1', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burnOptions',\n inputs: [\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'newPositionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collateralToken0',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'collateralToken1',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract CollateralTracker' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'forceExercise',\n inputs: [\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n { name: 'positionIdListExercisee', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionIdListExercisor', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'usePremiaAsCollateral', type: 'uint256', internalType: 'LeftRightUnsigned' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getAccumulatedFeesAndPositionsData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'includePendingPremium', type: 'bool', internalType: 'bool' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256', internalType: 'LeftRightUnsigned' },\n { name: '', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOracleTicks',\n inputs: [],\n outputs: [\n { name: 'currentTick', type: 'int24', internalType: 'int24' },\n { name: 'fastOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'slowOracleTick', type: 'int24', internalType: 'int24' },\n { name: 'latestObservation', type: 'int24', internalType: 'int24' },\n { name: 'medianData', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'view',\n },\n { type: 'function', name: 'initialize', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'isSafeMode',\n inputs: [],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'liquidate',\n inputs: [\n { name: 'positionIdListLiquidator', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'liquidatee', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n ],\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'mintOptions',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'positionSize', type: 'uint128', internalType: 'uint128' },\n { name: 'effectiveLiquidityLimitX32', type: 'uint64', internalType: 'uint64' },\n { name: 'tickLimitLow', type: 'int24', internalType: 'int24' },\n { name: 'tickLimitHigh', type: 'int24', internalType: 'int24' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{ name: 'data', type: 'bytes[]', internalType: 'bytes[]' }],\n outputs: [{ name: 'results', type: 'bytes[]', internalType: 'bytes[]' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'numberOfLegs',\n inputs: [{ name: 'user', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'onERC1155Received',\n inputs: [\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'address', internalType: 'address' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'uint256', internalType: 'uint256' },\n { name: '', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4', internalType: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'oracleContract',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'contract IV3CompatibleOracle' }],\n stateMutability: 'pure',\n },\n { type: 'function', name: 'pokeMedian', inputs: [], outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n name: 'poolKey',\n inputs: [],\n outputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'positionData',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'tokenId', type: 'uint256', internalType: 'TokenId' },\n ],\n outputs: [\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int24', internalType: 'int24' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'int256', internalType: 'int256' },\n { name: '', type: 'uint128', internalType: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'settleLongPremium',\n inputs: [\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'legIndex', type: 'uint256', internalType: 'uint256' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collectPremium',\n inputs: [{ name: 'tokenId', type: 'uint256', internalType: 'TokenId' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'validateCollateralWithdrawable',\n inputs: [\n { name: 'user', type: 'address', internalType: 'address' },\n { name: 'positionIdList', type: 'uint256[]', internalType: 'TokenId[]' },\n { name: 'usePremiaAsCollateral', type: 'bool', internalType: 'bool' },\n ],\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'AccountLiquidated',\n inputs: [\n { name: 'liquidator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'liquidatee', type: 'address', indexed: true, internalType: 'address' },\n { name: 'bonusAmounts', type: 'int256', indexed: false, internalType: 'LeftRightSigned' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ForcedExercised',\n inputs: [\n { name: 'exercisor', type: 'address', indexed: true, internalType: 'address' },\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'exerciseFee', type: 'int256', indexed: false, internalType: 'LeftRightSigned' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionBurnt',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'positionSize', type: 'uint128', indexed: false, internalType: 'uint128' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n {\n name: 'premiaByLeg',\n type: 'int256[4]',\n indexed: false,\n internalType: 'LeftRightSigned[4]',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OptionMinted',\n inputs: [\n { name: 'recipient', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'balanceData', type: 'uint256', indexed: false, internalType: 'PositionBalance' },\n { name: 'commissions', type: 'uint256', indexed: false, internalType: 'LeftRightUnsigned' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'PremiumSettled',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tokenId', type: 'uint256', indexed: true, internalType: 'TokenId' },\n { name: 'legIndex', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'settledAmounts', type: 'int256', indexed: false, internalType: 'LeftRightSigned' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AccountInsolvent', inputs: [] },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'EffectiveLiquidityAboveThreshold', inputs: [] },\n { type: 'error', name: 'InputListFail', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n {\n type: 'error',\n name: 'InvalidTokenIdParameter',\n inputs: [{ name: 'parameterType', type: 'uint256', internalType: 'uint256' }],\n },\n { type: 'error', name: 'NoLegsExercisable', inputs: [] },\n { type: 'error', name: 'NotALongLeg', inputs: [] },\n { type: 'error', name: 'NotMarginCalled', inputs: [] },\n { type: 'error', name: 'PoolAlreadyInitialized', inputs: [] },\n { type: 'error', name: 'PositionAlreadyMinted', inputs: [] },\n { type: 'error', name: 'StaleOracle', inputs: [] },\n { type: 'error', name: 'TooManyLegsOpen', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n] as const\n\n// Add sfpm errors to PanopticPoolABI so error types can be inferred using the (`walk` method) when PanopticPool call reverts with a custom error defined in the SFPM.\nexport const PanopticPoolV1_1Abi = [\n ...panopticPoolAbi,\n ...SFPMV1_1Abi.filter((abiEntry) => abiEntry.type === 'error'),\n] as const\n","export const PanopticQueryV1_1Abi = [\n {\n inputs: [\n { internalType: 'contract SemiFungiblePositionManager', name: 'SFPM_', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n { inputs: [], name: 'CastingError', type: 'error' },\n { inputs: [], name: 'InvalidTick', type: 'error' },\n { inputs: [], name: 'UnderOverFlow', type: 'error' },\n {\n inputs: [\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'uint256', name: 'asset', type: 'uint256' },\n { internalType: 'uint256', name: 'optionRatio', type: 'uint256' },\n { internalType: 'uint128', name: 'buysideDemand', type: 'uint128' },\n { internalType: 'uint128', name: 'preexistingSellsideLiquidity', type: 'uint128' },\n ],\n name: 'calculateRequiredSaleSize',\n outputs: [{ internalType: 'uint128', name: 'requiredSize', type: 'uint128' }],\n stateMutability: 'pure',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256[4]', name: 'collateralBalances0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals0', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'collateralBalances1', type: 'uint256[4]' },\n { internalType: 'uint256[4]', name: 'requiredCollaterals1', type: 'uint256[4]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n { internalType: 'uint256', name: 'collateralBalance0', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral0', type: 'uint256' },\n { internalType: 'uint256', name: 'collateralBalance1', type: 'uint256' },\n { internalType: 'uint256', name: 'requiredCollateral1', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n { internalType: 'uint256', name: 'medianData', type: 'uint256' },\n { internalType: 'contract IV3CompatibleOracle', name: 'oracleContract', type: 'address' },\n ],\n name: 'computeInternalMedian',\n outputs: [\n { internalType: 'int24', name: '', type: 'int24' },\n { internalType: 'uint256', name: '', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IV3CompatibleOracle', name: 'oracleContract', type: 'address' },\n { internalType: 'uint256', name: 'cardinality', type: 'uint256' },\n { internalType: 'uint256', name: 'period', type: 'uint256' },\n ],\n name: 'computeMedianObservedPrice',\n outputs: [{ internalType: 'int24', name: 'medianTick', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n ],\n name: 'computeMinimumSize',\n outputs: [{ internalType: 'uint128', name: 'minPositionSize', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'TokenId', name: 'tokenId', type: 'uint256' },\n { internalType: 'uint128', name: 'positionSize', type: 'uint128' },\n ],\n name: 'computeSoldPositionToSatisfyLongLegs',\n outputs: [\n { internalType: 'TokenId', name: 'sellsidePosition', type: 'uint256' },\n { internalType: 'uint128', name: 'sellsidePositionSize', type: 'uint128' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getChunkData',\n outputs: [{ internalType: 'uint256[2][4][]', name: '', type: 'uint256[2][4][]' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'bool', name: 'includePendingPremium', type: 'bool' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n ],\n name: 'getNetLiquidationValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract PanopticPool', name: 'pool', type: 'address' },\n { internalType: 'address', name: 'account', type: 'address' },\n { internalType: 'int24', name: 'atTick', type: 'int24' },\n { internalType: 'TokenId[]', name: 'positionIdList', type: 'uint256[]' },\n ],\n name: 'getPortfolioValue',\n outputs: [\n { internalType: 'int256', name: 'value0', type: 'int256' },\n { internalType: 'int256', name: 'value1', type: 'int256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IV3CompatibleOracle', name: 'oracleContract', type: 'address' },\n { internalType: 'uint32', name: 'twapWindow', type: 'uint32' },\n ],\n name: 'twapFilter',\n outputs: [{ internalType: 'int24', name: '', type: 'int24' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const PanopticVaultAccountantAbi = [\n {\n type: 'constructor',\n inputs: [\n { internalType: 'address', name: 'owner', type: 'address' },\n { internalType: 'address', name: '_wethAddress', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n { type: 'error', name: 'CastingError', inputs: [] },\n { type: 'error', name: 'DuplicateERC4626', inputs: [] },\n { type: 'error', name: 'DuplicatePool', inputs: [] },\n { type: 'error', name: 'ERC4626UnderlyingMismatch', inputs: [] },\n { type: 'error', name: 'IncorrectPositionList', inputs: [] },\n { type: 'error', name: 'InvalidERC4626Vaults', inputs: [] },\n { type: 'error', name: 'InvalidPools', inputs: [] },\n { type: 'error', name: 'InvalidTick', inputs: [] },\n { type: 'error', name: 'LiquidityTooHigh', inputs: [] },\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n },\n { type: 'error', name: 'StaleOraclePrice', inputs: [] },\n { type: 'error', name: 'UnderOverFlow', inputs: [] },\n { type: 'error', name: 'VaultLocked', inputs: [] },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'previousOwner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'computeNAV',\n inputs: [\n { internalType: 'address', name: 'vault', type: 'address' },\n { internalType: 'address', name: 'underlyingToken', type: 'address' },\n { internalType: 'bytes', name: 'managerInput', type: 'bytes' },\n ],\n outputs: [{ internalType: 'uint256', name: 'nav', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'lockVault',\n inputs: [{ internalType: 'address', name: 'vault', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateHashes',\n inputs: [\n { internalType: 'address', name: 'vault', type: 'address' },\n {\n internalType: 'struct PanopticVaultAccountant.PoolInfo[]',\n name: 'pools',\n type: 'tuple[]',\n components: [\n { internalType: 'contract PanopticPoolV2', name: 'pool', type: 'address' },\n { internalType: 'contract IERC20Partial', name: 'token0', type: 'address' },\n { internalType: 'contract IERC20Partial', name: 'token1', type: 'address' },\n { internalType: 'int24', name: 'maxPriceDeviation', type: 'int24' },\n ],\n },\n {\n internalType: 'contract IERC4626[]',\n name: 'erc4626Vaults',\n type: 'address[]',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vaultHashes',\n inputs: [\n { internalType: 'address', name: 'vault', type: 'address' },\n { internalType: 'uint256', name: '', type: 'uint256' },\n ],\n outputs: [{ internalType: 'bytes32', name: 'hashes', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'vaultLocked',\n inputs: [{ internalType: 'address', name: 'vault', type: 'address' }],\n outputs: [{ internalType: 'bool', name: 'isLocked', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'wethAddress',\n inputs: [],\n outputs: [{ internalType: 'address', name: '', type: 'address' }],\n stateMutability: 'view',\n },\n] as const\n","export const PanopticVaultAccountantManagerInputAbi = [\n {\n type: 'tuple[]',\n components: [\n { name: 'poolPrice', type: 'int24' },\n { name: 'token0Price', type: 'int24' },\n { name: 'token1Price', type: 'int24' },\n ],\n },\n {\n type: 'tuple[]',\n components: [\n { name: 'pool', type: 'address' },\n { name: 'token0', type: 'address' },\n { name: 'token1', type: 'address' },\n { name: 'maxPriceDeviation', type: 'int24' },\n ],\n },\n { type: 'uint256[][]' }, // TokenId[][]\n { type: 'address[]' }, // IERC4626[]\n] as const\n","export const PoolManagerAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'initialOwner', type: 'address', internalType: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'balance', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'burn',\n inputs: [\n { name: 'from', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'clear',\n inputs: [\n { name: 'currency', type: 'address', internalType: 'Currency' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'collectProtocolFees',\n inputs: [\n { name: 'recipient', type: 'address', internalType: 'address' },\n { name: 'currency', type: 'address', internalType: 'Currency' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: 'amountCollected', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'donate',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'amount0', type: 'uint256', internalType: 'uint256' },\n { name: 'amount1', type: 'uint256', internalType: 'uint256' },\n { name: 'hookData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: 'delta', type: 'int256', internalType: 'BalanceDelta' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'extsload',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'extsload',\n inputs: [\n { name: 'startSlot', type: 'bytes32', internalType: 'bytes32' },\n { name: 'nSlots', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'extsload',\n inputs: [{ name: 'slots', type: 'bytes32[]', internalType: 'bytes32[]' }],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'exttload',\n inputs: [{ name: 'slots', type: 'bytes32[]', internalType: 'bytes32[]' }],\n outputs: [{ name: '', type: 'bytes32[]', internalType: 'bytes32[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'exttload',\n inputs: [{ name: 'slot', type: 'bytes32', internalType: 'bytes32' }],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'initialize',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'sqrtPriceX96', type: 'uint160', internalType: 'uint160' },\n ],\n outputs: [{ name: 'tick', type: 'int24', internalType: 'int24' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isOperator',\n inputs: [\n { name: 'owner', type: 'address', internalType: 'address' },\n { name: 'operator', type: 'address', internalType: 'address' },\n ],\n outputs: [{ name: 'isOperator', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'modifyLiquidity',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct IPoolManager.ModifyLiquidityParams',\n components: [\n { name: 'tickLower', type: 'int24', internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', internalType: 'int24' },\n { name: 'liquidityDelta', type: 'int256', internalType: 'int256' },\n { name: 'salt', type: 'bytes32', internalType: 'bytes32' },\n ],\n },\n { name: 'hookData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [\n { name: 'callerDelta', type: 'int256', internalType: 'BalanceDelta' },\n { name: 'feesAccrued', type: 'int256', internalType: 'BalanceDelta' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'protocolFeeController',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'protocolFeesAccrued',\n inputs: [{ name: 'currency', type: 'address', internalType: 'Currency' }],\n outputs: [{ name: 'amount', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'setOperator',\n inputs: [\n { name: 'operator', type: 'address', internalType: 'address' },\n { name: 'approved', type: 'bool', internalType: 'bool' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOwner',\n inputs: [{ name: 'newOwner', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setProtocolFee',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'newProtocolFee', type: 'uint24', internalType: 'uint24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setProtocolFeeController',\n inputs: [{ name: 'controller', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'settle',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'settleFor',\n inputs: [{ name: 'recipient', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4', internalType: 'bytes4' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'swap',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct IPoolManager.SwapParams',\n components: [\n { name: 'zeroForOne', type: 'bool', internalType: 'bool' },\n { name: 'amountSpecified', type: 'int256', internalType: 'int256' },\n { name: 'sqrtPriceLimitX96', type: 'uint160', internalType: 'uint160' },\n ],\n },\n { name: 'hookData', type: 'bytes', internalType: 'bytes' },\n ],\n outputs: [{ name: 'swapDelta', type: 'int256', internalType: 'BalanceDelta' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'sync',\n inputs: [{ name: 'currency', type: 'address', internalType: 'Currency' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'take',\n inputs: [\n { name: 'currency', type: 'address', internalType: 'Currency' },\n { name: 'to', type: 'address', internalType: 'address' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'sender', type: 'address', internalType: 'address' },\n { name: 'receiver', type: 'address', internalType: 'address' },\n { name: 'id', type: 'uint256', internalType: 'uint256' },\n { name: 'amount', type: 'uint256', internalType: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unlock',\n inputs: [{ name: 'data', type: 'bytes', internalType: 'bytes' }],\n outputs: [{ name: 'result', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateDynamicLPFee',\n inputs: [\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n { name: 'currency0', type: 'address', internalType: 'Currency' },\n { name: 'currency1', type: 'address', internalType: 'Currency' },\n { name: 'fee', type: 'uint24', internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', internalType: 'int24' },\n { name: 'hooks', type: 'address', internalType: 'contract IHooks' },\n ],\n },\n { name: 'newDynamicLPFee', type: 'uint24', internalType: 'uint24' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'spender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Donate',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount0', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'amount1', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Initialize',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'currency0', type: 'address', indexed: true, internalType: 'Currency' },\n { name: 'currency1', type: 'address', indexed: true, internalType: 'Currency' },\n { name: 'fee', type: 'uint24', indexed: false, internalType: 'uint24' },\n { name: 'tickSpacing', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'hooks', type: 'address', indexed: false, internalType: 'contract IHooks' },\n { name: 'sqrtPriceX96', type: 'uint160', indexed: false, internalType: 'uint160' },\n { name: 'tick', type: 'int24', indexed: false, internalType: 'int24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ModifyLiquidity',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'tickLower', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'tickUpper', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'liquidityDelta', type: 'int256', indexed: false, internalType: 'int256' },\n { name: 'salt', type: 'bytes32', indexed: false, internalType: 'bytes32' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OperatorSet',\n inputs: [\n { name: 'owner', type: 'address', indexed: true, internalType: 'address' },\n { name: 'operator', type: 'address', indexed: true, internalType: 'address' },\n { name: 'approved', type: 'bool', indexed: false, internalType: 'bool' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnerUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true, internalType: 'address' },\n { name: 'newOwner', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolFeeControllerUpdated',\n inputs: [\n { name: 'protocolFeeController', type: 'address', indexed: true, internalType: 'address' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ProtocolFeeUpdated',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'protocolFee', type: 'uint24', indexed: false, internalType: 'uint24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Swap',\n inputs: [\n { name: 'id', type: 'bytes32', indexed: true, internalType: 'PoolId' },\n { name: 'sender', type: 'address', indexed: true, internalType: 'address' },\n { name: 'amount0', type: 'int128', indexed: false, internalType: 'int128' },\n { name: 'amount1', type: 'int128', indexed: false, internalType: 'int128' },\n { name: 'sqrtPriceX96', type: 'uint160', indexed: false, internalType: 'uint160' },\n { name: 'liquidity', type: 'uint128', indexed: false, internalType: 'uint128' },\n { name: 'tick', type: 'int24', indexed: false, internalType: 'int24' },\n { name: 'fee', type: 'uint24', indexed: false, internalType: 'uint24' },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'caller', type: 'address', indexed: false, internalType: 'address' },\n { name: 'from', type: 'address', indexed: true, internalType: 'address' },\n { name: 'to', type: 'address', indexed: true, internalType: 'address' },\n { name: 'id', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'amount', type: 'uint256', indexed: false, internalType: 'uint256' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AlreadyUnlocked', inputs: [] },\n {\n type: 'error',\n name: 'CurrenciesOutOfOrderOrEqual',\n inputs: [\n { name: 'currency0', type: 'address', internalType: 'address' },\n { name: 'currency1', type: 'address', internalType: 'address' },\n ],\n },\n { type: 'error', name: 'CurrencyNotSettled', inputs: [] },\n { type: 'error', name: 'DelegateCallNotAllowed', inputs: [] },\n { type: 'error', name: 'InvalidCaller', inputs: [] },\n { type: 'error', name: 'ManagerLocked', inputs: [] },\n { type: 'error', name: 'MustClearExactPositiveDelta', inputs: [] },\n { type: 'error', name: 'NonzeroNativeValue', inputs: [] },\n { type: 'error', name: 'PoolNotInitialized', inputs: [] },\n { type: 'error', name: 'ProtocolFeeCurrencySynced', inputs: [] },\n {\n type: 'error',\n name: 'ProtocolFeeTooLarge',\n inputs: [{ name: 'fee', type: 'uint24', internalType: 'uint24' }],\n },\n { type: 'error', name: 'SwapAmountCannotBeZero', inputs: [] },\n {\n type: 'error',\n name: 'TickSpacingTooLarge',\n inputs: [{ name: 'tickSpacing', type: 'int24', internalType: 'int24' }],\n },\n {\n type: 'error',\n name: 'TickSpacingTooSmall',\n inputs: [{ name: 'tickSpacing', type: 'int24', internalType: 'int24' }],\n },\n { type: 'error', name: 'UnauthorizedDynamicLPFeeUpdate', inputs: [] },\n] as const\n","export const RescueDistributorAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'merkleRoot_', type: 'bytes32', internalType: 'bytes32' },\n { name: 'tokens_', type: 'address[]', internalType: 'address[]' },\n { name: 'withdrawableAt_', type: 'uint256', internalType: 'uint256' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'admin',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'claim',\n inputs: [\n { name: 'index', type: 'uint256', internalType: 'uint256' },\n { name: 'account', type: 'address', internalType: 'address' },\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'merkleProof', type: 'bytes32[]', internalType: 'bytes32[]' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isClaimed',\n inputs: [{ name: 'index', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'merkleRoot',\n inputs: [],\n outputs: [{ name: '', type: 'bytes32', internalType: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'supportedTokens',\n inputs: [{ name: '', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'tokenList',\n inputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'withdrawUnclaimed',\n inputs: [\n { name: 'tokens', type: 'address[]', internalType: 'address[]' },\n { name: 'to', type: 'address', internalType: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'withdrawableAt',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'Claimed',\n inputs: [\n { name: 'index', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'account', type: 'address', indexed: false, internalType: 'address' },\n { name: 'tokens', type: 'address[]', indexed: false, internalType: 'address[]' },\n { name: 'amounts', type: 'uint256[]', indexed: false, internalType: 'uint256[]' },\n ],\n anonymous: false,\n },\n { type: 'error', name: 'AlreadyClaimed', inputs: [] },\n { type: 'error', name: 'InvalidProof', inputs: [] },\n { type: 'error', name: 'OnlyAdmin', inputs: [] },\n { type: 'error', name: 'TokensAmountsMismatch', inputs: [] },\n { type: 'error', name: 'WithdrawTooEarly', inputs: [] },\n] as const\n","import { parseAbi } from 'viem'\n\nexport const Simple7702AccountAbi = parseAbi([\n 'function executeBatch((address target,uint256 value,bytes data)[] calls)',\n 'error ExecuteError(uint256 callIndex, bytes revertData)',\n])\n","export const StateViewAbi = [\n {\n inputs: [{ internalType: 'contract IPoolManager', name: '_poolManager', type: 'address' }],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [{ internalType: 'PoolId', name: 'poolId', type: 'bytes32' }],\n name: 'getFeeGrowthGlobals',\n outputs: [\n { internalType: 'uint256', name: 'feeGrowthGlobal0', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthGlobal1', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n ],\n name: 'getFeeGrowthInside',\n outputs: [\n { internalType: 'uint256', name: 'feeGrowthInside0X128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1X128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'PoolId', name: 'poolId', type: 'bytes32' }],\n name: 'getLiquidity',\n outputs: [{ internalType: 'uint128', name: 'liquidity', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'bytes32', name: 'positionId', type: 'bytes32' },\n ],\n name: 'getPositionInfo',\n outputs: [\n { internalType: 'uint128', name: 'liquidity', type: 'uint128' },\n { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'address', name: 'owner', type: 'address' },\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'bytes32', name: 'salt', type: 'bytes32' },\n ],\n name: 'getPositionInfo',\n outputs: [\n { internalType: 'uint128', name: 'liquidity', type: 'uint128' },\n { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'bytes32', name: 'positionId', type: 'bytes32' },\n ],\n name: 'getPositionLiquidity',\n outputs: [{ internalType: 'uint128', name: 'liquidity', type: 'uint128' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'PoolId', name: 'poolId', type: 'bytes32' }],\n name: 'getSlot0',\n outputs: [\n { internalType: 'uint160', name: 'sqrtPriceX96', type: 'uint160' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n { internalType: 'uint24', name: 'protocolFee', type: 'uint24' },\n { internalType: 'uint24', name: 'lpFee', type: 'uint24' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int16', name: 'tick', type: 'int16' },\n ],\n name: 'getTickBitmap',\n outputs: [{ internalType: 'uint256', name: 'tickBitmap', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n ],\n name: 'getTickFeeGrowthOutside',\n outputs: [\n { internalType: 'uint256', name: 'feeGrowthOutside0X128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthOutside1X128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n ],\n name: 'getTickInfo',\n outputs: [\n { internalType: 'uint128', name: 'liquidityGross', type: 'uint128' },\n { internalType: 'int128', name: 'liquidityNet', type: 'int128' },\n { internalType: 'uint256', name: 'feeGrowthOutside0X128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthOutside1X128', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'PoolId', name: 'poolId', type: 'bytes32' },\n { internalType: 'int24', name: 'tick', type: 'int24' },\n ],\n name: 'getTickLiquidity',\n outputs: [\n { internalType: 'uint128', name: 'liquidityGross', type: 'uint128' },\n { internalType: 'int128', name: 'liquidityNet', type: 'int128' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'poolManager',\n outputs: [{ internalType: 'contract IPoolManager', name: '', type: 'address' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapHelperAbi = [\n {\n inputs: [\n { internalType: 'contract IUniswapV3Factory', name: '_factory', type: 'address' },\n { internalType: 'contract INonfungiblePositionManager', name: '_NFPM', type: 'address' },\n { internalType: 'contract SemiFungiblePositionManager', name: '_SFPM', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n {\n inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n name: 'getNfpmPositionsForAccount',\n outputs: [\n {\n components: [\n { internalType: 'uint96', name: 'nonce', type: 'uint96' },\n { internalType: 'address', name: 'operator', type: 'address' },\n { internalType: 'address', name: 'token0', type: 'address' },\n { internalType: 'address', name: 'token1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickLower', type: 'int24' },\n { internalType: 'int24', name: 'tickUpper', type: 'int24' },\n { internalType: 'uint128', name: 'liquidity', type: 'uint128' },\n { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' },\n { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' },\n { internalType: 'uint128', name: 'tokensOwed0', type: 'uint128' },\n { internalType: 'uint128', name: 'tokensOwed1', type: 'uint128' },\n { internalType: 'string', name: 'tokenURI', type: 'string' },\n ],\n internalType: 'struct UniswapHelper.PositionWithTokenURI[]',\n name: 'positionsWithTokenURI',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' }],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'contract IUniswapV3Pool', name: 'univ3pool', type: 'address' },\n { internalType: 'int24', name: 'startTick', type: 'int24' },\n { internalType: 'uint256', name: 'nTicks', type: 'uint256' },\n ],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: 'tokenId', type: 'uint256' }],\n name: 'plotPnL',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'address', name: 'pool', type: 'address' }],\n name: 'plotPoolLiquidity',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapHelperV1_1Abi = [\n {\n inputs: [\n { internalType: 'contract IPoolManager', name: '_V4_POOLM', type: 'address' },\n { internalType: 'contract IPositionManager', name: '_V4_POSM', type: 'address' },\n { internalType: 'contract SemiFungiblePositionManager', name: '_SFPM', type: 'address' },\n ],\n stateMutability: 'payable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'Currency', name: 'currency0', type: 'address' },\n { internalType: 'Currency', name: 'currency1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickSpacing', type: 'int24' },\n { internalType: 'contract IHooks', name: 'hooks', type: 'address' },\n ],\n internalType: 'struct PoolKey',\n name: 'poolKey',\n type: 'tuple',\n },\n ],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'Currency', name: 'currency0', type: 'address' },\n { internalType: 'Currency', name: 'currency1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickSpacing', type: 'int24' },\n { internalType: 'contract IHooks', name: 'hooks', type: 'address' },\n ],\n internalType: 'struct PoolKey',\n name: 'poolKey',\n type: 'tuple',\n },\n { internalType: 'int24', name: 'startTick', type: 'int24' },\n { internalType: 'uint256', name: 'nTicks', type: 'uint256' },\n ],\n name: 'getTickNets',\n outputs: [\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n { internalType: 'int256[]', name: '', type: 'int256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [{ internalType: 'uint256', name: 'tokenId', type: 'uint256' }],\n name: 'plotPnL',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n components: [\n { internalType: 'Currency', name: 'currency0', type: 'address' },\n { internalType: 'Currency', name: 'currency1', type: 'address' },\n { internalType: 'uint24', name: 'fee', type: 'uint24' },\n { internalType: 'int24', name: 'tickSpacing', type: 'int24' },\n { internalType: 'contract IHooks', name: 'hooks', type: 'address' },\n ],\n internalType: 'struct PoolKey',\n name: 'poolKey',\n type: 'tuple',\n },\n ],\n name: 'plotPoolLiquidity',\n outputs: [{ internalType: 'string', name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const UniswapMigratorAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_NFPM',\n type: 'address',\n internalType: 'contract INonfungiblePositionManager',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'migrate',\n inputs: [\n { name: 'tokenIds', type: 'uint256[]', internalType: 'uint256[]' },\n { name: 'amountMins', type: 'uint256[2][]', internalType: 'uint256[2][]' },\n { name: 'ct0', type: 'address', internalType: 'contract CollateralTracker' },\n { name: 'ct1', type: 'address', internalType: 'contract CollateralTracker' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n { type: 'error', name: 'UnauthorizedMigration', inputs: [] },\n] as const\n","export const UniswapV3FactoryAbi = [\n {\n inputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'constructor',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n ],\n name: 'FeeAmountEnabled',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'oldOwner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'OwnerChanged',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n indexed: false,\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n ],\n name: 'PoolCreated',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'tokenA',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'tokenB',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n ],\n name: 'createPool',\n outputs: [\n {\n internalType: 'address',\n name: 'pool',\n type: 'address',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n ],\n name: 'enableFeeAmount',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint24',\n name: '',\n type: 'uint24',\n },\n ],\n name: 'feeAmountTickSpacing',\n outputs: [\n {\n internalType: 'int24',\n name: '',\n type: 'int24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: '',\n type: 'uint24',\n },\n ],\n name: 'getPool',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'parameters',\n outputs: [\n {\n internalType: 'address',\n name: 'factory',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token0',\n type: 'address',\n },\n {\n internalType: 'address',\n name: 'token1',\n type: 'address',\n },\n {\n internalType: 'uint24',\n name: 'fee',\n type: 'uint24',\n },\n {\n internalType: 'int24',\n name: 'tickSpacing',\n type: 'int24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: '_owner',\n type: 'address',\n },\n ],\n name: 'setOwner',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n] as const\n","export const UniswapV3PoolAbi = [\n {\n inputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'constructor',\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: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'Burn',\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: false,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n name: 'Collect',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n name: 'CollectProtocol',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'paid0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'paid1',\n type: 'uint256',\n },\n ],\n name: 'Flash',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint16',\n name: 'observationCardinalityNextOld',\n type: 'uint16',\n },\n {\n indexed: false,\n internalType: 'uint16',\n name: 'observationCardinalityNextNew',\n type: 'uint16',\n },\n ],\n name: 'IncreaseObservationCardinalityNext',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n {\n indexed: false,\n internalType: 'int24',\n name: 'tick',\n type: 'int24',\n },\n ],\n name: 'Initialize',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n indexed: true,\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n indexed: false,\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n name: 'Mint',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol0Old',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol1Old',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol0New',\n type: 'uint8',\n },\n {\n indexed: false,\n internalType: 'uint8',\n name: 'feeProtocol1New',\n type: 'uint8',\n },\n ],\n name: 'SetFeeProtocol',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'int256',\n name: 'amount0',\n type: 'int256',\n },\n {\n indexed: false,\n internalType: 'int256',\n name: 'amount1',\n type: 'int256',\n },\n {\n indexed: false,\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n {\n indexed: false,\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n indexed: false,\n internalType: 'int24',\n name: 'tick',\n type: 'int24',\n },\n ],\n name: 'Swap',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n ],\n name: 'burn',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'amount0Requested',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1Requested',\n type: 'uint128',\n },\n ],\n name: 'collect',\n outputs: [\n {\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint128',\n name: 'amount0Requested',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1Requested',\n type: 'uint128',\n },\n ],\n name: 'collectProtocol',\n outputs: [\n {\n internalType: 'uint128',\n name: 'amount0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'amount1',\n type: 'uint128',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'factory',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'fee',\n outputs: [\n {\n internalType: 'uint24',\n name: '',\n type: 'uint24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'feeGrowthGlobal0X128',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'feeGrowthGlobal1X128',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'flash',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint16',\n name: 'observationCardinalityNext',\n type: 'uint16',\n },\n ],\n name: 'increaseObservationCardinalityNext',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'liquidity',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'maxLiquidityPerTick',\n outputs: [\n {\n internalType: 'uint128',\n name: '',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n {\n internalType: 'uint128',\n name: 'amount',\n type: 'uint128',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'mint',\n outputs: [\n {\n internalType: 'uint256',\n name: 'amount0',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'amount1',\n type: 'uint256',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'observations',\n outputs: [\n {\n internalType: 'uint32',\n name: 'blockTimestamp',\n type: 'uint32',\n },\n {\n internalType: 'int56',\n name: 'tickCumulative',\n type: 'int56',\n },\n {\n internalType: 'uint160',\n name: 'secondsPerLiquidityCumulativeX128',\n type: 'uint160',\n },\n {\n internalType: 'bool',\n name: 'initialized',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32[]',\n name: 'secondsAgos',\n type: 'uint32[]',\n },\n ],\n name: 'observe',\n outputs: [\n {\n internalType: 'int56[]',\n name: 'tickCumulatives',\n type: 'int56[]',\n },\n {\n internalType: 'uint160[]',\n name: 'secondsPerLiquidityCumulativeX128s',\n type: 'uint160[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n name: 'positions',\n outputs: [\n {\n internalType: 'uint128',\n name: 'liquidity',\n type: 'uint128',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'tokensOwed1',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'protocolFees',\n outputs: [\n {\n internalType: 'uint128',\n name: 'token0',\n type: 'uint128',\n },\n {\n internalType: 'uint128',\n name: 'token1',\n type: 'uint128',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint8',\n name: 'feeProtocol0',\n type: 'uint8',\n },\n {\n internalType: 'uint8',\n name: 'feeProtocol1',\n type: 'uint8',\n },\n ],\n name: 'setFeeProtocol',\n outputs: [],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [],\n name: 'slot0',\n outputs: [\n {\n internalType: 'uint160',\n name: 'sqrtPriceX96',\n type: 'uint160',\n },\n {\n internalType: 'int24',\n name: 'tick',\n type: 'int24',\n },\n {\n internalType: 'uint16',\n name: 'observationIndex',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'observationCardinality',\n type: 'uint16',\n },\n {\n internalType: 'uint16',\n name: 'observationCardinalityNext',\n type: 'uint16',\n },\n {\n internalType: 'uint8',\n name: 'feeProtocol',\n type: 'uint8',\n },\n {\n internalType: 'bool',\n name: 'unlocked',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'int24',\n name: 'tickLower',\n type: 'int24',\n },\n {\n internalType: 'int24',\n name: 'tickUpper',\n type: 'int24',\n },\n ],\n name: 'snapshotCumulativesInside',\n outputs: [\n {\n internalType: 'int56',\n name: 'tickCumulativeInside',\n type: 'int56',\n },\n {\n internalType: 'uint160',\n name: 'secondsPerLiquidityInsideX128',\n type: 'uint160',\n },\n {\n internalType: 'uint32',\n name: 'secondsInside',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'recipient',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'zeroForOne',\n type: 'bool',\n },\n {\n internalType: 'int256',\n name: 'amountSpecified',\n type: 'int256',\n },\n {\n internalType: 'uint160',\n name: 'sqrtPriceLimitX96',\n type: 'uint160',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'swap',\n outputs: [\n {\n internalType: 'int256',\n name: 'amount0',\n type: 'int256',\n },\n {\n internalType: 'int256',\n name: 'amount1',\n type: 'int256',\n },\n ],\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'int16',\n name: '',\n type: 'int16',\n },\n ],\n name: 'tickBitmap',\n outputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'tickSpacing',\n outputs: [\n {\n internalType: 'int24',\n name: '',\n type: 'int24',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'int24',\n name: '',\n type: 'int24',\n },\n ],\n name: 'ticks',\n outputs: [\n {\n internalType: 'uint128',\n name: 'liquidityGross',\n type: 'uint128',\n },\n {\n internalType: 'int128',\n name: 'liquidityNet',\n type: 'int128',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n },\n {\n internalType: 'uint256',\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n },\n {\n internalType: 'int56',\n name: 'tickCumulativeOutside',\n type: 'int56',\n },\n {\n internalType: 'uint160',\n name: 'secondsPerLiquidityOutsideX128',\n type: 'uint160',\n },\n {\n internalType: 'uint32',\n name: 'secondsOutside',\n type: 'uint32',\n },\n {\n internalType: 'bool',\n name: 'initialized',\n type: 'bool',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token0',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'token1',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","export const WETHAbi = [\n {\n constant: true,\n inputs: [],\n name: 'name',\n outputs: [{ name: '', type: 'string' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'guy', type: 'address' },\n { name: 'wad', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'src', type: 'address' },\n { name: 'dst', type: 'address' },\n { name: 'wad', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: false,\n inputs: [{ name: 'wad', type: 'uint256' }],\n name: 'withdraw',\n outputs: [],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', type: 'string' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: false,\n inputs: [\n { name: 'dst', type: 'address' },\n { name: 'wad', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', type: 'bool' }],\n payable: false,\n stateMutability: 'payable' /*nonpayable*/,\n type: 'function',\n },\n {\n constant: false,\n inputs: [],\n name: 'deposit',\n outputs: [],\n payable: true,\n stateMutability: 'payable',\n type: 'function',\n },\n {\n constant: true,\n inputs: [\n { name: '', type: 'address' },\n { name: '', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n { payable: true, stateMutability: 'payable', type: 'fallback' },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'src', type: 'address' },\n { indexed: true, name: 'guy', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'src', type: 'address' },\n { indexed: true, name: 'dst', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'dst', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'src', type: 'address' },\n { indexed: false, name: 'wad', type: 'uint256' },\n ],\n name: 'Withdrawal',\n type: 'event',\n },\n] as const\n","//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BuilderFactory\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const builderFactoryAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'OWNER',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'builderCode', internalType: 'uint48', type: 'uint48' },\n { name: 'builderAdmin', internalType: 'address', type: 'address' },\n ],\n name: 'deployBuilder',\n outputs: [{ name: 'wallet', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'builderCode', internalType: 'uint48', type: 'uint48' }],\n name: 'predictBuilderWallet',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'builderCode',\n internalType: 'uint48',\n type: 'uint48',\n indexed: true,\n },\n {\n name: 'wallet',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'builderAdmin',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n ],\n name: 'BuilderWalletDeployed',\n },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// BuilderWallet\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const builderWalletAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'factory', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'FACTORY',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'builderAdmin',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: '_builderAdmin', internalType: 'address', type: 'address' }],\n name: 'init',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n ],\n name: 'sweep',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'builderAdmin',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n ],\n name: 'BuilderWalletInitialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'token',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TokensSwept',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'NotBuilder' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CollateralTrackerV2\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const collateralTrackerV2Abi = [\n { type: 'constructor', inputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n inputs: [],\n name: 'accrueInterest',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: 'allowance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'asset',\n outputs: [{ name: 'assetTokenAddress', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'assetsAndInterest',\n outputs: [\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'assetsOf',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'borrowIndex',\n outputs: [{ name: '', internalType: 'uint80', type: 'uint80' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n name: 'convertToAssets',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n name: 'convertToShares',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'delegatee', internalType: 'address', type: 'address' }],\n name: 'delegate',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'assets', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n ],\n name: 'deposit',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getPoolData',\n outputs: [\n { name: 'depositedAssets', internalType: 'uint256', type: 'uint256' },\n { name: 'insideAMM', internalType: 'uint256', type: 'uint256' },\n { name: 'creditedShares', internalType: 'uint256', type: 'uint256' },\n {\n name: 'currentPoolUtilization',\n internalType: 'uint256',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'interestRate',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n name: 'interestState',\n outputs: [\n { name: 'userBorrowIndex', internalType: 'int128', type: 'int128' },\n { name: 'netBorrows', internalType: 'int128', type: 'int128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'lastInteractionTimestamp',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'address', type: 'address' }],\n name: 'maxDeposit',\n outputs: [{ name: 'maxAssets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'address', type: 'address' }],\n name: 'maxMint',\n outputs: [{ name: 'maxShares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'maxRedeem',\n outputs: [{ name: 'maxShares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'maxWithdraw',\n outputs: [{ name: 'maxAssets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'shares', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n ],\n name: 'mint',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'owedInterest',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'panopticPool',\n outputs: [{ name: '', internalType: 'contract PanopticPoolV2', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolFee',\n outputs: [{ name: '_poolFee', internalType: 'uint24', type: 'uint24' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolManager',\n outputs: [{ name: '', internalType: 'contract IPoolManager', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n name: 'previewDeposit',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n name: 'previewMint',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'previewOwedInterest',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n name: 'previewRedeem',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n name: 'previewWithdraw',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'rateAtTarget',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'shares', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'redeem',\n outputs: [{ name: 'assets', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'refunder', internalType: 'address', type: 'address' },\n { name: 'refundee', internalType: 'address', type: 'address' },\n { name: 'assets', internalType: 'int256', type: 'int256' },\n ],\n name: 'refund',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'delegatee', internalType: 'address', type: 'address' }],\n name: 'revoke',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'riskEngine',\n outputs: [{ name: '', internalType: 'contract IRiskEngine', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'optionOwner', internalType: 'address', type: 'address' },\n { name: 'longAmount', internalType: 'int128', type: 'int128' },\n { name: 'shortAmount', internalType: 'int128', type: 'int128' },\n { name: 'ammDeltaAmount', internalType: 'int128', type: 'int128' },\n { name: 'realizedPremium', internalType: 'int128', type: 'int128' },\n {\n name: 'riskParameters',\n internalType: 'RiskParameters',\n type: 'uint256',\n },\n ],\n name: 'settleBurn',\n outputs: [{ name: '', internalType: 'int128', type: 'int128' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'liquidator', internalType: 'address', type: 'address' },\n { name: 'liquidatee', internalType: 'address', type: 'address' },\n { name: 'bonus', internalType: 'int256', type: 'int256' },\n ],\n name: 'settleLiquidation',\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'optionOwner', internalType: 'address', type: 'address' },\n { name: 'longAmount', internalType: 'int128', type: 'int128' },\n { name: 'shortAmount', internalType: 'int128', type: 'int128' },\n { name: 'ammDeltaAmount', internalType: 'int128', type: 'int128' },\n {\n name: 'riskParameters',\n internalType: 'RiskParameters',\n type: 'uint256',\n },\n ],\n name: 'settleMint',\n outputs: [\n { name: '', internalType: 'uint32', type: 'uint32' },\n { name: '', internalType: 'int128', type: 'int128' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'token0',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'token1',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalAssets',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'underlyingIsToken0',\n outputs: [{ name: '_underlyingIsToken0', internalType: 'bool', type: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'underlyingToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],\n name: 'unlockCallback',\n outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'unrealizedGlobalInterest',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'assets', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'withdraw',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'assets', internalType: 'uint256', type: 'uint256' },\n { name: 'receiver', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'usePremiaAsCollateral', internalType: 'bool', type: 'bool' },\n ],\n name: 'withdraw',\n outputs: [{ name: 'shares', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'spender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'builder',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'commissionPaidProtocol',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n {\n name: 'commissionPaidBuilder',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'CommissionPaid',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'sender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'assets',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'shares',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Deposit',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'interestOwed',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'interestPaid',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'sharesBurned',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'InsolvencyPenaltyApplied',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'liquidatee',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'liquidator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'protocolLossAssets',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'protocolLossShares',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'ProtocolLossRealized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Transfer',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'sender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'receiver',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'assets',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'shares',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'Withdraw',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'BelowMinimumRedemption' },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'DepositTooLarge' },\n { type: 'error', inputs: [], name: 'ExceedsMaximumRedemption' },\n {\n type: 'error',\n inputs: [\n { name: 'tokenAddress', internalType: 'address', type: 'address' },\n { name: 'assetsRequested', internalType: 'uint256', type: 'uint256' },\n { name: 'assetBalance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'NotEnoughTokens',\n },\n { type: 'error', inputs: [], name: 'NotPanopticPool' },\n { type: 'error', inputs: [], name: 'PositionCountNotZero' },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'UnauthorizedUniswapCallback' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticFactoryV3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticFactoryV3Abi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_SFPM', internalType: 'contract SemiFungiblePositionManagerV3', type: 'address' },\n { name: '_univ3Factory', internalType: 'contract IUniswapV3Factory', type: 'address' },\n { name: '_poolReference', internalType: 'address', type: 'address' },\n { name: '_collateralReference', internalType: 'address', type: 'address' },\n { name: 'properties', internalType: 'bytes32[]', type: 'bytes32[]' },\n { name: 'indices', internalType: 'uint256[][]', type: 'uint256[][]' },\n { name: 'pointers', internalType: 'Pointer[][]', type: 'uint256[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'panopticPool', internalType: 'address', type: 'address' },\n { name: 'symbol0', internalType: 'string', type: 'string' },\n { name: 'symbol1', internalType: 'string', type: 'string' },\n { name: 'fee', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'constructMetadata',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token0', internalType: 'address', type: 'address' },\n { name: 'token1', internalType: 'address', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'riskEngine', internalType: 'contract IRiskEngine', type: 'address' },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n ],\n name: 'deployNewPool',\n outputs: [\n { name: 'newPoolContract', internalType: 'contract PanopticPoolV2', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n name: 'getApproved',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'univ3pool', internalType: 'contract IUniswapV3Pool', type: 'address' },\n { name: 'riskEngine', internalType: 'contract IRiskEngine', type: 'address' },\n ],\n name: 'getPanopticPool',\n outputs: [{ name: '', internalType: 'contract PanopticPoolV2', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'deployerAddress', internalType: 'address', type: 'address' },\n { name: 'v3Pool', internalType: 'address', type: 'address' },\n { name: 'riskEngine', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n { name: 'loops', internalType: 'uint256', type: 'uint256' },\n { name: 'minTargetRarity', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'minePoolAddress',\n outputs: [\n { name: 'bestSalt', internalType: 'uint96', type: 'uint96' },\n { name: 'highestRarity', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n name: 'ownerOf',\n outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n name: 'tokenURI',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'operator', internalType: 'address', type: 'address', indexed: true },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'poolAddress',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n indexed: true,\n },\n {\n name: 'uniswapPool',\n internalType: 'contract IUniswapV3Pool',\n type: 'address',\n indexed: true,\n },\n {\n name: 'collateralTracker0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n { name: 'riskEngine', internalType: 'contract IRiskEngine', type: 'address', indexed: false },\n ],\n name: 'PoolDeployed',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Transfer',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'CreateFail' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticFactoryV4\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticFactoryV4Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_SFPM',\n internalType: 'contract SemiFungiblePositionManagerV4',\n type: 'address',\n },\n {\n name: '_manager',\n internalType: 'contract IPoolManager',\n type: 'address',\n },\n { name: '_poolReference', internalType: 'address', type: 'address' },\n {\n name: '_collateralReference',\n internalType: 'address',\n type: 'address',\n },\n { name: 'properties', internalType: 'bytes32[]', type: 'bytes32[]' },\n { name: 'indices', internalType: 'uint256[][]', type: 'uint256[][]' },\n { name: 'pointers', internalType: 'Pointer[][]', type: 'uint256[][]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'panopticPool', internalType: 'address', type: 'address' },\n { name: 'symbol0', internalType: 'string', type: 'string' },\n { name: 'symbol1', internalType: 'string', type: 'string' },\n { name: 'fee', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'constructMetadata',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'key',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n {\n name: 'riskEngine',\n internalType: 'contract IRiskEngine',\n type: 'address',\n },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n ],\n name: 'deployNewPool',\n outputs: [\n {\n name: 'newPoolContract',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n name: 'getApproved',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'keyV4',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n {\n name: 'riskEngine',\n internalType: 'contract IRiskEngine',\n type: 'address',\n },\n ],\n name: 'getPanopticPool',\n outputs: [{ name: '', internalType: 'contract PanopticPoolV2', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'deployerAddress', internalType: 'address', type: 'address' },\n {\n name: 'key',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n { name: 'riskEngine', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'uint96', type: 'uint96' },\n { name: 'loops', internalType: 'uint256', type: 'uint256' },\n { name: 'minTargetRarity', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'minePoolAddress',\n outputs: [\n { name: 'bestSalt', internalType: 'uint96', type: 'uint96' },\n { name: 'highestRarity', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'id', internalType: 'uint256', type: 'uint256' }],\n name: 'ownerOf',\n outputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }],\n name: 'tokenURI',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'id', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'spender',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'poolAddress',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n indexed: true,\n },\n { name: 'idV4', internalType: 'PoolId', type: 'bytes32', indexed: true },\n {\n name: 'collateralTracker0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n {\n name: 'collateralTracker1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n indexed: false,\n },\n {\n name: 'riskEngine',\n internalType: 'contract IRiskEngine',\n type: 'address',\n indexed: false,\n },\n ],\n name: 'PoolDeployed',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: true },\n ],\n name: 'Transfer',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'CreateFail' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'ZeroAddress' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticPoolV2\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticPoolV2Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_sfpm',\n internalType: 'contract ISemiFungiblePositionManager',\n type: 'address',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'SFPM',\n outputs: [\n {\n name: '',\n internalType: 'contract ISemiFungiblePositionManager',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'minValue0', internalType: 'uint256', type: 'uint256' },\n { name: 'minValue1', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'assertMinCollateralValues',\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'collateralToken0',\n outputs: [\n {\n name: '',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'collateralToken1',\n outputs: [\n {\n name: '',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n {\n name: 'finalPositionIdList',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n { name: 'positionSizes', internalType: 'uint128[]', type: 'uint128[]' },\n {\n name: 'tickAndSpreadLimits',\n internalType: 'int24[3][]',\n type: 'int24[3][]',\n },\n { name: 'usePremiaAsCollateral', internalType: 'bool', type: 'bool' },\n { name: 'builderCode', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'dispatch',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionIdListFrom',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n { name: 'account', internalType: 'address', type: 'address' },\n {\n name: 'positionIdListTo',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n {\n name: 'positionIdListToFinal',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n {\n name: 'usePremiaAsCollateral',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n name: 'dispatchFrom',\n outputs: [],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'getAssetsOf',\n outputs: [\n { name: 'assets0', internalType: 'uint256', type: 'uint256' },\n { name: 'assets1', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getChunkData',\n outputs: [\n {\n name: 'liquidities0',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'liquidities1',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n { name: 'settled0', internalType: 'LeftRightUnsigned', type: 'uint256' },\n { name: 'settled1', internalType: 'LeftRightUnsigned', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getCurrentTick',\n outputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'user', internalType: 'address', type: 'address' },\n { name: 'includePendingPremium', internalType: 'bool', type: 'bool' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getFullPositionsData',\n outputs: [\n {\n name: 'shortPremium',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'longPremium',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'positionBalances',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n {\n name: 'collateralRequirements',\n internalType: 'LeftRightUnsigned[]',\n type: 'uint256[]',\n },\n {\n name: 'netPremiaPerPosition',\n internalType: 'LeftRightSigned[]',\n type: 'int256[]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getOracleTicks',\n outputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'spotTick', internalType: 'int24', type: 'int24' },\n { name: 'medianTick', internalType: 'int24', type: 'int24' },\n { name: 'latestTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'builderCode', internalType: 'uint256', type: 'uint256' }],\n name: 'getRiskParameters',\n outputs: [\n {\n name: 'riskParameters',\n internalType: 'RiskParameters',\n type: 'uint256',\n },\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'getTWAP',\n outputs: [{ name: 'twapTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'isSafeMode',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'lockSafeMode',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [{ name: 'user', internalType: 'address', type: 'address' }],\n name: 'numberOfLegs',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'onERC1155Received',\n outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'pokeOracle',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolId',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolKey',\n outputs: [{ name: 'key', internalType: 'bytes', type: 'bytes' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'poolManager',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'riskEngine',\n outputs: [{ name: '', internalType: 'contract IRiskEngine', type: 'address' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'tickSpacing',\n outputs: [{ name: '', internalType: 'int24', type: 'int24' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [],\n name: 'unlockSafeMode',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'user', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'usePremiaAsCollateral', internalType: 'bool', type: 'bool' },\n ],\n name: 'validateCollateralWithdrawable',\n outputs: [],\n stateMutability: 'view',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'liquidator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'liquidatee',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'bonusAmounts',\n internalType: 'LeftRightSigned',\n type: 'int256',\n indexed: false,\n },\n ],\n name: 'AccountLiquidated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'exercisor',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'user', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'exerciseFee',\n internalType: 'LeftRightSigned',\n type: 'int256',\n indexed: false,\n },\n ],\n name: 'ForcedExercised',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'premiaByLeg',\n internalType: 'LeftRightSigned[4]',\n type: 'int256[4]',\n indexed: false,\n },\n ],\n name: 'OptionBurnt',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'balanceData',\n internalType: 'PositionBalance',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'OptionMinted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'user', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'legIndex',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'settledAmounts',\n internalType: 'LeftRightSigned',\n type: 'int256',\n indexed: false,\n },\n ],\n name: 'PremiumSettled',\n },\n {\n type: 'error',\n inputs: [\n { name: 'solvent', internalType: 'uint256', type: 'uint256' },\n { name: 'numberOfTicks', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'AccountInsolvent',\n },\n { type: 'error', inputs: [], name: 'AlreadyInitialized' },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'DuplicateTokenId' },\n { type: 'error', inputs: [], name: 'EffectiveLiquidityAboveThreshold' },\n { type: 'error', inputs: [], name: 'InputListFail' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'InvalidTickBound' },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NetLiquidityZero' },\n { type: 'error', inputs: [], name: 'NoLegsExercisable' },\n { type: 'error', inputs: [], name: 'NotGuardian' },\n { type: 'error', inputs: [], name: 'NotMarginCalled' },\n { type: 'error', inputs: [], name: 'PositionNotOwned' },\n { type: 'error', inputs: [], name: 'PriceImpactTooLarge' },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n { type: 'error', inputs: [], name: 'StaleOracle' },\n { type: 'error', inputs: [], name: 'TokenIdHasZeroLegs' },\n { type: 'error', inputs: [], name: 'TooManyLegsOpen' },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n { type: 'error', inputs: [], name: 'WrongPoolId' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// PanopticQuery\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const panopticQueryAbi = [\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'checkCollateral',\n outputs: [\n {\n name: 'collateralBalances0',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n {\n name: 'requiredCollaterals0',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n {\n name: 'collateralBalances1',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n {\n name: 'requiredCollaterals1',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'checkCollateral',\n outputs: [\n {\n name: 'balancesAndRequired',\n internalType: 'uint256[4]',\n type: 'uint256[4]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'checkCollateralListOutput',\n outputs: [\n { name: '', internalType: 'uint256[4][]', type: 'uint256[4][]' },\n { name: '', internalType: 'int256[]', type: 'int256[]' },\n { name: '', internalType: 'int24[]', type: 'int24[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getChunkData',\n outputs: [{ name: '', internalType: 'uint256[2][4][]', type: 'uint256[2][4][]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getLiquidationPrices',\n outputs: [\n { name: 'liquidationPriceDown', internalType: 'int24', type: 'int24' },\n { name: 'liquidationPriceUp', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n {\n name: 'existingPositionIds',\n internalType: 'TokenId[]',\n type: 'uint256[]',\n },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n ],\n name: 'getMaxPositionSizeBounds',\n outputs: [\n { name: 'maxSizeAtMinUtil', internalType: 'uint128', type: 'uint128' },\n { name: 'maxSizeAtMaxUtil', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'includePendingPremium', internalType: 'bool', type: 'bool' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'getNetLiquidationValue',\n outputs: [\n { name: 'value0', internalType: 'int256', type: 'int256' },\n { name: 'value1', internalType: 'int256', type: 'int256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getPortfolioValue',\n outputs: [\n { name: 'value0', internalType: 'int256', type: 'int256' },\n { name: 'value1', internalType: 'int256', type: 'int256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'atTicks', internalType: 'int24[]', type: 'int24[]' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n ],\n name: 'getPortfolioValueAtTicks',\n outputs: [\n { name: 'value0', internalType: 'int256[]', type: 'int256[]' },\n { name: 'value1', internalType: 'int256[]', type: 'int256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'getRequiredBase',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'startTick', internalType: 'int24', type: 'int24' },\n { name: 'nTicks', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getTickNets',\n outputs: [\n { name: 'tickData', internalType: 'int256[]', type: 'int256[]' },\n { name: 'liquidityNets', internalType: 'int256[]', type: 'int256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'isAccountSolvent',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n ],\n name: 'optimizeRiskPartners',\n outputs: [{ name: '', internalType: 'TokenId', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'pool', internalType: 'contract PanopticPool', type: 'address' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n { name: 'width', internalType: 'int24', type: 'int24' },\n ],\n name: 'scanChunks',\n outputs: [\n { name: '', internalType: 'int24[]', type: 'int24[]' },\n { name: '', internalType: 'uint128[2][]', type: 'uint128[2][]' },\n { name: '', internalType: 'uint128[2][]', type: 'uint128[2][]' },\n {\n name: '',\n internalType: 'LeftRightUnsigned[2][]',\n type: 'uint256[2][]',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'self', internalType: 'TokenId', type: 'uint256' }],\n name: 'validateTokenId',\n outputs: [],\n stateMutability: 'pure',\n },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n {\n type: 'error',\n inputs: [{ name: 'parameterType', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidTokenIdParameter',\n },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// RiskEngine\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const riskEngineAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_crossBuffer0', internalType: 'uint256', type: 'uint256' },\n { name: '_crossBuffer1', internalType: 'uint256', type: 'uint256' },\n { name: '_guardian', internalType: 'address', type: 'address' },\n { name: '_builderFactory', internalType: 'address', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'ADJUSTMENT_SPEED',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'BP_DECREASE_BUFFER',\n outputs: [{ name: '', internalType: 'uint32', type: 'uint32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'BUILDER_SPLIT',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'BUYER_COLLATERAL_RATIO',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'CROSS_BUFFER_0',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'CROSS_BUFFER_1',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'CURVE_STEEPNESS',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DECIMALS',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'EMA_PERIODS',\n outputs: [{ name: '', internalType: 'uint96', type: 'uint96' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'FORCE_EXERCISE_COST',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'GUARDIAN',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'INITIAL_RATE_AT_TARGET',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'IRM_MAX_ELAPSED_TIME',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAINT_MARGIN_RATE',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_BONUS',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_CLAMP_DELTA',\n outputs: [{ name: '', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_OPEN_LEGS',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_RATE_AT_TARGET',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_SPREAD',\n outputs: [{ name: '', internalType: 'uint24', type: 'uint24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_TICKS_DELTA',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MAX_TWAP_DELTA_DISPATCH',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'MIN_RATE_AT_TARGET',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'NOTIONAL_FEE',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'PREMIUM_FEE',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'PROTOCOL_SPLIT',\n outputs: [{ name: '', internalType: 'uint16', type: 'uint16' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'SATURATED_POOL_UTIL',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'SELLER_COLLATERAL_RATIO',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TARGET_POOL_UTIL',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TARGET_UTILIZATION',\n outputs: [{ name: '', internalType: 'int256', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'VEGOID',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n ],\n name: 'collect',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'collect',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'computeInternalMedian',\n outputs: [\n { name: 'medianTick', internalType: 'int24', type: 'int24' },\n {\n name: 'updatedOraclePack',\n internalType: 'OraclePack',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'utilization', internalType: 'int256', type: 'int256' },\n { name: 'crossBuffer', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'crossBufferRatio',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'oracleTick', internalType: 'int24', type: 'int24' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n {\n name: 'positionBalance',\n internalType: 'PositionBalance',\n type: 'uint256',\n },\n ],\n name: 'exerciseCost',\n outputs: [{ name: 'exerciseFees', internalType: 'LeftRightSigned', type: 'int256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'builderCode', internalType: 'uint256', type: 'uint256' }],\n name: 'getFeeRecipient',\n outputs: [{ name: 'feeRecipient', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'tokenData0',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'tokenData1',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n { name: 'atSqrtPriceX96', internalType: 'uint160', type: 'uint160' },\n { name: 'netPaid', internalType: 'LeftRightSigned', type: 'int256' },\n {\n name: 'shortPremium',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'loanAmounts',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n name: 'getLiquidationBonus',\n outputs: [\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionBalanceArray',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'user', internalType: 'address', type: 'address' },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n {\n name: 'shortPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'longPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'ct0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n {\n name: 'ct1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n name: 'getMargin',\n outputs: [\n {\n name: 'tokenData0',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'tokenData1',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'globalUtilizations',\n internalType: 'PositionBalance',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: '_oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n name: 'getOracleTicks',\n outputs: [\n { name: 'spotTick', internalType: 'int24', type: 'int24' },\n { name: 'medianTick', internalType: 'int24', type: 'int24' },\n { name: 'latestTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionBalanceArray',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n ],\n name: 'getPerPositionCollateralRequirements',\n outputs: [\n {\n name: 'collateralRequirements',\n internalType: 'LeftRightUnsigned[]',\n type: 'uint256[]',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'payor', internalType: 'address', type: 'address' },\n { name: 'fees', internalType: 'LeftRightSigned', type: 'int256' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n {\n name: 'ct0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n {\n name: 'ct1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n ],\n name: 'getRefundAmounts',\n outputs: [{ name: '', internalType: 'LeftRightSigned', type: 'int256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n { name: 'builderCode', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getRiskParameters',\n outputs: [{ name: '', internalType: 'RiskParameters', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: '_oraclePack', internalType: 'OraclePack', type: 'uint256' },\n { name: 'safeMode', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'getSolvencyTicks',\n outputs: [\n { name: '', internalType: 'int24[]', type: 'int24[]' },\n { name: '', internalType: 'OraclePack', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'guardian',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n {\n name: 'premiasByLeg',\n internalType: 'LeftRightSigned[4][]',\n type: 'int256[4][]',\n },\n {\n name: 'collateralRemaining',\n internalType: 'LeftRightSigned',\n type: 'int256',\n },\n { name: 'atSqrtPriceX96', internalType: 'uint160', type: 'uint160' },\n ],\n name: 'haircutPremia',\n outputs: [\n { name: 'bonusDeltas', internalType: 'LeftRightSigned', type: 'int256' },\n {\n name: 'haircutTotal',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'haircutPerLeg',\n internalType: 'LeftRightSigned[4][]',\n type: 'int256[4][]',\n },\n ],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'utilization', internalType: 'uint256', type: 'uint256' },\n {\n name: 'interestRateAccumulator',\n internalType: 'MarketState',\n type: 'uint256',\n },\n ],\n name: 'interestRate',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'positionBalanceArray',\n internalType: 'PositionBalance[]',\n type: 'uint256[]',\n },\n { name: 'positionIdList', internalType: 'TokenId[]', type: 'uint256[]' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'user', internalType: 'address', type: 'address' },\n {\n name: 'shortPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'longPremia',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n {\n name: 'ct0',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n {\n name: 'ct1',\n internalType: 'contract CollateralTrackerV2',\n type: 'address',\n },\n { name: 'buffer', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'isAccountSolvent',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'currentTick', internalType: 'int24', type: 'int24' },\n { name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' },\n ],\n name: 'isSafeMode',\n outputs: [{ name: 'safeMode', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'pool',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n },\n ],\n name: 'lockPool',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'oraclePack', internalType: 'OraclePack', type: 'uint256' }],\n name: 'twapEMA',\n outputs: [{ name: '', internalType: 'int24', type: 'int24' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'pool',\n internalType: 'contract PanopticPoolV2',\n type: 'address',\n },\n ],\n name: 'unlockPool',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'utilization', internalType: 'uint256', type: 'uint256' },\n {\n name: 'interestRateAccumulator',\n internalType: 'MarketState',\n type: 'uint256',\n },\n ],\n name: 'updateInterestRate',\n outputs: [\n { name: '', internalType: 'uint128', type: 'uint128' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'vegoid',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'pure',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'collateralToken',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'avgBorrowRate',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n {\n name: 'rateAtTarget',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'BorrowRateUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'lockMode', internalType: 'bool', type: 'bool', indexed: false }],\n name: 'GuardianSafeModeUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'token',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TokensCollected',\n },\n { type: 'error', inputs: [], name: 'BelowMinimumRedemption' },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'InvalidBuilderCode' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'LengthMismatch' },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NotGuardian' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SemiFungiblePositionManagerV3\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const semiFungiblePositionManagerV3Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_factory',\n internalType: 'contract IUniswapV3Factory',\n type: 'address',\n },\n {\n name: '_minEnforcedTickFillCost',\n internalType: 'uint256',\n type: 'uint256',\n },\n {\n name: '_supplyMultiplierTickFill',\n internalType: 'uint256',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'balanceOf',\n outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owners', internalType: 'address[]', type: 'address[]' },\n { name: 'ids', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n name: 'balanceOfBatch',\n outputs: [{ name: 'balances', internalType: 'uint256[]', type: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'burnTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'expandEnforcedTickRange',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getAccountFeesBase',\n outputs: [\n { name: 'feesBase0', internalType: 'int128', type: 'int128' },\n { name: 'feesBase1', internalType: 'int128', type: 'int128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getAccountLiquidity',\n outputs: [\n {\n name: 'accountLiquidities',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'isLong', internalType: 'uint256', type: 'uint256' },\n { name: 'vegoid', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getAccountPremium',\n outputs: [\n { name: '', internalType: 'uint128', type: 'uint128' },\n { name: '', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolKey', internalType: 'bytes', type: 'bytes' }],\n name: 'getCurrentTick',\n outputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getEnforcedTickLimits',\n outputs: [\n { name: '', internalType: 'int24', type: 'int24' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'id', internalType: 'bytes', type: 'bytes' },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'getPoolId',\n outputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getUniswapV3PoolFromId',\n outputs: [\n {\n name: 'uniswapV3Pool',\n internalType: 'contract IUniswapV3Pool',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token0', internalType: 'address', type: 'address' },\n { name: 'token1', internalType: 'address', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'initializeAMMPool',\n outputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'operator', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: 'approvedForAll', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'mintTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeBatchTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'amount0Owed', internalType: 'uint256', type: 'uint256' },\n { name: 'amount1Owed', internalType: 'uint256', type: 'uint256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'uniswapV3MintCallback',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'amount0Delta', internalType: 'int256', type: 'int256' },\n { name: 'amount1Delta', internalType: 'int256', type: 'int256' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'uniswapV3SwapCallback',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'uniswapPool',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'EnforcedTicksUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'univ3pool',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenType',\n internalType: 'uint256',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'tickLower',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'tickUpper',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'liquidityDelta',\n internalType: 'int128',\n type: 'int128',\n indexed: false,\n },\n ],\n name: 'LiquidityChunkUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'uniswapPool',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'poolId',\n internalType: 'uint64',\n type: 'uint64',\n indexed: false,\n },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'PoolInitialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionBurnt',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'caller',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionMinted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'ids',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n {\n name: 'amounts',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n ],\n name: 'TransferBatch',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: false },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TransferSingle',\n },\n { type: 'error', inputs: [], name: 'CastingError' },\n { type: 'error', inputs: [], name: 'ChunkHasZeroLiquidity' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'InvalidTickBound' },\n {\n type: 'error',\n inputs: [{ name: 'parameterType', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidTokenIdParameter',\n },\n { type: 'error', inputs: [], name: 'InvalidUniswapCallback' },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NotAuthorized' },\n { type: 'error', inputs: [], name: 'NotEnoughLiquidityInChunk' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'PositionTooLarge' },\n {\n type: 'error',\n inputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n name: 'PriceBoundFail',\n },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n {\n type: 'error',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferFailed',\n },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n { type: 'error', inputs: [], name: 'UnsafeRecipient' },\n { type: 'error', inputs: [], name: 'WrongUniswapPool' },\n] as const\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// SemiFungiblePositionManagerV4\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const semiFungiblePositionManagerV4Abi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: 'poolManager',\n internalType: 'contract IPoolManager',\n type: 'address',\n },\n {\n name: '_minEnforcedTickFillCost',\n internalType: 'uint256',\n type: 'uint256',\n },\n {\n name: '_nativeEnforcedTickFillCost',\n internalType: 'uint256',\n type: 'uint256',\n },\n {\n name: '_supplyMultiplierTickFill',\n internalType: 'uint256',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'tokenId', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'balanceOf',\n outputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owners', internalType: 'address[]', type: 'address[]' },\n { name: 'ids', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n name: 'balanceOfBatch',\n outputs: [{ name: 'balances', internalType: 'uint256[]', type: 'uint256[]' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'burnTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'expandEnforcedTickRange',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n ],\n name: 'getAccountLiquidity',\n outputs: [\n {\n name: 'accountLiquidities',\n internalType: 'LeftRightUnsigned',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'tokenType', internalType: 'uint256', type: 'uint256' },\n { name: 'tickLower', internalType: 'int24', type: 'int24' },\n { name: 'tickUpper', internalType: 'int24', type: 'int24' },\n { name: 'atTick', internalType: 'int24', type: 'int24' },\n { name: 'isLong', internalType: 'uint256', type: 'uint256' },\n { name: 'vegoid', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'getAccountPremium',\n outputs: [\n { name: '', internalType: 'uint128', type: 'uint128' },\n { name: '', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolKey', internalType: 'bytes', type: 'bytes' }],\n name: 'getCurrentTick',\n outputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getEnforcedTickLimits',\n outputs: [\n { name: '', internalType: 'int24', type: 'int24' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'id', internalType: 'bytes', type: 'bytes' },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'getPoolId',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n name: 'getUniswapV4PoolKeyFromId',\n outputs: [\n {\n name: '',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'key',\n internalType: 'struct PoolKey',\n type: 'tuple',\n components: [\n { name: 'currency0', internalType: 'Currency', type: 'address' },\n { name: 'currency1', internalType: 'Currency', type: 'address' },\n { name: 'fee', internalType: 'uint24', type: 'uint24' },\n { name: 'tickSpacing', internalType: 'int24', type: 'int24' },\n { name: 'hooks', internalType: 'contract IHooks', type: 'address' },\n ],\n },\n { name: 'vegoid', internalType: 'uint8', type: 'uint8' },\n ],\n name: 'initializeAMMPool',\n outputs: [{ name: 'poolId', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'operator', internalType: 'address', type: 'address' },\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: 'approvedForAll', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'poolKey', internalType: 'bytes', type: 'bytes' },\n { name: 'tokenId', internalType: 'TokenId', type: 'uint256' },\n { name: 'positionSize', internalType: 'uint128', type: 'uint128' },\n { name: 'tickLimitLow', internalType: 'int24', type: 'int24' },\n { name: 'tickLimitHigh', internalType: 'int24', type: 'int24' },\n ],\n name: 'mintTokenizedPosition',\n outputs: [\n { name: '', internalType: 'LeftRightUnsigned[4]', type: 'uint256[4]' },\n { name: '', internalType: 'LeftRightSigned', type: 'int256' },\n { name: '', internalType: 'int24', type: 'int24' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes[]', type: 'bytes[]' }],\n name: 'multicall',\n outputs: [{ name: 'results', internalType: 'bytes[]', type: 'bytes[]' }],\n stateMutability: 'payable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'reentrancyGuardEntered',\n outputs: [{ name: 'entered', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'uint256[]', type: 'uint256[]' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeBatchTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'address', type: 'address' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'uint256', type: 'uint256' },\n { name: '', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'safeTransferFrom',\n outputs: [],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [\n { name: 'operator', internalType: 'address', type: 'address' },\n { name: 'approved', internalType: 'bool', type: 'bool' },\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],\n name: 'supportsInterface',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],\n name: 'unlockCallback',\n outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'approved', internalType: 'bool', type: 'bool', indexed: false },\n ],\n name: 'ApprovalForAll',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'idV4', internalType: 'PoolId', type: 'bytes32', indexed: true },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'EnforcedTicksUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'poolId',\n internalType: 'PoolId',\n type: 'bytes32',\n indexed: true,\n },\n {\n name: 'owner',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenType',\n internalType: 'uint256',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'tickLower',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'tickUpper',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'liquidityDelta',\n internalType: 'int128',\n type: 'int128',\n indexed: false,\n },\n ],\n name: 'LiquidityChunkUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'idV4', internalType: 'PoolId', type: 'bytes32', indexed: true },\n {\n name: 'poolId',\n internalType: 'uint64',\n type: 'uint64',\n indexed: false,\n },\n {\n name: 'minEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n {\n name: 'maxEnforcedTick',\n internalType: 'int24',\n type: 'int24',\n indexed: false,\n },\n ],\n name: 'PoolInitialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'recipient',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionBurnt',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'caller',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n {\n name: 'tokenId',\n internalType: 'TokenId',\n type: 'uint256',\n indexed: true,\n },\n {\n name: 'positionSize',\n internalType: 'uint128',\n type: 'uint128',\n indexed: false,\n },\n ],\n name: 'TokenizedPositionMinted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n {\n name: 'ids',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n {\n name: 'amounts',\n internalType: 'uint256[]',\n type: 'uint256[]',\n indexed: false,\n },\n ],\n name: 'TransferBatch',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n {\n name: 'operator',\n internalType: 'address',\n type: 'address',\n indexed: true,\n },\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'id', internalType: 'uint256', type: 'uint256', indexed: false },\n {\n name: 'amount',\n internalType: 'uint256',\n type: 'uint256',\n indexed: false,\n },\n ],\n name: 'TransferSingle',\n },\n { type: 'error', inputs: [], name: 'ChunkHasZeroLiquidity' },\n { type: 'error', inputs: [], name: 'InvalidTick' },\n { type: 'error', inputs: [], name: 'InvalidTickBound' },\n {\n type: 'error',\n inputs: [{ name: 'parameterType', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidTokenIdParameter',\n },\n { type: 'error', inputs: [], name: 'LiquidityTooHigh' },\n { type: 'error', inputs: [], name: 'NotAuthorized' },\n { type: 'error', inputs: [], name: 'NotEnoughLiquidityInChunk' },\n { type: 'error', inputs: [], name: 'PoolNotInitialized' },\n { type: 'error', inputs: [], name: 'PositionTooLarge' },\n {\n type: 'error',\n inputs: [{ name: 'currentTick', internalType: 'int24', type: 'int24' }],\n name: 'PriceBoundFail',\n },\n { type: 'error', inputs: [], name: 'Reentrancy' },\n { type: 'error', inputs: [], name: 'UnauthorizedUniswapCallback' },\n { type: 'error', inputs: [], name: 'UnderOverFlow' },\n { type: 'error', inputs: [], name: 'UnsafeRecipient' },\n { type: 'error', inputs: [], name: 'WrongUniswapPool' },\n] as const\n","import { BASE_CHAIN_ID, getEthUsdcMarket, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst BASE_DEPLOYMENT = requireChainDeployment(BASE_CHAIN_ID)\nconst BASE_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(BASE_DEPLOYMENT)\nconst BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\nconst BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers\nconst BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool\n\nexport const UsdcPlpVaultBaseProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 1200000,\n vaultCapInUnderlying: 300_000_000n, // 300 USDC\n vaultCapInShares: 3_000_000_000_000_000n, // ~300 USDC (verify share scaling on-chain)\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n chainId: BASE_CHAIN_ID,\n poolDeploymentBlock: 43_000_000,\n hypoVaultAddress: BASE_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: BASE_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: BASE_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: BASE_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: BASE_ETH_USDC_5BPS_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n deltaThresholdBps: 200n,\n maxHedgeSlots: 2,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n","import { getEthUsdcMarket, MAINNET_CHAIN_ID, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst MAINNET_DEPLOYMENT = requireChainDeployment(MAINNET_CHAIN_ID)\nconst MAINNET_ETH_USDC_MARKET = getEthUsdcMarket(MAINNET_DEPLOYMENT)\nconst MAINNET_HYPOVAULT_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.vaults\nconst MAINNET_HYPOVAULT_MANAGER_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.managers\nconst MAINNET_PANOPTIC_POOL_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.pool\nconst MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES = {\n panopticPool: '0x000000007588B488d180899cDEa2080a886D2441',\n collateralTracker0: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n collateralTracker1: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n} as const\n\nexport const UsdcPlpVaultMainnetProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n artifactSet: 'mainnet-prod',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 19_500_000_000n, // Fallback cap: 19,500 USDC if share-price-derived cap is unavailable\n vaultCapInShares: 19_500_000_000_000_000n, // Active cap target: 19,500 USDC in share-cap mode\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n poolDeploymentBlock: 25_302_077,\n chainId: MAINNET_CHAIN_ID,\n hypoVaultAddress: MAINNET_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: MAINNET_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: MAINNET_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: MAINNET_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: MAINNET_ETH_USDC_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n deltaThresholdBps: 1500n,\n maxHedgeSlots: 3,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n\nexport const UsdcPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig = {\n ...UsdcPlpVaultMainnetProdConfig,\n artifactSet: 'mainnet-legacy',\n manageCycleIntervalMs: 3600000,\n poolDeploymentBlock: 24_822_309,\n hypoVaultAddress: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n addresses: {\n ...UsdcPlpVaultMainnetProdConfig.addresses,\n ethUsdc500bpsV4Collateral0: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4Collateral1: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: '0xf42EED8F0d3326ad59fc1f5d4c4009B5F6B4D87c',\n hypoVault: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n}\n","import { getEthUsdcMarket, requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const UsdcPlpVaultSepoliaDevConfig: HypoVaultManagerConfig = {\n deployment: 'dev',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 300_000_000n, // 300 USDC\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: SEPOLIA_ETH_USDC_5BPS_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import { getEthUsdcMarket, requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const UsdcPlpVaultSepoliaProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 0n,\n manageCycleIntervalMs: 1200000,\n vaultCapInUnderlying: 300_000_000n, // 300 USDC\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 2000,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral1: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.usdcPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.usdcPlpVault,\n underlyingToken: SEPOLIA_ETH_USDC_5BPS_MARKET.currency1,\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import { BASE_CHAIN_ID, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst BASE_DEPLOYMENT = requireChainDeployment(BASE_CHAIN_ID)\nconst BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\nconst BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers\nconst BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool\n\nexport const WethPlpVaultBaseProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 1200000,\n vaultCapInUnderlying: 1_000_000_000_000_000_000n, // 1 WETH\n vaultCapInShares: 1_000_000_000_000_000_000_000_000n, // ~1 WETH (verify share scaling on-chain)\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n chainId: BASE_CHAIN_ID,\n poolDeploymentBlock: 43_000_000,\n hypoVaultAddress: BASE_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: BASE_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: BASE_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: BASE_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0x4200000000000000000000000000000000000006',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: BASE_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 2,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n","import { MAINNET_CHAIN_ID, requireChainDeployment } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst MAINNET_DEPLOYMENT = requireChainDeployment(MAINNET_CHAIN_ID)\nconst MAINNET_HYPOVAULT_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.vaults\nconst MAINNET_HYPOVAULT_MANAGER_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.managers\nconst MAINNET_PANOPTIC_POOL_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.pool\nconst MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES = {\n panopticPool: '0x000000007588B488d180899cDEa2080a886D2441',\n collateralTracker0: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n collateralTracker1: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n} as const\n\nexport const WethPlpVaultMainnetProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n artifactSet: 'mainnet-prod',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 50_000_000_000_000_000_000n, // Fallback cap: 50 WETH if share-price-derived cap is unavailable\n vaultCapInShares: 50_000_000_000_000_000_000_000_000n, // Active cap target: 50 WETH in share-cap mode\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n poolDeploymentBlock: 25_302_077,\n chainId: MAINNET_CHAIN_ID,\n hypoVaultAddress: MAINNET_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: MAINNET_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: MAINNET_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: MAINNET_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n deltaThresholdBps: 100n,\n maxHedgeSlots: 3,\n },\n alerts: {\n outOfRangeEnabled: true,\n },\n}\n\nexport const WethPlpVaultMainnetLegacyConfig: HypoVaultManagerConfig = {\n ...WethPlpVaultMainnetProdConfig,\n artifactSet: 'mainnet-legacy',\n manageCycleIntervalMs: 3600000,\n poolDeploymentBlock: 24_822_309,\n hypoVaultAddress: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n addresses: {\n ...WethPlpVaultMainnetProdConfig.addresses,\n ethUsdc500bpsV4Collateral0: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4Collateral1: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n ethUsdc500bpsV4PanopticPool: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: '0xcc80f113298DdF9D399323D5288aE5Eeaed20D44',\n hypoVault: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: MAINNET_LEGACY_PANOPTIC_POOL_ADDRESSES.collateralTracker1,\n allocationBps: 10000,\n },\n ],\n },\n}\n","import { requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const WethPlpVaultSepoliaDevConfig: HypoVaultManagerConfig = {\n deployment: 'dev',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 1_000_000_000_000_000_000n, // 1 WETH\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import { requireChainDeployment, SEPOLIA_CHAIN_ID } from '../chainDeployments'\nimport type { HypoVaultManagerConfig } from './schema'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nconst SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nconst SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\n\nexport const WethPlpVaultSepoliaProdConfig: HypoVaultManagerConfig = {\n deployment: 'prod',\n vaultAssetIndex: 1n,\n manageCycleIntervalMs: 600000,\n vaultCapInUnderlying: 1_000_000_000_000_000_000n, // 1 WETH\n allowUnlimitedDepositRequestIfCapNotReached: true,\n maxBuyingPowerUsageBps: 6600,\n chainId: SEPOLIA_CHAIN_ID,\n hypoVaultAddress: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n addresses: {\n ethUsdc500bpsV4Collateral0: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n ethUsdc500bpsV4PanopticPool: SEPOLIA_PANOPTIC_POOL_ADDRESSES.panopticPool,\n hypoVaultManagerWithMerkleVerification: SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES.wethPlpVaultManager,\n hypoVault: SEPOLIA_HYPOVAULT_ADDRESSES.wethPlpVault,\n underlyingToken: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n manualTxDefaults: {\n collateralAllocations: [\n {\n trackerAddress: SEPOLIA_PANOPTIC_POOL_ADDRESSES.collateralTracker0,\n allocationBps: 10000,\n },\n ],\n },\n deltaHedge: {\n maxHedgeSlots: 12,\n },\n}\n","import type { Address } from 'viem'\n\nimport type { HypoVaultManagerConfig } from './schema'\nimport { UsdcPlpVaultBaseProdConfig } from './usdcPlpVaultBaseProdConfig'\nimport {\n UsdcPlpVaultMainnetLegacyConfig,\n UsdcPlpVaultMainnetProdConfig,\n} from './usdcPlpVaultMainnetProdConfig'\nimport { UsdcPlpVaultSepoliaDevConfig } from './usdcPlpVaultSepoliaDevConfig'\nimport { UsdcPlpVaultSepoliaProdConfig } from './usdcPlpVaultSepoliaProdConfig'\nimport { WethPlpVaultBaseProdConfig } from './wethPlpVaultBaseProdConfig'\nimport {\n WethPlpVaultMainnetLegacyConfig,\n WethPlpVaultMainnetProdConfig,\n} from './wethPlpVaultMainnetProdConfig'\nimport { WethPlpVaultSepoliaDevConfig } from './wethPlpVaultSepoliaDevConfig'\nimport { WethPlpVaultSepoliaProdConfig } from './wethPlpVaultSepoliaProdConfig'\n\nconst ALL_HYPO_VAULT_CONFIGS: HypoVaultManagerConfig[] = [\n WethPlpVaultBaseProdConfig,\n UsdcPlpVaultBaseProdConfig,\n WethPlpVaultSepoliaDevConfig,\n WethPlpVaultSepoliaProdConfig,\n UsdcPlpVaultSepoliaDevConfig,\n UsdcPlpVaultSepoliaProdConfig,\n WethPlpVaultMainnetProdConfig,\n UsdcPlpVaultMainnetProdConfig,\n WethPlpVaultMainnetLegacyConfig,\n UsdcPlpVaultMainnetLegacyConfig,\n]\n\ntype GetHypoVaultConfigOptions = {\n preferredDeployment?: HypoVaultManagerConfig['deployment']\n}\n\nexport function getHypoVaultConfigForVault(\n vaultAddress: Address,\n chainId: number,\n options?: GetHypoVaultConfigOptions,\n): HypoVaultManagerConfig | undefined {\n const vaultLower = vaultAddress.toLowerCase()\n const matchingConfigs = ALL_HYPO_VAULT_CONFIGS.filter(\n (c) => c.hypoVaultAddress?.toLowerCase() === vaultLower && c.chainId === chainId,\n )\n if (matchingConfigs.length === 0) {\n return undefined\n }\n\n const preferredDeployment = options?.preferredDeployment\n if (preferredDeployment !== undefined) {\n const preferredConfig = matchingConfigs.find((c) => c.deployment === preferredDeployment)\n if (preferredConfig !== undefined) {\n return preferredConfig\n }\n }\n\n const deploymentRank: Record<HypoVaultManagerConfig['deployment'], number> = {\n prod: 0,\n dev: 1,\n }\n return [...matchingConfigs].sort(\n (a, b) => deploymentRank[a.deployment] - deploymentRank[b.deployment],\n )[0]\n}\n","import {\n BASE_CHAIN_ID,\n getEthUsdcMarket,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from '../chainDeployments'\n\nconst SEPOLIA_DEPLOYMENT = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst BASE_DEPLOYMENT = requireChainDeployment(BASE_CHAIN_ID)\nconst MAINNET_DEPLOYMENT = requireChainDeployment(MAINNET_CHAIN_ID)\n\nexport const MAX_PRICE_DEVIATION = 100 as const\nexport const WSPCXX_USDC_MAX_PRICE_DEVIATION = 10000 as const\nexport const DEFAULT_TRIGGER_TICK = 150 as const\n\nexport const SEPOLIA_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: SEPOLIA_DEPLOYMENT.panoptic.pool.panopticPool,\n token0: getEthUsdcMarket(SEPOLIA_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(SEPOLIA_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const SEPOLIA_VAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\n\nexport const BASE_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: BASE_DEPLOYMENT.panoptic.pool.panopticPool,\n token0: getEthUsdcMarket(BASE_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(BASE_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const BASE_VAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\n\nexport const MAINNET_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: MAINNET_DEPLOYMENT.panoptic.pool.panopticPool,\n token0: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const MAINNET_USDC_PLP_POOL_INFOS = [\n ...MAINNET_DEFAULT_POOL_INFOS,\n {\n maxPriceDeviation: WSPCXX_USDC_MAX_PRICE_DEVIATION,\n pool: '0x0f34e6fCda264349Db10d445BD95f529cbe88090',\n token0: '0x8e2eeD8b8B5E13Ea7BF38e50d7821d2C57309072',\n token1: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n] as const\n\nexport const MAINNET_LEGACY_DEFAULT_POOL_INFOS = [\n {\n maxPriceDeviation: MAX_PRICE_DEVIATION,\n pool: '0x000000007588B488d180899cDEa2080a886D2441',\n token0: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency0,\n token1: getEthUsdcMarket(MAINNET_DEPLOYMENT).currency1,\n },\n] as const\n\nexport const MAINNET_VAULT_ADDRESSES = MAINNET_DEPLOYMENT.hypovault.vaults\nexport const MAINNET_LEGACY_VAULT_ADDRESSES = {\n wethPlpVault: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n usdcPlpVault: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n} as const\nexport { MAINNET_CHAIN_ID }\n","import {\n BASE_DEFAULT_POOL_INFOS,\n BASE_VAULT_ADDRESSES,\n DEFAULT_TRIGGER_TICK,\n} from './poolInfosConfig'\n\nexport const BaseUSDCPLPVaultPoolInfos = {\n vaultAddress: BASE_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: BASE_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n BASE_DEFAULT_POOL_INFOS,\n BASE_VAULT_ADDRESSES,\n DEFAULT_TRIGGER_TICK,\n} from './poolInfosConfig'\n\nexport const BaseWETHPLPVaultPoolInfos = {\n vaultAddress: BASE_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: BASE_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n MAINNET_LEGACY_DEFAULT_POOL_INFOS,\n MAINNET_LEGACY_VAULT_ADDRESSES,\n MAINNET_USDC_PLP_POOL_INFOS,\n MAINNET_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const MainnetUSDCPLPVaultPoolInfos = {\n vaultAddress: MAINNET_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: MAINNET_USDC_PLP_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n\nexport const MainnetUSDCPLPLegacyVaultPoolInfos = {\n vaultAddress: MAINNET_LEGACY_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: MAINNET_LEGACY_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n MAINNET_DEFAULT_POOL_INFOS,\n MAINNET_LEGACY_DEFAULT_POOL_INFOS,\n MAINNET_LEGACY_VAULT_ADDRESSES,\n MAINNET_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const MainnetWETHPLPVaultPoolInfos = {\n vaultAddress: MAINNET_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: MAINNET_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n\nexport const MainnetWETHPLPLegacyVaultPoolInfos = {\n vaultAddress: MAINNET_LEGACY_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: MAINNET_LEGACY_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n SEPOLIA_DEFAULT_POOL_INFOS,\n SEPOLIA_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const SepoliaUSDCPLPVaultPoolInfos = {\n vaultAddress: SEPOLIA_VAULT_ADDRESSES.usdcPlpVault,\n poolInfos: SEPOLIA_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import {\n DEFAULT_TRIGGER_TICK,\n SEPOLIA_DEFAULT_POOL_INFOS,\n SEPOLIA_VAULT_ADDRESSES,\n} from './poolInfosConfig'\n\nexport const SepoliaWETHPLPVaultPoolInfos = {\n vaultAddress: SEPOLIA_VAULT_ADDRESSES.wethPlpVault,\n poolInfos: SEPOLIA_DEFAULT_POOL_INFOS.map((poolInfo) => ({\n ...poolInfo,\n triggerTick: DEFAULT_TRIGGER_TICK,\n })),\n} as const\n","import type { Address, Client, Hex } from 'viem'\nimport { encodeAbiParameters, parseAbi } from 'viem'\nimport { readContract } from 'viem/actions'\n\nimport { PanopticVaultAccountantManagerInputAbi } from '../../abis/PanopticVaultAccountantManagerInput'\n\nexport type PoolInfo = {\n pool: Address\n token0: Address\n token1: Address\n maxPriceDeviation: number\n}\n\nexport type BuildManagerInputParams = {\n viemClient: Client\n poolInfos: readonly PoolInfo[]\n tokenIds: bigint[][]\n underlyingToken: Address\n wethAddress?: Address\n erc4626Vaults?: readonly Address[]\n}\n\nconst NATIVE_ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'\nconst NATIVE_ETH_ALIAS_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\n\nexport function isUnderlyingEquivalentToken({\n token,\n underlyingToken,\n wethAddress,\n}: {\n token: Address\n underlyingToken: Address\n wethAddress?: Address\n}): boolean {\n const tokenLower = token.toLowerCase()\n const underlyingLower = underlyingToken.toLowerCase()\n if (tokenLower === underlyingLower) {\n return true\n }\n\n if (wethAddress === undefined) {\n return false\n }\n\n const wethLower = wethAddress.toLowerCase()\n const tokenIsNativeAlias =\n tokenLower === NATIVE_ZERO_ADDRESS || tokenLower === NATIVE_ETH_ALIAS_ADDRESS\n return tokenIsNativeAlias && underlyingLower === wethLower\n}\n\n/**\n * Builds the encoded managerInput for HypoVault operations like fulfillDeposits and fulfillWithdrawals.\n *\n * Supports the full input space of computeNAV by:\n * - Fetching TWAP ticks from each pool in poolInfos\n * - Setting token prices based on whether each token matches the underlyingToken address\n *\n * @param params.viemClient - Viem client with account for RPC calls\n * @param params.poolInfos - Array of pool info objects containing pool and token configuration\n * @param params.tokenIds - 2D array of tokenIds for each pool\n * @param params.underlyingToken - Address of the vault's underlying token\n * @param params.erc4626Vaults - Optional list of ERC4626 vaults considered by accountant NAV\n * @returns Encoded managerInput as Hex\n */\nexport async function buildManagerInput({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n wethAddress,\n erc4626Vaults = [],\n}: BuildManagerInputParams): Promise<Hex> {\n if (tokenIds.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput tokenIds length: expected ${poolInfos.length}, received ${tokenIds.length}`,\n )\n }\n\n // Fetch TWAP ticks for all pools in parallel\n const twapTicks = await Promise.all(\n poolInfos.map((poolInfo) =>\n readContract(viemClient, {\n address: poolInfo.pool as Address,\n abi: parseAbi(['function getTWAP() view returns (int24)']),\n functionName: 'getTWAP',\n }),\n ),\n )\n\n // Create ManagerPrices array, 1 entry per pool\n // ManagerPrices struct: { poolPrice: int24, token0Price: int24, token1Price: int24 }\n // - poolPrice: always the pool's TWAP tick\n // - token0Price: 0 if token0 == underlyingToken (no conversion needed), otherwise TWAP tick\n // - token1Price: 0 if token1 == underlyingToken (no conversion needed), otherwise TWAP tick\n const managerPrices = poolInfos.map((poolInfo, i) => {\n const twapTick = Number(twapTicks[i])\n const token0IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token0,\n underlyingToken,\n wethAddress,\n })\n const token1IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token1,\n underlyingToken,\n wethAddress,\n })\n\n return {\n poolPrice: twapTick,\n token0Price: token0IsUnderlying ? 0 : twapTick,\n token1Price: token1IsUnderlying ? 0 : twapTick,\n }\n })\n if (managerPrices.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput managerPrices length: expected ${poolInfos.length}, received ${managerPrices.length}`,\n )\n }\n\n // Encode managerInput: (ManagerPrices[], PoolInfo[], TokenId[][], IERC4626[])\n return encodeAbiParameters(PanopticVaultAccountantManagerInputAbi, [\n managerPrices,\n poolInfos.map((poolInfo) => ({\n pool: poolInfo.pool as Address,\n token0: poolInfo.token0 as Address,\n token1: poolInfo.token1 as Address,\n maxPriceDeviation: poolInfo.maxPriceDeviation,\n })),\n tokenIds,\n erc4626Vaults,\n ])\n}\n","import type { Address, Client, Hex } from 'viem'\nimport { encodeAbiParameters, parseAbi } from 'viem'\nimport { readContract } from 'viem/actions'\n\nimport { PanopticVaultAccountantManagerInputAbi } from '../../abis/PanopticVaultAccountantManagerInput'\nimport { type PoolInfo, isUnderlyingEquivalentToken } from './buildManagerInput'\n\nexport type BuildManagerInputAtBlockParams = {\n viemClient: Client\n poolInfos: readonly PoolInfo[]\n tokenIds: bigint[][]\n underlyingToken: Address\n wethAddress?: Address\n blockNumber: bigint\n erc4626Vaults?: readonly Address[]\n}\n\n/**\n * Builds encoded managerInput for HypoVault accountant reads at a specific block.\n */\nexport async function buildManagerInputAtBlock({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n wethAddress,\n blockNumber,\n erc4626Vaults = [],\n}: BuildManagerInputAtBlockParams): Promise<Hex> {\n if (tokenIds.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput tokenIds length: expected ${poolInfos.length}, received ${tokenIds.length}`,\n )\n }\n\n const twapTicks = await Promise.all(\n poolInfos.map((poolInfo) =>\n readContract(viemClient, {\n address: poolInfo.pool as Address,\n abi: parseAbi(['function getTWAP() view returns (int24)']),\n functionName: 'getTWAP',\n blockNumber,\n }),\n ),\n )\n\n const managerPrices = poolInfos.map((poolInfo, i) => {\n const twapTick = Number(twapTicks[i])\n const token0IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token0,\n underlyingToken,\n wethAddress,\n })\n const token1IsUnderlying = isUnderlyingEquivalentToken({\n token: poolInfo.token1,\n underlyingToken,\n wethAddress,\n })\n\n return {\n poolPrice: twapTick,\n token0Price: token0IsUnderlying ? 0 : twapTick,\n token1Price: token1IsUnderlying ? 0 : twapTick,\n }\n })\n if (managerPrices.length !== poolInfos.length) {\n throw new Error(\n `Invalid managerInput managerPrices length: expected ${poolInfos.length}, received ${managerPrices.length}`,\n )\n }\n\n return encodeAbiParameters(PanopticVaultAccountantManagerInputAbi, [\n managerPrices,\n poolInfos.map((poolInfo) => ({\n pool: poolInfo.pool as Address,\n token0: poolInfo.token0 as Address,\n token1: poolInfo.token1 as Address,\n maxPriceDeviation: poolInfo.maxPriceDeviation,\n })),\n tokenIds,\n erc4626Vaults,\n ])\n}\n","import { type Address, type Client, ContractFunctionExecutionError } from 'viem'\nimport { readContract } from 'viem/actions'\n\nimport { panopticPoolV2Abi as panopticPoolAbi } from '../../abis/panoptic_v2_abis'\nimport {\n BASE_CHAIN_ID,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from '../chainDeployments'\nimport { BaseUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/BaseUSDCPLPVaultPoolInfos'\nimport { BaseWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/BaseWETHPLPVaultPoolInfos'\nimport {\n MainnetUSDCPLPLegacyVaultPoolInfos,\n MainnetUSDCPLPVaultPoolInfos,\n} from '../hypoVaultManagerArtifacts/MainnetUSDCPLPVaultPoolInfos'\nimport {\n MainnetWETHPLPLegacyVaultPoolInfos,\n MainnetWETHPLPVaultPoolInfos,\n} from '../hypoVaultManagerArtifacts/MainnetWETHPLPVaultPoolInfos'\nimport { SepoliaUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/SepoliaUSDCPLPVaultPoolInfos'\nimport { SepoliaWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/SepoliaWETHPLPVaultPoolInfos'\nimport { type PoolInfo, buildManagerInput } from './buildManagerInput'\nimport { buildManagerInputAtBlock } from './buildManagerInputAtBlock'\n\nconst DEFAULT_MANAGER_INPUT = '0x' as const\nconst PAGE_SIZE = 1000\n\ntype CandidateTokenIdsByPool = Map<string, Set<bigint>>\n\ntype VaultPoolInfoArtifact = {\n readonly vaultAddress: Address\n readonly poolInfos: readonly PoolInfo[]\n}\n\nconst VAULT_POOL_INFOS_BY_CHAIN: Record<number, readonly VaultPoolInfoArtifact[]> = {\n [MAINNET_CHAIN_ID]: [\n MainnetUSDCPLPVaultPoolInfos,\n MainnetWETHPLPVaultPoolInfos,\n MainnetUSDCPLPLegacyVaultPoolInfos,\n MainnetWETHPLPLegacyVaultPoolInfos,\n ],\n [SEPOLIA_CHAIN_ID]: [SepoliaUSDCPLPVaultPoolInfos, SepoliaWETHPLPVaultPoolInfos],\n [BASE_CHAIN_ID]: [BaseUSDCPLPVaultPoolInfos, BaseWETHPLPVaultPoolInfos],\n}\n\nconst GET_POOL_ACCOUNT_BALANCE_CANDIDATES = `\n query PoolAccountBalanceCandidates(\n $first: Int!\n $skip: Int!\n $poolIds: [String!]!\n $vault: String!\n ) {\n panopticPoolAccounts(\n first: $first\n skip: $skip\n where: { panopticPool_in: $poolIds, account: $vault }\n ) {\n panopticPool {\n id\n }\n accountBalances(where: { isOpen: 1 }) {\n tokenId {\n id\n }\n }\n }\n }\n`\n\nconst GET_OPTION_EVENT_CANDIDATES = `\n query OptionEventCandidates(\n $first: Int!\n $skip: Int!\n $poolIds: [String!]!\n $recipients: [String!]!\n ) {\n optionMints(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n where: { panopticPool_in: $poolIds, recipient_in: $recipients }\n ) {\n panopticPool {\n id\n }\n tokenId {\n id\n idHexString\n }\n }\n optionBurns(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n where: { panopticPool_in: $poolIds, recipient_in: $recipients }\n ) {\n panopticPool {\n id\n }\n tokenId {\n id\n idHexString\n }\n }\n }\n`\n\ntype GraphQLError = { message?: string }\n\ntype GraphQLResponse<T> = {\n data?: T\n errors?: GraphQLError[]\n}\n\ntype PoolAccountBalanceCandidatesResponse = {\n panopticPoolAccounts: Array<{\n panopticPool: { id: string }\n accountBalances: Array<{ tokenId: { id: string } | null }>\n }>\n}\n\ntype OptionEventCandidatesResponse = {\n optionMints: Array<{\n panopticPool: { id: string }\n tokenId: { id: string; idHexString: string }\n }>\n optionBurns: Array<{\n panopticPool: { id: string }\n tokenId: { id: string; idHexString: string }\n }>\n}\n\ntype FetchInit = {\n method?: string\n headers?: Record<string, string>\n body?: string\n}\n\ntype FetchResponseLike = {\n ok: boolean\n status: number\n json: () => Promise<unknown>\n}\n\ntype FetchLike = (input: string, init?: FetchInit) => Promise<FetchResponseLike>\n\nfunction toLowerAddress(address: string): string {\n return address.toLowerCase()\n}\n\nfunction parseTokenId(value: string | null | undefined): bigint | null {\n if (value === undefined || value === null || value.length === 0) {\n return null\n }\n\n try {\n return BigInt(value)\n } catch {\n return null\n }\n}\n\nfunction ensurePoolCandidateSet(\n candidatesByPool: CandidateTokenIdsByPool,\n poolAddress: string,\n): Set<bigint> {\n const poolAddressLower = toLowerAddress(poolAddress)\n const existing = candidatesByPool.get(poolAddressLower)\n if (existing !== undefined) {\n return existing\n }\n const created = new Set<bigint>()\n candidatesByPool.set(poolAddressLower, created)\n return created\n}\n\nasync function postGraphQL<T>({\n endpoint,\n query,\n variables,\n fetchFn,\n}: {\n endpoint: string\n query: string\n variables: Record<string, unknown>\n fetchFn: FetchLike\n}): Promise<T> {\n const response = await fetchFn(endpoint, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({\n query,\n variables,\n }),\n })\n\n if (!response.ok) {\n throw new Error(`GraphQL request failed (${response.status})`)\n }\n\n const json = (await response.json()) as GraphQLResponse<T>\n if ((json.errors?.length ?? 0) > 0) {\n throw new Error(json.errors?.[0]?.message ?? 'GraphQL request failed')\n }\n if (json.data === undefined) {\n throw new Error('GraphQL response did not include data')\n }\n\n return json.data\n}\n\nasync function collectPoolAccountBalanceCandidates({\n endpoint,\n poolIds,\n vaultAddress,\n candidatesByPool,\n fetchFn,\n}: {\n endpoint: string\n poolIds: string[]\n vaultAddress: string\n candidatesByPool: CandidateTokenIdsByPool\n fetchFn: FetchLike\n}): Promise<void> {\n for (let skip = 0; ; skip += PAGE_SIZE) {\n const page = await postGraphQL<PoolAccountBalanceCandidatesResponse>({\n endpoint,\n query: GET_POOL_ACCOUNT_BALANCE_CANDIDATES,\n variables: {\n first: PAGE_SIZE,\n skip,\n poolIds,\n vault: vaultAddress,\n },\n fetchFn,\n })\n\n for (const account of page.panopticPoolAccounts) {\n const poolSet = ensurePoolCandidateSet(candidatesByPool, account.panopticPool.id)\n for (const balance of account.accountBalances) {\n const tokenId = parseTokenId(balance.tokenId?.id)\n if (tokenId !== null) {\n poolSet.add(tokenId)\n }\n }\n }\n\n if (page.panopticPoolAccounts.length < PAGE_SIZE) {\n break\n }\n }\n}\n\nasync function collectOptionEventCandidates({\n endpoint,\n poolIds,\n recipientAddresses,\n candidatesByPool,\n fetchFn,\n}: {\n endpoint: string\n poolIds: string[]\n recipientAddresses: string[]\n candidatesByPool: CandidateTokenIdsByPool\n fetchFn: FetchLike\n}): Promise<void> {\n for (let skip = 0; ; skip += PAGE_SIZE) {\n const page = await postGraphQL<OptionEventCandidatesResponse>({\n endpoint,\n query: GET_OPTION_EVENT_CANDIDATES,\n variables: {\n first: PAGE_SIZE,\n skip,\n poolIds,\n recipients: recipientAddresses,\n },\n fetchFn,\n })\n\n const events = [...page.optionMints, ...page.optionBurns]\n for (const event of events) {\n const poolSet = ensurePoolCandidateSet(candidatesByPool, event.panopticPool.id)\n const parsedFromHex = parseTokenId(event.tokenId.idHexString)\n if (parsedFromHex !== null) {\n poolSet.add(parsedFromHex)\n }\n const parsedFromId = parseTokenId(event.tokenId.id)\n if (parsedFromId !== null) {\n poolSet.add(parsedFromId)\n }\n }\n\n if (page.optionMints.length < PAGE_SIZE && page.optionBurns.length < PAGE_SIZE) {\n break\n }\n }\n}\n\nfunction sortBigintsAscending(values: Iterable<bigint>): bigint[] {\n return Array.from(values).sort((left, right) => {\n if (left < right) {\n return -1\n }\n if (left > right) {\n return 1\n }\n return 0\n })\n}\n\nfunction extractPositionSizeFromPackedBalance(value: unknown): bigint | null {\n if (typeof value !== 'bigint') {\n return null\n }\n return value & ((1n << 128n) - 1n)\n}\n\n// When the whole-batch read reverts (any single bad tokenId — burned or\n// not-yet-minted at `blockNumber` — reverts `getFullPositionsData` for the\n// entire list), we bisect the candidate list. This way a handful of bad\n// tokenIds collapses to O(log N) reads instead of O(N), and the leaf-level\n// per-tokenId reads run in parallel so viem's JSON-RPC batching can fold\n// them into a single HTTP request.\nconst BISECT_LEAF_THRESHOLD = 1\n\nasync function readPositionBalances({\n viemClient,\n poolAddress,\n account,\n candidates,\n blockNumber,\n}: {\n viemClient: Client\n poolAddress: Address\n account: Address\n candidates: readonly bigint[]\n blockNumber: bigint\n}): Promise<readonly unknown[] | null> {\n let result: unknown\n try {\n result = await readContract(viemClient, {\n address: poolAddress,\n abi: panopticPoolAbi,\n functionName: 'getFullPositionsData',\n args: [account, false, candidates],\n blockNumber,\n })\n } catch (error) {\n // Only treat contract reverts (e.g. `PositionNotOwned` from a stale\n // candidate) as \"bad batch — caller should bisect\". Transport, JSON-RPC,\n // or other transient failures must propagate so the caller doesn't\n // silently treat a network blip as \"all candidates closed\".\n if (error instanceof ContractFunctionExecutionError) {\n return null\n }\n throw error\n }\n const maybePositionBalances = Array.isArray(result) ? result[2] : undefined\n if (!Array.isArray(maybePositionBalances)) {\n return null\n }\n return maybePositionBalances\n}\n\nasync function filterOpenTokenIdsAtBlock({\n viemClient,\n poolAddress,\n account,\n candidates,\n blockNumber,\n}: {\n viemClient: Client\n poolAddress: Address\n account: Address\n candidates: readonly bigint[]\n blockNumber: bigint\n}): Promise<bigint[]> {\n if (candidates.length === 0) {\n return []\n }\n\n const collectOpen = async (chunk: readonly bigint[]): Promise<bigint[]> => {\n if (chunk.length === 0) {\n return []\n }\n\n const balances = await readPositionBalances({\n viemClient,\n poolAddress,\n account,\n candidates: chunk,\n blockNumber,\n })\n\n if (balances !== null) {\n const open: bigint[] = []\n for (let index = 0; index < chunk.length; index += 1) {\n const tokenId = chunk[index]\n const positionSize = extractPositionSizeFromPackedBalance(balances[index])\n if (tokenId !== undefined && positionSize !== null && positionSize > 0n) {\n open.push(tokenId)\n }\n }\n return open\n }\n\n if (chunk.length <= BISECT_LEAF_THRESHOLD) {\n // Single bad tokenId — drop it.\n return []\n }\n\n const mid = chunk.length >> 1\n const [leftOpen, rightOpen] = await Promise.all([\n collectOpen(chunk.slice(0, mid)),\n collectOpen(chunk.slice(mid)),\n ])\n return [...leftOpen, ...rightOpen]\n }\n\n const openTokenIds = await collectOpen(candidates)\n return sortBigintsAscending(openTokenIds)\n}\n\nexport function getVaultPoolInfos(vaultAddress: Address, chainId?: number): readonly PoolInfo[] {\n const vaultAddressLower = toLowerAddress(vaultAddress)\n const artifacts =\n chainId === undefined\n ? Object.values(VAULT_POOL_INFOS_BY_CHAIN).flat()\n : (VAULT_POOL_INFOS_BY_CHAIN[chainId] ?? [])\n const artifact = artifacts.find(\n (candidate) => toLowerAddress(candidate.vaultAddress) === vaultAddressLower,\n )\n return artifact?.poolInfos ?? []\n}\n\nexport type VaultPoolCandidateTokenIds = {\n poolAddress: Address\n /**\n * All-time candidate tokenIds (subgraph balances ∪ option events), sorted\n * ascending. Block-INDEPENDENT: a superset valid for any historical block.\n */\n candidates: bigint[]\n}\n\n/**\n * Resolve the block-INDEPENDENT candidate tokenIds per pool for a vault — i.e. the\n * two subgraph paging queries only, with no on-chain verification. Pair with\n * {@link verifyVaultOpenTokenIdsAtBlock} to narrow to positions open at a given\n * block. Splitting these out lets a timeseries fetch the candidate set ONCE per\n * vault instead of re-running the subgraph paging for every anchor block. The\n * combined {@link resolveVaultTokenIdsByPool} remains for one-shot callers.\n */\nexport async function resolveVaultHistoricalCandidatesByPool({\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n fetchFn = fetch,\n}: {\n chainId: number\n vaultAddress: Address\n managerAddress?: Address | null\n poolInfos?: readonly PoolInfo[]\n panopticSubgraphUrl?: string\n fetchFn?: FetchLike\n}): Promise<VaultPoolCandidateTokenIds[]> {\n const resolvedPoolInfos = poolInfos ?? getVaultPoolInfos(vaultAddress, chainId)\n if (resolvedPoolInfos.length === 0) {\n return []\n }\n\n const configuredEndpoint =\n panopticSubgraphUrl ?? requireChainDeployment(chainId).subgraphs.panoptic\n if (configuredEndpoint === undefined) {\n return resolvedPoolInfos.map((poolInfo) => ({ poolAddress: poolInfo.pool, candidates: [] }))\n }\n\n const vaultAddressLower = toLowerAddress(vaultAddress)\n const recipientAddresses = Array.from(\n new Set(\n [vaultAddressLower, managerAddress?.toLowerCase()]\n .filter((value): value is string => value !== undefined && value.length > 0)\n .map((value) => value.toLowerCase()),\n ),\n )\n const poolIds = Array.from(\n new Set(resolvedPoolInfos.map((poolInfo) => toLowerAddress(poolInfo.pool))),\n )\n\n const balanceCandidatesByPool: CandidateTokenIdsByPool = new Map()\n const eventCandidatesByPool: CandidateTokenIdsByPool = new Map()\n\n await collectPoolAccountBalanceCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n vaultAddress: vaultAddressLower,\n candidatesByPool: balanceCandidatesByPool,\n fetchFn,\n })\n\n await collectOptionEventCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n recipientAddresses,\n candidatesByPool: eventCandidatesByPool,\n fetchFn,\n })\n\n return resolvedPoolInfos.map((poolInfo) => {\n const poolAddressLower = toLowerAddress(poolInfo.pool)\n const openBalances = balanceCandidatesByPool.get(poolAddressLower) ?? new Set<bigint>()\n const eventCandidates = eventCandidatesByPool.get(poolAddressLower) ?? new Set<bigint>()\n const candidates = sortBigintsAscending(new Set<bigint>([...openBalances, ...eventCandidates]))\n return { poolAddress: poolInfo.pool, candidates }\n })\n}\n\n/**\n * Narrow pre-resolved {@link VaultPoolCandidateTokenIds} to the tokenIds actually\n * open at `blockNumber`, per pool, via on-chain `getFullPositionsData` (bisecting\n * on stale candidates). This is the per-block half of the candidate/verify split.\n */\nexport async function verifyVaultOpenTokenIdsAtBlock({\n viemClient,\n vaultAddress,\n candidatesByPool,\n blockNumber,\n}: {\n viemClient: Client\n vaultAddress: Address\n candidatesByPool: readonly VaultPoolCandidateTokenIds[]\n blockNumber: bigint\n}): Promise<bigint[][]> {\n const tokenIdsByPool: bigint[][] = []\n for (const { poolAddress, candidates } of candidatesByPool) {\n const openTokenIds = await filterOpenTokenIdsAtBlock({\n viemClient,\n poolAddress,\n account: vaultAddress,\n candidates,\n blockNumber,\n })\n tokenIdsByPool.push(openTokenIds)\n }\n return tokenIdsByPool\n}\n\nexport async function resolveVaultTokenIdsByPool({\n viemClient,\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n verificationBlockNumber,\n fetchFn = fetch,\n}: {\n viemClient: Client\n chainId: number\n vaultAddress: Address\n managerAddress?: Address | null\n poolInfos?: readonly PoolInfo[]\n panopticSubgraphUrl?: string\n verificationBlockNumber?: bigint\n fetchFn?: FetchLike\n}): Promise<bigint[][]> {\n const resolvedPoolInfos = poolInfos ?? getVaultPoolInfos(vaultAddress, chainId)\n if (resolvedPoolInfos.length === 0) {\n return []\n }\n\n const configuredEndpoint =\n panopticSubgraphUrl ?? requireChainDeployment(chainId).subgraphs.panoptic\n if (configuredEndpoint === undefined) {\n return resolvedPoolInfos.map(() => [])\n }\n\n const vaultAddressLower = toLowerAddress(vaultAddress)\n const recipientAddresses = Array.from(\n new Set(\n [vaultAddressLower, managerAddress?.toLowerCase()]\n .filter((value): value is string => value !== undefined && value.length > 0)\n .map((value) => value.toLowerCase()),\n ),\n )\n const poolIds = Array.from(\n new Set(resolvedPoolInfos.map((poolInfo) => toLowerAddress(poolInfo.pool))),\n )\n\n const balanceCandidatesByPool: CandidateTokenIdsByPool = new Map()\n const eventCandidatesByPool: CandidateTokenIdsByPool = new Map()\n\n await collectPoolAccountBalanceCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n vaultAddress: vaultAddressLower,\n candidatesByPool: balanceCandidatesByPool,\n fetchFn,\n })\n\n await collectOptionEventCandidates({\n endpoint: configuredEndpoint,\n poolIds,\n recipientAddresses,\n candidatesByPool: eventCandidatesByPool,\n fetchFn,\n })\n\n const tokenIdsByPool: bigint[][] = []\n for (const poolInfo of resolvedPoolInfos) {\n const poolAddressLower = toLowerAddress(poolInfo.pool)\n const openBalances = sortBigintsAscending(balanceCandidatesByPool.get(poolAddressLower) ?? [])\n\n if (verificationBlockNumber !== undefined) {\n const eventCandidates = sortBigintsAscending(\n eventCandidatesByPool.get(poolAddressLower) ?? [],\n )\n const historicalCandidates = sortBigintsAscending(\n Array.from(new Set([...openBalances, ...eventCandidates])),\n )\n const historicalOpenTokenIds = await filterOpenTokenIdsAtBlock({\n viemClient,\n poolAddress: poolInfo.pool,\n account: vaultAddress,\n candidates: historicalCandidates,\n blockNumber: verificationBlockNumber,\n })\n tokenIdsByPool.push(historicalOpenTokenIds)\n continue\n }\n\n if (openBalances.length > 0) {\n tokenIdsByPool.push(openBalances)\n continue\n }\n\n const eventCandidates = sortBigintsAscending(eventCandidatesByPool.get(poolAddressLower) ?? [])\n if (eventCandidates.length === 0) {\n tokenIdsByPool.push([])\n continue\n }\n\n try {\n const result = await readContract(viemClient, {\n address: poolInfo.pool,\n abi: panopticPoolAbi,\n functionName: 'getFullPositionsData',\n args: [vaultAddress, false, eventCandidates],\n ...(verificationBlockNumber === undefined ? {} : { blockNumber: verificationBlockNumber }),\n })\n\n const maybePositionBalances = Array.isArray(result) ? result[2] : undefined\n if (!Array.isArray(maybePositionBalances)) {\n tokenIdsByPool.push([])\n continue\n }\n\n const openTokenIds: bigint[] = []\n for (let index = 0; index < eventCandidates.length; index += 1) {\n const tokenId = eventCandidates[index]\n const packedBalance = maybePositionBalances[index]\n if (tokenId === undefined || typeof packedBalance !== 'bigint') {\n continue\n }\n const positionSize = packedBalance & ((1n << 128n) - 1n)\n if (positionSize > 0n) {\n openTokenIds.push(tokenId)\n }\n }\n tokenIdsByPool.push(sortBigintsAscending(openTokenIds))\n } catch {\n // If fallback verification fails, return no positions for safety.\n tokenIdsByPool.push([])\n }\n }\n\n return tokenIdsByPool\n}\n\nexport async function buildVaultManagerInput({\n viemClient,\n chainId,\n vaultAddress,\n underlyingToken,\n managerAddress,\n panopticSubgraphUrl,\n fetchFn,\n}: {\n viemClient: Client\n chainId: number\n vaultAddress: Address\n underlyingToken: Address\n managerAddress?: Address | null\n panopticSubgraphUrl?: string\n fetchFn?: FetchLike\n}): Promise<`0x${string}`> {\n const poolInfos = getVaultPoolInfos(vaultAddress, chainId)\n if (poolInfos.length === 0) {\n return DEFAULT_MANAGER_INPUT\n }\n\n const tokenIds = await resolveVaultTokenIdsByPool({\n viemClient,\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n fetchFn,\n })\n\n return buildManagerInput({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n })\n}\n\nexport async function buildVaultManagerInputAtBlock({\n viemClient,\n chainId,\n vaultAddress,\n underlyingToken,\n blockNumber,\n managerAddress,\n panopticSubgraphUrl,\n fetchFn,\n}: {\n viemClient: Client\n chainId: number\n vaultAddress: Address\n underlyingToken: Address\n blockNumber: bigint\n managerAddress?: Address | null\n panopticSubgraphUrl?: string\n fetchFn?: FetchLike\n}): Promise<`0x${string}`> {\n const poolInfos = getVaultPoolInfos(vaultAddress, chainId)\n if (poolInfos.length === 0) {\n return DEFAULT_MANAGER_INPUT\n }\n\n const tokenIds = await resolveVaultTokenIdsByPool({\n viemClient,\n chainId,\n vaultAddress,\n managerAddress,\n poolInfos,\n panopticSubgraphUrl,\n verificationBlockNumber: blockNumber,\n fetchFn,\n })\n\n return buildManagerInputAtBlock({\n viemClient,\n poolInfos,\n tokenIds,\n underlyingToken,\n blockNumber,\n })\n}\n","import type { Address, PublicClient } from 'viem'\n\nimport { getAccountCollateral } from '../../panoptic/v2/reads/account'\nimport { getCollateralData } from '../../panoptic/v2/reads/collateral'\nimport { getPoolMetadata } from '../../panoptic/v2/reads/pool'\nimport { getHypoVaultConfigForVault } from '../hypoVaultManagerConfigs/vaultToConfig'\nimport { getVaultPoolInfos } from '../utils/vaultManagerInput'\n\nconst erc20BalanceOfAbi = [\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256' }],\n stateMutability: 'view',\n },\n] as const\n\nexport type LendingAllocationRow = {\n market: string\n borrowRateWad: bigint | null\n supplyRateWad: bigint | null\n utilizationBps: bigint | null\n allocationUnderlying: bigint\n allocationPctBps: bigint\n isIdle: boolean\n poolAddress: Address | null\n collateralTrackerAddress: Address | null\n}\n\nexport type LendingAllocationResult = {\n rows: LendingAllocationRow[]\n totalUnderlying: bigint\n}\n\nfunction toLowerAddress(address: string): string {\n return address.toLowerCase()\n}\n\nfunction discoverPoolAddresses({\n chainId,\n vaultAddress,\n}: {\n chainId: number\n vaultAddress: Address\n}): Address[] {\n const discoveredAddresses: Address[] = []\n const seen = new Set<string>()\n\n const config = getHypoVaultConfigForVault(vaultAddress, chainId)\n const poolFromConfig = config?.addresses?.ethUsdc500bpsV4PanopticPool\n if (poolFromConfig !== undefined) {\n const key = toLowerAddress(poolFromConfig)\n if (!seen.has(key)) {\n seen.add(key)\n discoveredAddresses.push(poolFromConfig)\n }\n }\n\n const artifactPoolInfos = getVaultPoolInfos(vaultAddress, chainId)\n\n for (const poolInfo of artifactPoolInfos) {\n const key = toLowerAddress(poolInfo.pool)\n if (!seen.has(key)) {\n seen.add(key)\n discoveredAddresses.push(poolInfo.pool as Address)\n }\n }\n\n return discoveredAddresses\n}\n\nfunction getUnderlyingIndex({\n underlyingTokenAddress,\n token0Asset,\n token1Asset,\n}: {\n underlyingTokenAddress: Address\n token0Asset: Address\n token1Asset: Address\n}): 0 | 1 | null {\n const underlyingLower = toLowerAddress(underlyingTokenAddress)\n if (toLowerAddress(token0Asset) === underlyingLower) {\n return 0\n }\n if (toLowerAddress(token1Asset) === underlyingLower) {\n return 1\n }\n return null\n}\n\nexport async function getLendingAllocationRows({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n}: {\n client: PublicClient\n chainId: number\n vaultAddress: Address\n underlyingTokenAddress: Address\n blockNumber?: bigint\n}): Promise<LendingAllocationResult> {\n const poolAddresses = discoverPoolAddresses({\n chainId,\n vaultAddress,\n })\n\n const poolRows = await Promise.all(\n poolAddresses.map(async (poolAddress): Promise<LendingAllocationRow | null> => {\n const metadata = await getPoolMetadata({\n client,\n poolAddress,\n })\n\n const underlyingIndex = getUnderlyingIndex({\n underlyingTokenAddress,\n token0Asset: metadata.token0Asset,\n token1Asset: metadata.token1Asset,\n })\n\n if (underlyingIndex === null) {\n return null\n }\n\n const [collateralData, accountCollateral] = await Promise.all([\n getCollateralData({\n client,\n poolAddress,\n tokenIndex: underlyingIndex,\n blockNumber,\n }),\n getAccountCollateral({\n client,\n poolAddress,\n account: vaultAddress,\n blockNumber,\n }),\n ])\n\n const allocationUnderlying =\n underlyingIndex === 0 ? accountCollateral.token0.assets : accountCollateral.token1.assets\n\n return {\n market: `${metadata.token0Symbol}/${metadata.token1Symbol}`,\n borrowRateWad: collateralData.borrowRate,\n supplyRateWad: collateralData.supplyRate,\n utilizationBps: collateralData.utilization,\n allocationUnderlying,\n allocationPctBps: 0n,\n isIdle: false,\n poolAddress,\n collateralTrackerAddress:\n underlyingIndex === 0\n ? metadata.collateralToken0Address\n : metadata.collateralToken1Address,\n }\n }),\n )\n\n const nonNullPoolRows = poolRows.filter(\n (row): row is Exclude<LendingAllocationRow, null> => row !== null,\n )\n\n const idleBalance = await client.readContract({\n address: underlyingTokenAddress,\n abi: erc20BalanceOfAbi,\n functionName: 'balanceOf',\n args: [vaultAddress],\n blockNumber,\n })\n\n const idleRow: LendingAllocationRow = {\n market: 'Idle Funds',\n borrowRateWad: null,\n supplyRateWad: null,\n utilizationBps: null,\n allocationUnderlying: idleBalance,\n allocationPctBps: 0n,\n isIdle: true,\n poolAddress: null,\n collateralTrackerAddress: null,\n }\n\n const rowsBeforePct = [...nonNullPoolRows, idleRow]\n const totalUnderlying = rowsBeforePct.reduce((sum, row) => sum + row.allocationUnderlying, 0n)\n\n if (totalUnderlying === 0n) {\n return {\n rows: rowsBeforePct,\n totalUnderlying,\n }\n }\n\n return {\n rows: rowsBeforePct.map((row) => ({\n ...row,\n allocationPctBps: (row.allocationUnderlying * 10_000n) / totalUnderlying,\n })),\n totalUnderlying,\n }\n}\n","import Decimal from 'decimal.js'\nimport type { Address, PublicClient } from 'viem'\nimport { zeroAddress } from 'viem'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\nimport { collateralTrackerV2Abi, panopticPoolV2Abi } from '../../generated'\nimport { tickToSqrtPriceX96 } from '../../panoptic/v2/formatters/tick'\nimport { getHypoVaultConfigForVault } from '../hypoVaultManagerConfigs/vaultToConfig'\nimport { getVaultPoolInfos } from '../utils/vaultManagerInput'\n\nconst erc20Abi = [\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: 'balance', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ name: 'symbol', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ name: 'decimals', type: 'uint8' }],\n stateMutability: 'view',\n },\n] as const\n\nexport type VaultLendingAllocationRow = {\n market: string\n supplyRateWad: bigint | null\n borrowRateWad: bigint | null\n utilizationBps: bigint | null\n allocationSourceRaw: bigint\n sourceTokenAddress: Address\n sourceTokenSymbol: string\n sourceTokenDecimals: number\n allocationUnderlying: bigint\n allocationPctBps: bigint\n isIdle: boolean\n unfulfilledDepositAssetsRaw?: bigint\n reservedWithdrawalAssetsRaw?: bigint\n hasCollateralMetrics: boolean\n panopticPoolAddress: Address | null\n collateralTrackerAddress: Address | null\n}\n\ntype RowWithoutPct = Omit<VaultLendingAllocationRow, 'allocationPctBps'>\n\nconst WAD = 1_000_000_000_000_000_000n\nconst SECONDS_PER_YEAR = 365n * 24n * 60n * 60n\nconst Q128 = 2n ** 128n\n\n/**\n * Matches the on-chain `PanopticMath.convert0to1` / `convert1to0` truncation\n * semantics (same as `~/utils/panopticMath` in the UI app, without the\n * `@uniswap/v3-sdk` dependency).\n */\nfunction convert0to1(amount: bigint, sqrtPriceX96: bigint): bigint {\n if (sqrtPriceX96 < Q128) {\n return (amount * sqrtPriceX96 * sqrtPriceX96) >> 192n\n }\n const sp2Hi = (sqrtPriceX96 * sqrtPriceX96) >> 64n\n return (amount * sp2Hi) >> 128n\n}\n\nfunction convert1to0(amount: bigint, sqrtPriceX96: bigint): bigint {\n if (sqrtPriceX96 < Q128) {\n return (amount * 2n ** 192n) / (sqrtPriceX96 * sqrtPriceX96)\n }\n const sp2Hi = (sqrtPriceX96 * sqrtPriceX96) >> 64n\n return (amount * 2n ** 128n) / sp2Hi\n}\n\nexport type VaultNetLendingApyTrackerInput = {\n assets: bigint\n netBorrows: bigint\n interestRateWad: bigint\n utilizationBps: bigint\n sourceTokenAddress: Address\n token0Address: Address\n token1Address: Address\n underlyingPoolTokenAddress: Address\n twapTick: number\n}\n\nexport function adjustUnderlyingIdleBalance({\n rawUnderlyingBalance,\n unfulfilledDepositAssets,\n reservedWithdrawalAssets: _reservedWithdrawalAssets,\n}: {\n rawUnderlyingBalance: bigint\n unfulfilledDepositAssets: bigint\n reservedWithdrawalAssets: bigint\n}): bigint {\n const nonIdleUnderlying = unfulfilledDepositAssets\n return rawUnderlyingBalance > nonIdleUnderlying ? rawUnderlyingBalance - nonIdleUnderlying : 0n\n}\n\ntype PoolContext = {\n poolAddress: Address\n token0Address: Address\n token1Address: Address\n token0Symbol: string\n token1Symbol: string\n token0Decimals: number\n token1Decimals: number\n collateral0Address: Address\n collateral1Address: Address\n}\n\ntype NetLendingPoolContext = Pick<\n PoolContext,\n 'poolAddress' | 'token0Address' | 'token1Address' | 'collateral0Address' | 'collateral1Address'\n>\n\nfunction isNativeToken(tokenAddress: Address): boolean {\n return tokenAddress.toLowerCase() === zeroAddress\n}\n\nfunction addressesEqual(a: Address, b: Address): boolean {\n return a.toLowerCase() === b.toLowerCase()\n}\n\nfunction discoverPoolAddresses({\n chainId,\n vaultAddress,\n}: {\n chainId: number\n vaultAddress: Address\n}): Address[] {\n const seen = new Set<string>()\n const addresses: Address[] = []\n\n const config = getHypoVaultConfigForVault(vaultAddress, chainId)\n const configuredPool = config?.addresses?.ethUsdc500bpsV4PanopticPool\n if (configuredPool !== undefined) {\n const key = configuredPool.toLowerCase()\n if (!seen.has(key)) {\n seen.add(key)\n addresses.push(configuredPool)\n }\n }\n\n const artifactInfos = getVaultPoolInfos(vaultAddress, chainId)\n\n for (const info of artifactInfos) {\n const key = info.pool.toLowerCase()\n if (!seen.has(key)) {\n seen.add(key)\n addresses.push(info.pool as Address)\n }\n }\n\n return addresses\n}\n\nfunction computeAllocationPctBps({\n allocationUnderlying,\n totalUnderlying,\n}: {\n allocationUnderlying: bigint\n totalUnderlying: bigint\n}): bigint {\n if (totalUnderlying === 0n) {\n return 0n\n }\n return (allocationUnderlying * 10_000n) / totalUnderlying\n}\n\nfunction toBigInt(value: unknown): bigint | null {\n if (typeof value === 'bigint') {\n return value\n }\n if (typeof value === 'string' || typeof value === 'number') {\n return BigInt(value)\n }\n return null\n}\n\nfunction getAssetsDepositedFromDepositEpochState(value: unknown): bigint {\n if (Array.isArray(value) && value.length > 0) {\n return toBigInt(value[0]) ?? 0n\n }\n\n if (typeof value === 'object' && value !== null && 'assetsDeposited' in value) {\n const state = value as { assetsDeposited?: unknown }\n return state.assetsDeposited === undefined ? 0n : (toBigInt(state.assetsDeposited) ?? 0n)\n }\n\n return 0n\n}\n\nasync function readTokenSymbol({\n client,\n tokenAddress,\n blockNumber,\n}: {\n client: PublicClient\n tokenAddress: Address\n blockNumber?: bigint\n}): Promise<string> {\n if (isNativeToken(tokenAddress)) {\n return 'ETH'\n }\n\n return client.readContract({\n address: tokenAddress,\n abi: erc20Abi,\n functionName: 'symbol',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n })\n}\n\nasync function readTokenDecimals({\n client,\n tokenAddress,\n blockNumber,\n}: {\n client: PublicClient\n tokenAddress: Address\n blockNumber?: bigint\n}): Promise<number> {\n if (isNativeToken(tokenAddress)) {\n return 18\n }\n\n try {\n const decimals = await client.readContract({\n address: tokenAddress,\n abi: erc20Abi,\n functionName: 'decimals',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n })\n const parsed = Number(decimals)\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : 18\n } catch {\n return 18\n }\n}\n\nasync function readTokenBalance({\n client,\n tokenAddress,\n owner,\n blockNumber,\n}: {\n client: PublicClient\n tokenAddress: Address\n owner: Address\n blockNumber?: bigint\n}): Promise<bigint> {\n if (isNativeToken(tokenAddress)) {\n return client.getBalance({\n address: owner,\n ...(blockNumber === undefined ? {} : { blockNumber }),\n })\n }\n\n return client.readContract({\n address: tokenAddress,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [owner],\n ...(blockNumber === undefined ? {} : { blockNumber }),\n })\n}\n\nfunction resolveUnderlyingPoolToken({\n underlyingTokenAddress,\n token0Address,\n token1Address,\n}: {\n underlyingTokenAddress: Address\n token0Address: Address\n token1Address: Address\n}): Address | null {\n if (\n addressesEqual(underlyingTokenAddress, token0Address) ||\n addressesEqual(underlyingTokenAddress, token1Address)\n ) {\n return underlyingTokenAddress\n }\n\n // WETH vaults use WETH as underlying while Panoptic pool token0 is native ETH.\n if (isNativeToken(token0Address)) {\n return token0Address\n }\n\n return null\n}\n\nfunction convertToUnderlying({\n amount,\n sourceTokenAddress,\n token0Address,\n token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n}: {\n amount: bigint\n sourceTokenAddress: Address\n token0Address: Address\n token1Address: Address\n underlyingPoolTokenAddress: Address\n twapTick: number\n}): bigint {\n if (amount === 0n) {\n return 0n\n }\n\n if (addressesEqual(sourceTokenAddress, underlyingPoolTokenAddress)) {\n return amount\n }\n\n const sourceIsToken0 = addressesEqual(sourceTokenAddress, token0Address)\n const sourceIsToken1 = addressesEqual(sourceTokenAddress, token1Address)\n const underlyingIsToken0 = addressesEqual(underlyingPoolTokenAddress, token0Address)\n const underlyingIsToken1 = addressesEqual(underlyingPoolTokenAddress, token1Address)\n\n if ((!sourceIsToken0 && !sourceIsToken1) || (!underlyingIsToken0 && !underlyingIsToken1)) {\n return 0n\n }\n\n const sqrtPriceX96 = tickToSqrtPriceX96(BigInt(twapTick))\n\n if (sourceIsToken0 && underlyingIsToken1) {\n return convert0to1(amount, sqrtPriceX96)\n }\n if (sourceIsToken1 && underlyingIsToken0) {\n return convert1to0(amount, sqrtPriceX96)\n }\n\n return 0n\n}\n\nfunction convertSignedToUnderlying({\n amount,\n sourceTokenAddress,\n token0Address,\n token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n}: {\n amount: bigint\n sourceTokenAddress: Address\n token0Address: Address\n token1Address: Address\n underlyingPoolTokenAddress: Address\n twapTick: number\n}): bigint {\n if (amount >= 0n) {\n return convertToUnderlying({\n amount,\n sourceTokenAddress,\n token0Address,\n token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n })\n }\n\n return -convertToUnderlying({\n amount: -amount,\n sourceTokenAddress,\n token0Address,\n token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n })\n}\n\nexport function calculateVaultNetLendingApyPctFromTrackerInputs(\n inputs: VaultNetLendingApyTrackerInput[],\n): number | null {\n let totalAssetsUnderlying = 0n\n let totalNetYieldUnderlying = 0n\n\n for (const input of inputs) {\n if (input.assets === 0n) {\n continue\n }\n\n const supplyRateWad = (input.interestRateWad * input.utilizationBps) / 10_000n\n const annualSupplyRateWad = supplyRateWad * SECONDS_PER_YEAR\n const annualBorrowRateWad = input.interestRateWad * SECONDS_PER_YEAR\n const positiveNetBorrows = input.netBorrows > 0n ? input.netBorrows : 0n\n const grossSupplyYield = (input.assets * annualSupplyRateWad) / WAD\n const borrowCost = (positiveNetBorrows * annualBorrowRateWad) / WAD\n const netYield = grossSupplyYield - borrowCost\n\n const assetsUnderlying = convertToUnderlying({\n amount: input.assets,\n sourceTokenAddress: input.sourceTokenAddress,\n token0Address: input.token0Address,\n token1Address: input.token1Address,\n underlyingPoolTokenAddress: input.underlyingPoolTokenAddress,\n twapTick: input.twapTick,\n })\n\n if (assetsUnderlying === 0n) {\n continue\n }\n\n const netYieldUnderlying = convertSignedToUnderlying({\n amount: netYield,\n sourceTokenAddress: input.sourceTokenAddress,\n token0Address: input.token0Address,\n token1Address: input.token1Address,\n underlyingPoolTokenAddress: input.underlyingPoolTokenAddress,\n twapTick: input.twapTick,\n })\n\n totalAssetsUnderlying += assetsUnderlying\n totalNetYieldUnderlying += netYieldUnderlying\n }\n\n if (totalAssetsUnderlying === 0n) {\n return null\n }\n\n const apyPct = new Decimal(totalNetYieldUnderlying.toString())\n .div(totalAssetsUnderlying.toString())\n .mul(100)\n .toNumber()\n\n return Number.isFinite(apyPct) ? apyPct : null\n}\n\nexport function calculateVaultNetLendingYieldUnderlyingFromTrackerInputs({\n inputs,\n intervalSeconds,\n}: {\n inputs: VaultNetLendingApyTrackerInput[]\n intervalSeconds: bigint\n}): bigint | null {\n if (intervalSeconds <= 0n) {\n return 0n\n }\n\n let sawAssets = false\n let totalNetYieldUnderlying = 0n\n\n for (const input of inputs) {\n if (input.assets === 0n) {\n continue\n }\n\n const supplyRateWad = (input.interestRateWad * input.utilizationBps) / 10_000n\n const supplyYield = (input.assets * supplyRateWad * intervalSeconds) / WAD\n const positiveNetBorrows = input.netBorrows > 0n ? input.netBorrows : 0n\n const borrowCost = (positiveNetBorrows * input.interestRateWad * intervalSeconds) / WAD\n const netYield = supplyYield - borrowCost\n\n const netYieldUnderlying = convertSignedToUnderlying({\n amount: netYield,\n sourceTokenAddress: input.sourceTokenAddress,\n token0Address: input.token0Address,\n token1Address: input.token1Address,\n underlyingPoolTokenAddress: input.underlyingPoolTokenAddress,\n twapTick: input.twapTick,\n })\n\n sawAssets = true\n totalNetYieldUnderlying += netYieldUnderlying\n }\n\n return sawAssets ? totalNetYieldUnderlying : null\n}\n\nexport async function fetchVaultNetLendingApyPct({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n}: {\n client: PublicClient\n chainId: number\n vaultAddress: Address\n underlyingTokenAddress: Address\n blockNumber?: bigint\n}): Promise<number | null> {\n const poolAddresses = discoverPoolAddresses({\n chainId,\n vaultAddress,\n })\n if (poolAddresses.length === 0) {\n return null\n }\n\n const poolContexts = await Promise.all(\n poolAddresses.map(async (poolAddress): Promise<NetLendingPoolContext> => {\n const [collateral0Address, collateral1Address] = await Promise.all([\n client.readContract({\n address: poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'collateralToken0',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'collateralToken1',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n const [token0Address, token1Address] = await Promise.all([\n client.readContract({\n address: collateral0Address,\n abi: collateralTrackerV2Abi,\n functionName: 'asset',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: collateral1Address,\n abi: collateralTrackerV2Abi,\n functionName: 'asset',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n return {\n poolAddress,\n token0Address,\n token1Address,\n collateral0Address,\n collateral1Address,\n }\n }),\n )\n\n const trackerInputs = await Promise.all(\n poolContexts.flatMap((context) =>\n [0, 1].map(async (tokenIndex): Promise<VaultNetLendingApyTrackerInput | null> => {\n const trackerAddress =\n tokenIndex === 0 ? context.collateral0Address : context.collateral1Address\n const trackerTokenAddress = tokenIndex === 0 ? context.token0Address : context.token1Address\n const underlyingPoolTokenAddress = resolveUnderlyingPoolToken({\n underlyingTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n })\n if (underlyingPoolTokenAddress === null) {\n return null\n }\n\n const [interestRate, poolData, trackerAssets, interestState, twapTick] = await Promise.all([\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'interestRate',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'getPoolData',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'assetsOf',\n args: [vaultAddress],\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'interestState',\n args: [vaultAddress],\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: context.poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'getTWAP',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n if (trackerAssets === 0n) {\n return null\n }\n\n return {\n assets: trackerAssets,\n netBorrows: interestState[1],\n interestRateWad: interestRate,\n utilizationBps: poolData[3],\n sourceTokenAddress: trackerTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n }\n }),\n ),\n )\n\n return calculateVaultNetLendingApyPctFromTrackerInputs(\n trackerInputs.filter((input): input is VaultNetLendingApyTrackerInput => input !== null),\n )\n}\n\nexport async function fetchVaultNetLendingYieldUnderlying({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n intervalSeconds,\n}: {\n client: PublicClient\n chainId: number\n vaultAddress: Address\n underlyingTokenAddress: Address\n blockNumber: bigint\n intervalSeconds: bigint\n}): Promise<bigint | null> {\n const poolAddresses = discoverPoolAddresses({\n chainId,\n vaultAddress,\n })\n if (poolAddresses.length === 0) {\n return null\n }\n\n const poolContexts = await Promise.all(\n poolAddresses.map(async (poolAddress): Promise<NetLendingPoolContext> => {\n const [collateral0Address, collateral1Address] = await Promise.all([\n client.readContract({\n address: poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'collateralToken0',\n blockNumber,\n }),\n client.readContract({\n address: poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'collateralToken1',\n blockNumber,\n }),\n ])\n\n const [token0Address, token1Address] = await Promise.all([\n client.readContract({\n address: collateral0Address,\n abi: collateralTrackerV2Abi,\n functionName: 'asset',\n blockNumber,\n }),\n client.readContract({\n address: collateral1Address,\n abi: collateralTrackerV2Abi,\n functionName: 'asset',\n blockNumber,\n }),\n ])\n\n return {\n poolAddress,\n token0Address,\n token1Address,\n collateral0Address,\n collateral1Address,\n }\n }),\n )\n\n const trackerInputs = await Promise.all(\n poolContexts.flatMap((context) =>\n [0, 1].map(async (tokenIndex): Promise<VaultNetLendingApyTrackerInput | null> => {\n const trackerAddress =\n tokenIndex === 0 ? context.collateral0Address : context.collateral1Address\n const trackerTokenAddress = tokenIndex === 0 ? context.token0Address : context.token1Address\n const underlyingPoolTokenAddress = resolveUnderlyingPoolToken({\n underlyingTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n })\n if (underlyingPoolTokenAddress === null) {\n return null\n }\n\n const [interestRate, poolData, trackerAssets, interestState, twapTick] = await Promise.all([\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'interestRate',\n blockNumber,\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'getPoolData',\n blockNumber,\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'assetsOf',\n args: [vaultAddress],\n blockNumber,\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'interestState',\n args: [vaultAddress],\n blockNumber,\n }),\n client.readContract({\n address: context.poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'getTWAP',\n blockNumber,\n }),\n ])\n\n if (trackerAssets === 0n) {\n return null\n }\n\n return {\n assets: trackerAssets,\n netBorrows: interestState[1],\n interestRateWad: interestRate,\n utilizationBps: poolData[3],\n sourceTokenAddress: trackerTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n }\n }),\n ),\n )\n\n return calculateVaultNetLendingYieldUnderlyingFromTrackerInputs({\n inputs: trackerInputs.filter(\n (input): input is VaultNetLendingApyTrackerInput => input !== null,\n ),\n intervalSeconds,\n })\n}\n\nexport async function fetchVaultLendingAllocation({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n}: {\n client: PublicClient\n chainId: number\n vaultAddress: Address\n underlyingTokenAddress: Address\n blockNumber?: bigint\n}): Promise<VaultLendingAllocationRow[]> {\n const [reservedWithdrawalAssetsRaw, depositEpochRaw] = await Promise.all([\n client.readContract({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'reservedWithdrawalAssets',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'depositEpoch',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n const reservedWithdrawalAssets = toBigInt(reservedWithdrawalAssetsRaw) ?? 0n\n const depositEpoch = toBigInt(depositEpochRaw)\n const depositEpochStateRaw =\n depositEpoch === null\n ? null\n : await client.readContract({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'depositEpochState',\n args: [depositEpoch],\n ...(blockNumber === undefined ? {} : { blockNumber }),\n })\n const unfulfilledDepositAssets =\n depositEpochStateRaw === null\n ? 0n\n : getAssetsDepositedFromDepositEpochState(depositEpochStateRaw)\n\n const poolAddresses = discoverPoolAddresses({\n chainId,\n vaultAddress,\n })\n\n const poolContexts = await Promise.all(\n poolAddresses.map(async (poolAddress): Promise<PoolContext> => {\n const [collateral0Address, collateral1Address] = await Promise.all([\n client.readContract({\n address: poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'collateralToken0',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'collateralToken1',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n const [token0Address, token1Address] = await Promise.all([\n client.readContract({\n address: collateral0Address,\n abi: collateralTrackerV2Abi,\n functionName: 'asset',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: collateral1Address,\n abi: collateralTrackerV2Abi,\n functionName: 'asset',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n const [token0Symbol, token1Symbol, token0Decimals, token1Decimals] = await Promise.all([\n readTokenSymbol({\n client,\n tokenAddress: token0Address,\n blockNumber,\n }),\n readTokenSymbol({\n client,\n tokenAddress: token1Address,\n blockNumber,\n }),\n readTokenDecimals({\n client,\n tokenAddress: token0Address,\n blockNumber,\n }),\n readTokenDecimals({\n client,\n tokenAddress: token1Address,\n blockNumber,\n }),\n ])\n\n return {\n poolAddress,\n token0Address,\n token1Address,\n token0Symbol,\n token1Symbol,\n token0Decimals,\n token1Decimals,\n collateral0Address,\n collateral1Address,\n }\n }),\n )\n\n const trackerRows = await Promise.all(\n poolContexts.flatMap((context) =>\n [0, 1].map(async (tokenIndex): Promise<RowWithoutPct | null> => {\n const trackerAddress =\n tokenIndex === 0 ? context.collateral0Address : context.collateral1Address\n const trackerTokenAddress = tokenIndex === 0 ? context.token0Address : context.token1Address\n const trackerTokenSymbol = tokenIndex === 0 ? context.token0Symbol : context.token1Symbol\n const trackerTokenDecimals =\n tokenIndex === 0 ? context.token0Decimals : context.token1Decimals\n\n const [interestRate, poolData, trackerAssets, twapTick] = await Promise.all([\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'interestRate',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'getPoolData',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: trackerAddress,\n abi: collateralTrackerV2Abi,\n functionName: 'assetsOf',\n args: [vaultAddress],\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n client.readContract({\n address: context.poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'getTWAP',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n }),\n ])\n\n if (trackerAssets === 0n) {\n return null\n }\n\n const underlyingPoolTokenAddress = resolveUnderlyingPoolToken({\n underlyingTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n })\n\n if (underlyingPoolTokenAddress === null) {\n return null\n }\n\n const allocationUnderlying = convertToUnderlying({\n amount: trackerAssets,\n sourceTokenAddress: trackerTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n })\n\n const utilizationBps = poolData[3]\n const supplyRateWad = (interestRate * utilizationBps) / 10_000n\n\n return {\n market: `${context.token0Symbol}/${context.token1Symbol} (${trackerTokenSymbol})`,\n supplyRateWad,\n borrowRateWad: interestRate,\n utilizationBps,\n allocationSourceRaw: trackerAssets,\n sourceTokenAddress: trackerTokenAddress,\n sourceTokenSymbol: trackerTokenSymbol,\n sourceTokenDecimals: trackerTokenDecimals,\n allocationUnderlying,\n isIdle: false,\n hasCollateralMetrics: true,\n panopticPoolAddress: context.poolAddress,\n collateralTrackerAddress: trackerAddress,\n }\n }),\n ),\n )\n\n const tokenContexts = new Map<string, { address: Address; symbol: string; decimals: number }>()\n const underlyingSymbol = await readTokenSymbol({\n client,\n tokenAddress: underlyingTokenAddress,\n blockNumber,\n })\n const underlyingDecimals = await readTokenDecimals({\n client,\n tokenAddress: underlyingTokenAddress,\n blockNumber,\n })\n tokenContexts.set(underlyingTokenAddress.toLowerCase(), {\n address: underlyingTokenAddress,\n symbol: underlyingSymbol,\n decimals: underlyingDecimals,\n })\n for (const context of poolContexts) {\n tokenContexts.set(context.token0Address.toLowerCase(), {\n address: context.token0Address,\n symbol: context.token0Symbol,\n decimals: context.token0Decimals,\n })\n tokenContexts.set(context.token1Address.toLowerCase(), {\n address: context.token1Address,\n symbol: context.token1Symbol,\n decimals: context.token1Decimals,\n })\n }\n\n const idleRows = await Promise.all(\n Array.from(tokenContexts.values()).map(\n async ({ address, symbol, decimals }): Promise<RowWithoutPct | null> => {\n const balance = await readTokenBalance({\n client,\n tokenAddress: address,\n owner: vaultAddress,\n blockNumber,\n })\n\n const adjustedBalance = addressesEqual(address, underlyingTokenAddress)\n ? adjustUnderlyingIdleBalance({\n rawUnderlyingBalance: balance,\n unfulfilledDepositAssets,\n reservedWithdrawalAssets,\n })\n : balance\n\n if (adjustedBalance === 0n) {\n return null\n }\n\n const convertibleContext = poolContexts.find((context) => {\n const underlyingPoolTokenAddress = resolveUnderlyingPoolToken({\n underlyingTokenAddress,\n token0Address: context.token0Address,\n token1Address: context.token1Address,\n })\n if (underlyingPoolTokenAddress === null) {\n return false\n }\n\n return (\n addressesEqual(address, context.token0Address) ||\n addressesEqual(address, context.token1Address) ||\n addressesEqual(address, underlyingPoolTokenAddress)\n )\n })\n\n if (convertibleContext === undefined) {\n const isUnderlyingIdle = addressesEqual(address, underlyingTokenAddress)\n return {\n market: `Idle ${symbol}`,\n supplyRateWad: null,\n borrowRateWad: null,\n utilizationBps: null,\n allocationSourceRaw: adjustedBalance,\n sourceTokenAddress: address,\n sourceTokenSymbol: symbol,\n sourceTokenDecimals: decimals,\n allocationUnderlying: 0n,\n isIdle: true,\n unfulfilledDepositAssetsRaw: isUnderlyingIdle ? unfulfilledDepositAssets : undefined,\n reservedWithdrawalAssetsRaw: isUnderlyingIdle ? reservedWithdrawalAssets : undefined,\n hasCollateralMetrics: false,\n panopticPoolAddress: null,\n collateralTrackerAddress: null,\n }\n }\n\n const twapTick = await client.readContract({\n address: convertibleContext.poolAddress,\n abi: panopticPoolV2Abi,\n functionName: 'getTWAP',\n ...(blockNumber === undefined ? {} : { blockNumber }),\n })\n\n const underlyingPoolTokenAddress = resolveUnderlyingPoolToken({\n underlyingTokenAddress,\n token0Address: convertibleContext.token0Address,\n token1Address: convertibleContext.token1Address,\n })\n if (underlyingPoolTokenAddress === null) {\n return null\n }\n\n const allocationUnderlying = convertToUnderlying({\n amount: adjustedBalance,\n sourceTokenAddress: address,\n token0Address: convertibleContext.token0Address,\n token1Address: convertibleContext.token1Address,\n underlyingPoolTokenAddress,\n twapTick,\n })\n\n const isUnderlyingIdle = addressesEqual(address, underlyingTokenAddress)\n return {\n market: `Idle ${symbol}`,\n supplyRateWad: null,\n borrowRateWad: null,\n utilizationBps: null,\n allocationSourceRaw: adjustedBalance,\n sourceTokenAddress: address,\n sourceTokenSymbol: symbol,\n sourceTokenDecimals: decimals,\n allocationUnderlying,\n isIdle: true,\n unfulfilledDepositAssetsRaw: isUnderlyingIdle ? unfulfilledDepositAssets : undefined,\n reservedWithdrawalAssetsRaw: isUnderlyingIdle ? reservedWithdrawalAssets : undefined,\n hasCollateralMetrics: false,\n panopticPoolAddress: null,\n collateralTrackerAddress: null,\n }\n },\n ),\n )\n\n const rowsWithoutPct: RowWithoutPct[] = [\n ...trackerRows.filter((row): row is RowWithoutPct => row !== null),\n ...idleRows.filter((row): row is RowWithoutPct => row !== null),\n ]\n\n const totalUnderlying = rowsWithoutPct.reduce((sum, row) => sum + row.allocationUnderlying, 0n)\n return rowsWithoutPct.map((row) => ({\n ...row,\n allocationPctBps: computeAllocationPctBps({\n allocationUnderlying: row.allocationUnderlying,\n totalUnderlying,\n }),\n }))\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\n\nexport const getCancelDepositContractConfig = ({ vaultAddress }: { vaultAddress: Address }) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'cancelDeposit',\n args: [],\n }) as const\n\nexport function encodeCancelDepositFunctionData(): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'cancelDeposit',\n args: [],\n })\n}\n\nexport function simulateCancelDeposit({\n viemClient,\n vaultAddress,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getCancelDepositContractConfig({ vaultAddress }),\n account,\n })\n}\n\nexport function cancelDeposit({\n walletClient,\n vaultAddress,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getCancelDepositContractConfig({ vaultAddress }),\n account,\n })\n}\n","import { BaseError, ContractFunctionRevertedError } from 'viem'\n\nexport interface GenericError {\n name: string\n message: string\n}\n\nexport interface DecodedError extends GenericError {\n data?: string\n args?: any\n}\n\n/**\n * Parses a custom error from Viem's BaseError or ContractFunctionRevertedError using BaseError.walk.\n * Docs on walk usage: https://viem.sh/docs/contract/simulateContract.html#handling-custom-errors\n *\n * @param {Error} e - The error to parse.\n * @returns {BaseError | ContractFunctionRevertedError | Error} The parsed error.\n *\n * @example\n * To get typesafe access to revert error, can do something like:\n * if (e instanceof ContractFunctionRevertedError) {\n * // Access custom error properties through the `data` attribute:\n * console.error('Custom error name: ', e.data?.errorName)\n * console.error('Custom error args: ', e.data?.args)\n * } else {\n * console.error('Error name: ', e.name)\n * console.error('Error message: ', e.message)\n * }\n */\nexport const parseCustomError = (e: Error): BaseError | ContractFunctionRevertedError | Error => {\n if (e instanceof BaseError) {\n // If caught error is a revert with a solidity custom error, parse it with `walk`\n const revertError = e.walk((e) => e instanceof ContractFunctionRevertedError)\n if (revertError instanceof ContractFunctionRevertedError) {\n return revertError\n }\n // If no revert error found, return the Viem BaseError\n return e\n }\n\n // If error is not a Viem BaseError, return the original error object that was passed in.\n return e\n}\n\nexport const isErrorUserRejection = (errorMessage: string) =>\n errorMessage.includes('User rejected the request.')\n","import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type { Address } from 'viem'\nimport { zeroAddress } from 'viem'\nimport {\n useAccount,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport { getCancelDepositContractConfig } from '../cancelDeposit'\n\nexport const useCancelDeposit = ({\n chainId,\n vaultAddress,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n\n const canSimulate = vaultAddress !== zeroAddress && account != null && account !== zeroAddress\n\n const simulate = useSimulateContract({\n chainId,\n ...getCancelDepositContractConfig({ vaultAddress }),\n account,\n query: {\n enabled: canSimulate,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [simulate.data?.request, write])\n\n const actionLabel = useMemo(() => {\n if (simulate.isLoading) {\n return 'Simulating deposit cancellation...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Cancelling deposits...'\n }\n return 'Cancel All'\n }, [simulate.isLoading, write.isPending, wait.isLoading])\n\n const isLoading = simulate.isLoading || write.isPending || wait.isLoading\n const canSubmit = simulate.data?.request != null && !isLoading\n\n const error = useMemo(() => {\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [simulate.error, write.error])\n\n return {\n actionLabel,\n act,\n canSubmit,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\n\nexport function encodeExecuteWithdrawalFunctionData({\n user,\n epoch,\n}: {\n user: Address\n epoch: bigint\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'executeWithdrawal',\n args: [user, epoch],\n })\n}\n\nexport function encodeExecuteWithdrawalMulticallFunctionData({\n multicallCalldatas,\n}: {\n multicallCalldatas: Hex[]\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n })\n}\n\nexport const getExecuteWithdrawalContractConfig = ({\n vaultAddress,\n user,\n epoch,\n}: {\n vaultAddress: Address\n user: Address\n epoch: bigint\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'executeWithdrawal',\n args: [user, epoch],\n }) as const\n\nexport const getExecuteWithdrawalMulticallContractConfig = ({\n vaultAddress,\n multicallCalldatas,\n}: {\n vaultAddress: Address\n multicallCalldatas: Hex[]\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n }) as const\n\nexport function simulateExecuteWithdrawal({\n viemClient,\n vaultAddress,\n user,\n epoch,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n user: Address\n epoch: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getExecuteWithdrawalContractConfig({ vaultAddress, user, epoch }),\n account,\n })\n}\n\nexport function executeWithdrawal({\n walletClient,\n vaultAddress,\n user,\n epoch,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n user: Address\n epoch: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getExecuteWithdrawalContractConfig({ vaultAddress, user, epoch }),\n account,\n })\n}\n\nexport function simulateExecuteWithdrawalMulticall({\n viemClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getExecuteWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function executeWithdrawalMulticall({\n walletClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getExecuteWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function buildExecuteWithdrawalCalldatas({\n user,\n epochsToExecute,\n}: {\n user: Address\n epochsToExecute: bigint[]\n}): Hex[] {\n return epochsToExecute.map((epoch) => encodeExecuteWithdrawalFunctionData({ user, epoch }))\n}\n","export type QueuedWithdrawalSnapshot = {\n amount: bigint\n epoch: bigint\n}\n\nexport type WithdrawalEpochStateSnapshot = {\n epoch: bigint\n sharesWithdrawn: bigint\n assetsReceived: bigint\n sharesFulfilled: bigint\n}\n\nfunction mulDiv({\n value,\n numerator,\n denominator,\n}: {\n value: bigint\n numerator: bigint\n denominator: bigint\n}): bigint {\n if (denominator === 0n) {\n return 0n\n }\n return (value * numerator) / denominator\n}\n\nexport function calculateClaimableAssetsFromQueuedWithdrawals({\n queuedWithdrawals,\n withdrawalEpochStates,\n currentWithdrawalEpoch,\n}: {\n queuedWithdrawals: QueuedWithdrawalSnapshot[]\n withdrawalEpochStates: WithdrawalEpochStateSnapshot[]\n currentWithdrawalEpoch: bigint\n}) {\n const epochStatesByEpoch = new Map(withdrawalEpochStates.map((state) => [state.epoch, state]))\n\n const byEpoch: {\n epoch: bigint\n queuedShares: bigint\n userSharesFulfilled: bigint\n assetsToReceive: bigint\n }[] = []\n\n for (const withdrawal of queuedWithdrawals) {\n if (withdrawal.amount === 0n || withdrawal.epoch >= currentWithdrawalEpoch) {\n continue\n }\n\n const epochState = epochStatesByEpoch.get(withdrawal.epoch)\n if (!epochState) {\n continue\n }\n\n if (\n epochState.sharesWithdrawn === 0n ||\n epochState.sharesFulfilled === 0n ||\n epochState.assetsReceived === 0n\n ) {\n continue\n }\n\n const userSharesFulfilled = mulDiv({\n value: withdrawal.amount,\n numerator: epochState.sharesFulfilled,\n denominator: epochState.sharesWithdrawn,\n })\n\n if (userSharesFulfilled === 0n) {\n continue\n }\n\n const assetsToReceive = mulDiv({\n value: userSharesFulfilled,\n numerator: epochState.assetsReceived,\n denominator: epochState.sharesFulfilled,\n })\n\n if (assetsToReceive === 0n) {\n continue\n }\n\n byEpoch.push({\n epoch: withdrawal.epoch,\n queuedShares: withdrawal.amount,\n userSharesFulfilled,\n assetsToReceive,\n })\n }\n\n const epochsToExecute = byEpoch.map((entry) => entry.epoch).sort((a, b) => (a < b ? -1 : 1))\n\n const totalAssets = byEpoch.reduce((sum, entry) => sum + entry.assetsToReceive, 0n)\n\n return { byEpoch, epochsToExecute, totalAssets }\n}\n","import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type { Address } from 'viem'\nimport { zeroAddress } from 'viem'\nimport {\n useAccount,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport {\n buildExecuteWithdrawalCalldatas,\n getExecuteWithdrawalMulticallContractConfig,\n} from '../executeWithdrawal'\nimport type { QueuedWithdrawalSnapshot, WithdrawalEpochStateSnapshot } from '../utils'\nimport { calculateClaimableAssetsFromQueuedWithdrawals } from '../utils'\n\nexport const selectExecutableWithdrawalEpochs = ({\n desiredAssets,\n maxAssetsToExecute,\n claimableWithdrawals,\n}: {\n desiredAssets: bigint\n maxAssetsToExecute?: bigint\n claimableWithdrawals: ReturnType<typeof calculateClaimableAssetsFromQueuedWithdrawals>['byEpoch']\n}) => {\n if (desiredAssets <= 0n) {\n return { epochsToExecute: [] as bigint[], assetsToExecute: 0n }\n }\n\n const ordered = [...claimableWithdrawals].sort((a, b) => {\n if (maxAssetsToExecute !== undefined && a.assetsToReceive !== b.assetsToReceive) {\n return a.assetsToReceive > b.assetsToReceive ? -1 : 1\n }\n return a.epoch < b.epoch ? -1 : 1\n })\n\n const selectedEpochs: bigint[] = []\n let accumulatedAssets = 0n\n\n for (const entry of ordered) {\n const nextAccumulatedAssets = accumulatedAssets + entry.assetsToReceive\n if (maxAssetsToExecute !== undefined && nextAccumulatedAssets > maxAssetsToExecute) {\n continue\n }\n\n selectedEpochs.push(entry.epoch)\n accumulatedAssets = nextAccumulatedAssets\n\n if (accumulatedAssets >= desiredAssets) {\n break\n }\n }\n\n return { epochsToExecute: selectedEpochs, assetsToExecute: accumulatedAssets }\n}\n\nexport const useExecuteWithdrawal = ({\n chainId,\n vaultAddress,\n desiredAssets,\n maxAssetsToExecute,\n queuedWithdrawals,\n withdrawalEpochStates,\n currentWithdrawalEpoch,\n simulationAccount,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n desiredAssets: bigint\n maxAssetsToExecute?: bigint\n queuedWithdrawals: QueuedWithdrawalSnapshot[]\n withdrawalEpochStates: WithdrawalEpochStateSnapshot[]\n currentWithdrawalEpoch: bigint\n simulationAccount?: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n const simulatedAccount = simulationAccount ?? account\n const user = simulatedAccount ?? zeroAddress\n\n const claimableWithdrawals = useMemo(\n () =>\n calculateClaimableAssetsFromQueuedWithdrawals({\n queuedWithdrawals,\n withdrawalEpochStates,\n currentWithdrawalEpoch,\n }),\n [queuedWithdrawals, withdrawalEpochStates, currentWithdrawalEpoch],\n )\n\n const { epochsToExecute, assetsToExecute } = useMemo(() => {\n return selectExecutableWithdrawalEpochs({\n desiredAssets,\n maxAssetsToExecute,\n claimableWithdrawals: claimableWithdrawals.byEpoch,\n })\n }, [desiredAssets, maxAssetsToExecute, claimableWithdrawals.byEpoch])\n\n const multicallCalldatas = useMemo(() => {\n return epochsToExecute.length > 0\n ? buildExecuteWithdrawalCalldatas({ user, epochsToExecute })\n : []\n }, [epochsToExecute, user])\n\n const multicallDecoded = useMemo(() => {\n return epochsToExecute.map((epoch) => ({\n functionName: 'executeWithdrawal',\n args: [user, epoch] as const,\n }))\n }, [epochsToExecute, user])\n\n console.debug('executeWithdrawal multicall calldatas', {\n user,\n epochsToExecute,\n multicallCalldatas,\n multicallDecoded,\n assetsToExecute,\n claimableAssets: claimableWithdrawals.totalAssets,\n })\n\n const canSimulate =\n multicallCalldatas.length > 0 &&\n vaultAddress !== zeroAddress &&\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress\n\n const simulate = useSimulateContract({\n chainId,\n ...getExecuteWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account: simulatedAccount,\n query: {\n enabled: canSimulate,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [simulate.data?.request, write])\n\n const actionLabel = useMemo(() => {\n if (simulate.isLoading) {\n return 'Simulating withdrawal execution...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Executing withdrawal...'\n }\n return 'Execute Withdrawal'\n }, [simulate.isLoading, write.isPending, wait.isLoading])\n\n const isLoading = simulate.isLoading || write.isPending || wait.isLoading\n\n const error = useMemo(() => {\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [simulate.error, write.error])\n\n const output = {\n actionLabel,\n act,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n\n return {\n ...output,\n claimableAssets: claimableWithdrawals.totalAssets,\n assetsToExecute,\n epochsToExecute,\n multicallCalldatas,\n }\n}\n","export const BaseUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x345cA3407942f9d175c9eA8B90e83A36F570f852',\n BoringVaultAddress: '0xb452af299c565D04B05E601efF2840e000C922f1',\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 7,\n ManageRoot: '0x439b725656f4b039bc6f0e69637ca712b889fe92a67b7e3c3bfb048eeb24f54c',\n ManagerAddress: '0xdd6E2406a044582463CFE9F0C774870eAf4A310B',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x6ff765f56848bf7b492313985adc8bb3a473a3ad264f95d1dfeb22c6ec083090',\n PackedArgumentAddresses: '0x9ba1082ab3cb9edea988697a14bbe543a3dabed2',\n TargetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n },\n {\n AddressArguments: ['0xb452af299c565D04B05E601efF2840e000C922f1'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xaecbb22ecbdb783a69ea9936b99a8d9e21e9921c33eb7e9deee8002f16e2c653',\n PackedArgumentAddresses: '0xb452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xd42657b7a5e2ca4a277a22ec2a423213c751079d3bee560aa0c27503d3365882',\n PackedArgumentAddresses:\n '0xb452af299c565d04b05e601eff2840e000c922f1b452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x5aea6888874c2cb0d8cdebf1faf46597700148efb3b34eb9c45824d7be96fa08',\n PackedArgumentAddresses:\n '0xb452af299c565d04b05e601eff2840e000c922f1b452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: ['0xb452af299c565D04B05E601efF2840e000C922f1'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x0388d6fd19c028547765a79cfda374bc28b63fb5a7d7917140d3a4bf9291735c',\n PackedArgumentAddresses: '0xb452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n '0xb452af299c565D04B05E601efF2840e000C922f1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x48991b25cb2c04123611ac39bb8a263b3b5e017df450f8b99043c6b011c47e04',\n PackedArgumentAddresses:\n '0xb452af299c565d04b05e601eff2840e000c922f1b452af299c565d04b05e601eff2840e000c922f1',\n TargetAddress: '0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xB50e8bb68f5855DA742f4579274902a20454174a',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0x439b725656f4b039bc6f0e69637ca712b889fe92a67b7e3c3bfb048eeb24f54c'],\n '1': [\n '0xd9d6b3d3269db0f4cf00c2cd272d4062df2755d6cb946ea297ef3d4dae263b53',\n '0x2402ea021b1c733b28a9994cff136ea03b25da458d771a3b6b439714a5f65189',\n ],\n '2': [\n '0x0f6b2076ed836e73653bccbeca0b14cd622a9008ce63207efe0b68ff8c1752bc',\n '0xa15b4791c182b7a60aba42320f3b0e546bc7b9f9c7f630405046fd9eb8a4e03b',\n '0x93fa6bdda33957e9c908718cae7b6422b249b1a4c173bb1504970f315c3e9175',\n '0x467a4c913fa1e6e405c9c223eb47ab4ea399eb79a20f231961d6fbc28836171f',\n ],\n '3': [\n '0x6ff765f56848bf7b492313985adc8bb3a473a3ad264f95d1dfeb22c6ec083090',\n '0xaecbb22ecbdb783a69ea9936b99a8d9e21e9921c33eb7e9deee8002f16e2c653',\n '0xd42657b7a5e2ca4a277a22ec2a423213c751079d3bee560aa0c27503d3365882',\n '0x5aea6888874c2cb0d8cdebf1faf46597700148efb3b34eb9c45824d7be96fa08',\n '0x0388d6fd19c028547765a79cfda374bc28b63fb5a7d7917140d3a4bf9291735c',\n '0x48991b25cb2c04123611ac39bb8a263b3b5e017df450f8b99043c6b011c47e04',\n '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const BaseWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x345cA3407942f9d175c9eA8B90e83A36F570f852',\n BoringVaultAddress: '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 8,\n ManageRoot: '0xf16b7de890ba886cfdd082d38de768914d04ccc8048da00d4ddc9c4a91e5a927',\n ManagerAddress: '0x2a4923456c79E9ebD10F5Bf5305a5C742bBc1D7C',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x49a37c69f7895816355583596b4be0aeacdde14b42ee6ab030db48060b76e65b',\n PackedArgumentAddresses: '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xe333260c717c7d627669bc93c828e0a7428e77a4123cf3cf8ddd34dcdc1c04d2',\n PackedArgumentAddresses:\n '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d0441b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x0c81b5dfdbae415ec481accb604d0242422780c21f03023d93b6965554645eaf',\n PackedArgumentAddresses:\n '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d0441b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: ['0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0xf67de3c599396a1de64f6e444371d3f535ca07fec79e45f32e5b59012247ec4e',\n PackedArgumentAddresses: '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n '0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x1c458519bcbe83c91581ae657571e885e5912920579433baae833f7b7d189444',\n PackedArgumentAddresses:\n '0x41b7d0515d709a4fd2cf27f9d141d0c2f8713d0441b7d0515d709a4fd2cf27f9d141d0c2f8713d04',\n TargetAddress: '0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xB50e8bb68f5855DA742f4579274902a20454174a',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0xed6a02d4b0a38222eef73d975ec7adc5ca881f53678819679a498d6a9e1b01cc',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x4200000000000000000000000000000000000006',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0x318f82b3dc0e3981caaa2cb243c7f6db03baf1b181aea535e60af815c49d1420',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x4200000000000000000000000000000000000006',\n },\n ],\n MerkleTree: {\n '0': ['0xf16b7de890ba886cfdd082d38de768914d04ccc8048da00d4ddc9c4a91e5a927'],\n '1': [\n '0x568a4614a67249f65190b0a948555aa171897ba2ad5045a66366fbda3d007376',\n '0xbca42dbe1178a2df33362800b614a08e5ed5943f89c7feb03c90adccb974be09',\n ],\n '2': [\n '0x3ab7b6d39bf1809f2258285158d6b81c648c96f0bc8232bf16527c7e2b20ffce',\n '0x5c00194ec30f9320748cfbd831212d634db8c5b1c391e564c34df090ea7e8695',\n '0xec9b0f61187d82d9ef3c32779d17957899b456a92bdf60167d95ea0475393406',\n '0x92726c93facfe3bdc63d5185a232caeb254ac1820afbc57337476304fc233723',\n ],\n '3': [\n '0x49a37c69f7895816355583596b4be0aeacdde14b42ee6ab030db48060b76e65b',\n '0xe333260c717c7d627669bc93c828e0a7428e77a4123cf3cf8ddd34dcdc1c04d2',\n '0x0c81b5dfdbae415ec481accb604d0242422780c21f03023d93b6965554645eaf',\n '0xf67de3c599396a1de64f6e444371d3f535ca07fec79e45f32e5b59012247ec4e',\n '0x1c458519bcbe83c91581ae657571e885e5912920579433baae833f7b7d189444',\n '0x3511807d2f289860aabed888c5f014d6e702ac8e7190c3d1be484184062f275f',\n '0xed6a02d4b0a38222eef73d975ec7adc5ca881f53678819679a498d6a9e1b01cc',\n '0x318f82b3dc0e3981caaa2cb243c7f6db03baf1b181aea535e60af815c49d1420',\n ],\n },\n} as const\n","export const MainnetLegacyUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49',\n BoringVaultAddress: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 10,\n ManageRoot: '0x4df5c1b82729c2e070ab0923230e57bb0d0ee3a0f29159178c1315b4cb47d735',\n ManagerAddress: '0xf42EED8F0d3326ad59fc1f5d4c4009B5F6B4D87c',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0x6778d652A0BCe658C9a0E27D506eA20D179140e5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n PackedArgumentAddresses: '0x6778d652a0bce658c9a0e27d506ea20d179140e5',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x963Fe9c93bc353602656ee4051A75114bA74d6c5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x0ba88b5dab9627bfd3e0fdc7d71942f45d26a0fb325de026c1fbaf69e0e56dad',\n PackedArgumentAddresses: '0x963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xf0056965e40ae08d0b2008a238b1c534bdb8fe9a9781ed4b4210d46220c686a8',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x5dde5a861d62c41e316d6962260d8742601815f56f3b06f10b6543648e3ee1f0',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: ['0x963Fe9c93bc353602656ee4051A75114bA74d6c5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x0282b6e97c1a52b881c9480ea44fc4a2cdd46abbd0703b0c40388c6acefa715a',\n PackedArgumentAddresses: '0x963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0xf4c92c489022aae42690da9bbae84e23acb28b7495aa8a58965fd0173f0c16ad',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x000000007588B488d180899cDEa2080a886D2441',\n },\n {\n AddressArguments: ['0x963Fe9c93bc353602656ee4051A75114bA74d6c5'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xca0ff0331ca1493aa7c0a7c06e1ad55cb2dc63a4b854474a628b520fe45f480e',\n PackedArgumentAddresses: '0x963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xcf5f157610c7f41c82d5ab9fe7cfa154d399b9b374ead620b95df9bfe1150caf',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x0b5e6f71c235d36249a399400fa6741c4d6a56f3b458d85aeacd206e61aafeed',\n PackedArgumentAddresses:\n '0x963fe9c93bc353602656ee4051a75114ba74d6c5963fe9c93bc353602656ee4051a75114ba74d6c5',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0x4df5c1b82729c2e070ab0923230e57bb0d0ee3a0f29159178c1315b4cb47d735'],\n '1': [\n '0xbac4becc6803fad3b5048929ab579b3bcb2d3b5d746b8b0cbe83ffab3bd02af3',\n '0x114252b1f2edd8a0cd246246732ee3e293e423ff6de8631e42db3d1994c0b628',\n ],\n '2': [\n '0xdc61bb3a67e08f65ae5fb69d313d6145340a5b2d58ab80b22ce3eb9271444917',\n '0x1b07cee6fe14ac13400398311846511425edc4858a1179d1f0d8ad648544f98a',\n '0x7c66b4febed550fbb3f11d6b2814491f9423466cc7ef4e16325bac47e4a6bbd6',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0x032280a8f6377dba443a56ec7d00b3c6d2942fe090d3aeb30613a19fdc90569f',\n '0x8a117d51d3bd6ac0a55e9f6a574beed72c865f741ef824ae9784f3d721fc086d',\n '0x925bc995a913d6722560d46f4e0c1560a916430387ec44c1505c487ce7f2ee03',\n '0xeab476d6a326a74d5a1297a40d1a6af5cf0b37320e41f3b342b379cd6b5d6a65',\n '0xbf5201e2b1c88fbe98051b963eb82aaa2433395760c9816b8a7c502039792074',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n '0x0ba88b5dab9627bfd3e0fdc7d71942f45d26a0fb325de026c1fbaf69e0e56dad',\n '0xf0056965e40ae08d0b2008a238b1c534bdb8fe9a9781ed4b4210d46220c686a8',\n '0x5dde5a861d62c41e316d6962260d8742601815f56f3b06f10b6543648e3ee1f0',\n '0x0282b6e97c1a52b881c9480ea44fc4a2cdd46abbd0703b0c40388c6acefa715a',\n '0xf4c92c489022aae42690da9bbae84e23acb28b7495aa8a58965fd0173f0c16ad',\n '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n '0xca0ff0331ca1493aa7c0a7c06e1ad55cb2dc63a4b854474a628b520fe45f480e',\n '0xcf5f157610c7f41c82d5ab9fe7cfa154d399b9b374ead620b95df9bfe1150caf',\n '0x0b5e6f71c235d36249a399400fa6741c4d6a56f3b458d85aeacd206e61aafeed',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const MainnetLegacyWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49',\n BoringVaultAddress: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 12,\n ManageRoot: '0xd097509d7b1fc6f899a47b8d06f8a5e2b3337ee8b98e77ef612a1c54a79370c8',\n ManagerAddress: '0xcc80f113298DdF9D399323D5288aE5Eeaed20D44',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0x779a2aa634A004b3a3f3b322083744869BBC6D66'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x8c7514a7c7a2fcc2879277fddd57e0fb909a347d9870acec7072837bc6cc845f',\n PackedArgumentAddresses: '0x779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xe56b3e14b4827a05f29eb8831783ae2dc367fa07d4119dafcca902a21d57e580',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0xa8a9f210396743484d4b09e374d3e38af4d8d1a10197894c1ea3d16000bcf677',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: ['0x779a2aa634A004b3a3f3b322083744869BBC6D66'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x7b2a36717d43f06bb7a8247bf0929e4447f24ca49b119106b9e6925dfd84619e',\n PackedArgumentAddresses: '0x779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x6db67a9d9af5202848f4926f7aa5211d0d2cccbdda101637ca6c60fdf613281e',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6cd0186Fb4c32B6fD23279bBE0022506958216f9',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x000000007588B488d180899cDEa2080a886D2441',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0x5f912d61b50a583c1384f1c66b6f082e2ad815da3c9c9e5c93171189e427b1f4',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0xdabf1f63a2737d544f0cb9d20b19b6da1a83e0f1998382f93e90d610e59cdca2',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: ['0x6778d652A0BCe658C9a0E27D506eA20D179140e5'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n PackedArgumentAddresses: '0x6778d652a0bce658c9a0e27d506ea20d179140e5',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x779a2aa634A004b3a3f3b322083744869BBC6D66'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xf805e4d58110bd4d25a6d6af8935f12e79f157146f0c329466a3db4a4753bd21',\n PackedArgumentAddresses: '0x779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xc8c0f1a15ffe7ec0a97142e6415fa45dfd28a23025e4a59677a5c50ba375d719',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x1c8620AC42c1F69eE493B953165FCd1864DEB439',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x59a5d4cb31e1fd7832969e599f02275bca7cacd43ed93f1b1058d7347d4f70f7',\n PackedArgumentAddresses:\n '0x779a2aa634a004b3a3f3b322083744869bbc6d66779a2aa634a004b3a3f3b322083744869bbc6d66',\n TargetAddress: '0x6778d652A0BCe658C9a0E27D506eA20D179140e5',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0xd097509d7b1fc6f899a47b8d06f8a5e2b3337ee8b98e77ef612a1c54a79370c8'],\n '1': [\n '0xecc8eceb557095ac1ec73d22b889587cb4b62a247f71eaa240f5d15ae53b0442',\n '0xa3c80589d0591fa84692dd6fb1545db7d2a9bc83d5cb90d79b0a0c84cfb5877c',\n ],\n '2': [\n '0xbdefa4834d99bf83b5723a84a7936801f7b1a6c9f6d26c5728fc60b225707520',\n '0xafb4b8b386986170cc6c4c21e313ee1f62e232b040751016a66bcba8cf2f3ae4',\n '0x3c19856f0ddfa56b8146248d45b503d6ae2a7fd77f88f07b6feba55c963b2415',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0x44fd254707cf6c87ac0efe200b59f712e837dd6ad303b7f827110502d7e0ab7a',\n '0x6264743f8a226c88339ed52ad0a7abd546822c3dba83aab0c5fb12526b5f91d3',\n '0xdb2209c5b9952579d2b01f9410a8b6bd21db999cc7b9b88aa93b4322df84f2c7',\n '0x7e48b787e4c7cc699a80b9e8cee4d897b7641fce92237fdb1a7051549162f2dd',\n '0xf3f55d959a163add55810d3fc9b3fee19effbe69efe5f0fc9f0d0af1937803fa',\n '0xfabe01305db6cc9d463124975d40fade6e3b605795a318ce075352a750b3f494',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0x8c7514a7c7a2fcc2879277fddd57e0fb909a347d9870acec7072837bc6cc845f',\n '0xe56b3e14b4827a05f29eb8831783ae2dc367fa07d4119dafcca902a21d57e580',\n '0xa8a9f210396743484d4b09e374d3e38af4d8d1a10197894c1ea3d16000bcf677',\n '0x7b2a36717d43f06bb7a8247bf0929e4447f24ca49b119106b9e6925dfd84619e',\n '0x6db67a9d9af5202848f4926f7aa5211d0d2cccbdda101637ca6c60fdf613281e',\n '0x82a883bd80ac38a61ce761a509a6e6ce10659099fc872db39cbb940abd356e29',\n '0x5f912d61b50a583c1384f1c66b6f082e2ad815da3c9c9e5c93171189e427b1f4',\n '0xdabf1f63a2737d544f0cb9d20b19b6da1a83e0f1998382f93e90d610e59cdca2',\n '0x346f207a137fe0706e1762800b928a9a5b77a1413a33ba8f204cf44d680ea7b4',\n '0xf805e4d58110bd4d25a6d6af8935f12e79f157146f0c329466a3db4a4753bd21',\n '0xc8c0f1a15ffe7ec0a97142e6415fa45dfd28a23025e4a59677a5c50ba375d719',\n '0x59a5d4cb31e1fd7832969e599f02275bca7cacd43ed93f1b1058d7347d4f70f7',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const MainnetUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x65aA902AE3135658587FFC36ED51B61c927114e1',\n BoringVaultAddress: '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 12,\n ManageRoot: '0xed7d4ae055fd62c6edc93bd676456748f52fe4f4b78f60ab3ef6394bacc31b5d',\n ManagerAddress: '0x2ce65016366ef7320078e0758D58Cf1038bc7C4e',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0x12bF31955522BAC337D93e1bC0a39F68D8BDa216'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0xa4ff0f9069d415056a5ca71d6f564b3cb9948639de45f81830c44c3c13d5c0d6',\n PackedArgumentAddresses: '0x12bf31955522bac337d93e1bc0a39f68d8bda216',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xbb2c673192faea1e2c7bcf47132061066ff342c42176e91889a5876d9ae3ef77',\n PackedArgumentAddresses: '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0x174f9b40456f664fa1a0f9f2fb904df68f567720f7453dd62195297240bfcaf7',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x6c17d228bfbb30e970580cfaf2503a7a205836f8120b536fe94623204ac3d100',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: ['0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0xb47becce43e16f164eeebe57151b3a474a5810fad1bad8c8c502c82a534a0398',\n PackedArgumentAddresses: '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0xc91cc83e9b2230b47bb390d3be17407f42c3b9348cc6596803c269dec49e8d51',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x00000000563b70d704f4c6675a5f6ac989fbae13',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xb5731bb52d9dccf49773020a8ddc59afbf937d6e203ef104e085f94f18b50e9b',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0xa600a5aea3b025f316a4cc99e16c188953aeca6e1bf347d6b2ea8f549b859689',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: ['0x141cc517a6276542B59732Fd85C1A2C536eF7aCA'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Approve wSPCXx poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x51f664e3fbdd3e6780eebf725f83871971fedbc1344987982349ae6d636e04df',\n PackedArgumentAddresses: '0x141cc517a6276542b59732fd85c1a2c536ef7aca',\n TargetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n {\n AddressArguments: ['0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Deposit USDC for wSPCXx poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xb8baaad70acd2686ec36c69277ae1e53e2e5f515a3a6087187cfb6c00ec9f322',\n PackedArgumentAddresses: '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x141cc517a6276542B59732Fd85C1A2C536eF7aCA',\n },\n {\n AddressArguments: [\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n '0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from wSPCXx poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0x4ede52d99a5e4722726abc80a939e2f94268cfb2a0584a184bcae79a1c6c82c2',\n PackedArgumentAddresses:\n '0x236d0558f06cd60780b232d4ec4c92d2cb7e4d18236d0558f06cd60780b232d4ec4c92d2cb7e4d18',\n TargetAddress: '0x141cc517a6276542B59732Fd85C1A2C536eF7aCA',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0xed7d4ae055fd62c6edc93bd676456748f52fe4f4b78f60ab3ef6394bacc31b5d'],\n '1': [\n '0xfdd68e4155c3f0143529939165390a7717848d745d5848b5de5dcbabc28e5bbb',\n '0x559d6a628cef4d55eabf143e84c270be2c3f61e236c2c36115fc29ebadc30bfa',\n ],\n '2': [\n '0x03ddbd298d0afd4b181cc56a653fcd6c4cc6124edba7ffcea1cf9abc1396b34a',\n '0x5a78f5fea4886abf9b990cb11d6c97d8d90fa3aef528289cd2c7da07f7188d15',\n '0x67b572f27c64d564c387cf62d05e228ee073dedf11cfad4f95ca78d2673354ce',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0xa48323079d50b7688f97c97276fe33bcc23c3664b0a94aa9f24162ad63e4c622',\n '0x9604e6ac6ac45ac3ec61d6ab2b52d96aeb9025c8e90cf93f7411b9c9a9dda29b',\n '0xa22cac1a8d963fd80eecce587c5833c77d944bc1dfaace739c66421431823263',\n '0x6bab63ba855d0ba1ef5fc9c8058253f278aec18f88be21d95b7cb11097d11e8a',\n '0x20b3b7048a0735825b5cb83b931b60eb4bbbd1c68c8466d86df5ae72361d5da4',\n '0xa0e8444c994231a2893a69086326624b42ad2973144580795d00406bb36b0b3f',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0xa4ff0f9069d415056a5ca71d6f564b3cb9948639de45f81830c44c3c13d5c0d6',\n '0xbb2c673192faea1e2c7bcf47132061066ff342c42176e91889a5876d9ae3ef77',\n '0x174f9b40456f664fa1a0f9f2fb904df68f567720f7453dd62195297240bfcaf7',\n '0x6c17d228bfbb30e970580cfaf2503a7a205836f8120b536fe94623204ac3d100',\n '0xb47becce43e16f164eeebe57151b3a474a5810fad1bad8c8c502c82a534a0398',\n '0xc91cc83e9b2230b47bb390d3be17407f42c3b9348cc6596803c269dec49e8d51',\n '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n '0xb5731bb52d9dccf49773020a8ddc59afbf937d6e203ef104e085f94f18b50e9b',\n '0xa600a5aea3b025f316a4cc99e16c188953aeca6e1bf347d6b2ea8f549b859689',\n '0x51f664e3fbdd3e6780eebf725f83871971fedbc1344987982349ae6d636e04df',\n '0xb8baaad70acd2686ec36c69277ae1e53e2e5f515a3a6087187cfb6c00ec9f322',\n '0x4ede52d99a5e4722726abc80a939e2f94268cfb2a0584a184bcae79a1c6c82c2',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const MainnetWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x65aA902AE3135658587FFC36ED51B61c927114e1',\n BoringVaultAddress: '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 10,\n ManageRoot: '0x14c4c96cc3730452ce71a447bdde6132f81acec862098a9ddd5e086805046a07',\n ManagerAddress: '0xB6Fc48e658C9B1a7dbdFA51A5E153ab60BB2e04d',\n TreeCapacity: 16,\n },\n leafs: [\n {\n AddressArguments: ['0xd4e2c720a760049cc4151bcf61e3a9348db9cd92'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0xcde717428f55a23f1c5590ae350e411a96f376207e4cd74f2ad261072915782c',\n PackedArgumentAddresses: '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xcebfac0106f9d33ca5766a2f6054eeb9df218af39b9f87a446a54674481caa4f',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x6eacf89fb24e20afd26b47bc704571a6ae14675623678caf767ff4167b989b94',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: ['0xd4e2c720a760049cc4151bcf61e3a9348db9cd92'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x2393ae33b276888f3402cd9be5ac50c99f6c093ab26d76309fcde84f32ac5779',\n PackedArgumentAddresses: '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x7560d3271ed5c3e12cf98e16f3e6810c35a9da7ade8642ce4f4047012f768ae4',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x00000000563b70d704f4c6675a5f6ac989fbae13',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0x89484d127bf05d2f4fcc56181335b8d87023e41ccc81c042e9f922f578f1471b',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0x7f94c593f64614a4739e3005bc02e9db203ded2796c3104cc7609ecbc89bc240',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xa7b676c12e394da66e124d4611ddf107a1267f476fab0b3cbc3dc885a8e5a77c',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x219732b5a811c3167d72323963327d5ea266e27575caecab2d1f35746f30a2f2',\n PackedArgumentAddresses:\n '0xd4e2c720a760049cc4151bcf61e3a9348db9cd92d4e2c720a760049cc4151bcf61e3a9348db9cd92',\n TargetAddress: '0x12bF31955522BAC337D93e1bC0a39F68D8BDa216',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0x14c4c96cc3730452ce71a447bdde6132f81acec862098a9ddd5e086805046a07'],\n '1': [\n '0xcd0defea21f2f5625ba2d231bce9500ad31a12181821c3e44a9eab8091726ef9',\n '0xb456d992b88713679d0f26a8212a362b552e0f1b8e8f4730ef9d93260658e6f4',\n ],\n '2': [\n '0xd49b1154605f32b0e47658955ad9aa7f3fe8cd35358ee78a1cd96557e5c3aa4d',\n '0x6522d66ec4944c055a9004873f1d3eab7c42ec8328cad32a43f7cf5626099576',\n '0x106e1c4bfe0f35058431f70afe23aa18c131f9ed04c0e9442c15742800410377',\n '0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe',\n ],\n '3': [\n '0xa6bf0406d4c1a9cc26bd7b8e443b3d933011eeed6f805e7f96c98f8ca7b6570c',\n '0x1b4e0fc75d960683a9b652c9f9aa14ee22ba29685a3253a96bf65aea93934cee',\n '0xc13cedfed63f868281097bfc4491f94573cf90c8d65c417aefc7c10ed03f60cf',\n '0xe684b7c98715395e7d8478eb48587181872712495d41b47760ac5fe24211fc5e',\n '0x9c00f68592aac90ff74b0f87e48d5a3f0ca6108c0af23ed83cbbdab4ea49ffb6',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n '0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba',\n ],\n '4': [\n '0xcde717428f55a23f1c5590ae350e411a96f376207e4cd74f2ad261072915782c',\n '0xcebfac0106f9d33ca5766a2f6054eeb9df218af39b9f87a446a54674481caa4f',\n '0x6eacf89fb24e20afd26b47bc704571a6ae14675623678caf767ff4167b989b94',\n '0x2393ae33b276888f3402cd9be5ac50c99f6c093ab26d76309fcde84f32ac5779',\n '0x7560d3271ed5c3e12cf98e16f3e6810c35a9da7ade8642ce4f4047012f768ae4',\n '0xf5cc741985c1ce6b1af02be04696bd5944097198abf5ce09945a956143b14e6d',\n '0x89484d127bf05d2f4fcc56181335b8d87023e41ccc81c042e9f922f578f1471b',\n '0x7f94c593f64614a4739e3005bc02e9db203ded2796c3104cc7609ecbc89bc240',\n '0xa7b676c12e394da66e124d4611ddf107a1267f476fab0b3cbc3dc885a8e5a77c',\n '0x219732b5a811c3167d72323963327d5ea266e27575caecab2d1f35746f30a2f2',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const SepoliaUSDCPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab',\n BoringVaultAddress: '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 7,\n ManageRoot: '0xa1b9500717e9d72ec1ccd50a4eba78b7d076bb7a528bec91ef95120057dddb09',\n ManagerAddress: '0xFB5aa3e0b46F3859D90B14b52ffd287013b5Ec53',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0x7A5D178492dbdABcbBc6201D1021BEE145d48604'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Approve poUSDC to spend USDC',\n FunctionSelector: '0x095ea7b3',\n FunctionSignature: 'approve(address,uint256)',\n LeafDigest: '0x9461e89d49750d5907202338d134c6daddb0896535eae9c430d55d2cee82f59e',\n PackedArgumentAddresses: '0x7a5d178492dbdabcbbc6201d1021bee145d48604',\n TargetAddress: '0xFFFeD8254566B7F800f6D8CDb843ec75AE49B07A',\n },\n {\n AddressArguments: ['0xdd7a8d6c6975488e801129bC84302d74e2361208'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Deposit USDC for poUSDC',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x9c93ec90c7ea88615dd65b6ff43ac7f98ed84b1c140101cc2ccdf098e608c9be',\n PackedArgumentAddresses: '0xdd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw USDC from poUSDC',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0xad29e2070420c9e71c54289506f2bedf1db470c77e6162e1d6558e281ded2bff',\n PackedArgumentAddresses:\n '0xdd7a8d6c6975488e801129bc84302d74e2361208dd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw USDC from poUSDC (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x38a43f1c9c27df6ee14372a33dd96c6a9bc3e2b401778d3ec21155a70cb513db',\n PackedArgumentAddresses:\n '0xdd7a8d6c6975488e801129bc84302d74e2361208dd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: ['0xdd7a8d6c6975488e801129bC84302d74e2361208'],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Mint poUSDC using USDC',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x562c2d451550cc51d46d40c3dc94c3e087a52562fdc46b304dca2ab88f4e19a8',\n PackedArgumentAddresses: '0xdd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n '0xdd7a8d6c6975488e801129bC84302d74e2361208',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Redeem poUSDC for USDC',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0xd02acf42be262c0a898ec5ac6d5915b9bdbc9ab17b6901e1724869dee69b8a77',\n PackedArgumentAddresses:\n '0xdd7a8d6c6975488e801129bc84302d74e2361208dd7a8d6c6975488e801129bc84302d74e2361208',\n TargetAddress: '0x7A5D178492dbdABcbBc6201D1021BEE145d48604',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x03AFf7Be6A5afB2bC6830BC54778AF674006850A',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0x0000000000000000000000000000000000000000',\n Description: '',\n FunctionSelector: '0xc5d24601',\n FunctionSignature: '',\n LeafDigest: '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x0000000000000000000000000000000000000000',\n },\n ],\n MerkleTree: {\n '0': ['0xa1b9500717e9d72ec1ccd50a4eba78b7d076bb7a528bec91ef95120057dddb09'],\n '1': [\n '0x48dcc6e8707acd93af05fd08a0793459a05379aa707943e86a3b7847fc110bc1',\n '0xecd6d00ae00fd8a293f778b93ac6047d79636b5ca0a4612c27ee026e125c3a7b',\n ],\n '2': [\n '0xf606bf15edc845b246578ae14fc338e0076613566189996d3a70f762fad418ce',\n '0x8aba570a1bdefb55e1bf67844bc7f217d62f518a08f501c2df13b33f1184e675',\n '0x45daf701984f7971697756995579d83851ebc8bb77ad8f556bbfc305a918b88e',\n '0xbc8066705d2dce5ac2a8bbeb8b0b615abdecb64771f38ca6f3a9cea8191009e8',\n ],\n '3': [\n '0x9461e89d49750d5907202338d134c6daddb0896535eae9c430d55d2cee82f59e',\n '0x9c93ec90c7ea88615dd65b6ff43ac7f98ed84b1c140101cc2ccdf098e608c9be',\n '0xad29e2070420c9e71c54289506f2bedf1db470c77e6162e1d6558e281ded2bff',\n '0x38a43f1c9c27df6ee14372a33dd96c6a9bc3e2b401778d3ec21155a70cb513db',\n '0x562c2d451550cc51d46d40c3dc94c3e087a52562fdc46b304dca2ab88f4e19a8',\n '0xd02acf42be262c0a898ec5ac6d5915b9bdbc9ab17b6901e1724869dee69b8a77',\n '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n '0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400',\n ],\n },\n} as const\n","export const SepoliaWETHPLPStrategistLeaves = {\n metadata: {\n AccountantAddress: '0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab',\n BoringVaultAddress: '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n DigestComposition: [\n 'Bytes20(DECODER_AND_SANITIZER_ADDRESS)',\n 'Bytes20(TARGET_ADDRESS)',\n 'Bytes1(CAN_SEND_VALUE)',\n 'Bytes4(TARGET_FUNCTION_SELECTOR)',\n 'Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)',\n ],\n LeafCount: 8,\n ManageRoot: '0x581793b57ae9c0ac8df9abcdef6b763b22a32660519fbb9dd1a01d2aaa248fe9',\n ManagerAddress: '0x95eC124FAAB70D7aE147c3BE0336E01a828AE2d5',\n TreeCapacity: 8,\n },\n leafs: [\n {\n AddressArguments: ['0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Deposit ETH for poETH (payable)',\n FunctionSelector: '0x6e553f65',\n FunctionSignature: 'deposit(uint256,address)',\n LeafDigest: '0x9b24110737afcb987506ddd8f59900fd09eebe0ff42b2ffb03767b24412eaaf2',\n PackedArgumentAddresses: '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw ETH from poETH',\n FunctionSelector: '0xb460af94',\n FunctionSignature: 'withdraw(uint256,address,address)',\n LeafDigest: '0x883ed54c6b548e15898585a07b7406c65e54b596b8787513d0ba3eeb3d4bff4b',\n PackedArgumentAddresses:\n '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1d58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Withdraw ETH from poETH (with open positions)',\n FunctionSelector: '0xe51161ba',\n FunctionSignature: 'withdraw(uint256,address,address,uint256[],bool)',\n LeafDigest: '0x6d5fe941248716784e6a072a3af40be2d138ea562fa45fe36117e66d86b6cdf6',\n PackedArgumentAddresses:\n '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1d58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: ['0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1'],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Mint poETH using ETH (payable)',\n FunctionSelector: '0x94bf804d',\n FunctionSignature: 'mint(uint256,address)',\n LeafDigest: '0x1828fd6242784147e797b5133befb53c343136c37071fb297cd1850f9974c33a',\n PackedArgumentAddresses: '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n '0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1',\n ],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Redeem poETH for ETH',\n FunctionSelector: '0xba087652',\n FunctionSignature: 'redeem(uint256,address,address)',\n LeafDigest: '0x2325b78e0933e6adb39562717808fcb76ef18749a1629d1fcce693471a6c712d',\n PackedArgumentAddresses:\n '0xd58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1d58c4f9aee5bbfcf28dc9a8d3d57b323fa6521b1',\n TargetAddress: '0x45f93888565bA53650Af5ceF6279776B0e6B8A92',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Dispatch mint/burn options on PanopticPool',\n FunctionSelector: '0xc25813aa',\n FunctionSignature: 'dispatch(uint256[],uint256[],uint128[],int24[3][],bool,uint256)',\n LeafDigest: '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0x03AFf7Be6A5afB2bC6830BC54778AF674006850A',\n },\n {\n AddressArguments: [],\n CanSendValue: true,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Wrap ETH to WETH',\n FunctionSelector: '0xd0e30db0',\n FunctionSignature: 'deposit()',\n LeafDigest: '0xd5d314e003b7be0bc5b48dd95e8e90ace37442584bdc796a88adeb12b413bec3',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n {\n AddressArguments: [],\n CanSendValue: false,\n DecoderAndSanitizerAddress: '0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d',\n Description: 'Unwrap WETH to ETH',\n FunctionSelector: '0x2e1a7d4d',\n FunctionSignature: 'withdraw(uint256)',\n LeafDigest: '0x64a0a569cc5c1a480b8f063eea635c7e20755215cb2ed09491abd3f4b5fa0f9d',\n PackedArgumentAddresses: '0x',\n TargetAddress: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n ],\n MerkleTree: {\n '0': ['0x581793b57ae9c0ac8df9abcdef6b763b22a32660519fbb9dd1a01d2aaa248fe9'],\n '1': [\n '0x4404bac2e837d3368e20f2ba8bbee9e132ba396819179b94051a460fd21614fe',\n '0x52c239a4ff7004b9762d0e2c966dac18e4637a2375036232005ac987c2cf0606',\n ],\n '2': [\n '0x82102132eac6d417a85265b8882ced5b86dbb1c264ee38e423a8e6009c9362ed',\n '0x1e1b2014941cafc046f1bd0a4cf910c2559b321b8ae22060b376121b8aaebe26',\n '0x3fec91b8bc52656dee6cd63345dbc0af7cc5a1ee92f0b13fa5fd7e636c91d339',\n '0x795e43f4fa81b9adc25d49179991d447ffdb6726b33e57616331e226a88c754d',\n ],\n '3': [\n '0x9b24110737afcb987506ddd8f59900fd09eebe0ff42b2ffb03767b24412eaaf2',\n '0x883ed54c6b548e15898585a07b7406c65e54b596b8787513d0ba3eeb3d4bff4b',\n '0x6d5fe941248716784e6a072a3af40be2d138ea562fa45fe36117e66d86b6cdf6',\n '0x1828fd6242784147e797b5133befb53c343136c37071fb297cd1850f9974c33a',\n '0x2325b78e0933e6adb39562717808fcb76ef18749a1629d1fcce693471a6c712d',\n '0x4e91b56ed66af11f559e469d2d2fd362ae4344e8e27ea088ecb69f6602917937',\n '0xd5d314e003b7be0bc5b48dd95e8e90ace37442584bdc796a88adeb12b413bec3',\n '0x64a0a569cc5c1a480b8f063eea635c7e20755215cb2ed09491abd3f4b5fa0f9d',\n ],\n },\n} as const\n","import { z } from 'zod'\n\nconst addressSchema = z.custom<`0x${string}`>((val) => {\n return typeof val === 'string' && /^0x[a-fA-F0-9]{40}$/.test(val)\n})\n\nexport const HypoVaultManagerConfigSchema = z.object({\n deployment: z.enum(['dev', 'prod']),\n artifactSet: z.enum(['base', 'mainnet-prod', 'mainnet-legacy', 'sepolia']).optional(),\n vaultAssetIndex: z.union([z.literal(0n), z.literal(1n)]),\n manageCycleIntervalMs: z.number().positive().optional(), // can be optional if only running manage cycles in response to websocket events instead of polling\n vaultCapInUnderlying: z.bigint().positive(),\n vaultCapInShares: z.bigint().positive().optional(), // when set, manager caps by totalSupply instead of totalAssets\n allowUnlimitedDepositRequestIfCapNotReached: z.boolean().optional(),\n maxBuyingPowerUsageBps: z.number().int().positive().max(10000), // skip auto-fulfilling a withdrawal if it would push requiredCollateral / collateralBalance past this, on the vault's asset side\n chainId: z.number().int().positive().optional(),\n poolDeploymentBlock: z.number().int().nonnegative().optional(),\n hypoVaultAddress: addressSchema.optional(),\n addresses: z\n .object({\n ethUsdc500bpsV4Collateral0: addressSchema.optional(),\n ethUsdc500bpsV4Collateral1: addressSchema.optional(),\n ethUsdc500bpsV4PanopticPool: addressSchema.optional(),\n hypoVaultManagerWithMerkleVerification: addressSchema.optional(),\n hypoVault: addressSchema.optional(),\n underlyingToken: addressSchema.optional(),\n })\n .optional(),\n manualTxDefaults: z\n .object({\n collateralAllocations: z\n .array(\n z.object({\n trackerAddress: addressSchema,\n allocationBps: z.number().int().positive().max(10000),\n }),\n )\n .optional(),\n })\n .optional(),\n deltaHedge: z\n .object({\n deltaThresholdBps: z.bigint().positive().optional(),\n maxHedgeSlots: z.number().int().positive().optional(),\n })\n .optional(),\n alerts: z\n .object({\n outOfRangeEnabled: z.boolean().optional(),\n })\n .optional(),\n})\n\nexport type HypoVaultManagerConfig = z.infer<typeof HypoVaultManagerConfigSchema>\n","import { type Hex, encodeFunctionData } from 'viem'\n\nimport { HypoVaultManagerWithMerkleVerificationAbi } from '../../abis/HypoVaultManagerWithMerkleVerification'\n\nexport function encodeFulfillDepositsFunctionData({\n assetsToFulfill,\n managerInput,\n}: {\n assetsToFulfill: bigint\n managerInput: Hex\n}) {\n return encodeFunctionData({\n abi: HypoVaultManagerWithMerkleVerificationAbi,\n functionName: 'fulfillDeposits',\n args: [assetsToFulfill, managerInput],\n })\n}\n","import { type Hex, encodeFunctionData } from 'viem'\n\nimport { HypoVaultManagerWithMerkleVerificationAbi } from '../../abis/HypoVaultManagerWithMerkleVerification'\n\nexport function encodeFulfillWithdrawalsFunctionData({\n sharesToFulfill,\n maxAssetsReceived,\n managerInput,\n}: {\n sharesToFulfill: bigint\n maxAssetsReceived: bigint\n managerInput: Hex\n}) {\n return encodeFunctionData({\n abi: HypoVaultManagerWithMerkleVerificationAbi,\n functionName: 'fulfillWithdrawals',\n args: [sharesToFulfill, maxAssetsReceived, managerInput],\n })\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\n\nexport const getRequestDepositContractConfig = ({\n vaultAddress,\n assets,\n}: {\n vaultAddress: Address\n assets: bigint\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'requestDeposit',\n args: [assets],\n }) as const\n\nexport function encodeRequestDepositFunctionData({ assets }: { assets: bigint }): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'requestDeposit',\n args: [assets],\n })\n}\n\nexport function simulateRequestDeposit({\n viemClient,\n vaultAddress,\n assets,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n assets: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getRequestDepositContractConfig({ vaultAddress, assets }),\n account,\n })\n}\n\nexport function requestDeposit({\n walletClient,\n vaultAddress,\n assets,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n assets: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getRequestDepositContractConfig({ vaultAddress, assets }),\n account,\n })\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport type { Address } from 'viem'\nimport { maxUint256, zeroAddress } from 'viem'\nimport {\n useAccount,\n useReadContract,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { Erc20Abi } from '../../../abis/erc20ABI'\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport { getRequestDepositContractConfig } from '../requestDeposit'\n\nconst APPROVAL_SYNC_POLL_INTERVAL_MS = 1200\nconst APPROVAL_SYNC_MAX_ATTEMPTS = 20\n\nexport const useRequestDeposit = ({\n chainId,\n vaultAddress,\n assets,\n tokenAddress,\n simulationAccount,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n assets: bigint\n tokenAddress: Address\n simulationAccount?: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n const simulatedAccount = simulationAccount ?? account\n const canReadAllowance =\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress &&\n tokenAddress !== zeroAddress &&\n vaultAddress !== zeroAddress\n\n const allowanceRead = useReadContract({\n chainId,\n address: canReadAllowance ? tokenAddress : undefined,\n abi: Erc20Abi,\n functionName: 'allowance',\n args: canReadAllowance ? [simulatedAccount, vaultAddress] : undefined,\n query: {\n enabled: canReadAllowance,\n },\n })\n\n const allowanceKnown = allowanceRead.data !== undefined\n\n const tokenNeedsApproval = canReadAllowance && allowanceKnown && allowanceRead.data < assets\n const normalizedAccount = account?.toLowerCase()\n const normalizedSimulationAccount = simulationAccount?.toLowerCase()\n const canApproveForSimulatedAccount =\n normalizedAccount != null &&\n normalizedAccount !== zeroAddress &&\n (normalizedSimulationAccount === undefined || normalizedSimulationAccount === normalizedAccount)\n\n const refetchAllowance = allowanceRead.refetch\n\n const approveSimulate = useSimulateContract({\n chainId,\n address: tokenAddress,\n abi: Erc20Abi,\n functionName: 'approve',\n args: [vaultAddress, maxUint256],\n account,\n query: {\n enabled:\n allowanceKnown &&\n tokenNeedsApproval &&\n assets > 0n &&\n account != null &&\n canApproveForSimulatedAccount,\n retry: false,\n },\n })\n\n const approveWrite = useWriteContract()\n\n const approveWait = useWaitForTransactionReceipt({\n chainId,\n hash: approveWrite.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const simulate = useSimulateContract({\n chainId,\n ...getRequestDepositContractConfig({ vaultAddress, assets }),\n account: simulatedAccount,\n query: {\n enabled:\n allowanceKnown &&\n !tokenNeedsApproval &&\n assets > 0n &&\n vaultAddress !== zeroAddress &&\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledApproveHashRef = useRef<`0x${string}` | undefined>(undefined)\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n const approvalSyncAttemptCountRef = useRef(0)\n const [isApprovalSyncing, setIsApprovalSyncing] = useState(false)\n\n useEffect(() => {\n const approveHash = approveWrite.data\n if (!approveWait.isSuccess || approveHash == null) {\n return\n }\n if (handledApproveHashRef.current === approveHash) {\n return\n }\n\n handledApproveHashRef.current = approveHash\n approvalSyncAttemptCountRef.current = 0\n setIsApprovalSyncing(true)\n void refetchAllowance()\n }, [approveWait.isSuccess, approveWrite.data, refetchAllowance])\n\n useEffect(() => {\n if (!isApprovalSyncing) {\n return\n }\n if (!tokenNeedsApproval) {\n setIsApprovalSyncing(false)\n return\n }\n if (approvalSyncAttemptCountRef.current >= APPROVAL_SYNC_MAX_ATTEMPTS) {\n setIsApprovalSyncing(false)\n return\n }\n\n const timeoutId = setTimeout(() => {\n approvalSyncAttemptCountRef.current += 1\n void refetchAllowance()\n }, APPROVAL_SYNC_POLL_INTERVAL_MS)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }, [isApprovalSyncing, tokenNeedsApproval, refetchAllowance])\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n if (isApprovalSyncing) {\n return undefined\n }\n if (tokenNeedsApproval) {\n const request = approveSimulate.data?.request\n return request != null ? approveWrite.writeContract(request) : undefined\n }\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [\n tokenNeedsApproval,\n approveSimulate.data?.request,\n approveWrite,\n isApprovalSyncing,\n simulate.data?.request,\n write,\n ])\n\n const actionLabel = useMemo(() => {\n if (isApprovalSyncing) {\n return 'Approval confirmed. Syncing allowance...'\n }\n if (tokenNeedsApproval) {\n if (!canApproveForSimulatedAccount) {\n return 'Approval Required'\n }\n if (approveSimulate.isLoading) {\n return 'Simulating approval...'\n }\n if (approveWrite.isPending || approveWait.isLoading) {\n return 'Approving...'\n }\n return 'Approve Token'\n }\n if (simulate.isLoading) {\n return 'Simulating deposit request...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Requesting deposit...'\n }\n return 'Request Deposit'\n }, [\n isApprovalSyncing,\n tokenNeedsApproval,\n canApproveForSimulatedAccount,\n approveSimulate.isLoading,\n approveWrite.isPending,\n approveWait.isLoading,\n simulate.isLoading,\n write.isPending,\n wait.isLoading,\n ])\n\n const isLoading =\n isApprovalSyncing ||\n (tokenNeedsApproval &&\n (approveSimulate.isLoading || approveWrite.isPending || approveWait.isLoading)) ||\n (!tokenNeedsApproval && (simulate.isLoading || write.isPending || wait.isLoading))\n\n const error = useMemo(() => {\n if (tokenNeedsApproval) {\n if (approveSimulate.error) {\n return parseCustomError(approveSimulate.error)\n }\n if (approveWrite.error) {\n return parseCustomError(approveWrite.error)\n }\n }\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [tokenNeedsApproval, approveSimulate.error, approveWrite.error, simulate.error, write.error])\n\n return {\n actionLabel,\n act,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n}\n","export type QueuedDepositSnapshot = {\n amount: bigint\n epoch: bigint\n}\n\nexport type DepositEpochStateSnapshot = {\n assetsDeposited: bigint\n assetsFulfilled: bigint\n epoch: bigint\n sharesReceived: bigint\n}\n\nexport type SharePrice = {\n numerator: bigint\n denominator: bigint\n}\n\nexport type ClaimableSharesByEpoch = {\n epoch: bigint\n queuedAssets: bigint\n userAssetsDeposited: bigint\n sharesToMint: bigint\n}\n\nexport type ClaimableExecutionSharesByEpoch = {\n epoch: bigint\n sharesToMint: bigint\n}\n\nfunction mulDiv({\n value,\n numerator,\n denominator,\n}: {\n value: bigint\n numerator: bigint\n denominator: bigint\n}): bigint {\n if (denominator === 0n) {\n return 0n\n }\n return (value * numerator) / denominator\n}\n\nexport function getMinQueuedDepositEpoch({\n queuedDeposits,\n}: {\n queuedDeposits: QueuedDepositSnapshot[]\n}): bigint | null {\n const eligible = queuedDeposits\n .filter((deposit) => deposit.amount > 0n)\n .map((deposit) => deposit.epoch)\n\n if (eligible.length === 0) {\n return null\n }\n\n return eligible.reduce((min, epoch) => (epoch < min ? epoch : min))\n}\n\nexport function calculateClaimableSharesFromQueuedDeposits({\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n}: {\n queuedDeposits: QueuedDepositSnapshot[]\n depositEpochStates: DepositEpochStateSnapshot[]\n currentDepositEpoch: bigint\n}) {\n const epochStatesByEpoch = new Map(depositEpochStates.map((state) => [state.epoch, state]))\n\n const byEpoch: ClaimableSharesByEpoch[] = []\n const executionSharesByEpoch = new Map<bigint, bigint>()\n\n for (const deposit of queuedDeposits) {\n if (deposit.amount === 0n || deposit.epoch >= currentDepositEpoch) {\n continue\n }\n\n let remainingAssets = deposit.amount\n let userAssetsDeposited = 0n\n let sharesToMint = 0n\n\n for (let epoch = deposit.epoch; epoch < currentDepositEpoch; epoch += 1n) {\n const epochState = epochStatesByEpoch.get(epoch)\n if (\n epochState === undefined ||\n epochState.assetsDeposited <= 0n ||\n epochState.assetsFulfilled <= 0n ||\n remainingAssets <= 0n\n ) {\n continue\n }\n\n const rawFulfilledPortion = mulDiv({\n value: remainingAssets,\n numerator: epochState.assetsFulfilled,\n denominator: epochState.assetsDeposited,\n })\n if (rawFulfilledPortion <= 0n) {\n continue\n }\n\n const fulfilledPortion =\n rawFulfilledPortion > remainingAssets ? remainingAssets : rawFulfilledPortion\n userAssetsDeposited += fulfilledPortion\n remainingAssets -= fulfilledPortion\n\n if (epochState.sharesReceived > 0n) {\n const sharesForEpoch = mulDiv({\n value: fulfilledPortion,\n numerator: epochState.sharesReceived,\n denominator: epochState.assetsFulfilled,\n })\n sharesToMint += sharesForEpoch\n const existingExecutionShares = executionSharesByEpoch.get(epoch) ?? 0n\n executionSharesByEpoch.set(epoch, existingExecutionShares + sharesForEpoch)\n }\n }\n\n if (sharesToMint === 0n) {\n continue\n }\n\n byEpoch.push({\n epoch: deposit.epoch,\n queuedAssets: deposit.amount,\n userAssetsDeposited,\n sharesToMint,\n })\n }\n\n const byExecutionEpoch: ClaimableExecutionSharesByEpoch[] = Array.from(\n executionSharesByEpoch.entries(),\n ).map(([epoch, sharesToMint]) => ({ epoch, sharesToMint }))\n\n const epochsToExecute = byExecutionEpoch\n .map((entry) => entry.epoch)\n .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))\n\n const totalShares = byEpoch.reduce((sum, entry) => sum + entry.sharesToMint, 0n)\n\n return { byEpoch, byExecutionEpoch, epochsToExecute, totalShares }\n}\n\nexport function selectExecuteDepositEpochs({\n claimableByExecutionEpoch,\n requiredClaimableShares,\n requestAllAvailableShares = false,\n}: {\n claimableByExecutionEpoch: ClaimableExecutionSharesByEpoch[]\n requiredClaimableShares: bigint\n requestAllAvailableShares?: boolean\n}): bigint[] {\n const claimableSharesByEpoch = new Map<bigint, bigint>()\n\n for (const entry of claimableByExecutionEpoch) {\n if (entry.sharesToMint <= 0n) {\n continue\n }\n\n const existing = claimableSharesByEpoch.get(entry.epoch) ?? 0n\n claimableSharesByEpoch.set(entry.epoch, existing + entry.sharesToMint)\n }\n\n const candidates = Array.from(claimableSharesByEpoch.entries()).map(([epoch, sharesToMint]) => ({\n epoch,\n sharesToMint,\n }))\n\n if (requestAllAvailableShares) {\n return candidates\n .sort((a, b) => (a.epoch < b.epoch ? -1 : a.epoch > b.epoch ? 1 : 0))\n .map((entry) => entry.epoch)\n }\n\n if (requiredClaimableShares <= 0n) {\n return []\n }\n\n const sortedCandidates = [...candidates].sort((a, b) => {\n if (a.sharesToMint === b.sharesToMint) {\n return a.epoch < b.epoch ? -1 : a.epoch > b.epoch ? 1 : 0\n }\n return a.sharesToMint > b.sharesToMint ? -1 : 1\n })\n\n const selectedEpochs: bigint[] = []\n let accumulatedShares = 0n\n for (const candidate of sortedCandidates) {\n if (accumulatedShares >= requiredClaimableShares) {\n break\n }\n selectedEpochs.push(candidate.epoch)\n accumulatedShares += candidate.sharesToMint\n }\n\n return selectedEpochs\n}\n\nexport function calculateAvailableShares({\n walletShares,\n claimableDepositShares,\n}: {\n walletShares: bigint\n claimableDepositShares: bigint\n}): bigint {\n return walletShares + claimableDepositShares\n}\n\nexport function calculateSharesFromAssets({\n assets,\n sharePrice,\n}: {\n assets: bigint\n sharePrice: SharePrice\n}): bigint {\n return mulDiv({\n value: assets,\n numerator: sharePrice.denominator,\n denominator: sharePrice.numerator,\n })\n}\n\nexport function calculateAssetsFromShares({\n shares,\n sharePrice,\n}: {\n shares: bigint\n sharePrice: SharePrice\n}): bigint {\n return mulDiv({\n value: shares,\n numerator: sharePrice.numerator,\n denominator: sharePrice.denominator,\n })\n}\n","import type { Account, Address, Chain, Client, Hex, Transport } from 'viem'\nimport { encodeFunctionData } from 'viem'\nimport { simulateContract, writeContract } from 'viem/actions'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\nimport {\n type DepositEpochStateSnapshot,\n type QueuedDepositSnapshot,\n type SharePrice,\n calculateAvailableShares,\n calculateClaimableSharesFromQueuedDeposits,\n calculateSharesFromAssets,\n selectExecuteDepositEpochs,\n} from './utils'\n\nexport function encodeExecuteDepositFunctionData({\n user,\n epoch,\n}: {\n user: Address\n epoch: bigint\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'executeDeposit',\n args: [user, epoch],\n })\n}\n\nexport function encodeRequestWithdrawalFunctionData({ shares }: { shares: bigint }): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'requestWithdrawal',\n args: [shares],\n })\n}\n\nexport function encodeRequestWithdrawalMulticallFunctionData({\n multicallCalldatas,\n}: {\n multicallCalldatas: Hex[]\n}): Hex {\n return encodeFunctionData({\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n })\n}\n\nexport const getRequestWithdrawalContractConfig = ({\n vaultAddress,\n shares,\n}: {\n vaultAddress: Address\n shares: bigint\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'requestWithdrawal',\n args: [shares],\n }) as const\n\nexport const getRequestWithdrawalMulticallContractConfig = ({\n vaultAddress,\n multicallCalldatas,\n}: {\n vaultAddress: Address\n multicallCalldatas: Hex[]\n}) =>\n ({\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'multicall',\n args: [multicallCalldatas],\n }) as const\n\nexport function simulateRequestWithdrawal({\n viemClient,\n vaultAddress,\n shares,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n shares: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getRequestWithdrawalContractConfig({ vaultAddress, shares }),\n account,\n })\n}\n\nexport function requestWithdrawal({\n walletClient,\n vaultAddress,\n shares,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n shares: bigint\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getRequestWithdrawalContractConfig({ vaultAddress, shares }),\n account,\n })\n}\n\nexport function simulateRequestWithdrawalMulticall({\n viemClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n viemClient: Client<Transport, Chain, Account | undefined>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return simulateContract(viemClient, {\n ...getRequestWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function requestWithdrawalMulticall({\n walletClient,\n vaultAddress,\n multicallCalldatas,\n account,\n}: {\n walletClient: Client<Transport, Chain, Account>\n vaultAddress: Address\n multicallCalldatas: Hex[]\n account?: Account | Address\n}): Promise<unknown> {\n return writeContract(walletClient, {\n ...getRequestWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account,\n })\n}\n\nexport function buildExecuteDepositCalldatas({\n user,\n epochsToExecute,\n}: {\n user: Address\n epochsToExecute: bigint[]\n}): Hex[] {\n return epochsToExecute.map((epoch) => encodeExecuteDepositFunctionData({ user, epoch }))\n}\n\nexport function buildRequestWithdrawalCalldatas({\n user,\n desiredAssets,\n requestAllAvailableShares = false,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n}: {\n user: Address\n desiredAssets: bigint\n requestAllAvailableShares?: boolean\n sharePrice: SharePrice\n walletShares: bigint\n queuedDeposits: QueuedDepositSnapshot[]\n depositEpochStates: DepositEpochStateSnapshot[]\n currentDepositEpoch: bigint\n}) {\n const claimable = calculateClaimableSharesFromQueuedDeposits({\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n })\n\n const availableShares = calculateAvailableShares({\n walletShares,\n claimableDepositShares: claimable.totalShares,\n })\n\n const sharesForAssets = calculateSharesFromAssets({\n assets: desiredAssets,\n sharePrice,\n })\n\n const sharesToRequest = requestAllAvailableShares\n ? availableShares\n : sharesForAssets > availableShares\n ? availableShares\n : sharesForAssets\n\n const requiredClaimableShares =\n sharesToRequest > walletShares ? sharesToRequest - walletShares : 0n\n\n const selectedExecuteDepositEpochs = selectExecuteDepositEpochs({\n claimableByExecutionEpoch: claimable.byExecutionEpoch,\n requiredClaimableShares,\n requestAllAvailableShares,\n })\n\n const executeDepositCalldatas = buildExecuteDepositCalldatas({\n user,\n epochsToExecute: selectedExecuteDepositEpochs,\n })\n\n const requestWithdrawalCalldata =\n sharesToRequest > 0n ? encodeRequestWithdrawalFunctionData({ shares: sharesToRequest }) : null\n\n const multicallCalldatas = requestWithdrawalCalldata\n ? [...executeDepositCalldatas, requestWithdrawalCalldata]\n : executeDepositCalldatas\n\n return {\n claimableDepositShares: claimable,\n selectedExecuteDepositEpochs,\n availableShares,\n sharesToRequest,\n multicallCalldatas,\n }\n}\n","import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport type { Address } from 'viem'\nimport { zeroAddress } from 'viem'\nimport {\n useAccount,\n useSimulateContract,\n useWaitForTransactionReceipt,\n useWriteContract,\n} from 'wagmi'\n\nimport { isErrorUserRejection, parseCustomError } from '../../../errors/ethereum'\nimport type { BaseContractWriteHookOutput } from '../../../types/baseContractWriteHookOutput'\nimport {\n buildRequestWithdrawalCalldatas,\n getRequestWithdrawalMulticallContractConfig,\n} from '../requestWithdrawal'\nimport type { DepositEpochStateSnapshot, QueuedDepositSnapshot, SharePrice } from '../utils'\n\nexport const useRequestWithdrawal = ({\n chainId,\n vaultAddress,\n desiredAssets,\n requestAllAvailableShares = false,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n simulationAccount,\n onWaitSuccess,\n}: {\n chainId?: number\n vaultAddress: Address\n desiredAssets: bigint\n requestAllAvailableShares?: boolean\n sharePrice: SharePrice\n walletShares: bigint\n queuedDeposits: QueuedDepositSnapshot[]\n depositEpochStates: DepositEpochStateSnapshot[]\n currentDepositEpoch: bigint\n simulationAccount?: Address\n onWaitSuccess?: () => void\n}) => {\n const { address: account } = useAccount()\n const simulatedAccount = simulationAccount ?? account\n const user = simulatedAccount ?? zeroAddress\n\n const {\n claimableDepositShares,\n selectedExecuteDepositEpochs,\n availableShares,\n sharesToRequest,\n multicallCalldatas,\n } = useMemo(\n () =>\n buildRequestWithdrawalCalldatas({\n user,\n desiredAssets,\n requestAllAvailableShares,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n }),\n [\n user,\n desiredAssets,\n requestAllAvailableShares,\n sharePrice,\n walletShares,\n queuedDeposits,\n depositEpochStates,\n currentDepositEpoch,\n ],\n )\n\n const canSimulate =\n multicallCalldatas.length > 0 &&\n vaultAddress !== zeroAddress &&\n simulatedAccount != null &&\n simulatedAccount !== zeroAddress\n\n const simulate = useSimulateContract({\n chainId,\n ...getRequestWithdrawalMulticallContractConfig({ vaultAddress, multicallCalldatas }),\n account: simulatedAccount,\n query: {\n enabled: canSimulate,\n retry: false,\n },\n })\n\n const write = useWriteContract()\n\n const wait = useWaitForTransactionReceipt({\n chainId,\n hash: write.data,\n query: {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n },\n })\n\n const handledRequestHashRef = useRef<`0x${string}` | undefined>(undefined)\n\n useEffect(() => {\n const requestHash = write.data\n if (!wait.isSuccess || requestHash == null) {\n return\n }\n if (handledRequestHashRef.current === requestHash) {\n return\n }\n\n handledRequestHashRef.current = requestHash\n onWaitSuccess?.()\n }, [onWaitSuccess, wait.isSuccess, write.data])\n\n const act = useCallback(() => {\n const request = simulate.data?.request\n return request != null ? write.writeContract(request) : undefined\n }, [simulate.data?.request, write])\n\n const actionLabel = useMemo(() => {\n if (simulate.isLoading) {\n return 'Simulating withdrawal request...'\n }\n if (write.isPending || wait.isLoading) {\n return 'Requesting withdrawal...'\n }\n return 'Request Withdrawal'\n }, [simulate.isLoading, write.isPending, wait.isLoading])\n\n const isLoading = simulate.isLoading || write.isPending || wait.isLoading\n\n const error = useMemo(() => {\n if (simulate.error) {\n return parseCustomError(simulate.error)\n }\n if (write.error && !isErrorUserRejection(write.error.message)) {\n return parseCustomError(write.error)\n }\n return undefined\n }, [simulate.error, write.error])\n\n const output = {\n actionLabel,\n act,\n isLoading,\n error,\n simulate,\n write,\n wait,\n } satisfies BaseContractWriteHookOutput\n\n return {\n ...output,\n claimableDepositShares,\n selectedExecuteDepositEpochs,\n availableShares,\n sharesToRequest,\n multicallCalldatas,\n }\n}\n","export class VaultApyPreInceptionBlockError extends Error {\n readonly blockNumber: bigint\n readonly minBlockNumber: bigint\n\n constructor({\n blockNumber,\n minBlockNumber,\n context,\n }: {\n blockNumber: bigint\n minBlockNumber: bigint\n context: string\n }) {\n super(\n `[vault-apy][pre-inception] ${context}: block ${blockNumber.toString()} < minBlock ${minBlockNumber.toString()}`,\n )\n this.name = 'VaultApyPreInceptionBlockError'\n this.blockNumber = blockNumber\n this.minBlockNumber = minBlockNumber\n }\n}\n\nexport function getVaultApyErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message\n }\n if (typeof error === 'string') {\n return error\n }\n return 'unknown error'\n}\n\nexport function isExpectedHistoricalReadMiss(error: unknown): boolean {\n const message = getVaultApyErrorMessage(error)\n return (\n error instanceof VaultApyPreInceptionBlockError ||\n message.includes('returned no data (\"0x\")') ||\n message.includes('InvalidPools()') ||\n message.includes('[computeNAV]') ||\n message.includes('The contract function \"computeNAV\" reverted')\n )\n}\n\nexport function isStaleOraclePriceError(error: unknown): boolean {\n const message = getVaultApyErrorMessage(error)\n return message.includes('StaleOraclePrice()') || message.includes('0xa887f2d8')\n}\n\nexport function isStaleOraclePriceReadError(error: unknown): boolean {\n return isStaleOraclePriceError(error)\n}\n","import * as Types from './hypoVault-types.generated';\n\nimport { GraphQLClient, RequestOptions } from 'graphql-request';\nimport gql from 'graphql-tag';\ntype GraphQLClientRequestHeaders = RequestOptions['requestHeaders'];\nexport const DepositEpochStateFragmentDoc = gql`\n fragment DepositEpochState on DepositEpochState {\n id\n epoch\n assetsDeposited\n assetsFulfilled\n sharesReceived\n hypoVault {\n id\n }\n}\n `;\nexport const HypoVaultFragmentDoc = gql`\n fragment HypoVault on HypoVault {\n id\n symbol\n name\n underlyingToken {\n id\n symbol\n decimals\n name\n }\n performanceFeeBps\n owner\n feeWallet\n manager\n accountant\n withdrawalEpoch\n depositEpoch\n reservedWithdrawalAssets\n depositEpochStates {\n id\n }\n withdrawalEpochStates {\n id\n }\n userBalances {\n id\n }\n totalAssetsDeposited\n totalAssetsWithdrawn\n totalPerformanceFeesCollected\n createdAt\n updatedAt\n createdAtBlock\n updatedAtBlock\n}\n `;\nexport const WithdrawalEpochStateFragmentDoc = gql`\n fragment WithdrawalEpochState on WithdrawalEpochState {\n id\n epoch\n sharesWithdrawn\n assetsReceived\n sharesFulfilled\n hypoVault {\n id\n }\n}\n `;\nexport const GetDepositOverviewDocument = gql`\n query GetDepositOverview($account: String!, $hypoVault: String!, $hypoVaultId: ID!, $historyLimit: Int = 5) {\n hypoVault(id: $hypoVaultId) {\n id\n underlyingToken {\n symbol\n decimals\n }\n }\n queuedDeposits(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: desc\n ) {\n amount\n epoch\n }\n queuedWithdrawals(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: desc\n ) {\n amount\n epoch\n }\n depositExecuteds(\n first: $historyLimit\n orderBy: blockTimestamp\n orderDirection: desc\n where: {user: $account, hypoVault: $hypoVault}\n ) {\n assets\n blockTimestamp\n }\n withdrawalExecuteds(\n first: $historyLimit\n orderBy: blockTimestamp\n orderDirection: desc\n where: {user: $account, hypoVault: $hypoVault}\n ) {\n assets\n blockTimestamp\n }\n}\n `;\nexport const GetLatestDepositAndWithdrawEpochDocument = gql`\n query GetLatestDepositAndWithdrawEpoch($hypoVault: String!) {\n depositEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...DepositEpochState\n }\n withdrawalEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...WithdrawalEpochState\n }\n}\n ${DepositEpochStateFragmentDoc}\n${WithdrawalEpochStateFragmentDoc}`;\nexport const GetLatestEpochDocument = gql`\n query GetLatestEpoch($hypoVault: String!) {\n depositEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...DepositEpochState\n }\n withdrawalEpochStates(\n where: {hypoVault: $hypoVault}\n orderBy: epoch\n orderDirection: desc\n first: 1\n ) {\n ...WithdrawalEpochState\n }\n}\n ${DepositEpochStateFragmentDoc}\n${WithdrawalEpochStateFragmentDoc}`;\nexport const GetVaultHistoryDocument = gql`\n query GetVaultHistory($hypoVault: String!, $first: Int = 200, $skip: Int = 0) {\n depositRequesteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n depositsFulfilleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assetsFulfilled\n sharesReceived\n blockTimestamp\n transactionHash\n }\n withdrawalRequesteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n shares\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n withdrawalsFulfilleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assetsReceived\n sharesFulfilled\n blockTimestamp\n transactionHash\n }\n depositCancelleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n withdrawalCancelleds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n shares\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n depositExecuteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n shares\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n withdrawalExecuteds(\n where: {hypoVault: $hypoVault}\n orderBy: blockTimestamp\n orderDirection: desc\n first: $first\n skip: $skip\n ) {\n id\n assets\n shares\n performanceFee\n blockTimestamp\n transactionHash\n user {\n id\n }\n }\n}\n `;\nexport const GetFilteredHypoVaultsDocument = gql`\n query GetFilteredHypoVaults($hypoVaultWhitelist: [Bytes!]!) {\n hypoVaults(where: {id_in: $hypoVaultWhitelist}) {\n ...HypoVault\n }\n}\n ${HypoVaultFragmentDoc}`;\nexport const GetQueuedWithdrawalsForExecutionDocument = gql`\n query GetQueuedWithdrawalsForExecution($account: String!, $hypoVault: String!, $hypoVaultId: ID!) {\n hypoVault(id: $hypoVaultId) {\n id\n withdrawalEpoch\n }\n queuedWithdrawals(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: asc\n ) {\n amount\n epoch\n }\n}\n `;\nexport const GetWithdrawalEpochStatesForExecutionDocument = gql`\n query GetWithdrawalEpochStatesForExecution($hypoVault: String!, $epochs: [BigInt!]!) {\n withdrawalEpochStates(where: {hypoVault: $hypoVault, epoch_in: $epochs}) {\n ...WithdrawalEpochState\n }\n}\n ${WithdrawalEpochStateFragmentDoc}`;\nexport const GetQueuedDepositsForWithdrawalDocument = gql`\n query GetQueuedDepositsForWithdrawal($account: String!, $hypoVault: String!, $hypoVaultId: ID!) {\n hypoVault(id: $hypoVaultId) {\n id\n depositEpoch\n }\n userBalances(where: {account: $account, hypoVault: $hypoVault}) {\n shares\n }\n queuedDeposits(\n where: {account: $account, hypoVault: $hypoVault, amount_gt: \"0\"}\n orderBy: epoch\n orderDirection: asc\n ) {\n amount\n epoch\n }\n}\n `;\nexport const GetDepositEpochStatesForWithdrawalDocument = gql`\n query GetDepositEpochStatesForWithdrawal($hypoVault: String!, $minEpoch: BigInt!, $maxEpoch: BigInt!) {\n depositEpochStates(\n where: {hypoVault: $hypoVault, epoch_gte: $minEpoch, epoch_lt: $maxEpoch}\n orderBy: epoch\n orderDirection: asc\n ) {\n ...DepositEpochState\n }\n}\n ${DepositEpochStateFragmentDoc}`;\n\nexport type SdkFunctionWrapper = <T>(action: (requestHeaders?:Record<string, string>) => Promise<T>, operationName: string, operationType?: string, variables?: any) => Promise<T>;\n\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) => action();\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n GetDepositOverview(variables: Types.GetDepositOverviewQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetDepositOverviewQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetDepositOverviewQuery>(GetDepositOverviewDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetDepositOverview', 'query', variables);\n },\n GetLatestDepositAndWithdrawEpoch(variables: Types.GetLatestDepositAndWithdrawEpochQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetLatestDepositAndWithdrawEpochQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetLatestDepositAndWithdrawEpochQuery>(GetLatestDepositAndWithdrawEpochDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetLatestDepositAndWithdrawEpoch', 'query', variables);\n },\n GetLatestEpoch(variables: Types.GetLatestEpochQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetLatestEpochQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetLatestEpochQuery>(GetLatestEpochDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetLatestEpoch', 'query', variables);\n },\n GetVaultHistory(variables: Types.GetVaultHistoryQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetVaultHistoryQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetVaultHistoryQuery>(GetVaultHistoryDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetVaultHistory', 'query', variables);\n },\n GetFilteredHypoVaults(variables: Types.GetFilteredHypoVaultsQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetFilteredHypoVaultsQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetFilteredHypoVaultsQuery>(GetFilteredHypoVaultsDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetFilteredHypoVaults', 'query', variables);\n },\n GetQueuedWithdrawalsForExecution(variables: Types.GetQueuedWithdrawalsForExecutionQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetQueuedWithdrawalsForExecutionQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetQueuedWithdrawalsForExecutionQuery>(GetQueuedWithdrawalsForExecutionDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetQueuedWithdrawalsForExecution', 'query', variables);\n },\n GetWithdrawalEpochStatesForExecution(variables: Types.GetWithdrawalEpochStatesForExecutionQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetWithdrawalEpochStatesForExecutionQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetWithdrawalEpochStatesForExecutionQuery>(GetWithdrawalEpochStatesForExecutionDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetWithdrawalEpochStatesForExecution', 'query', variables);\n },\n GetQueuedDepositsForWithdrawal(variables: Types.GetQueuedDepositsForWithdrawalQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetQueuedDepositsForWithdrawalQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetQueuedDepositsForWithdrawalQuery>(GetQueuedDepositsForWithdrawalDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetQueuedDepositsForWithdrawal', 'query', variables);\n },\n GetDepositEpochStatesForWithdrawal(variables: Types.GetDepositEpochStatesForWithdrawalQueryVariables, requestHeaders?: GraphQLClientRequestHeaders): Promise<Types.GetDepositEpochStatesForWithdrawalQuery> {\n return withWrapper((wrappedRequestHeaders) => client.request<Types.GetDepositEpochStatesForWithdrawalQuery>(GetDepositEpochStatesForWithdrawalDocument, variables, {...requestHeaders, ...wrappedRequestHeaders}), 'GetDepositEpochStatesForWithdrawal', 'query', variables);\n }\n };\n}\nexport type Sdk = ReturnType<typeof getSdk>;","import { GraphQLClient } from 'graphql-request'\n\nimport { getSdk as getHypoVaultSdk } from './graphql/hypoVault-sdk.generated'\nimport { CHAIN_DEPLOYMENTS } from './hypoVault/chainDeployments'\n\n// const chainToPanopticGraphQlAPI: Record<number, string> = {\n// // mainnet\n// 1: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/dev/gn',\n// // anvil\n// 31337:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/dev/gn',\n// // unichain\n// 130: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-unichain/dev/gn',\n// // polygon\n// 137: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// // arbitrum\n// 42161:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// // base\n// 8453: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/dev/gn',\n// // sepolia\n// 11155111:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/dev/gn',\n// // avalanche\n// 43114:\n// 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// // op\n// 10: 'https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/beta7-dev/gn',\n// }\n\nexport const chainToHypoVaultGraphQlAPI: Record<number, string> = {}\n\nfor (const deployment of Object.values(CHAIN_DEPLOYMENTS)) {\n chainToHypoVaultGraphQlAPI[deployment.chainId] = deployment.subgraphs.hypovault\n}\n\n// TODO: move Panoptic subgraph queries and sdk construction into SDK here\n// export const getPanopticGraphQLClient = (chainId: number) => {\n// const apiUrl = chainToPanopticGraphQlAPI[chainId];\n// const client = new GraphQLClient(apiUrl);\n// return getPanopticSdk(client);\n// };\n\nexport function getHypoVaultGraphQLClient(chainId: number): ReturnType<typeof getHypoVaultSdk> {\n const apiUrl = chainToHypoVaultGraphQlAPI[chainId]\n if (apiUrl === undefined) {\n throw new Error(`Unsupported HypoVault subgraph chainId: ${chainId}`)\n }\n const client = new GraphQLClient(apiUrl)\n return getHypoVaultSdk(client)\n}\n\nexport type HypoVaultGraphQLClient = ReturnType<typeof getHypoVaultGraphQLClient>\n","import { GraphQLClient } from 'graphql-request'\nimport type { Address } from 'viem'\n\nimport { chainToHypoVaultGraphQlAPI } from '../../graphqlClient'\n\ntype FirstDepositEvent = {\n blockTimestamp: string\n hypoVault: {\n id: string\n }\n}\n\ntype FirstDepositEventsResponse = {\n depositExecuteds: FirstDepositEvent[]\n depositsFulfilleds: FirstDepositEvent[]\n}\n\nfunction parseTimestampSec(value: string): number | null {\n const parsed = Number(value)\n return Number.isFinite(parsed) && parsed > 0 ? parsed : null\n}\n\nasync function fetchFirstDepositTimestampForVault({\n graphClient,\n vaultAddress,\n}: {\n graphClient: GraphQLClient\n vaultAddress: string\n}): Promise<number | null> {\n const response = await graphClient.request<FirstDepositEventsResponse>(\n `\n query FirstVaultDepositTimestamp($hypoVault: String!) {\n depositExecuteds(\n where: {\n hypoVault: $hypoVault\n assets_gt: \"0\"\n shares_gt: \"0\"\n }\n orderBy: blockTimestamp\n orderDirection: asc\n first: 1\n ) {\n blockTimestamp\n hypoVault {\n id\n }\n }\n depositsFulfilleds(\n where: {\n hypoVault: $hypoVault\n assetsFulfilled_gt: \"0\"\n sharesReceived_gt: \"0\"\n }\n orderBy: blockTimestamp\n orderDirection: asc\n first: 1\n ) {\n blockTimestamp\n hypoVault {\n id\n }\n }\n }\n `,\n { hypoVault: vaultAddress.toLowerCase() },\n )\n\n const timestamps = [...response.depositExecuteds, ...response.depositsFulfilleds]\n .map((event) => parseTimestampSec(event.blockTimestamp))\n .filter((timestamp): timestamp is number => timestamp !== null)\n\n if (timestamps.length === 0) {\n return null\n }\n return Math.min(...timestamps)\n}\n\nexport async function fetchFirstDepositTimestampByVaultId({\n chainId,\n vaultAddresses,\n}: {\n chainId: number\n vaultAddresses: Address[] | string[]\n}): Promise<Record<string, number>> {\n const endpoint = chainToHypoVaultGraphQlAPI[chainId as keyof typeof chainToHypoVaultGraphQlAPI]\n if (endpoint === undefined || vaultAddresses.length === 0) {\n return {}\n }\n\n const graphClient = new GraphQLClient(endpoint)\n const entries = await Promise.all(\n vaultAddresses.map(async (vaultAddress) => {\n const vaultAddressLower = vaultAddress.toLowerCase()\n const timestamp = await fetchFirstDepositTimestampForVault({\n graphClient,\n vaultAddress: vaultAddressLower,\n }).catch((error) => {\n console.warn(\n `[vault-apy] Failed first deposit timestamp lookup for vault ${vaultAddressLower}`,\n error,\n )\n return null\n })\n return [vaultAddressLower, timestamp] as const\n }),\n )\n\n return Object.fromEntries(\n entries.filter((entry): entry is readonly [string, number] => entry[1] !== null),\n )\n}\n","import Decimal from 'decimal.js'\n\nexport function computeSharePriceFromNavSnapshot({\n nav,\n assetsDeposited,\n reservedWithdrawalAssets,\n shares,\n}: {\n nav: bigint\n assetsDeposited: bigint\n reservedWithdrawalAssets: bigint\n shares: bigint\n}): Decimal | null {\n if (shares <= 0n) {\n return null\n }\n\n // The `+ 1n` is an intentional rounding correction that mirrors the on-chain\n // share-price math (round-up favoring the vault), not an off-by-one.\n const adjustedAssets = nav + 1n - assetsDeposited - reservedWithdrawalAssets\n if (adjustedAssets <= 0n) {\n return null\n }\n\n return new Decimal(adjustedAssets.toString()).div(new Decimal(shares.toString()))\n}\n\nexport function calculateAnnualizedApyPct({\n currentSharePrice,\n previousSharePrice,\n days,\n}: {\n currentSharePrice: Decimal\n previousSharePrice: Decimal\n days: number\n}): number | null {\n if (days <= 0 || !Number.isFinite(days)) {\n return null\n }\n\n if (currentSharePrice.lte(0) || previousSharePrice.lte(0)) {\n return null\n }\n\n const annualizationExponent = new Decimal(365).div(new Decimal(days))\n const growthFactor = currentSharePrice.div(previousSharePrice)\n return Decimal.pow(growthFactor, annualizationExponent).minus(1).times(100).toNumber()\n}\n","import type { Address, Hex } from 'viem'\n\nconst PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE =\n '0x608060405234801561000f575f5ffd5b5060043610610090575f3560e01c80638da5cb5b116100635780638da5cb5b14610135578063995cac6d14610145578063a519c19814610158578063d597b7361461016b578063f2fde38b1461017e575f5ffd5b8063016ff32e1461009457806328d6ae4a146100cb5780634f0e0ef3146100ec578063715018a61461012b575b5f5ffd5b6100b66100a236600461274b565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100de6100d9366004612766565b610191565b6040519081526020016100c2565b6101137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c2565b6101336101b3565b005b5f546001600160a01b0316610113565b6101336101533660046127d0565b6101c6565b61013361016636600461274b565b610598565b6100de610179366004612881565b6105c3565b61013361018c36600461274b565b611865565b6001602052815f5260405f2081600281106101aa575f80fd5b01549150829050565b6101bb6118a7565b6101c45f6118d3565b565b6101ce6118a7565b6001600160a01b0385165f9081526002602052604090205460ff1615610207576040516372b89e9760e11b815260040160405180910390fd5b5f5b838110156102ac575f5b818110156102a35785858281811061022d5761022d61290d565b610243926020608090920201908101915061274b565b6001600160a01b031686868481811061025e5761025e61290d565b610274926020608090920201908101915061274b565b6001600160a01b03160361029b57604051635c1523a360e11b815260040160405180910390fd5b600101610213565b50600101610209565b505f5b8181101561050a575f5b81811015610347578383828181106102d3576102d361290d565b90506020020160208101906102e8919061274b565b6001600160a01b03168484848181106103035761030361290d565b9050602002016020810190610318919061274b565b6001600160a01b03160361033f57604051637542915f60e11b815260040160405180910390fd5b6001016102b9565b505f5b84811015610501578585828181106103645761036461290d565b61037a926020608090920201908101915061274b565b6001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d99190612921565b6001600160a01b03168484848181106103f4576103f461290d565b9050602002016020810190610409919061274b565b6001600160a01b031614806104db575085858281811061042b5761042b61290d565b610441926020608090920201908101915061274b565b6001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a09190612921565b6001600160a01b03168484848181106104bb576104bb61290d565b90506020020160208101906104d0919061274b565b6001600160a01b0316145b156104f957604051637542915f60e11b815260040160405180910390fd5b60010161034a565b506001016102af565b50838360405160200161051e92919061294a565b60408051808303601f1901815282825280516020918201206001600160a01b0389165f90815260018352929092209190915561055e9184918491016129e4565b60408051808303601f1901815291815281516020928301206001600160a01b03979097165f90815260019283905220019490945550505050565b6105a06118a7565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b5f8080806105d385870187612cd2565b506001600160a01b038b165f90815260016020526040812093965091945092500154826040516020016106069190612e29565b604051602081830303815290604052805190602001201461063a576040516395241ae360e01b815260040160405180910390fd5b5f825160026106499190612eb8565b6001600160401b0381111561066057610660612a26565b604051908082528060200260200182016040528015610689578160200160208202803683370190505b509050885f5b8451811015611537575f5f5f8784815181106106ad576106ad61290d565b60200260200101515f01516001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107179190612ecf565b905087848151811061072b5761072b61290d565b60200260200101516060015160020b61076d828b87815181106107505761075061290d565b60200260200101515f01516107659190612eea565b60020b611922565b131561078c57604051631510fe5b60e31b815260040160405180910390fd5b60605f5f8a87815181106107a2576107a261290d565b60200260200101515f01516001600160a01b031663011492288960018d8b815181106107d0576107d061290d565b60200260200101516040518463ffffffff1660e01b81526004016107f693929190612f0f565b5f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108379190810190612fca565b50909550919350915061085890506001600160801b038083169084166130c2565b95506108648160801c90565b6001600160801b03166108778360801c90565b6001600160801b031661088a91906130c2565b945050505f8986815181106108a1576108a161290d565b60200260200101515f01516001600160a01b03166353aad1d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b9190612ecf565b90505f805b8a88815181106109225761092261290d565b602002602001015151811015610aa8575f8482815181106109455761094561290d565b60200260200101519050806001600160801b03165f0361097857604051632276762d60e11b815260040160405180910390fd5b5f8c8a8151811061098b5761098b61290d565b602002602001015183815181106109a4576109a461290d565b602002602001015190505f6109b882611940565b90505f5b81811015610a24576109ce838261197a565b60020b15610a1c575f5f6109ec896109e787868a611991565b6119fa565b90925090506109fb8584611a79565b5f03610a0e579b81019b9a8b019a610a19565b818d039c50808c039b505b50505b6001016109bc565b505f5f610a3384866001611a8b565b91509150610a3e8190565b600f0b82600f0b610a4f91906130c2565b610a59908d6130e8565b9b50610a658160801d90565b600f0b610a728360801d90565b600f0b610a7f91906130c2565b610a89908c6130e8565b9a50610a95838861310f565b9650506001909401935061091092505050565b508a8781518110610abb57610abb61290d565b60209081029190910101515160405163c79ee60d60e01b81526001600160a01b038a811660048301529091169063c79ee60d90602401602060405180830381865afa158015610b0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190613122565b8114610b4f57604051632276762d60e11b815260040160405180910390fd5b5050505f6001600160a01b0316888581518110610b6e57610b6e61290d565b6020026020010151602001516001600160a01b031603610bca5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888581518110610baf57610baf61290d565b6020908102919091018101516001600160a01b039092169101525b5f808080805b8a51811015610d86578c8981518110610beb57610beb61290d565b6020026020010151602001516001600160a01b03168b8281518110610c1257610c1261290d565b60200260200101516001600160a01b031603610c2d57600192505b8c8981518110610c3f57610c3f61290d565b6020026020010151604001516001600160a01b03168b8281518110610c6657610c6661290d565b60200260200101516001600160a01b031603610c8157600191505b5f6001600160a01b03168b8281518110610c9d57610c9d61290d565b60200260200101516001600160a01b031603610d7e5782610d09578c8981518110610cca57610cca61290d565b6020026020010151602001518b8281518110610ce857610ce861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b81610d79578c8981518110610d2057610d2061290d565b6020026020010151604001518b84610d39576001610d3b565b5f5b610d489060ff168461310f565b81518110610d5857610d5861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b610d86565b600101610bd0565b5081610e735773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168c8981518110610dbc57610dbc61290d565b6020026020010151602001516001600160a01b031614610e64578b8881518110610de857610de861290d565b60209081029190910181015101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa158015610e3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5f9190613122565b610e70565b886001600160a01b0316315b93505b80610f12578b8881518110610e8a57610e8a61290d565b6020026020010151604001516001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401610ed091906001600160a01b0391909116815260200190565b602060405180830381865afa158015610eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0f9190613122565b92505b5f8c8981518110610f2557610f2561290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8f9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190613122565b90508c898151811061100d5761100d61290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b81526004016110a491815260200190565b602060405180830381865afa1580156110bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e39190613122565b6110ed90896130e8565b97508c89815181106111015761110161290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa1580156111b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190613122565b90508c89815181106111e9576111e961290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112539190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161128091815260200190565b602060405180830381865afa15801561129b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190613122565b6112c990886130e8565b96505050508e6001600160a01b03168a87815181106112ea576112ea61290d565b6020026020010151602001516001600160a01b0316146114245773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168a87815181106113345761133461290d565b6020026020010151602001516001600160a01b031614801561138757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f6001600160a01b0316145b6114245789868151811061139d5761139d61290d565b60200260200101516060015160020b6113d88c88815181106113c1576113c161290d565b602002602001015160200151856107659190612eea565b13156113f757604051631510fe5b60e31b815260040160405180910390fd5b5f61140184611ae4565b905061140d8682611dff565b955082156114225761141f8382611dff565b92505b505b8e6001600160a01b03168a87815181106114405761144061290d565b6020026020010151604001516001600160a01b0316146114f35789868151811061146c5761146c61290d565b60200260200101516060015160020b6114a78c88815181106114905761149061290d565b602002602001015160400151856107659190612eea565b13156114c657604051631510fe5b60e31b815260040160405180910390fd5b5f6114d084611ae4565b90506114dc8582611e82565b945081156114f1576114ee8282611e82565b91505b505b61150661150085876130e8565b5f611eef565b611510828461310f565b61151a919061310f565b611524908d61310f565b9b50506001909401935061068f92505050565b505f611545888a018a612cd2565b6001600160a01b0386165f908152600160208190526040909120919550909350915061156e9050565b0154816040516020016115819190613139565b60405160208183030381529060405280519060200120146115b557604051637560978b60e11b815260040160405180910390fd5b5f5b815181101561178e578a6001600160a01b03168282815181106115dc576115dc61290d565b60200260200101516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116439190612921565b6001600160a01b03161461166a57604051635de194d760e01b815260040160405180910390fd5b5f82828151811061167d5761167d61290d565b60209081029190910101516040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa1580156116cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f19190613122565b90508282815181106117055761170561290d565b60200260200101516001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611755573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117799190613122565b611783908a61310f565b9850506001016115b7565b505f9050805b83518110156117dc578a6001600160a01b03168482815181106117b9576117b961290d565b60200260200101516001600160a01b0316036117d457600191505b600101611794565b5080611857576040516370a0823160e01b81526001600160a01b0383811660048301528b16906370a0823190602401602060405180830381865afa158015611826573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184a9190613122565b611854908861310f565b96505b505050505050949350505050565b61186d6118a7565b6001600160a01b03811661189b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6118a4816118d3565b50565b5f546001600160a01b031633146101c45760405163118cdaa760e01b8152336004820152602401611892565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f82136119385761193382613179565b61193a565b815b92915050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b81106119745781600101915061195c565b50919050565b5f6110006064603084020184901c5b069392505050565b5f808061199e8686611f04565b90925090505f6119ae8787611f3b565b6119c1906001600160801b038716612eb8565b90506119cd8787611f4d565b5f036119e8576119de838383611f5f565b93505050506119f3565b6119de838383612008565b9392505050565b5f5f611a068360e81c90565b60020b8460020b1215611a2357611a1c8361203c565b9150611a72565b611a2d8360d01c90565b60020b8460020b12611a4957611a42836120ae565b9050611a72565b611a5b611a5684866120f5565b61203c565b9150611a6f611a6a8486612115565b6120ae565b90505b9250929050565b5f60026048603084020184901c611989565b5f5f5f611a9786611940565b90505f5b818114611ada575f5f611ab08989858a612133565b9092509050611abf86836121d9565b9550611acb85826121d9565b94508260010192505050611a9b565b5050935093915050565b5f5f5f8360020b12611af9578260020b611b00565b8260020b5f035b9050620d89e8811115611b26576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03611b3b57600160801b611b4d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611b81576ffff97272373d413259a46990580e213a0260801c5b6004821615611ba0576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611bbf576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611bde576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611bfd576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611c1c576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611c3b576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611c5b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611c7b576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611c9b576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611cbb576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611cdb576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611cfb576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611d1b576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611d3b576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611d5c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611d7c576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611d9b576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611db8576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611dd757805f1981611dd357611dd3613193565b0490505b640100000000810615611deb576001611ded565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0383161015611e5a575f611e3f611e3a611e288661225f565b6002866001600160a01b03160a61226f565b6122cd565b90505f8412611e4e5780611e52565b805f035b91505061193a565b5f611e3f611e3a611e6a8661225f565b611e7d6001600160a01b038716806122f6565b612354565b5f6001600160801b036001600160a01b0383161015611ec2575f611e3f611e3a611eab8661225f565b600160c01b6002876001600160a01b03160a6123b2565b5f611e3f611e3a611ed28661225f565b600160801b611eea6001600160a01b038816806122f6565b6123b2565b5f818313611efd57816119f3565b5090919050565b5f80611f30611f188585603002604c011c90565b611f22868661197a565b603087901c61ffff1661245c565b909590945092505050565b5f60806041603084020184901c611989565b5f60026040603084020184901c611989565b5f5f611f6a85611ae4565b90505f611f7685611ae4565b90505f611faa85611f99846001600160a01b0316866001600160a01b031661247a565b8585036001600160a01b03166123b2565b90506001600160801b03811115611fd45760405163528073f560e11b815260040160405180910390fd5b6001600160801b03811660d087901b62ffffff60d01b1660e889901b6001600160e81b03191601015b979650505050505050565b5f5f61201385611ae4565b90505f61201f85611ae4565b90505f611faa85600160601b8585036001600160a01b03166123b2565b5f5f61205061204b8460e81c90565b611ae4565b90505f61206061204b8560d01c90565b90506001600160a01b0382166120986060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166123b2565b816120a5576120a5613193565b04949350505050565b5f5f6120bd61204b8460e81c90565b90505f6120cd61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b031661247a565b949350505050565b5f6119f36001600160e81b0384168360e81b6001600160e81b0319160190565b5f6119f362ffffff60d01b1984168360d01b62ffffff60d01b160190565b5f5f5f612142878787876124d8565b90505f61214f8887611a79565b15905061215c88876125ab565b5f0361219f57801561218c57612185612179836125bd565b6125bd565b6001600160801b031690565b92506121ce565b612198612179836125bd565b93506121ce565b80156121bb576121856121b56121748460801c90565b60801b90565b6121cb6121b56121748460801c90565b93505b505094509492505050565b5f5f6121e58360801d90565b600f0b6121f28560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061221e57508181600f0b14155b1561223c57604051633486405d60e21b815260040160405180910390fd5b608083901b6001600160801b03828701166001600160801b031987160101611ffd565b5f5f821361193857815f0361193a565b5f80805f19848609848602925082811083820303915050805f03612298575060c01c905061193a565b80600160c01b116122a7575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f6001600160ff1b038211156119385760405163b668004560e01b815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f0361231f575060401c905061193a565b80600160401b1161232e575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f0361237d575060801c905061193a565b80600160801b1161238c575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f036123e6575f84116123db575f5ffd5b5082900490506119f3565b8084116123f1575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f5f5f61246a86866125e8565b9088039897019695505050505050565b5f80805f19848609848602925082811083820303915050805f036124a3575060601c905061193a565b80600160601b116124b2575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f8080806124e6888761197a565b60020b1515905080612501576002606460308802011b880197505b5f61250d89888a611991565b90506125198988611a79565b1580156125235750855b8061253f57506125338988611a79565b1580159061253f575085155b80612548575081155b15612568576125568161262a565b93506125618161268b565b925061257f565b6125718161203c565b935061257c816120ae565b92505b61259e6001600160801b0385168460801b6001600160801b0319160190565b9998505050505050505050565b5f60026049603084020184901c611989565b805f600f82900b12156125e35760405163b668004560e01b815260040160405180910390fd5b919050565b5f8060026125f684866131a7565b61260091906131c6565b61261f61260d858761320a565b62ffffff166002808204910615150190565b915091509250929050565b5f5f61263961204b8460e81c90565b90505f61264961204b8560d01c90565b90506120ed61267a6060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166126ca565b6001846001600160a01b03166126ca565b5f5f61269a61204b8460e81c90565b90505f6126aa61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b0316612706565b5f6126d68484846123b2565b90505f82806126e7576126e7613193565b84860911156119f3575f1981106126fc575f5ffd5b6001019392505050565b5f612711838361247a565b90505f600160601b838509111561193a575f19811061272e575f5ffd5b60010192915050565b6001600160a01b03811681146118a4575f5ffd5b5f6020828403121561275b575f5ffd5b81356119f381612737565b5f5f60408385031215612777575f5ffd5b823561278281612737565b946020939093013593505050565b5f5f83601f8401126127a0575f5ffd5b5081356001600160401b038111156127b6575f5ffd5b6020830191508360208260051b8501011115611a72575f5ffd5b5f5f5f5f5f606086880312156127e4575f5ffd5b85356127ef81612737565b945060208601356001600160401b03811115612809575f5ffd5b8601601f81018813612819575f5ffd5b80356001600160401b0381111561282e575f5ffd5b8860208260071b8401011115612842575f5ffd5b6020919091019450925060408601356001600160401b03811115612864575f5ffd5b61287088828901612790565b969995985093965092949392505050565b5f5f5f5f60608587031215612894575f5ffd5b843561289f81612737565b935060208501356128af81612737565b925060408501356001600160401b038111156128c9575f5ffd5b8501601f810187136128d9575f5ffd5b80356001600160401b038111156128ee575f5ffd5b8760208284010111156128ff575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612931575f5ffd5b81516119f381612737565b8060020b81146118a4575f5ffd5b602080825281018290525f8360408301825b858110156129da57823561296f81612737565b6001600160a01b03168252602083013561298881612737565b6001600160a01b0316602083015260408301356129a481612737565b6001600160a01b0316604083015260608301356129c08161293c565b60020b60608301526080928301929091019060010161295c565b5095945050505050565b602080825281018290525f8360408301825b858110156129da578235612a0981612737565b6001600160a01b03168252602092830192909101906001016129f6565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612a5c57612a5c612a26565b60405290565b604051606081016001600160401b0381118282101715612a5c57612a5c612a26565b604051601f8201601f191681016001600160401b0381118282101715612aac57612aac612a26565b604052919050565b5f6001600160401b03821115612acc57612acc612a26565b5060051b60200190565b5f82601f830112612ae5575f5ffd5b8135612af8612af382612ab4565b612a84565b8082825260208201915060208360071b860101925085831115612b19575f5ffd5b602085015b838110156129da5760808188031215612b35575f5ffd5b612b3d612a3a565b8135612b4881612737565b81526020820135612b5881612737565b60208201526040820135612b6b81612737565b60408201526060820135612b7e8161293c565b60608201528352602090920191608001612b1e565b5f82601f830112612ba2575f5ffd5b8135612bb0612af382612ab4565b8082825260208201915060208360051b860101925085831115612bd1575f5ffd5b602085015b838110156129da5780356001600160401b03811115612bf3575f5ffd5b8601603f81018813612c03575f5ffd5b6020810135612c14612af382612ab4565b808282526020820191506020808460051b8601010192508a831115612c37575f5ffd5b6040840193505b82841015612c59578335825260209384019390910190612c3e565b86525050602093840193919091019050612bd6565b5f82601f830112612c7d575f5ffd5b8135612c8b612af382612ab4565b8082825260208201915060208360051b860101925085831115612cac575f5ffd5b602085015b838110156129da578035612cc481612737565b835260209283019201612cb1565b5f5f5f5f60808587031215612ce5575f5ffd5b84356001600160401b03811115612cfa575f5ffd5b8501601f81018713612d0a575f5ffd5b8035612d18612af382612ab4565b80828252602082019150602060608402850101925089831115612d39575f5ffd5b6020840193505b82841015612da6576060848b031215612d57575f5ffd5b612d5f612a62565b8435612d6a8161293c565b81526020850135612d7a8161293c565b60208201526040850135612d8d8161293c565b6040820152825260609390930192602090910190612d40565b965050505060208501356001600160401b03811115612dc3575f5ffd5b612dcf87828801612ad6565b93505060408501356001600160401b03811115612dea575f5ffd5b612df687828801612b93565b92505060608501356001600160401b03811115612e11575f5ffd5b612e1d87828801612c6e565b91505092959194509250565b602080825282518282018190525f918401906040840190835b81811015612e9957835180516001600160a01b0390811685526020808301518216818701526040808401519092169186019190915260609182015160020b9185019190915290930192608090920191600101612e42565b509095945050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761193a5761193a612ea4565b5f60208284031215612edf575f5ffd5b81516119f38161293c565b600282810b9082900b03627fffff198112627fffff8213171561193a5761193a612ea4565b6001600160a01b038416815282151560208083019190915260606040830181905283519083018190525f918401906080840190835b81811015612f62578351835260209384019390920191600101612f44565b5090979650505050505050565b5f82601f830112612f7e575f5ffd5b8151612f8c612af382612ab4565b8082825260208201915060208360051b860101925085831115612fad575f5ffd5b602085015b838110156129da578051835260209283019201612fb2565b5f5f5f5f5f60a08688031215612fde575f5ffd5b85516020870151604088015191965094506001600160401b03811115613002575f5ffd5b8601601f81018813613012575f5ffd5b8051613020612af382612ab4565b8082825260208201915060208360051b85010192508a831115613041575f5ffd5b6020840193505b82841015613063578351825260209384019390910190613048565b8096505050505060608601516001600160401b03811115613082575f5ffd5b61308e88828901612f6f565b92505060808601516001600160401b038111156130a9575f5ffd5b6130b588828901612f6f565b9150509295509295909350565b8181035f8312801583831316838312821617156130e1576130e1612ea4565b5092915050565b8082018281125f83128015821682158216171561310757613107612ea4565b505092915050565b8082018082111561193a5761193a612ea4565b5f60208284031215613132575f5ffd5b5051919050565b602080825282518282018190525f918401906040840190835b81811015612e995783516001600160a01b0316835260209384019390920191600101613152565b5f600160ff1b820161318d5761318d612ea4565b505f0390565b634e487b7160e01b5f52601260045260245ffd5b5f8260020b8260020b028060020b91508082146130e1576130e1612ea4565b5f8160020b8360020b806131e857634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f198214161561320157613201612ea4565b90059392505050565b62ffffff81811683821602908116908181146130e1576130e1612ea456' as const\n\nconst BASE_ACCOUNTANT_ADDRESS = '0x345cA3407942f9d175c9eA8B90e83A36F570f852' as const\nconst MAINNET_ACCOUNTANT_ADDRESS = '0x65aA902AE3135658587FFC36ED51B61c927114e1' as const\nconst LEGACY_MAINNET_ACCOUNTANT_ADDRESS = '0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49' as const\nconst SEPOLIA_ACCOUNTANT_ADDRESS = '0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab' as const\nconst TEST_ACCOUNTANT_ADDRESS = '0x3fE074e8131bE6D8B94700860E1D9E8ece97AA54' as const\nconst BASE_WETH_ADDRESS = '0x4200000000000000000000000000000000000006' as const\nconst MAINNET_WETH_ADDRESS = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' as const\nconst SEPOLIA_WETH_ADDRESS = '0xfff9976782d46cc05630d1f6ebab18b2324d6b14' as const\n\n// PanopticVaultAccountant deployedBytecode immutableReferences offsets for wethAddress.\nconst WETH_IMMUTABLE_OFFSETS = [241, 4947] as const\n\nfunction normalizeAddressLower(address: Address): string {\n return address.toLowerCase()\n}\n\nfunction leftPadAddressToWord(address: Address): string {\n return `${'0'.repeat(24)}${normalizeAddressLower(address).slice(2)}`\n}\n\nfunction hydrateWethImmutables({\n bytecode,\n wethAddress,\n}: {\n bytecode: Hex\n wethAddress: Address\n}): Hex {\n const bytes = bytecode.slice(2).toLowerCase()\n const word = leftPadAddressToWord(wethAddress)\n let hydrated = bytes\n\n for (const offset of WETH_IMMUTABLE_OFFSETS) {\n const start = offset * 2\n const end = start + 64\n if (end > hydrated.length) {\n continue\n }\n hydrated = `${hydrated.slice(0, start)}${word}${hydrated.slice(end)}`\n }\n\n return `0x${hydrated}`\n}\n\nconst STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT: Partial<Record<string, Hex>> = {\n [normalizeAddressLower(BASE_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: BASE_WETH_ADDRESS as Address,\n }),\n [normalizeAddressLower(MAINNET_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: MAINNET_WETH_ADDRESS as Address,\n }),\n [normalizeAddressLower(LEGACY_MAINNET_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: MAINNET_WETH_ADDRESS as Address,\n }),\n [normalizeAddressLower(SEPOLIA_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: SEPOLIA_WETH_ADDRESS as Address,\n }),\n // Test accountant mirrors sepolia deployment semantics.\n [normalizeAddressLower(TEST_ACCOUNTANT_ADDRESS as Address)]: hydrateWethImmutables({\n bytecode: PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,\n wethAddress: SEPOLIA_WETH_ADDRESS as Address,\n }),\n}\n\nexport function getStaleOracleOverrideBytecodeForAccountant(\n accountantAddress: Address,\n): Hex | undefined {\n return STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT[normalizeAddressLower(accountantAddress)]\n}\n\nexport function getStaleOracleStateOverrideForAccountant(\n accountantAddress: Address,\n): Array<{ address: Address; code: Hex }> | undefined {\n const bytecode = getStaleOracleOverrideBytecodeForAccountant(accountantAddress)\n if (bytecode === undefined) {\n return undefined\n }\n return [\n {\n address: accountantAddress,\n code: bytecode,\n },\n ]\n}\n","import type { Address } from 'viem'\n\nimport {\n BASE_CHAIN_ID,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from '../chainDeployments'\nimport { BaseUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/BaseUSDCPLPVaultPoolInfos'\nimport { BaseWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/BaseWETHPLPVaultPoolInfos'\nimport { MainnetUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/MainnetUSDCPLPVaultPoolInfos'\nimport { MainnetWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/MainnetWETHPLPVaultPoolInfos'\nimport { SepoliaUSDCPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/SepoliaUSDCPLPVaultPoolInfos'\nimport { SepoliaWETHPLPVaultPoolInfos } from '../hypoVaultManagerArtifacts/SepoliaWETHPLPVaultPoolInfos'\nimport { getHypoVaultConfigForVault } from '../hypoVaultManagerConfigs/vaultToConfig'\nimport { buildManagerInputAtBlock } from '../utils/buildManagerInputAtBlock'\nimport {\n getVaultPoolInfos,\n resolveVaultHistoricalCandidatesByPool,\n resolveVaultTokenIdsByPool,\n verifyVaultOpenTokenIdsAtBlock,\n} from '../utils/vaultManagerInput'\nimport { VaultApyPreInceptionBlockError } from './errors'\nimport type { VaultApyStrategy } from './types'\n\nconst DEFAULT_MANAGER_INPUT = '0x' as const\n\nfunction buildVaultStrategyKey(chainId: number, vaultAddress: Address): string {\n return `${chainId}:${vaultAddress.toLowerCase()}`\n}\n\nfunction resolveChainWethAddress(chainId: number): Address | undefined {\n // Only the unsupported-chain / no-deployment case is expected here; let any\n // other failure surface instead of masking it.\n let deployment: ReturnType<typeof requireChainDeployment>\n try {\n deployment = requireChainDeployment(chainId)\n } catch {\n return undefined\n }\n const wethVaultAddress = deployment.hypovault.vaults.wethPlpVault as Address\n return getHypoVaultConfigForVault(wethVaultAddress, chainId)?.addresses?.underlyingToken as\n | Address\n | undefined\n}\n\nfunction getPlpManagerAddress(chainId: number, vaultAddress: Address): Address | null {\n return (\n getHypoVaultConfigForVault(vaultAddress, chainId)?.addresses\n ?.hypoVaultManagerWithMerkleVerification ?? null\n )\n}\n\nfunction createPlpManagerInputStrategy(minBlock?: bigint): VaultApyStrategy {\n return {\n enabledMetrics: ['nav'],\n resolveCandidates: async ({ chainId, vault }) => {\n const vaultAddress = vault.id as Address\n const poolInfos = getVaultPoolInfos(vaultAddress, chainId)\n if (poolInfos.length === 0) {\n return []\n }\n return resolveVaultHistoricalCandidatesByPool({\n chainId,\n vaultAddress,\n managerAddress: getPlpManagerAddress(chainId, vaultAddress),\n poolInfos,\n })\n },\n managerInputProvider: async ({ chainId, client, vault, blockNumber, candidates }) => {\n const vaultAddress = vault.id as Address\n if (minBlock !== undefined && blockNumber < minBlock) {\n throw new VaultApyPreInceptionBlockError({\n blockNumber,\n minBlockNumber: minBlock,\n context: `PLP manager input for vault ${vault.id}`,\n })\n }\n\n const poolInfos = getVaultPoolInfos(vaultAddress, chainId)\n if (poolInfos.length === 0) {\n return DEFAULT_MANAGER_INPUT\n }\n\n // When the caller pre-resolved the (block-independent) candidate set, verify\n // it on-chain at this block instead of re-running the subgraph paging.\n const tokenIds =\n candidates === undefined\n ? await resolveVaultTokenIdsByPool({\n viemClient: client,\n chainId,\n vaultAddress,\n managerAddress: getPlpManagerAddress(chainId, vaultAddress),\n poolInfos,\n verificationBlockNumber: blockNumber,\n })\n : await verifyVaultOpenTokenIdsAtBlock({\n viemClient: client,\n vaultAddress,\n candidatesByPool: candidates,\n blockNumber,\n })\n\n const wethAddress = resolveChainWethAddress(chainId)\n\n const managerInput = await buildManagerInputAtBlock({\n viemClient: client,\n poolInfos,\n tokenIds,\n underlyingToken: vault.underlyingToken.id as Address,\n ...(wethAddress === undefined ? {} : { wethAddress }),\n blockNumber,\n })\n\n return {\n managerInput,\n diagnostics: {\n poolAddresses: poolInfos.map((poolInfo) => poolInfo.pool),\n tokenIdsByPool: tokenIds,\n },\n }\n },\n }\n}\n\nconst SEPOLIA_PLP_POOL_MIN_BLOCK = 10_268_542n\n\nconst defaultStrategy: VaultApyStrategy = {\n enabledMetrics: ['nav'],\n managerInputProvider: async () => DEFAULT_MANAGER_INPUT,\n}\n\nconst strategyOverridesByVaultKey: Record<string, VaultApyStrategy> = {\n [buildVaultStrategyKey(MAINNET_CHAIN_ID, MainnetUSDCPLPVaultPoolInfos.vaultAddress)]:\n createPlpManagerInputStrategy(),\n [buildVaultStrategyKey(MAINNET_CHAIN_ID, MainnetWETHPLPVaultPoolInfos.vaultAddress)]:\n createPlpManagerInputStrategy(),\n [buildVaultStrategyKey(BASE_CHAIN_ID, BaseUSDCPLPVaultPoolInfos.vaultAddress)]:\n createPlpManagerInputStrategy(),\n [buildVaultStrategyKey(BASE_CHAIN_ID, BaseWETHPLPVaultPoolInfos.vaultAddress)]:\n createPlpManagerInputStrategy(),\n [buildVaultStrategyKey(SEPOLIA_CHAIN_ID, SepoliaUSDCPLPVaultPoolInfos.vaultAddress)]:\n createPlpManagerInputStrategy(SEPOLIA_PLP_POOL_MIN_BLOCK),\n [buildVaultStrategyKey(SEPOLIA_CHAIN_ID, SepoliaWETHPLPVaultPoolInfos.vaultAddress)]:\n createPlpManagerInputStrategy(SEPOLIA_PLP_POOL_MIN_BLOCK),\n}\n\nexport function getVaultApyStrategy({\n chainId,\n vaultAddress,\n}: {\n chainId: number\n vaultAddress: Address\n}): VaultApyStrategy {\n const key = buildVaultStrategyKey(chainId, vaultAddress)\n return strategyOverridesByVaultKey[key] ?? defaultStrategy\n}\n\nexport function setVaultApyStrategyOverride({\n chainId,\n vaultAddress,\n strategy,\n}: {\n chainId: number\n vaultAddress: Address\n strategy: VaultApyStrategy\n}) {\n const key = buildVaultStrategyKey(chainId, vaultAddress)\n strategyOverridesByVaultKey[key] = strategy\n}\n","import { type Address, type Hex, type PublicClient, keccak256 } from 'viem'\n\nimport { HypoVaultAbi } from '../../abis/HypoVault'\nimport { PanopticVaultAccountantAbi } from '../../abis/PanopticVaultAccountant'\nimport { fetchVaultLendingAllocation } from '../analytics/vaultLendingAllocation'\nimport { getStaleOracleStateOverrideForAccountant } from '../staleOracleOverride'\nimport type { VaultPoolCandidateTokenIds } from '../utils/vaultManagerInput'\nimport { isStaleOraclePriceReadError } from './errors'\nimport { computeSharePriceFromNavSnapshot } from './math'\nimport { getVaultApyStrategy } from './strategies'\nimport type { VaultApyVaultLike, VaultSharePriceSnapshot } from './types'\n\nexport type ReadContractParams = {\n address: Address\n abi: readonly unknown[]\n functionName: string\n args?: readonly unknown[]\n blockNumber?: bigint\n stateOverride?: Array<{ address: Address; code: `0x${string}` }>\n}\n\nexport type ReadContractFn = (client: PublicClient, params: ReadContractParams) => Promise<unknown>\n\nfunction toBigInt(value: unknown): bigint | null {\n if (typeof value === 'bigint') {\n return value\n }\n if (typeof value === 'string' || typeof value === 'number') {\n return BigInt(value)\n }\n return null\n}\n\nfunction getAssetsDepositedFromDepositEpochState(value: unknown): bigint | null {\n if (Array.isArray(value) && value.length > 0) {\n return toBigInt(value[0])\n }\n\n if (typeof value === 'object' && value !== null && 'assetsDeposited' in value) {\n const state = value as { assetsDeposited?: unknown }\n return state.assetsDeposited === undefined ? null : toBigInt(state.assetsDeposited)\n }\n\n return null\n}\n\nasync function estimateNavOffchainFromPoolState({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n assetsDeposited,\n}: {\n client: PublicClient\n chainId: number\n vaultAddress: Address\n underlyingTokenAddress: Address\n blockNumber: bigint\n assetsDeposited: bigint\n}): Promise<bigint | null> {\n try {\n const allocationRows = await fetchVaultLendingAllocation({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n })\n const totalUnderlying = allocationRows.reduce((sum, row) => sum + row.allocationUnderlying, 0n)\n const totalAssetsEstimate = totalUnderlying + assetsDeposited\n return totalAssetsEstimate === 0n ? 0n : totalAssetsEstimate - 1n\n } catch {\n return null\n }\n}\n\nexport async function fetchVaultSharePriceSnapshot({\n client,\n vault,\n chainId,\n windowLabel,\n blockNumber,\n readContractFn,\n candidates,\n includeTokenIdsInDiagnostics = false,\n}: {\n client: PublicClient\n vault: VaultApyVaultLike\n chainId: number\n windowLabel: 'now' | '7d' | '30d' | 'series'\n blockNumber: bigint\n readContractFn: ReadContractFn\n /**\n * Pre-resolved, block-independent candidate tokenIds, forwarded to the\n * strategy's `managerInputProvider` so a timeseries skips the per-anchor\n * subgraph candidate gather. Omit for one-shot snapshots.\n */\n candidates?: readonly VaultPoolCandidateTokenIds[]\n /**\n * When true, the returned snapshot's `tokenIdsByPool` diagnostics are\n * populated (useful for spike-log debugging). Replaces the UI-only\n * `import.meta.env.VITE_VAULT_APY_SPIKE_LOG_INCLUDE_TOKEN_IDS` flag so the\n * SDK works in plain node contexts. Defaults to false.\n */\n includeTokenIdsInDiagnostics?: boolean\n}): Promise<VaultSharePriceSnapshot> {\n const vaultAddress = vault.id as Address\n const accountantAddress = vault.accountant as Address\n const underlyingTokenAddress = vault.underlyingToken.id as Address\n const strategy = getVaultApyStrategy({\n chainId,\n vaultAddress,\n })\n\n const managerInputProviderResult = await strategy.managerInputProvider({\n chainId,\n vault,\n client,\n blockNumber,\n candidates,\n })\n const managerInput =\n typeof managerInputProviderResult === 'string'\n ? managerInputProviderResult\n : managerInputProviderResult.managerInput\n const managerInputDiagnostics =\n typeof managerInputProviderResult === 'string'\n ? undefined\n : managerInputProviderResult.diagnostics\n const managerInputHash = keccak256(managerInput as Hex)\n const tokenIdCountsByPool =\n managerInputDiagnostics === undefined\n ? null\n : managerInputDiagnostics.tokenIdsByPool.map((tokenIds, index) => ({\n poolAddress: managerInputDiagnostics.poolAddresses[index] ?? null,\n tokenCount: tokenIds.length,\n }))\n const tokenIdsByPool =\n !includeTokenIdsInDiagnostics || managerInputDiagnostics === undefined\n ? null\n : managerInputDiagnostics.tokenIdsByPool.map((tokenIds, index) => ({\n poolAddress: managerInputDiagnostics.poolAddresses[index] ?? null,\n tokenIds: tokenIds.map((tokenId) => tokenId.toString()),\n }))\n\n const readWithContext = async ({\n callName,\n request,\n }: {\n callName:\n | 'depositEpoch'\n | 'depositEpochState'\n | 'computeNAV'\n | 'reservedWithdrawalAssets'\n | 'totalSupply'\n request: ReadContractParams\n }) => {\n try {\n return await readContractFn(client, request)\n } catch (error) {\n const details =\n error instanceof Error ? error.message : typeof error === 'string' ? error : 'unknown error'\n throw new Error(`[${callName}] ${details}`)\n }\n }\n\n // Round 1: the three reads with no data dependency are issued together so the\n // configured client folds them into a single Multicall3 call at this block.\n // `depositEpochState` needs `depositEpoch` as an arg, so it waits for round 2.\n const [depositEpochRaw, reservedWithdrawalAssetsRaw, sharesRaw] = await Promise.all([\n readWithContext({\n callName: 'depositEpoch',\n request: {\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'depositEpoch',\n blockNumber,\n },\n }),\n readWithContext({\n callName: 'reservedWithdrawalAssets',\n request: {\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'reservedWithdrawalAssets',\n blockNumber,\n },\n }),\n readWithContext({\n callName: 'totalSupply',\n request: {\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'totalSupply',\n blockNumber,\n },\n }),\n ])\n\n const depositEpoch = toBigInt(depositEpochRaw)\n if (depositEpoch === null) {\n throw new Error(`Unexpected depositEpoch output type for vault ${vault.id}`)\n }\n\n const depositEpochStateRaw = await readWithContext({\n callName: 'depositEpochState',\n request: {\n address: vaultAddress,\n abi: HypoVaultAbi,\n functionName: 'depositEpochState',\n args: [depositEpoch],\n blockNumber,\n },\n })\n\n const reservedWithdrawalAssets = toBigInt(reservedWithdrawalAssetsRaw)\n const shares = toBigInt(sharesRaw)\n const assetsDeposited = getAssetsDepositedFromDepositEpochState(depositEpochStateRaw)\n if (reservedWithdrawalAssets === null || shares === null || assetsDeposited === null) {\n throw new Error(`Unexpected readContract output types for vault ${vault.id}`)\n }\n\n let nav: bigint | null = null\n let navSource: VaultSharePriceSnapshot['navSource'] = 'computeNAV'\n const staleOracleStateOverride = getStaleOracleStateOverrideForAccountant(accountantAddress)\n // Issue the initial computeNAV without the stale-oracle state override so a\n // healthy oracle reports `computeNAV`; the override is only injected on the\n // StaleOraclePrice retry below, which is why this request omits it here.\n const navRequest: ReadContractParams = {\n address: accountantAddress,\n abi: PanopticVaultAccountantAbi,\n functionName: 'computeNAV',\n args: [vaultAddress, underlyingTokenAddress, managerInput],\n blockNumber,\n }\n try {\n const navRaw = await readWithContext({\n callName: 'computeNAV',\n request: navRequest,\n })\n nav = toBigInt(navRaw)\n navSource = 'computeNAV'\n } catch (error) {\n if (!isStaleOraclePriceReadError(error)) {\n throw error\n }\n\n if (staleOracleStateOverride !== undefined) {\n try {\n const navRawWithOverride = await readWithContext({\n callName: 'computeNAV',\n request: {\n ...navRequest,\n stateOverride: staleOracleStateOverride,\n },\n })\n nav = toBigInt(navRawWithOverride)\n navSource = 'computeNAVStateOverride'\n } catch {\n // Keep existing offchain fallback for display continuity.\n }\n }\n if (nav === null) {\n nav = await estimateNavOffchainFromPoolState({\n client,\n chainId,\n vaultAddress,\n underlyingTokenAddress,\n blockNumber,\n assetsDeposited,\n })\n\n if (nav === null) {\n throw error\n }\n navSource = 'offchainLendingEstimate'\n }\n }\n if (nav === null) {\n throw new Error(`Unexpected computeNAV output type for vault ${vault.id}`)\n }\n\n const sharePrice = computeSharePriceFromNavSnapshot({\n nav,\n assetsDeposited,\n reservedWithdrawalAssets,\n shares,\n })\n\n return {\n sharePrice: sharePrice?.toString() ?? null,\n nav,\n assetsDeposited,\n reservedWithdrawalAssets,\n shares,\n blockNumber,\n navSource,\n managerInputBytes: managerInput as Hex,\n managerInputByteLength: (managerInput.length - 2) / 2,\n managerInputHash,\n tokenIdCountsByPool,\n tokenIdsByPool,\n }\n}\n","import Decimal from 'decimal.js'\n\nimport { calculateAnnualizedApyPct } from './math'\nimport type { VaultApySeriesPoint, VaultSharePriceSeriesPoint } from './types'\n\nconst SECONDS_PER_DAY = 86_400\n\n/**\n * Pure derivation: turn an (unordered) share-price series into an annualized\n * APY series. Each point annualizes the growth between consecutive share\n * prices over their actual time gap.\n */\nexport function deriveVaultApyTimeseriesFromSharePrices(\n sharePricePoints: VaultSharePriceSeriesPoint[],\n): VaultApySeriesPoint[] {\n const sorted = [...sharePricePoints].sort((a, b) => a.timestampSec - b.timestampSec)\n const points: VaultApySeriesPoint[] = []\n\n for (let i = 1; i < sorted.length; i += 1) {\n const previous = sorted[i - 1]\n const current = sorted[i]\n const days = (current.timestampSec - previous.timestampSec) / SECONDS_PER_DAY\n const apyPct = calculateAnnualizedApyPct({\n currentSharePrice: new Decimal(current.sharePrice),\n previousSharePrice: new Decimal(previous.sharePrice),\n days,\n })\n\n if (apyPct === null || !Number.isFinite(apyPct)) {\n continue\n }\n\n points.push({\n timestampSec: current.timestampSec,\n apyPct,\n })\n }\n\n return points\n}\n","// TODO: generated by claude. test against real solidity groundtruth\nimport { type Address, type Hex, encodePacked, keccak256 } from 'viem'\n\n/**\n * Represents a leaf in the manage tree for authorization purposes\n */\nexport interface ManageLeaf {\n target: Address\n canSendValue: boolean\n signature: string\n argumentAddresses: Address[]\n description: string\n decoderAndSanitizer: Address\n}\n\n/**\n * Efficiently hashes two bytes32 values together\n * Equivalent to Solidity's keccak256(abi.encodePacked(a, b))\n */\nfunction efficientHash(a: Hex, b: Hex): Hex {\n return keccak256(encodePacked(['bytes32', 'bytes32'], [a, b]))\n}\n\n/**\n * Hashes a pair of bytes32 values in sorted order (mimics OpenZeppelin's approach)\n * This ensures that hashPair(a, b) === hashPair(b, a)\n */\nfunction hashPair(a: Hex, b: Hex): Hex {\n return a < b ? efficientHash(a, b) : efficientHash(b, a)\n}\n\n/**\n * Generates a Merkle proof for a given leaf within a Merkle tree\n * @param leaf The leaf hash to generate a proof for\n * @param tree The complete Merkle tree (array of layers, where tree[0] is the bottom layer)\n * @returns Array of sibling hashes that form the proof\n * @throws Error if the leaf is not found in the tree\n */\nexport function generateProof(leaf: Hex, tree: Hex[][]): Hex[] {\n // The length of each proof is the height of the tree - 1\n const treeLength = tree.length\n const proof: Hex[] = new Array(treeLength - 1)\n\n let currentLeaf = leaf\n\n // Build the proof by traversing up the tree\n for (let i = 0; i < treeLength - 1; i++) {\n const layer = tree[i]\n let found = false\n\n // Find the leaf in the current layer\n for (let j = 0; j < layer.length; j++) {\n if (currentLeaf === layer[j]) {\n // Found the leaf, determine if we need the next or previous sibling\n proof[i] = j % 2 === 0 ? layer[j + 1] : layer[j - 1]\n currentLeaf = hashPair(currentLeaf, proof[i])\n found = true\n break\n }\n }\n\n if (!found) {\n throw new Error('Leaf not found in tree')\n }\n }\n\n return proof\n}\n\n/**\n * Generates Merkle proofs for multiple manage leaves using a pre-built Merkle tree\n * @param manageLeafs Array of manage leaves to generate proofs for\n * @param tree The complete Merkle tree structure\n * @param rawDataDecoderAddress Address of the raw data decoder and sanitizer contract\n * @returns Array of proofs, one for each manage leaf\n */\nexport function getProofsUsingTree(\n manageLeafs: ManageLeaf[],\n tree: Hex[][],\n rawDataDecoderAddress: Address,\n): Hex[][] {\n const proofs: Hex[][] = []\n\n for (let i = 0; i < manageLeafs.length; i++) {\n const manageLeaf = manageLeafs[i]\n\n // Generate the function selector (first 4 bytes of keccak256 hash of signature)\n const selectorHash = keccak256(encodePacked(['string'], [manageLeaf.signature]))\n const selector = selectorHash.slice(0, 10) as Hex // '0x' + 8 hex chars = 10 chars total\n\n // Build the raw digest by encoding packed:\n // rawDataDecoderAddress + target + canSendValue + selector + argumentAddresses\n let rawDigest = encodePacked(\n ['address', 'address', 'bool', 'bytes4'],\n [rawDataDecoderAddress, manageLeaf.target, manageLeaf.canSendValue, selector],\n )\n\n // Append each argument address to the raw digest\n for (const argAddress of manageLeaf.argumentAddresses) {\n rawDigest = encodePacked(['bytes', 'address'], [rawDigest, argAddress])\n }\n\n // Hash the raw digest to get the leaf\n const leaf = keccak256(rawDigest)\n\n // Generate and store the proof for this leaf\n proofs.push(generateProof(leaf, tree))\n }\n\n return proofs\n}\n\n/**\n * Generates Merkle proofs using pre-computed leaf digests\n * @param leafDigests Array of pre-computed leaf digest hashes\n * @param tree The complete Merkle tree structure (tree[0] is the leaf layer)\n * @returns Array of proofs, one for each leaf digest\n */\nexport function getProofsFromDigests(leafDigests: Hex[], tree: Hex[][]): Hex[][] {\n const proofs: Hex[][] = []\n\n for (const leafDigest of leafDigests) {\n proofs.push(generateProof(leafDigest, tree))\n }\n\n return proofs\n}\n\n/**\n * Converts a Merkle tree from JSON format to the expected format for proof generation\n * JSON format stores layers as: { \"0\": [root], \"1\": [...], \"N\": [leaves] }\n * Expected format: [[leaves], [...], [root]]\n * @param jsonTree The tree structure from JSON (keyed by layer index)\n * @returns Array of layers with leaves at index 0 and root at the end\n */\nexport function convertJsonTreeToArray(jsonTree: Record<string, readonly Hex[]>): Hex[][] {\n // Get the keys and sort them numerically to get layer indices\n const layerIndices = Object.keys(jsonTree)\n .map(Number)\n .sort((a, b) => a - b)\n\n // Reverse the order: JSON has [root, ..., leaves], we need [leaves, ..., root]\n const reversedIndices = [...layerIndices].reverse()\n\n return reversedIndices.map((index) => [...jsonTree[index.toString()]])\n}\n","import type { Address, Hex } from 'viem'\n\nimport { convertJsonTreeToArray, getProofsFromDigests } from './merkleTreeHelper'\n\n/**\n * Represents a strategist leaf from the pre-generated artifacts.\n * This type matches the structure of leaves in SepoliaWETHPLPStrategistLeaves,\n * SepoliaUSDCPLPStrategistLeaves, etc.\n */\nexport type StrategistLeaf = {\n readonly LeafDigest: string\n readonly DecoderAndSanitizerAddress: string\n readonly TargetAddress: string\n readonly Description: string\n readonly FunctionSignature: string\n readonly FunctionSelector: string\n readonly AddressArguments: readonly string[]\n readonly CanSendValue: boolean\n readonly PackedArgumentAddresses: string\n}\n\n/**\n * Represents the structure of a strategist leaves artifact (e.g., SepoliaWETHPLPStrategistLeaves).\n * Generic over the leaf type to preserve literal types for autocomplete.\n */\nexport type StrategistLeavesArtifact<TLeaf extends StrategistLeaf = StrategistLeaf> = {\n readonly metadata: {\n readonly AccountantAddress: string\n readonly BoringVaultAddress: string\n readonly DecoderAndSanitizerAddress: string\n readonly DigestComposition: readonly string[]\n readonly LeafCount: number\n readonly ManageRoot: string\n readonly ManagerAddress: string\n readonly TreeCapacity: number\n }\n readonly leafs: readonly TLeaf[]\n readonly MerkleTree: Record<string, readonly Hex[]>\n}\n\n/**\n * Extracts the leaf type from a strategist leaves artifact.\n * Useful for typing variables that hold leaves from a specific artifact.\n *\n * @example\n * type WETHLeaf = InferLeaf<typeof SepoliaWETHPLPStrategistLeaves>\n */\nexport type InferLeaf<T extends StrategistLeavesArtifact> = T['leafs'][number]\n\n/**\n * Extracts the valid description strings from a strategist leaves artifact.\n * Used internally for autocomplete in findLeaf.\n */\nexport type LeafDescription<T extends StrategistLeavesArtifact> = T['leafs'][number]['Description']\n\n/**\n * Finds a leaf by its description with full type safety and autocomplete.\n * Throws if the leaf is not found.\n *\n * @param artifact - The strategist leaves artifact (e.g., SepoliaWETHPLPStrategistLeaves)\n * @param description - The description of the leaf to find (autocomplete enabled)\n * @returns The matching leaf\n * @throws Error if no leaf matches the description\n *\n * @example\n * ```ts\n * // Autocomplete shows all valid descriptions for this artifact\n * const approveLeaf = findLeaf(SepoliaWETHPLPStrategistLeaves, 'Approve poWETH to spend WETH')\n * const depositLeaf = findLeaf(SepoliaUSDCPLPStrategistLeaves, 'Deposit USDC for poUSDC')\n * ```\n */\nexport function findLeaf<T extends StrategistLeavesArtifact>(\n artifact: T,\n description: LeafDescription<T>,\n): Extract<T['leafs'][number], { Description: typeof description }> {\n const leaf = artifact.leafs.find((l) => l.Description === description)\n if (!leaf) {\n throw new Error(`Leaf not found: \"${description}\"`)\n }\n return leaf as Extract<T['leafs'][number], { Description: typeof description }>\n}\n\n/**\n * Represents a single action to execute via manageVaultWithMerkleVerification.\n * Pairs a strategist leaf with the encoded call data for that action.\n */\nexport type ManageAction = {\n /** The strategist leaf authorizing this action */\n leaf: StrategistLeaf\n /** The encoded function call data (use viem's encodeFunctionData) */\n data: Hex\n /** Native value to send with the call (defaults to 0n) */\n value?: bigint\n}\n\n/**\n * The tuple of arguments for manageVaultWithMerkleVerification\n */\nexport type ManageVaultArgs = [\n proofs: Hex[][],\n decodersAndSanitizers: Address[],\n targets: Address[],\n targetData: Hex[],\n values: bigint[],\n]\n\n/**\n * Transforms an array of ManageActions into the argument tuple required by\n * manageVaultWithMerkleVerification.\n *\n * @param actions - Array of manage actions to execute\n * @param artifact - The strategist leaves artifact (e.g., SepoliaWETHPLPStrategistLeaves)\n * @returns Tuple of [proofs, decodersAndSanitizers, targets, targetData, values]\n *\n * @example\n * ```ts\n * const actions: ManageAction[] = [\n * {\n * leaf: findLeaf(SepoliaWETHPLPStrategistLeaves, 'Approve poWETH to spend WETH'),\n * data: encodeFunctionData({ abi: erc20Abi, functionName: 'approve', args: [spender, amount] }),\n * },\n * {\n * leaf: findLeaf(SepoliaWETHPLPStrategistLeaves, 'Deposit WETH for poWETH'),\n * data: encodeFunctionData({ abi: CollateralTrackerAbi, functionName: 'deposit', args: [assets, receiver] }),\n * },\n * ]\n *\n * const [proofs, decodersAndSanitizers, targets, targetData, values] = buildManageArgs(\n * actions,\n * SepoliaWETHPLPStrategistLeaves\n * )\n * ```\n */\nexport function buildManageArgs(\n actions: ManageAction[],\n artifact: StrategistLeavesArtifact,\n): ManageVaultArgs {\n const leafDigests = actions.map((a) => a.leaf.LeafDigest as Hex)\n const tree = convertJsonTreeToArray(artifact.MerkleTree)\n\n const proofs = getProofsFromDigests(leafDigests, tree)\n const decodersAndSanitizers = actions.map((a) => a.leaf.DecoderAndSanitizerAddress as Address)\n const targets = actions.map((a) => a.leaf.TargetAddress as Address)\n const targetData = actions.map((a) => a.data)\n const values = actions.map((a) => a.value ?? 0n)\n\n return [proofs, decodersAndSanitizers, targets, targetData, values]\n}\n","import type { Address, Hex } from 'viem'\nimport { encodeFunctionData } from 'viem'\n\nimport { CollateralTrackerAbi } from '../../../abis/CollateralTracker'\n\nexport function encodeDepositFunctionData({\n assets,\n receiver,\n}: {\n assets: bigint\n receiver: Address\n}): Hex {\n return encodeFunctionData({\n abi: CollateralTrackerAbi,\n functionName: 'deposit',\n args: [assets, receiver],\n })\n}\n","import type { Address } from 'viem'\nimport { encodeFunctionData } from 'viem'\n\nimport { CollateralTrackerAbi } from '../../../abis/CollateralTracker'\n\nexport function encodeWithdrawFunctionData({\n assets,\n receiver,\n owner,\n}: {\n assets: bigint\n receiver: Address\n owner: Address\n}): `0x${string}` {\n return encodeFunctionData({\n abi: CollateralTrackerAbi,\n functionName: 'withdraw',\n args: [assets, receiver, owner],\n })\n}\n","import type { Address } from 'viem'\nimport { encodeFunctionData } from 'viem'\n\nimport { Erc20Abi } from '../../abis/erc20ABI'\n\nexport function encodeApproveFunctionData({\n spender,\n amount,\n}: {\n spender: Address\n amount: bigint\n}): `0x${string}` {\n return encodeFunctionData({\n abi: Erc20Abi,\n functionName: 'approve',\n args: [spender, amount],\n })\n}\n","const alchemyChains = {\n 1: 'eth-mainnet',\n 137: 'polygon-mainnet',\n 42161: 'arb-mainnet',\n 8453: 'base-mainnet',\n 10: 'opt-mainnet',\n 130: 'unichain-mainnet',\n 11155111: 'eth-sepolia',\n} as const\n\nexport function getAlchemyRpcUrl(\n chainId: keyof typeof alchemyChains,\n alchemyApiKey: string,\n): string {\n if (alchemyChains[chainId]) {\n return `https://${alchemyChains[chainId]}.g.alchemy.com/v2/${alchemyApiKey}`\n } else {\n throw new Error(`Unsupported chainId: ${chainId}`)\n }\n}\n\nexport function getAlchemyWsRpcUrl(\n chainId: keyof typeof alchemyChains,\n alchemyApiKey: string,\n): string {\n if (alchemyChains[chainId]) {\n return `wss://${alchemyChains[chainId]}.g.alchemy.com/v2/${alchemyApiKey}`\n } else {\n throw new Error(`Unsupported chainId: ${chainId}`)\n }\n}\n"],"mappings":";;;;;;;;;;;;AAAA,MAAa,uBAAuB;CAClC;EACE,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS;GACP;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;EACV,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,GACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,cAAc;GACf;EACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;EACf,CACF;EACD,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;EACF;EACD,WAAW;CACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;EACF;EACD,WAAW;CACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;EACF;EACD,WAAW;CACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;GAC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ACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;AACF;;;;AC/QD,MAAa,aAAa;CACxB;EACE,QAAQ,CAAE;EACV,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE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,QAAQ,CAAE;CAAE;CAC5E;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAE;CACX;AACF;;;;AClUD,MAAa,gCAAgC;CAC3C;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,YAAY;IACV;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;IACD;KACE,cAAc;KACd,MAAM;KACN,MAAM;IACP;GACF;GACD,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IAC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CAAE;EACV,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;AACF;;;;AC3OD,MAAa,mBAAmB;CAC9B;EACE,QAAQ,CAAE;EACV,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ,CACN;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,SAAS;GACT,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,WAAW;EACX,QAAQ;GACN;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ;GACN;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;EACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,GACD;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CAAE;EACV,MAAM;EACN,SAAS,CACP;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,iBAAiB;EACjB,MAAM;CACP;CACD;EACE,QAAQ,CACN;GACE,cAAc;GACd,MAAM;GACN,MAAM;EACP,CACF;EACD,MAAM;EACN,SAAS;GACP;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MAAM;GACP;GACD;IACE,cAAc;IACd,MAAM;IACN,MA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E;EACD,MAAM;EACN,SAAS,CAAE;EACX,iBAAiB;CAClB;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IAAE,MAAM;IAAQ,cAAc;IAAW,MAAM;IAAW,SAAS;GAAM;GACzE;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;EACF;EACD,MAAM;CACP;CACD;EACE,MAAM;EACN,WAAW;EACX,QAAQ;GACN;IAAE,MAAM;IAAQ,cAAc;IAAW,MAAM;IAAW,SAAS;GAAM;GACzE;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GACV;GACD;IACE,MAAM;IACN,cAAc;IACd,MAAM;IACN,SAAS;GAC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AC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AC9ID,MAAa,8BAA8B;CACzC,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4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AClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AChQD,MAAa,uCAAuC;CAClD,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AChQD,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;ACpQD,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AChQD,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAChB,8CACA,4CACD;GACD,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBACE;GACF,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;EACD;GACE,kBAAkB,CAAE;GACpB,cAAc;GACd,4BAA4B;GAC5B,aAAa;GACb,kBAAkB;GAClB,mBAAmB;GACnB,YAAY;GACZ,yBAAyB;GACzB,eAAe;EAChB;CACF;CACD,YAAY;EACV,KAAK,CAAC,oEAAqE;EAC3E,KAAK,CACH,sEACA,oEACD;EACD,KAAK;GACH;GACA;GACA;GACA;EACD;EACD,KAAK;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACF;AACF;;;;AC9ID,MAAa,iCAAiC;CAC5C,UAAU;EACR,mBAAmB;EACnB,oBAAoB;EACpB,4BAA4B;EAC5B,mBAAmB;GACjB;GACA;GACA;GACA;GACA;EACD;EACD,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,cAAc;CACf;CACD,OAAO;EACL;GACE,kBAAkB,CAAC,4CAA6C;GAChE,cAAc;GACd,4BAA4B;GAC5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"}