@masterpeach/market-sdk 0.2.0-beta.20260930.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -0
- package/README.zh-CN.md +155 -0
- package/THIRD_PARTY_NOTICES.md +14 -0
- package/dist/abi/index.cjs +14051 -0
- package/dist/abi/index.cjs.map +1 -0
- package/dist/abi/index.d.cts +10882 -0
- package/dist/abi/index.d.ts +10882 -0
- package/dist/abi/index.js +27 -0
- package/dist/abi/index.js.map +1 -0
- package/dist/chunk-TMU4HSZR.js +231 -0
- package/dist/chunk-TMU4HSZR.js.map +1 -0
- package/dist/chunk-TTVBOGKZ.js +14015 -0
- package/dist/chunk-TTVBOGKZ.js.map +1 -0
- package/dist/core.cjs +271 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +99 -0
- package/dist/core.d.ts +99 -0
- package/dist/core.js +35 -0
- package/dist/core.js.map +1 -0
- package/dist/index.cjs +13327 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +840 -0
- package/dist/index.d.ts +840 -0
- package/dist/index.js +2705 -0
- package/dist/index.js.map +1 -0
- package/docs/earnings.md +71 -0
- package/docs/frontend.md +153 -0
- package/docs/latest-contract.md +38 -0
- package/docs/liquidity.md +87 -0
- package/docs/management.md +73 -0
- package/docs/pool-state.md +30 -0
- package/docs/pools.md +118 -0
- package/docs/positions.md +94 -0
- package/docs/variants.md +24 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/actions/authorizations.ts","../src/abi/generated/access-manager.ts","../src/abi/generated/claim-fee-policy.ts","../src/abi/generated/market-calendar.ts","../src/abi/generated/pool-registry.ts","../src/abi/generated/ramp.ts","../src/abi/generated/ramp-reader.ts","../src/abi/generated/rwa-ramp.ts","../src/abi/v4.ts","../src/errors.ts","../src/math/identifiers.ts","../src/actions/snapshot.ts","../src/deployment.ts","../src/actions/earnings.ts","../../core/src/errors.ts","../../core/src/chain.ts","../../core/src/prepared.ts","../../core/src/transaction.ts","../src/math/earnings.ts","../src/math/pool-state.ts","../src/actions/positions.ts","../src/actions/pools.ts","../src/actions/fees.ts","../src/actions/pool-state.ts","../src/actions/write/preview.ts","../src/math/liquidity.ts","../src/actions/write/guards.ts","../src/chains.ts","../src/actions/write/transactions.ts","../src/actions/write/management.ts","../src/math/calendar.ts","../src/verify.ts","../src/client.ts","../src/test-pools.ts"],"sourcesContent":["export { getMarketClaimOperator, getMarketShareAuthorization } from \"./actions/authorizations\";\nexport { estimateMarketClaimableFees, getMarketFeeSnapshot } from \"./actions/earnings\";\nexport {\n getMarketCurrentFees,\n getMarketFeeBreakdown,\n getMarketSession,\n previewMarketFeeAt,\n} from \"./actions/fees\";\nexport { getMarketPoolState } from \"./actions/pool-state\";\nexport { getMarketPool, listMarketPools } from \"./actions/pools\";\nexport { getMarketPosition, getMarketRange } from \"./actions/positions\";\nexport { getMarketSpendStatus } from \"./actions/write/preview\";\nexport * from \"./chains\";\nexport * from \"./client\";\nexport * from \"./deployment\";\nexport * from \"./earnings-types\";\nexport * from \"./errors\";\nexport * from \"./management-types\";\nexport { marketDaysInMonth, packMarketDayOverrides } from \"./math/calendar\";\nexport { calculateMarketClaimableFees } from \"./math/earnings\";\nexport {\n defineMarketPoolKey,\n getMarketPoolId,\n getMarketRangeId,\n getMarketSwapDirection,\n} from \"./math/identifiers\";\nexport * from \"./math/liquidity\";\nexport * from \"./read-types\";\nexport * from \"./test-pools\";\nexport * from \"./types\";\nexport * from \"./verify\";\nexport * from \"./write-types\";\n","import { type Address, getAddress } from \"viem\";\nimport { marketRampAbi } from \"../abi\";\nimport type { MarketShareAuthorization } from \"../earnings-types\";\nimport { MarketSettlingError } from \"../errors\";\nimport { assertMarketAddress, assertMarketUint } from \"../math/identifiers\";\nimport type { MarketReadContext, MarketReadOptions, MarketSnapshot } from \"../read-types\";\nimport { readMarketSnapshot, requireMarketHook } from \"./snapshot\";\n\nexport function getMarketShareAuthorization(\n context: MarketReadContext,\n params: MarketReadOptions & {\n readonly hook: Address;\n readonly rangeId: bigint;\n readonly owner: Address;\n readonly operator: Address;\n },\n): Promise<MarketSnapshot<MarketShareAuthorization>> {\n assertMarketAddress(params.owner, \"owner\");\n assertMarketAddress(params.operator, \"operator\");\n assertMarketUint(params.rangeId, \"rangeId\");\n const owner = getAddress(params.owner);\n const operator = getAddress(params.operator);\n const rangeId = params.rangeId;\n const hook = requireMarketHook(context, params.hook).address;\n return readMarketSnapshot(context, params, async (scope) => {\n const target = {\n address: hook,\n abi: marketRampAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n if (await scope.publicClient.readContract({ ...target, functionName: \"isSettling\" }))\n throw new MarketSettlingError(hook);\n const [shares, allowance, isShareOperator, isClaimOperator] = await Promise.all([\n scope.publicClient.readContract({\n ...target,\n functionName: \"balanceOf\",\n args: [owner, rangeId],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"allowance\",\n args: [owner, operator, rangeId],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"isOperator\",\n args: [owner, operator],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"isClaimOperator\",\n args: [owner, rangeId, operator],\n }),\n ]);\n return { hook, rangeId, owner, operator, shares, allowance, isShareOperator, isClaimOperator };\n });\n}\n\nexport function getMarketClaimOperator(\n context: MarketReadContext,\n params: Parameters<typeof getMarketShareAuthorization>[1],\n) {\n const { owner, operator, rangeId } = params;\n assertMarketAddress(owner, \"owner\");\n assertMarketAddress(operator, \"operator\");\n assertMarketUint(rangeId, \"rangeId\");\n const hook = requireMarketHook(context, params.hook).address;\n return readMarketSnapshot(context, params, async (scope) => ({\n hook,\n owner,\n operator,\n rangeId,\n approved: await scope.publicClient.readContract({\n address: hook,\n abi: marketRampAbi,\n functionName: \"isClaimOperator\",\n args: [owner, rangeId, operator],\n blockNumber: scope.block.blockNumber,\n }),\n }));\n}\n","// This file is generated. Do not edit it manually.\nexport const marketAccessManagerAbi = [\n {\n type: \"constructor\",\n inputs: [\n {\n name: \"initialAdmin\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"ADMIN_ROLE\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"PUBLIC_ROLE\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"canCall\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"selector\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n outputs: [\n {\n name: \"immediate\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"cancel\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"consumeScheduledOp\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"execute\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"payable\",\n },\n {\n type: \"function\",\n name: \"expiration\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getAccess\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"since\",\n type: \"uint48\",\n internalType: \"uint48\",\n },\n {\n name: \"currentDelay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"pendingDelay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"effect\",\n type: \"uint48\",\n internalType: \"uint48\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getNonce\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getRoleAdmin\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getRoleGrantDelay\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getRoleGuardian\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getSchedule\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint48\",\n internalType: \"uint48\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getTargetAdminDelay\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"getTargetFunctionRole\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"selector\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"grantRole\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"executionDelay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"hasRole\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"isMember\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"executionDelay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"hashOperation\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isTargetClosed\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"labelRole\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"label\",\n type: \"string\",\n internalType: \"string\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"minSetback\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\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: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"renounceRole\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"callerConfirmation\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"revokeRole\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"schedule\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n {\n name: \"when\",\n type: \"uint48\",\n internalType: \"uint48\",\n },\n ],\n outputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n {\n name: \"nonce\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setGrantDelay\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"newDelay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setRoleAdmin\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"admin\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setRoleGuardian\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"guardian\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setTargetAdminDelay\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"newDelay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setTargetClosed\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"closed\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setTargetFunctionRole\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"selectors\",\n type: \"bytes4[]\",\n internalType: \"bytes4[]\",\n },\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"updateAuthority\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"newAuthority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"event\",\n name: \"OperationCanceled\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"bytes32\",\n },\n {\n name: \"nonce\",\n type: \"uint32\",\n indexed: true,\n internalType: \"uint32\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OperationExecuted\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"bytes32\",\n },\n {\n name: \"nonce\",\n type: \"uint32\",\n indexed: true,\n internalType: \"uint32\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OperationScheduled\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"bytes32\",\n },\n {\n name: \"nonce\",\n type: \"uint32\",\n indexed: true,\n internalType: \"uint32\",\n },\n {\n name: \"schedule\",\n type: \"uint48\",\n indexed: false,\n internalType: \"uint48\",\n },\n {\n name: \"caller\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n {\n name: \"target\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n indexed: false,\n internalType: \"bytes\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RoleAdminChanged\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n {\n name: \"admin\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RoleGrantDelayChanged\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n indexed: false,\n internalType: \"uint32\",\n },\n {\n name: \"since\",\n type: \"uint48\",\n indexed: false,\n internalType: \"uint48\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RoleGranted\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n {\n name: \"account\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n indexed: false,\n internalType: \"uint32\",\n },\n {\n name: \"since\",\n type: \"uint48\",\n indexed: false,\n internalType: \"uint48\",\n },\n {\n name: \"newMember\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RoleGuardianChanged\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n {\n name: \"guardian\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RoleLabel\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n {\n name: \"label\",\n type: \"string\",\n indexed: false,\n internalType: \"string\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RoleRevoked\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n {\n name: \"account\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"TargetAdminDelayUpdated\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n indexed: false,\n internalType: \"uint32\",\n },\n {\n name: \"since\",\n type: \"uint48\",\n indexed: false,\n internalType: \"uint48\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"TargetClosed\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"closed\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"TargetFunctionRoleUpdated\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"selector\",\n type: \"bytes4\",\n indexed: false,\n internalType: \"bytes4\",\n },\n {\n name: \"roleId\",\n type: \"uint64\",\n indexed: true,\n internalType: \"uint64\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"error\",\n name: \"AccessManagerAlreadyScheduled\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerBadConfirmation\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"AccessManagerExpired\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerInvalidInitialAdmin\",\n inputs: [\n {\n name: \"initialAdmin\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerLockedAccount\",\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerLockedRole\",\n inputs: [\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerNotReady\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerNotScheduled\",\n inputs: [\n {\n name: \"operationId\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerUnauthorizedAccount\",\n inputs: [\n {\n name: \"msgsender\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"roleId\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerUnauthorizedCall\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"selector\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerUnauthorizedCancel\",\n inputs: [\n {\n name: \"msgsender\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"selector\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagerUnauthorizedConsume\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AddressEmptyCode\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AddressInsufficientBalance\",\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"FailedInnerCall\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"SafeCastOverflowedUintDowncast\",\n inputs: [\n {\n name: \"bits\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n] as const;\n","// This file is generated. Do not edit it manually.\nexport const marketClaimFeePolicyAbi = [\n {\n type: \"constructor\",\n inputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"changeAt\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"i\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ClaimFeePolicy.Change\",\n components: [\n {\n name: \"fromTs\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"current\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"effective\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"since\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [\n {\n name: \"rate\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"ledger\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"length\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"minimum\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"record\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"error\",\n name: \"InvalidRate\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"Unauthorized\",\n inputs: [],\n },\n] as const;\n","// This file is generated. Do not edit it manually.\nexport const marketMarketCalendarAbi = [\n {\n type: \"constructor\",\n inputs: [\n {\n name: \"controller_\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"DEFAULT_CLOSE_SEC\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"DEFAULT_OPEN_SEC\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_DAY_OVERRIDES\",\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: \"MAX_SESSION_LENGTH\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_SESSION_SHIFT\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MIN_EARLY_CLOSE_LENGTH\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MIN_SESSION_LENGTH\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"closeSec\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"e\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"controller\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"dayOverride\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"y\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"m\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"d\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum MarketCalendar.DayOverride\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"dstMode\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum SessionLib.DstMode\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"earlyClose\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"y\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"m\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"d\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"feeFloorAt\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"cfg\",\n type: \"tuple\",\n internalType: \"struct SessionLib.FloorConfig\",\n components: [\n {\n name: \"openFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overnightFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closedFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"spikeMult\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"closedSpike\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"descentWindow\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closeBefore\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeAfter\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n name: \"timestamp\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"openSec\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"o\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"sessionAt\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"timestamp\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum SessionLib.Session\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"setDayOverrides\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"yearMonth\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"packed\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setDstMode\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"mode\",\n type: \"uint8\",\n internalType: \"enum SessionLib.DstMode\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setEarlyClose\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"y\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"m\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"d\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"e\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setSessionHours\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"o\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"e\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"validateFloorConfig\",\n inputs: [\n {\n name: \"c\",\n type: \"tuple\",\n internalType: \"struct SessionLib.FloorConfig\",\n components: [\n {\n name: \"openFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overnightFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closedFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"spikeMult\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"closedSpike\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"descentWindow\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closeBefore\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeAfter\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n name: \"cap\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n outputs: [],\n stateMutability: \"pure\",\n },\n {\n type: \"error\",\n name: \"DstModeDisagreesWithClock\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidDayOverride\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidFloorConfig\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidSessionHours\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotController\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"TooManyDayOverrides\",\n inputs: [\n {\n name: \"count\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n] as const;\n","// This file is generated. Do not edit it manually.\nexport const marketPoolRegistryAbi = [\n {\n type: \"constructor\",\n inputs: [\n {\n name: \"authority_\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"activePools\",\n inputs: [],\n outputs: [\n {\n name: \"out\",\n type: \"tuple[]\",\n internalType: \"struct PoolRegistry.PoolInfo[]\",\n components: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"active\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"allPools\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"tuple[]\",\n internalType: \"struct PoolRegistry.PoolInfo[]\",\n components: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"active\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"authority\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"deregister\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"isConsumingScheduledOp\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isRegistered\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolAt\",\n inputs: [\n {\n name: \"index\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolRegistry.PoolInfo\",\n components: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"active\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolById\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolRegistry.PoolInfo\",\n components: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"active\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolCount\",\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: \"register\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n ],\n outputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"reregister\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\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: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"event\",\n name: \"AuthorityUpdated\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolDeregistered\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolRegistered\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"key\",\n type: \"tuple\",\n indexed: false,\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"hook\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"index\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolReregistered\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"error\",\n name: \"AccessManagedInvalidAuthority\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedRequiredDelay\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedUnauthorized\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AlreadyRegistered\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"NoHook\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotRegistered\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n },\n] as const;\n","// This file is generated. Do not edit it manually.\nexport const marketRampAbi = [\n {\n type: \"constructor\",\n inputs: [\n {\n name: \"manager_\",\n type: \"address\",\n internalType: \"contract IPoolManager\",\n },\n {\n name: \"authority_\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"absoluteMaxFee_\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"ABSOLUTE_MAX_FEE\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_CLAIM_FEE_BPS\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_CLAIM_FEE_WALK\",\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: \"MAX_PAUSE\",\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: \"MAX_POKE_DISCOUNT_BPS\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_POKE_TTL\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MIN_POOL_FEE\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"afterAddLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterDonate\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterInitialize\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n {\n name: \"\",\n type: \"int24\",\n internalType: \"int24\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterRemoveLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterSwap\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct SwapParams\",\n components: [\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"amountSpecified\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"sqrtPriceLimitX96\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n ],\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int128\",\n internalType: \"int128\",\n },\n ],\n stateMutability: \"pure\",\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 name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"amount\",\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: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"authority\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"autonomousFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [\n {\n name: \"fee\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"balanceOf\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"beforeAddLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"beforeDonate\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"beforeInitialize\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"beforeRemoveLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"beforeSwap\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"params\",\n type: \"tuple\",\n internalType: \"struct SwapParams\",\n components: [\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"amountSpecified\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"sqrtPriceLimitX96\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n ],\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BeforeSwapDelta\",\n },\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeAllTimeMin\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeBps\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeChangeAt\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"i\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ClaimFeePolicy.Change\",\n components: [\n {\n name: \"fromTs\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeFor\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"sinceIndex\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeHistoryLength\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeOwed\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeePolicy\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"contract ClaimFeePolicy\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeRecipient\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeSyncIndex\",\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFees\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"maxFeeBps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"claimFeesFor\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"maxFeeBps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"clearPoke\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"currentFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"deposit\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount0Max\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1Max\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"deadline\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"payable\",\n },\n {\n type: \"function\",\n name: \"effectiveClaimFee\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"flatFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isClaimOperator\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"approved\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isConsumingScheduledOp\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isOperator\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"isOperator\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isSettling\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"maxFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pause\",\n inputs: [\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"pausePool\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"paused\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pausedFor\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pausedUntil\",\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: \"pausedUntilOf\",\n inputs: [\n {\n name: \"\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pendingClaimFeeCurrencyCount\",\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: \"pokeFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"fee0For1\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"fee1For0\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"ttl\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"pokeFloor\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pokeOf\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"fee0For1\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"fee1For0\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"expiry\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolAsymmetry\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"premiumPips\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"premiumZeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolManager\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"contract IPoolManager\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rangeGrowth\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rangeId\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"rangeKey\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"set\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rangeState\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct RangeState\",\n components: [\n {\n name: \"totalShares\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"accFee0X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"accFee1X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"collectionSeq\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"resetSeq\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"setAuthority\",\n inputs: [\n {\n name: \"newAuthority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setClaimFee\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"settleFirst\",\n type: \"address[]\",\n internalType: \"Currency[]\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n {\n name: \"recipient\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setClaimFeeBps\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setClaimOperator\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setOperator\",\n inputs: [\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n internalType: \"bool\",\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: \"setPaused\",\n inputs: [\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolAsymmetry\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"premiumPips\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"premiumZeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolConfig\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"floorPips\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"flatPips\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"cap\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolPaused\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"supportsInterface\",\n inputs: [\n {\n name: \"interfaceId\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"sweepClaimFee\",\n inputs: [\n {\n name: \"currency\",\n type: \"address\",\n internalType: \"Currency\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"transfer\",\n inputs: [\n {\n name: \"receiver\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"sender\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"receiver\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"unlockCallback\",\n inputs: [\n {\n name: \"raw\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"userFeeRemainder\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"amount0X128\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1X128\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"userPosition\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct UserPosition\",\n components: [\n {\n name: \"owed0\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"owed1\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"checkpoint0X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"checkpoint1X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"withdraw\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"amount0Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"deadline\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"withdrawAndClaim\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"amount0Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"deadline\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"maxFeeBps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\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: \"id\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\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: \"AuthorityUpdated\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ClaimFeeAccrued\",\n inputs: [\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n indexed: false,\n internalType: \"uint16\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ClaimFeeSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n indexed: false,\n internalType: \"uint16\",\n },\n {\n name: \"recipient\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ClaimFeeSwept\",\n inputs: [\n {\n name: \"currency\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"recipient\",\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: \"ClaimOperatorSet\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"operator\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"Deposited\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"tickLower\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"FeePoked\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"fee0For1\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"fee1For0\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"expiry\",\n type: \"uint40\",\n indexed: false,\n internalType: \"uint40\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"FeesClaimed\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"to\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"FeesCollected\",\n inputs: [\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"fee0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"fee1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"totalShares\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OperatorSet\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"operator\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PausedSet\",\n inputs: [\n {\n name: \"pausedUntil\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PokeCleared\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolAsymmetrySet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"premiumPips\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"premiumZeroForOne\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolConfigured\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"floorPips\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"flatPips\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"maxFee\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolPausedSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"pausedUntil\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RangeLifecycleChanged\",\n inputs: [\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"resetSeq\",\n type: \"uint64\",\n indexed: false,\n internalType: \"uint64\",\n },\n {\n name: \"totalShares\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n {\n name: \"feeGrowthInside0X128\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"feeGrowthInside1X128\",\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: \"caller\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\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: \"id\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\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: \"Withdrawn\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"tickLower\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"to\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"error\",\n name: \"AccessManagedInvalidAuthority\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedRequiredDelay\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedUnauthorized\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AddressEmptyCode\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AddressInsufficientBalance\",\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"ClaimFeeAboveMax\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"DeadlineExpired\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"EmptyPoke\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FailedInnerCall\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FeeAboveCap\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FeeBelowFloor\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InsufficientBalance\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidClaimFee\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidConfig\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidMaxFee\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidRecipient\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidTtl\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"LedgerPaused\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NativeNotSupported\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotDynamicFeePool\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotPoolManager\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotPoolManagerCallback\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NothingToClaim\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PauseTooLong\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PoolNotConfigured\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PremiumExceedsFeeBand\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PrincipalAboveMax\",\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"PrincipalBelowMin\",\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"RangeUnset\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"ReentrancyGuardReentrantCall\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"SafeERC20FailedOperation\",\n inputs: [\n {\n name: \"token\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"UnauthorizedClaimOperator\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"ZeroLiquidity\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"ZeroShares\",\n inputs: [],\n },\n] as const;\n","// This file is generated. Do not edit it manually.\nexport const marketRampReaderAbi = [\n {\n type: \"constructor\",\n inputs: [\n {\n name: \"registry_\",\n type: \"address\",\n internalType: \"contract PoolRegistry\",\n },\n {\n name: \"hooks\",\n type: \"tuple[]\",\n internalType: \"struct RampReader.HookConfig[]\",\n components: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"kind\",\n type: \"uint8\",\n internalType: \"enum RampReader.HookKind\",\n },\n ],\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"authority\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"disableHook\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"feeBreakdown\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"timestamp\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"result\",\n type: \"tuple\",\n internalType: \"struct RampReader.FeeBreakdown\",\n components: [\n {\n name: \"hasSession\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"session\",\n type: \"uint8\",\n internalType: \"enum SessionLib.Session\",\n },\n {\n name: \"baseFee\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"directionalPremium\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"cappedAutonomousFee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overrideActive\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"overrideFee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overrideExpiry\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n {\n name: \"overrideMinFee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"maxFee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"finalFee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"hookKind\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum RampReader.HookKind\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isConsumingScheduledOp\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"registry\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"contract PoolRegistry\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"setAuthority\",\n inputs: [\n {\n name: \"newAuthority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setHook\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"kind\",\n type: \"uint8\",\n internalType: \"enum RampReader.HookKind\",\n },\n {\n name: \"expectedCodeHash\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"event\",\n name: \"AuthorityUpdated\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"HookConfigured\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"kind\",\n type: \"uint8\",\n indexed: false,\n internalType: \"enum RampReader.HookKind\",\n },\n {\n name: \"codeHash\",\n type: \"bytes32\",\n indexed: false,\n internalType: \"bytes32\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"HookDisabled\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"error\",\n name: \"AccessManagedInvalidAuthority\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedRequiredDelay\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedUnauthorized\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"DuplicateHook\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"EmptyHookList\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FeeMismatch\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"calculated\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"actual\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"HookCodeMismatch\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"expected\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n {\n name: \"actual\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"InvalidCalendar\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"InvalidHook\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"InvalidRegistry\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"UnsupportedFeePolicy\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"UnsupportedHook\",\n inputs: [\n {\n name: \"hook\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n] as const;\n","// This file is generated. Do not edit it manually.\nexport const marketRwaRampAbi = [\n {\n type: \"constructor\",\n inputs: [\n {\n name: \"manager_\",\n type: \"address\",\n internalType: \"contract IPoolManager\",\n },\n {\n name: \"authority_\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"absoluteMaxFee_\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"ABSOLUTE_MAX_FEE\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_CLAIM_FEE_BPS\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_CLAIM_FEE_WALK\",\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: \"MAX_DESCENT_WINDOW\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_PAUSE\",\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: \"MAX_POKE_DISCOUNT_BPS\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_POKE_TTL\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"MAX_SPIKE_MULT\",\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: \"MIN_POOL_FEE\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"afterAddLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterDonate\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterInitialize\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n {\n name: \"\",\n type: \"int24\",\n internalType: \"int24\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterRemoveLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"afterSwap\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct SwapParams\",\n components: [\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"amountSpecified\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"sqrtPriceLimitX96\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n ],\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BalanceDelta\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int128\",\n internalType: \"int128\",\n },\n ],\n stateMutability: \"pure\",\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 name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"amount\",\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: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"authority\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"autonomousFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [\n {\n name: \"fee\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"balanceOf\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"beforeAddLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"beforeDonate\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"beforeInitialize\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"beforeRemoveLiquidity\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ModifyLiquidityParams\",\n components: [\n {\n name: \"tickLower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidityDelta\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"salt\",\n type: \"bytes32\",\n internalType: \"bytes32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"beforeSwap\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"params\",\n type: \"tuple\",\n internalType: \"struct SwapParams\",\n components: [\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n {\n name: \"amountSpecified\",\n type: \"int256\",\n internalType: \"int256\",\n },\n {\n name: \"sqrtPriceLimitX96\",\n type: \"uint160\",\n internalType: \"uint160\",\n },\n ],\n },\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n {\n name: \"\",\n type: \"int256\",\n internalType: \"BeforeSwapDelta\",\n },\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeAllTimeMin\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeBps\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeChangeAt\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"i\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct ClaimFeePolicy.Change\",\n components: [\n {\n name: \"fromTs\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeFor\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"sinceIndex\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeHistoryLength\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeOwed\",\n inputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeePolicy\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"contract ClaimFeePolicy\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeRecipient\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFeeSyncIndex\",\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"claimFees\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"maxFeeBps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"claimFeesFor\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"maxFeeBps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"clearPoke\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"closeSec\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"currentFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"zeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"dayOverride\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"y\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"m\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"d\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum MarketCalendar.DayOverride\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"deposit\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount0Max\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1Max\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"deadline\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"payable\",\n },\n {\n type: \"function\",\n name: \"dstMode\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum SessionLib.DstMode\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"earlyClose\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"y\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"m\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"d\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"effectiveClaimFee\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"feeFloorAt\",\n inputs: [\n {\n name: \"\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct SessionLib.FloorConfig\",\n components: [\n {\n name: \"openFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overnightFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closedFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"spikeMult\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"closedSpike\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"descentWindow\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closeBefore\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeAfter\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"flatFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"floorConfig\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct SessionLib.FloorConfig\",\n components: [\n {\n name: \"openFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overnightFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closedFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"spikeMult\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"closedSpike\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"descentWindow\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closeBefore\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeAfter\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isClaimOperator\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"approved\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isConsumingScheduledOp\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isOperator\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"isOperator\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"isSettling\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"marketCalendar\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"contract MarketCalendar\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"maxFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"openSec\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pause\",\n inputs: [\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"pausePool\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"paused\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pausedFor\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pausedUntil\",\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: \"pausedUntilOf\",\n inputs: [\n {\n name: \"\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pendingClaimFeeCurrencyCount\",\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: \"pokeFee\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"fee0For1\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"fee1For0\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"ttl\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"pokeFloor\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"pokeOf\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"fee0For1\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"fee1For0\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"expiry\",\n type: \"uint40\",\n internalType: \"uint40\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolAsymmetry\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n ],\n outputs: [\n {\n name: \"premiumPips\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"premiumZeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"poolManager\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"address\",\n internalType: \"contract IPoolManager\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rangeGrowth\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rangeId\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n stateMutability: \"pure\",\n },\n {\n type: \"function\",\n name: \"rangeKey\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"set\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"rangeState\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct RangeState\",\n components: [\n {\n name: \"totalShares\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"accFee0X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"accFee1X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"collectionSeq\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n {\n name: \"resetSeq\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"sessionAt\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"timestamp\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"uint8\",\n internalType: \"enum SessionLib.Session\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"setAuthority\",\n inputs: [\n {\n name: \"newAuthority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setClaimFee\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"settleFirst\",\n type: \"address[]\",\n internalType: \"Currency[]\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n {\n name: \"recipient\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setClaimFeeBps\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"bps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setClaimOperator\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setDayOverrides\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"yearMonth\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"packed\",\n type: \"uint64\",\n internalType: \"uint64\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setDstMode\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"mode\",\n type: \"uint8\",\n internalType: \"enum SessionLib.DstMode\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setEarlyClose\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"y\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"m\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"d\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"e\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setOperator\",\n inputs: [\n {\n name: \"operator\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n internalType: \"bool\",\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: \"setPaused\",\n inputs: [\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolAsymmetry\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"premiumPips\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"premiumZeroForOne\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolConfig\",\n inputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolConfig\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"config\",\n type: \"tuple\",\n internalType: \"struct SessionLib.FloorConfig\",\n components: [\n {\n name: \"openFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overnightFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closedFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"spikeMult\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"closedSpike\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"descentWindow\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closeBefore\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeAfter\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n name: \"cap\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setPoolPaused\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"duration\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"setSessionHours\",\n inputs: [\n {\n name: \"id\",\n type: \"bytes32\",\n internalType: \"PoolId\",\n },\n {\n name: \"o\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"e\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"supportsInterface\",\n inputs: [\n {\n name: \"interfaceId\",\n type: \"bytes4\",\n internalType: \"bytes4\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bool\",\n internalType: \"bool\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"sweepClaimFee\",\n inputs: [\n {\n name: \"currency\",\n type: \"address\",\n internalType: \"Currency\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"transfer\",\n inputs: [\n {\n name: \"receiver\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"sender\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"receiver\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\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: \"unlockCallback\",\n inputs: [\n {\n name: \"raw\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"bytes\",\n internalType: \"bytes\",\n },\n ],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"userFeeRemainder\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"amount0X128\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1X128\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"userPosition\",\n inputs: [\n {\n name: \"id\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"owner\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n internalType: \"struct UserPosition\",\n components: [\n {\n name: \"owed0\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"owed1\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"checkpoint0X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"checkpoint1X128\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n ],\n stateMutability: \"view\",\n },\n {\n type: \"function\",\n name: \"withdraw\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"amount0Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"deadline\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n outputs: [],\n stateMutability: \"nonpayable\",\n },\n {\n type: \"function\",\n name: \"withdrawAndClaim\",\n inputs: [\n {\n name: \"key\",\n type: \"tuple\",\n internalType: \"struct PoolKey\",\n components: [\n {\n name: \"currency0\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"currency1\",\n type: \"address\",\n internalType: \"Currency\",\n },\n {\n name: \"fee\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"tickSpacing\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"hooks\",\n type: \"address\",\n internalType: \"contract IHooks\",\n },\n ],\n },\n {\n name: \"lower\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"upper\",\n type: \"int24\",\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"to\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"amount0Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"amount1Min\",\n type: \"uint128\",\n internalType: \"uint128\",\n },\n {\n name: \"deadline\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"maxFeeBps\",\n type: \"uint16\",\n internalType: \"uint16\",\n },\n ],\n outputs: [],\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: \"id\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\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: \"AuthorityUpdated\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ClaimFeeAccrued\",\n inputs: [\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n indexed: false,\n internalType: \"uint16\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ClaimFeeSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"bps\",\n type: \"uint16\",\n indexed: false,\n internalType: \"uint16\",\n },\n {\n name: \"recipient\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"ClaimFeeSwept\",\n inputs: [\n {\n name: \"currency\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"recipient\",\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: \"ClaimOperatorSet\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"operator\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"DayOverridesSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"yearMonth\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"packed\",\n type: \"uint64\",\n indexed: false,\n internalType: \"uint64\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"Deposited\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"tickLower\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"DstModeSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"mode\",\n type: \"uint8\",\n indexed: false,\n internalType: \"enum SessionLib.DstMode\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"EarlyCloseSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"year\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"month\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"day\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"closeSec\",\n type: \"uint32\",\n indexed: false,\n internalType: \"uint32\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"FeePoked\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"fee0For1\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"fee1For0\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"expiry\",\n type: \"uint40\",\n indexed: false,\n internalType: \"uint40\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"FeesClaimed\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"to\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"FeesCollected\",\n inputs: [\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"fee0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"fee1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"totalShares\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"OperatorSet\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"operator\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"approved\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PausedSet\",\n inputs: [\n {\n name: \"pausedUntil\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PokeCleared\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolAsymmetrySet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"premiumPips\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"premiumZeroForOne\",\n type: \"bool\",\n indexed: false,\n internalType: \"bool\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolConfigured\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"floorPips\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"flatPips\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n {\n name: \"maxFee\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolConfigured\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"config\",\n type: \"tuple\",\n indexed: false,\n internalType: \"struct SessionLib.FloorConfig\",\n components: [\n {\n name: \"openFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"overnightFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closedFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"spikeMult\",\n type: \"uint8\",\n internalType: \"uint8\",\n },\n {\n name: \"closedSpike\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"descentWindow\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeFloor\",\n type: \"uint24\",\n internalType: \"uint24\",\n },\n {\n name: \"closeBefore\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n {\n name: \"closeAfter\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n name: \"maxFee\",\n type: \"uint24\",\n indexed: false,\n internalType: \"uint24\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"PoolPausedSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"pausedUntil\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"RangeLifecycleChanged\",\n inputs: [\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"resetSeq\",\n type: \"uint64\",\n indexed: false,\n internalType: \"uint64\",\n },\n {\n name: \"totalShares\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n {\n name: \"feeGrowthInside0X128\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"feeGrowthInside1X128\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"SessionHoursSet\",\n inputs: [\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"openSec\",\n type: \"uint32\",\n indexed: false,\n internalType: \"uint32\",\n },\n {\n name: \"closeSec\",\n type: \"uint32\",\n indexed: false,\n internalType: \"uint32\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"event\",\n name: \"Transfer\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\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: \"id\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\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: \"Withdrawn\",\n inputs: [\n {\n name: \"owner\",\n type: \"address\",\n indexed: true,\n internalType: \"address\",\n },\n {\n name: \"rangeId\",\n type: \"uint256\",\n indexed: true,\n internalType: \"uint256\",\n },\n {\n name: \"poolId\",\n type: \"bytes32\",\n indexed: true,\n internalType: \"PoolId\",\n },\n {\n name: \"tickLower\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"tickUpper\",\n type: \"int24\",\n indexed: false,\n internalType: \"int24\",\n },\n {\n name: \"liquidity\",\n type: \"uint128\",\n indexed: false,\n internalType: \"uint128\",\n },\n {\n name: \"amount0\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"amount1\",\n type: \"uint256\",\n indexed: false,\n internalType: \"uint256\",\n },\n {\n name: \"to\",\n type: \"address\",\n indexed: false,\n internalType: \"address\",\n },\n ],\n anonymous: false,\n },\n {\n type: \"error\",\n name: \"AccessManagedInvalidAuthority\",\n inputs: [\n {\n name: \"authority\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedRequiredDelay\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n {\n name: \"delay\",\n type: \"uint32\",\n internalType: \"uint32\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AccessManagedUnauthorized\",\n inputs: [\n {\n name: \"caller\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AddressEmptyCode\",\n inputs: [\n {\n name: \"target\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"AddressInsufficientBalance\",\n inputs: [\n {\n name: \"account\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"ClaimFeeAboveMax\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"DeadlineExpired\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"EmptyPoke\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FailedInnerCall\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FeeAboveCap\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"FeeBelowFloor\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InsufficientBalance\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidClaimFee\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidConfig\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidMaxFee\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidRecipient\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"InvalidTtl\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"LedgerPaused\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NativeNotSupported\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotDynamicFeePool\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotPoolManager\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NotPoolManagerCallback\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"NothingToClaim\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PauseTooLong\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PoolNotConfigured\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PremiumExceedsFeeBand\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"PrincipalAboveMax\",\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"PrincipalBelowMin\",\n inputs: [\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n {\n name: \"\",\n type: \"uint256\",\n internalType: \"uint256\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"RangeUnset\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"ReentrancyGuardReentrantCall\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"RwaConfigRequired\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"SafeERC20FailedOperation\",\n inputs: [\n {\n name: \"token\",\n type: \"address\",\n internalType: \"address\",\n },\n ],\n },\n {\n type: \"error\",\n name: \"UnauthorizedClaimOperator\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"ZeroLiquidity\",\n inputs: [],\n },\n {\n type: \"error\",\n name: \"ZeroShares\",\n inputs: [],\n },\n] as const;\n","import { parseAbi } from \"viem\";\n\n// Minimal read interfaces, not generated Ramp artifacts. See docs/pool-state.md for pinned sources.\nexport const marketStateViewAbi = parseAbi([\n \"function poolManager() view returns (address)\",\n \"function getSlot0(bytes32 poolId) view returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee)\",\n \"function getLiquidity(bytes32 poolId) view returns (uint128 liquidity)\",\n \"function getPositionInfo(bytes32 poolId, bytes32 positionId) view returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128)\",\n]);\nexport const marketExtsloadAbi = parseAbi([\n \"function extsload(bytes32[] slots) view returns (bytes32[])\",\n]);\n","export class InvalidMarketConfigError extends Error {\n constructor(\n readonly field: string,\n message: string,\n ) {\n super(message);\n this.name = \"InvalidMarketConfigError\";\n }\n}\n\nexport class MarketDeploymentVerificationError extends Error {\n constructor(\n readonly field: string,\n readonly expected: unknown,\n readonly actual: unknown,\n ) {\n super(`Market deployment mismatch: ${field}.`);\n this.name = \"MarketDeploymentVerificationError\";\n }\n}\n\nexport class MarketReadError extends Error {\n constructor(cause: unknown) {\n super(\"Market RPC read failed. Inspect cause for transport or contract revert details.\", {\n cause,\n });\n this.name = \"MarketReadError\";\n }\n}\n\nexport class MarketFeatureUnavailableError extends Error {\n constructor(readonly feature: string) {\n super(`Market feature is unavailable for this configuration: ${feature}.`);\n this.name = \"MarketFeatureUnavailableError\";\n }\n}\n\nexport class MarketSettlingError extends Error {\n constructor(readonly hook: `0x${string}`) {\n super(\"The Market ledger is settling; a consistent position snapshot is unavailable.\");\n this.name = \"MarketSettlingError\";\n }\n}\n\nexport class MarketTransactionError extends Error {\n constructor(\n readonly stage: \"simulate\" | \"send\" | \"receipt\",\n cause: unknown,\n ) {\n super(\n `Market transaction ${stage} failed. Inspect cause for RPC, signature or contract details.`,\n { cause },\n );\n this.name = \"MarketTransactionError\";\n }\n}\n\nexport class MarketTransactionReplacedError extends Error {\n constructor(\n readonly originalHash: `0x${string}`,\n readonly replacementHash: `0x${string}`,\n readonly reason: string,\n ) {\n super(`Market transaction was ${reason}; inspect the replacement before continuing.`);\n this.name = \"MarketTransactionReplacedError\";\n }\n}\n","import {\n type Address,\n encodeAbiParameters,\n getAddress,\n type Hex,\n isAddress,\n isAddressEqual,\n keccak256,\n zeroAddress,\n} from \"viem\";\nimport { InvalidMarketConfigError } from \"../errors\";\nimport type { MarketPoolKey } from \"../types\";\n\nexport function assertMarketUint(value: bigint, field: string, bits = 256): void {\n if (typeof value !== \"bigint\" || value < 0n || value >= 1n << BigInt(bits)) {\n throw new InvalidMarketConfigError(field, `Expected a uint${bits} bigint.`);\n }\n}\n\nexport function assertMarketPoolId(value: Hex): void {\n if (!/^0x[0-9a-fA-F]{64}$/.test(value)) {\n throw new InvalidMarketConfigError(\"poolId\", \"Expected a 32-byte pool ID.\");\n }\n}\n\nexport function assertMarketAddress(address: Address, field: string, allowNative = false): void {\n if (!isAddress(address) || (!allowNative && isAddressEqual(address, zeroAddress))) {\n throw new InvalidMarketConfigError(field, \"Expected a valid non-zero address.\");\n }\n}\n\n/** Keeps caller direction intact: rejects unsorted currencies rather than silently swapping them. */\nexport function defineMarketPoolKey(key: MarketPoolKey): MarketPoolKey {\n assertMarketAddress(key.currency0, \"currency0\", true);\n assertMarketAddress(key.currency1, \"currency1\");\n assertMarketAddress(key.hooks, \"hooks\");\n if (BigInt(key.currency0) >= BigInt(key.currency1)) {\n throw new InvalidMarketConfigError(\n \"currencies\",\n \"Currencies must be distinct and sorted by address.\",\n );\n }\n if (key.fee !== 0x800000) {\n throw new InvalidMarketConfigError(\n \"fee\",\n \"Peach Market pools require the v4 dynamic fee flag.\",\n );\n }\n if (!Number.isInteger(key.tickSpacing) || key.tickSpacing < 1 || key.tickSpacing > 32767) {\n throw new InvalidMarketConfigError(\"tickSpacing\", \"Expected v4 tick spacing in [1, 32767].\");\n }\n return Object.freeze({\n currency0: getAddress(key.currency0),\n currency1: getAddress(key.currency1),\n fee: key.fee,\n tickSpacing: key.tickSpacing,\n hooks: getAddress(key.hooks),\n });\n}\n\nexport function getMarketPoolId(input: MarketPoolKey): Hex {\n const key = defineMarketPoolKey(input);\n return keccak256(\n encodeAbiParameters(\n [\n { type: \"address\" },\n { type: \"address\" },\n { type: \"uint24\" },\n { type: \"int24\" },\n { type: \"address\" },\n ],\n [key.currency0, key.currency1, key.fee, key.tickSpacing, key.hooks],\n ),\n );\n}\n\nexport function getMarketRangeId(\n poolId: Hex,\n tickLower: number,\n tickUpper: number,\n tickSpacing = 1,\n): bigint {\n assertMarketPoolId(poolId);\n if (!Number.isInteger(tickSpacing) || tickSpacing < 1 || tickSpacing > 32767) {\n throw new InvalidMarketConfigError(\"tickSpacing\", \"Expected v4 tick spacing in [1, 32767].\");\n }\n if (\n !Number.isInteger(tickLower) ||\n !Number.isInteger(tickUpper) ||\n tickLower < -887272 ||\n tickUpper > 887272 ||\n tickLower >= tickUpper ||\n tickLower % tickSpacing !== 0 ||\n tickUpper % tickSpacing !== 0\n ) {\n throw new InvalidMarketConfigError(\n \"ticks\",\n \"Expected ordered, aligned ticks in the v4 tick range.\",\n );\n }\n return BigInt(\n keccak256(\n encodeAbiParameters(\n [{ type: \"bytes32\" }, { type: \"int24\" }, { type: \"int24\" }],\n [poolId, tickLower, tickUpper],\n ),\n ),\n );\n}\n\n/** Buy means quote -> base; sell means base -> quote. Labels never depend on token symbols. */\nexport function getMarketSwapDirection(\n key: MarketPoolKey,\n base: Address,\n quote: Address,\n side: \"buy\" | \"sell\",\n): boolean {\n const normalized = defineMarketPoolKey(key);\n assertMarketAddress(base, \"base\", true);\n assertMarketAddress(quote, \"quote\", true);\n const baseIs0 =\n isAddressEqual(base, normalized.currency0) && isAddressEqual(quote, normalized.currency1);\n const baseIs1 =\n isAddressEqual(base, normalized.currency1) && isAddressEqual(quote, normalized.currency0);\n if ((!baseIs0 && !baseIs1) || (side !== \"buy\" && side !== \"sell\")) {\n throw new InvalidMarketConfigError(\n \"direction\",\n \"Base/quote must match both pool currencies and side must be buy/sell.\",\n );\n }\n return side === \"sell\" ? baseIs0 : baseIs1;\n}\n","import { type Address, isAddressEqual, keccak256 } from \"viem\";\nimport { defineMarketDeployment } from \"../deployment\";\nimport {\n InvalidMarketConfigError,\n MarketDeploymentVerificationError,\n MarketFeatureUnavailableError,\n MarketReadError,\n MarketSettlingError,\n MarketTransactionError,\n} from \"../errors\";\nimport { assertMarketAddress, assertMarketUint } from \"../math/identifiers\";\nimport type {\n MarketBlock,\n MarketReadContext,\n MarketReadOptions,\n MarketSnapshot,\n} from \"../read-types\";\nimport type { MarketContractDeployment, MarketHookDeployment } from \"../types\";\n\nexport interface MarketReadScope extends MarketReadContext {\n readonly block: MarketBlock;\n}\n\nexport async function readMarketSnapshot<T>(\n context: MarketReadContext,\n options: MarketReadOptions,\n read: (scope: MarketReadScope) => Promise<T>,\n): Promise<MarketSnapshot<T>> {\n const deployment = defineMarketDeployment(context.deployment);\n const publicClient = context.publicClient;\n const { blockNumber, blockHash } = options;\n if (blockNumber !== undefined) assertMarketUint(blockNumber, \"blockNumber\");\n if (\n blockHash !== undefined &&\n (blockNumber === undefined || !/^0x[0-9a-fA-F]{64}$/.test(blockHash))\n ) {\n throw new InvalidMarketConfigError(\n \"blockHash\",\n \"A block hash requires a valid explicit block number.\",\n );\n }\n try {\n const chainId = await publicClient.getChainId();\n if (chainId !== deployment.chainId)\n throw new MarketDeploymentVerificationError(\"chainId\", deployment.chainId, chainId);\n const block = await publicClient.getBlock(\n blockNumber === undefined ? { blockTag: \"latest\" } : { blockNumber },\n );\n if (block.number === null || block.hash === null)\n throw new MarketDeploymentVerificationError(\"block\", \"mined block\", block);\n if (blockNumber !== undefined && block.number !== blockNumber)\n throw new MarketDeploymentVerificationError(\"blockNumber\", blockNumber, block.number);\n if (blockHash !== undefined && block.hash.toLowerCase() !== blockHash.toLowerCase())\n throw new MarketDeploymentVerificationError(\"blockHash\", blockHash, block.hash);\n const snapshot: MarketBlock = Object.freeze({\n chainId,\n deploymentId: deployment.deploymentId,\n blockNumber: block.number,\n blockHash: block.hash,\n timestamp: block.timestamp,\n });\n const data = await read({ publicClient, deployment, block: snapshot });\n const finalBlock = await publicClient.getBlock({ blockNumber: block.number });\n if (finalBlock.hash !== block.hash)\n throw new MarketDeploymentVerificationError(\"blockHash\", block.hash, finalBlock.hash);\n return Object.freeze({ block: snapshot, data });\n } catch (error) {\n if (\n error instanceof InvalidMarketConfigError ||\n error instanceof MarketDeploymentVerificationError ||\n error instanceof MarketFeatureUnavailableError ||\n error instanceof MarketSettlingError ||\n error instanceof MarketReadError ||\n error instanceof MarketTransactionError\n )\n throw error;\n throw new MarketReadError(error);\n }\n}\n\nexport function requireMarketHook(\n scope: MarketReadContext,\n address: Address,\n): MarketHookDeployment {\n assertMarketAddress(address, \"hook\");\n const hook = scope.deployment.hooks.find((entry) => isAddressEqual(entry.address, address));\n if (!hook) throw new MarketFeatureUnavailableError(`unsupported Hook ${address}`);\n return hook;\n}\n\n/** Only used at the optional v4 read boundary; ordinary queries don't rerun full deployment verification. */\nexport async function assertMarketCode(\n scope: MarketReadScope,\n contract: MarketContractDeployment,\n): Promise<void> {\n const code = await scope.publicClient.getCode({\n address: contract.address,\n blockNumber: scope.block.blockNumber,\n });\n const actual = code && code !== \"0x\" ? keccak256(code) : null;\n if (actual !== contract.runtimeCodeHash.toLowerCase())\n throw new MarketDeploymentVerificationError(contract.address, contract.runtimeCodeHash, actual);\n}\n","import { getAddress, isAddress, zeroAddress } from \"viem\";\nimport { InvalidMarketConfigError } from \"./errors\";\nimport type {\n MarketContractDeployment,\n MarketDeployment,\n MarketHookCapabilities,\n MarketHookDeployment,\n} from \"./types\";\n\nfunction invalid(field: string, message: string): never {\n throw new InvalidMarketConfigError(field, message);\n}\n\nfunction contract(input: MarketContractDeployment, field: string): MarketContractDeployment {\n if (!isAddress(input.address) || input.address.toLowerCase() === zeroAddress) {\n invalid(`${field}.address`, \"Expected a non-zero EVM address.\");\n }\n if (!/^0x[0-9a-fA-F]{64}$/.test(input.runtimeCodeHash) || /^0x0+$/.test(input.runtimeCodeHash)) {\n invalid(`${field}.runtimeCodeHash`, \"Expected a non-zero 32-byte runtime code hash.\");\n }\n return Object.freeze({\n address: getAddress(input.address),\n runtimeCodeHash: input.runtimeCodeHash,\n });\n}\n\nconst capabilityKeys = [\"liquidity\", \"nativeLiquidity\", \"claimOperator\", \"management\"] as const;\n\nfunction hook(input: MarketHookDeployment, index: number): MarketHookDeployment {\n const field = `hooks.${index}`;\n if (![\"ramp\", \"ramp-eth\", \"rwa-ramp\"].includes(input.kind)) {\n invalid(`${field}.kind`, \"Unsupported Market Hook kind.\");\n }\n if (input.implementation !== \"ramp-v1\") {\n invalid(`${field}.implementation`, \"Unsupported Market implementation.\");\n }\n if ((input.kind === \"rwa-ramp\") !== (input.calendar !== undefined)) {\n invalid(`${field}.calendar`, \"Only RWA Hooks must include a calendar.\");\n }\n for (const key of capabilityKeys) {\n if (![\"disabled\", \"unverified\", \"verified\"].includes(input.capabilities[key])) {\n invalid(`${field}.capabilities.${key}`, \"Explicit capability acceptance status is required.\");\n }\n }\n if (input.kind !== \"ramp-eth\" && input.capabilities.nativeLiquidity !== \"disabled\") {\n invalid(`${field}.capabilities.nativeLiquidity`, \"Native liquidity requires RampETH.\");\n }\n const capabilities: MarketHookCapabilities = Object.freeze({\n liquidity: input.capabilities.liquidity,\n nativeLiquidity: input.capabilities.nativeLiquidity,\n claimOperator: input.capabilities.claimOperator,\n management: input.capabilities.management,\n });\n return Object.freeze({\n ...contract(input, field),\n kind: input.kind,\n implementation: input.implementation,\n claimFeePolicy: contract(input.claimFeePolicy, `${field}.claimFeePolicy`),\n ...(input.calendar ? { calendar: contract(input.calendar, `${field}.calendar`) } : {}),\n capabilities,\n });\n}\n\n/** Validates and copies configuration. Does not claim that the supplied contracts are deployed. */\nexport function defineMarketDeployment(input: MarketDeployment): MarketDeployment {\n if (!Number.isSafeInteger(input.chainId) || input.chainId <= 0) {\n invalid(\"chainId\", \"Expected a positive safe integer.\");\n }\n if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(input.deploymentId)) {\n invalid(\"deploymentId\", \"Expected a non-empty lowercase deployment identifier.\");\n }\n if (input.hooks.length === 0) invalid(\"hooks\", \"At least one supported Hook is required.\");\n const hooks = input.hooks.map(hook);\n if (new Set(hooks.map((entry) => entry.address)).size !== hooks.length) {\n invalid(\"hooks\", \"Duplicate Hook addresses are not allowed.\");\n }\n let poolStateReader: MarketDeployment[\"poolStateReader\"];\n if (input.poolStateReader?.kind === \"state-view\") {\n poolStateReader = Object.freeze({\n kind: \"state-view\",\n contract: contract(input.poolStateReader.contract, \"poolStateReader.contract\"),\n });\n } else if (input.poolStateReader?.kind === \"extsload\") {\n if (input.poolStateReader.layout !== \"uniswap-v4-v1\") {\n invalid(\"poolStateReader.layout\", \"Unsupported PoolManager storage layout.\");\n }\n poolStateReader = Object.freeze({ kind: \"extsload\", layout: \"uniswap-v4-v1\" });\n } else if (input.poolStateReader !== undefined) {\n invalid(\"poolStateReader.kind\", \"Unsupported pool state reader.\");\n }\n return Object.freeze({\n chainId: input.chainId,\n deploymentId: input.deploymentId,\n poolManager: contract(input.poolManager, \"poolManager\"),\n registry: contract(input.registry, \"registry\"),\n authority: contract(input.authority, \"authority\"),\n ...(input.reader ? { reader: contract(input.reader, \"reader\") } : {}),\n ...(poolStateReader ? { poolStateReader } : {}),\n hooks: Object.freeze(hooks),\n });\n}\n","import { encodeAbiParameters, encodePacked, isAddressEqual, keccak256, toHex } from \"viem\";\nimport { marketClaimFeePolicyAbi, marketRampAbi } from \"../abi\";\nimport { marketExtsloadAbi, marketStateViewAbi } from \"../abi/v4\";\nimport { immutableClone } from \"../core\";\nimport type { MarketFeeLedger } from \"../earnings-types\";\nimport { MarketDeploymentVerificationError, MarketFeatureUnavailableError } from \"../errors\";\nimport { calculateMarketClaimableFees } from \"../math/earnings\";\nimport { marketPoolStorageSlots } from \"../math/pool-state\";\nimport type { MarketPositionParams, MarketReadContext, MarketSnapshot } from \"../read-types\";\nimport { getMarketPosition } from \"./positions\";\nimport { assertMarketCode, readMarketSnapshot, requireMarketHook } from \"./snapshot\";\n\nexport function getMarketFeeSnapshot(\n context: MarketReadContext,\n input: MarketPositionParams,\n): Promise<MarketSnapshot<MarketFeeLedger>> {\n const params = immutableClone(input);\n return readMarketSnapshot(context, params, async (scope) => {\n const position = (await getMarketPosition(context, { ...params, ...scope.block })).data;\n const range = position.range;\n if (range.status !== \"set\")\n throw new MarketFeatureUnavailableError(\"earnings for an unset range\");\n const hook = requireMarketHook(scope, range.hook);\n const reader = scope.deployment.poolStateReader;\n if (!reader)\n throw new MarketFeatureUnavailableError(\"poolStateReader for gross position baseline\");\n for (const contract of [hook, hook.claimFeePolicy, scope.deployment.poolManager])\n await assertMarketCode(scope, contract);\n const target = {\n address: hook.address,\n abi: marketRampAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const policy = {\n address: hook.claimFeePolicy.address,\n abi: marketClaimFeePolicyAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const [\n manager,\n policyAddress,\n ledgerAddress,\n growth,\n claimFeeSyncIndex,\n policyHistoryLength,\n currentClaimFeeBps,\n allTimeMinClaimFeeBps,\n ] = await Promise.all([\n scope.publicClient.readContract({ ...target, functionName: \"poolManager\" }),\n scope.publicClient.readContract({ ...target, functionName: \"claimFeePolicy\" }),\n scope.publicClient.readContract({ ...policy, functionName: \"ledger\" }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"rangeGrowth\",\n args: [range.rangeId],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"claimFeeSyncIndex\",\n args: [range.rangeId],\n }),\n scope.publicClient.readContract({ ...policy, functionName: \"length\", args: [range.poolId] }),\n scope.publicClient.readContract({ ...policy, functionName: \"current\", args: [range.poolId] }),\n scope.publicClient.readContract({ ...policy, functionName: \"minimum\", args: [range.poolId] }),\n ]);\n for (const [name, expected, actual] of [\n [\"manager\", scope.deployment.poolManager.address, manager],\n [\"policy\", hook.claimFeePolicy.address, policyAddress],\n [\"ledger\", hook.address, ledgerAddress],\n ] as const) {\n if (!isAddressEqual(expected, actual))\n throw new MarketDeploymentVerificationError(name, expected, actual);\n }\n // v4 position owner is the Hook; salt is the full rangeId, not the user's address.\n const positionId = keccak256(\n encodePacked(\n [\"address\", \"int24\", \"int24\", \"bytes32\"],\n [hook.address, range.tickLower, range.tickUpper, toHex(range.rangeId, { size: 32 })],\n ),\n );\n let managerState: readonly [bigint, bigint, bigint];\n if (reader.kind === \"state-view\") {\n await assertMarketCode(scope, reader.contract);\n const view = {\n address: reader.contract.address,\n abi: marketStateViewAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const bound = await scope.publicClient.readContract({ ...view, functionName: \"poolManager\" });\n if (!isAddressEqual(bound, manager))\n throw new MarketDeploymentVerificationError(\"stateView.poolManager\", manager, bound);\n managerState = await scope.publicClient.readContract({\n ...view,\n functionName: \"getPositionInfo\",\n args: [range.poolId, positionId],\n });\n } else {\n const poolSlot = marketPoolStorageSlots(range.poolId)[0];\n const base = BigInt(\n keccak256(\n encodeAbiParameters(\n [{ type: \"bytes32\" }, { type: \"uint256\" }],\n [positionId, BigInt.asUintN(256, BigInt(poolSlot) + 6n)],\n ),\n ),\n );\n const slots = [0n, 1n, 2n].map((offset) =>\n toHex(BigInt.asUintN(256, base + offset), { size: 32 }),\n );\n const words = await scope.publicClient.readContract({\n address: manager,\n abi: marketExtsloadAbi,\n functionName: \"extsload\",\n args: [slots],\n blockNumber: scope.block.blockNumber,\n });\n const [liquidity, last0, last1] = words;\n if (\n words.length !== 3 ||\n !liquidity ||\n !last0 ||\n !last1 ||\n words.some((word) => !/^0x[0-9a-fA-F]{64}$/.test(word))\n )\n throw new MarketDeploymentVerificationError(\n \"position storage\",\n \"three 32-byte words\",\n words,\n );\n managerState = [BigInt(liquidity), BigInt(last0), BigInt(last1)];\n }\n if (managerState[0] !== range.state.totalShares)\n throw new MarketDeploymentVerificationError(\n \"managerLiquidity\",\n range.state.totalShares,\n managerState[0],\n );\n return immutableClone({\n position: { ...position, range },\n managerLiquidity: managerState[0],\n lastGrowth0X128: managerState[1],\n lastGrowth1X128: managerState[2],\n growth0X128: growth[0],\n growth1X128: growth[1],\n claimFeeSyncIndex,\n policyHistoryLength,\n currentClaimFeeBps,\n allTimeMinClaimFeeBps,\n });\n });\n}\n\nexport async function estimateMarketClaimableFees(\n context: MarketReadContext,\n params: MarketPositionParams,\n) {\n const snapshot = await getMarketFeeSnapshot(context, params);\n return immutableClone({\n block: snapshot.block,\n data: calculateMarketClaimableFees(snapshot.data),\n });\n}\n","import { UserRejectedRequestError } from \"viem\";\n\nexport type PeachSdkErrorCode =\n | \"INVALID_AMOUNT\"\n | \"MISSING_ACCOUNT\"\n | \"MISSING_CHAIN\"\n | \"UNSUPPORTED_CHAIN\"\n | \"USER_REJECTED\"\n | \"TRANSPORT_ERROR\"\n | \"CONTRACT_ERROR\"\n | \"UNKNOWN_ERROR\";\n\n/**\n * Cross-copy brand for shared SDK errors.\n *\n * Every product SDK bundles its own copy of these primitives, so an error thrown by\n * `@masterpeach/launchpad-sdk` is not an `instanceof` the class of the same name exported by\n * `@masterpeach/lending-sdk`. `Symbol.for` resolves through the runtime-wide symbol registry, so\n * each copy brands its errors with the identical key and can recognize the others'.\n */\nconst PEACH_SDK_ERROR_BRAND = Symbol.for(\"masterpeach.sdk-core.PeachSdkError\");\n\n/** Base error carrying a stable machine-readable code and structured diagnostic metadata. */\nexport class PeachSdkError extends Error {\n readonly code: PeachSdkErrorCode;\n readonly metadata: Readonly<Record<string, unknown>>;\n\n constructor(\n code: PeachSdkErrorCode,\n message: string,\n options: { cause?: unknown; metadata?: Readonly<Record<string, unknown>> } = {},\n ) {\n super(message, { cause: options.cause });\n this.name = \"PeachSdkError\";\n this.code = code;\n this.metadata = options.metadata ?? {};\n // Non-enumerable so the brand stays out of structured clones and JSON diagnostics.\n Object.defineProperty(this, PEACH_SDK_ERROR_BRAND, { value: true });\n }\n}\n\nexport class UnsupportedChainError extends PeachSdkError {\n constructor(chainId: number) {\n super(\"UNSUPPORTED_CHAIN\", `Unsupported chain: ${chainId}`, {\n metadata: { chainId },\n });\n this.name = \"UnsupportedChainError\";\n }\n}\n\nexport class MissingChainError extends PeachSdkError {\n constructor() {\n super(\"MISSING_CHAIN\", \"A chain ID is required for this operation.\");\n this.name = \"MissingChainError\";\n }\n}\n\nexport class MissingAccountError extends PeachSdkError {\n constructor() {\n super(\"MISSING_ACCOUNT\", \"A wallet account is required for this operation.\");\n this.name = \"MissingAccountError\";\n }\n}\n\n/**\n * Recognizes a shared SDK error regardless of which product SDK created it.\n *\n * Prefer this over `instanceof PeachSdkError` whenever an application depends on more than one\n * MasterPeach SDK: each package carries its own copy of the class, so `instanceof` only matches\n * errors that happened to originate from the same package. Pass a `code` to narrow in one step.\n */\nexport function isPeachSdkError(value: unknown): value is PeachSdkError;\nexport function isPeachSdkError<TCode extends PeachSdkErrorCode>(\n value: unknown,\n code: TCode,\n): value is PeachSdkError & { readonly code: TCode };\nexport function isPeachSdkError(value: unknown, code?: PeachSdkErrorCode): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if ((value as Record<symbol, unknown>)[PEACH_SDK_ERROR_BRAND] !== true) {\n return false;\n }\n return code === undefined || (value as PeachSdkError).code === code;\n}\n\n/** Normalizes wallet rejection and unknown failures at a shared SDK boundary. */\nexport function toPeachSdkError(error: unknown): PeachSdkError {\n // Brand check rather than `instanceof`, so an error raised by a sibling SDK keeps its code\n // instead of being flattened into UNKNOWN_ERROR.\n if (isPeachSdkError(error)) {\n return error;\n }\n\n if (error instanceof UserRejectedRequestError) {\n return new PeachSdkError(\"USER_REJECTED\", \"The wallet request was rejected.\", {\n cause: error,\n });\n }\n\n return new PeachSdkError(\"UNKNOWN_ERROR\", \"An unknown SDK error occurred.\", {\n cause: error,\n });\n}\n","import type { WalletClient } from \"viem\";\n\nimport { MissingAccountError, UnsupportedChainError } from \"./errors\";\n\nexport type ChainRegistry<T> = Readonly<Record<number, T>>;\n\n/** Resolves a chain-scoped configuration value or throws a stable unsupported-chain error. */\nexport function resolveChainValue<T>(registry: ChainRegistry<T>, chainId: number): T {\n const value = registry[chainId];\n if (value === undefined) {\n throw new UnsupportedChainError(chainId);\n }\n return value;\n}\n\n/** Requires a Wallet Client with an attached account before a signing or write operation. */\nexport function requireWalletClient(walletClient: WalletClient | undefined): WalletClient {\n if (!walletClient?.account) {\n throw new MissingAccountError();\n }\n return walletClient;\n}\n","import type { Account, WalletClient } from \"viem\";\nimport { isAddressEqual } from \"viem\";\nimport { parseAccount } from \"viem/accounts\";\nimport { requireWalletClient } from \"./chain\";\nimport { MissingAccountError } from \"./errors\";\n\n/** Public inspection shape shared by product-specific prepared transaction types. */\nexport interface PreparedTransactionSnapshot<Request extends object, Preview, Context> {\n readonly request: Readonly<Request>;\n readonly preview: Preview;\n readonly context: Context;\n}\n\n/** A module-local provenance store. Its canonical requests are never exposed to consumers. */\nexport interface PreparedTransactionStore {\n create<Request extends object, Preview, Context>(\n request: Request,\n preview: Preview,\n context: Context,\n ): PreparedTransactionSnapshot<Request, Preview, Context>;\n has(value: object): boolean;\n getCanonical<Request extends object>(value: object): Request | undefined;\n}\n\n/**\n * Copies and freezes plain Viem request data, retaining cycles, symbols, prototypes and functions.\n * Accessor descriptors are preserved without invoking them.\n */\nexport function immutableClone<Value>(value: Value, seen = new WeakMap<object, unknown>()): Value {\n if (value === null || typeof value !== \"object\") return value;\n\n const source = value as object;\n const existing = seen.get(source);\n if (existing !== undefined) return existing as Value;\n\n const clone: object = Array.isArray(value)\n ? []\n : Object.create(Object.getPrototypeOf(source) as object | null);\n seen.set(source, clone);\n\n for (const key of Reflect.ownKeys(source)) {\n const descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (!descriptor) continue;\n if (\"value\" in descriptor) {\n descriptor.value = immutableClone(descriptor.value, seen);\n descriptor.writable = false;\n }\n descriptor.configurable = false;\n Object.defineProperty(clone, key, descriptor);\n }\n\n return Object.freeze(clone) as Value;\n}\n\n/**\n * Creates an isolated prepared-request registry for one product module.\n *\n * Sharing the factory removes duplicated security logic without sharing registry state: a value\n * prepared by one SDK can never become valid in another SDK's store.\n */\nexport function createPreparedTransactionStore(): PreparedTransactionStore {\n const canonicalRequests = new WeakMap<object, object>();\n\n return Object.freeze({\n create<Request extends object, Preview, Context>(\n request: Request,\n preview: Preview,\n context: Context,\n ): PreparedTransactionSnapshot<Request, Preview, Context> {\n const canonicalRequest = immutableClone(request);\n const prepared = Object.freeze({\n request: immutableClone(request),\n preview,\n context,\n });\n canonicalRequests.set(prepared, canonicalRequest);\n return prepared;\n },\n has: (value: object) => canonicalRequests.has(value),\n getCanonical: <Request extends object>(value: object) =>\n canonicalRequests.get(value) as Request | undefined,\n });\n}\n\n/**\n * Resolves the wallet's live account after proving its current chain.\n *\n * Product SDKs provide their own chain-mismatch error factory so this shared state-transition\n * check does not erase protocol-specific error contracts.\n */\nexport async function resolveLiveWalletAccount(\n walletClient: WalletClient | undefined,\n expectedChainId: number,\n chainMismatch: (expectedChainId: number, actualChainId: number) => Error,\n): Promise<Account> {\n const client = requireWalletClient(walletClient);\n const actualChainId = await client.getChainId();\n if (actualChainId !== expectedChainId) {\n throw chainMismatch(expectedChainId, actualChainId);\n }\n\n const [liveAddress] = await client.getAddresses();\n if (!liveAddress) throw new MissingAccountError();\n\n const configuredAccount = client.account;\n if (!configuredAccount) throw new MissingAccountError();\n return isAddressEqual(configuredAccount.address, liveAddress)\n ? configuredAccount\n : parseAccount(liveAddress);\n}\n","import type { Hash, TransactionReceipt } from \"viem\";\n\nexport type SdkTransactionStatus = \"pending\" | \"confirmed\" | \"reverted\";\n\n/** Framework-neutral transaction result shared by product SDK packages. */\nexport interface SdkTransactionResult {\n readonly hash: Hash;\n readonly status: SdkTransactionStatus;\n readonly receipt?: TransactionReceipt;\n}\n\n/** Converts a Viem receipt into the stable shared transaction result shape. */\nexport function transactionResultFromReceipt(receipt: TransactionReceipt): SdkTransactionResult {\n return {\n hash: receipt.transactionHash,\n status: receipt.status === \"success\" ? \"confirmed\" : \"reverted\",\n receipt,\n };\n}\n","import type { MarketClaimableFees, MarketFeeLedger, MarketTokenEarnings } from \"../earnings-types\";\nimport { InvalidMarketConfigError } from \"../errors\";\nimport { assertMarketUint } from \"./identifiers\";\n\nconst Q128 = 1n << 128n;\n\n/** Only v4 gross growth wraps. Ramp net accumulators and debts use checked arithmetic. */\nexport function calculateMarketClaimableFees(ledger: MarketFeeLedger): MarketClaimableFees {\n const { position } = ledger;\n const { state, effectiveClaimFeeBps } = position.range;\n assertMarketUint(state.totalShares, \"totalShares\", 128);\n assertMarketUint(position.shares, \"shares\", 128);\n assertMarketUint(ledger.managerLiquidity, \"managerLiquidity\", 128);\n if (position.shares > state.totalShares || state.totalShares !== ledger.managerLiquidity)\n throw new InvalidMarketConfigError(\n \"liquidity\",\n \"Hook shares and manager liquidity are inconsistent.\",\n );\n if (\n !Number.isInteger(effectiveClaimFeeBps) ||\n effectiveClaimFeeBps < 0 ||\n effectiveClaimFeeBps > 2000\n )\n throw new InvalidMarketConfigError(\"effectiveClaimFeeBps\", \"Invalid effective fee rate.\");\n function token(\n owed: bigint,\n acc: bigint,\n checkpoint: bigint,\n remainder: bigint,\n live: bigint,\n last: bigint,\n ): MarketTokenEarnings {\n for (const [name, value] of [\n [\"acc\", acc],\n [\"checkpoint\", checkpoint],\n [\"live\", live],\n [\"last\", last],\n ] as const)\n assertMarketUint(value, name);\n assertMarketUint(owed, \"owed\", 128);\n assertMarketUint(remainder, \"remainder\", 128);\n if (checkpoint > acc)\n throw new InvalidMarketConfigError(\n \"checkpoint\",\n \"Net checkpoint exceeds the checked Hook accumulator.\",\n );\n const gross =\n state.totalShares === 0n ? 0n : (BigInt.asUintN(256, live - last) * state.totalShares) / Q128;\n // PoolManager converts accrued fees to int128 before Ramp receives them.\n assertMarketUint(gross, \"pendingRangeGross\", 127);\n const cut = (gross * BigInt(effectiveClaimFeeBps)) / 10000n;\n const nextAcc =\n acc + (state.totalShares === 0n ? 0n : ((gross - cut) * Q128) / state.totalShares);\n assertMarketUint(nextAcc, \"nextAccumulator\");\n const syncedNumerator = position.shares * (acc - checkpoint) + remainder;\n const numerator = position.shares * (nextAcc - checkpoint) + remainder;\n const synchronized = syncedNumerator / Q128;\n const earned = numerator / Q128;\n assertMarketUint(earned, \"earned\", 128);\n assertMarketUint(owed + earned, \"claimable\", 128);\n return {\n settled: owed,\n synchronized,\n pending: earned - synchronized,\n claimable: owed + earned,\n remainderX128: numerator % Q128,\n pendingRangeGross: gross,\n pendingRangeProtocolFee: cut,\n };\n }\n const token0 = token(\n position.settledOwed0,\n state.accFee0X128,\n position.checkpoint0X128,\n position.remainder0X128,\n ledger.growth0X128,\n ledger.lastGrowth0X128,\n );\n const token1 = token(\n position.settledOwed1,\n state.accFee1X128,\n position.checkpoint1X128,\n position.remainder1X128,\n ledger.growth1X128,\n ledger.lastGrowth1X128,\n );\n return {\n ledger,\n token0,\n token1,\n paused: position.range.globalPaused || position.range.poolPaused,\n hasClaimableAmount: token0.claimable > 0n || token1.claimable > 0n,\n };\n}\n","import { encodeAbiParameters, type Hex, keccak256, toHex } from \"viem\";\nimport { InvalidMarketConfigError } from \"../errors\";\nimport { assertMarketPoolId } from \"./identifiers\";\n\n// StateLibrary (v4-core 46c6834698c48bc4a463a86d8420f4eb1d7f3b75): pools slot 6, liquidity offset 3.\nexport function marketPoolStorageSlots(poolId: Hex): readonly [Hex, Hex] {\n assertMarketPoolId(poolId);\n const slot = keccak256(\n encodeAbiParameters([{ type: \"bytes32\" }, { type: \"uint256\" }], [poolId, 6n]),\n );\n return [slot, toHex((BigInt(slot) + 3n) % (1n << 256n), { size: 32 })];\n}\n\nexport function decodeMarketPoolStateWords(words: readonly Hex[]) {\n const [slot0, liquidity] = words;\n if (\n words.length !== 2 ||\n slot0 === undefined ||\n liquidity === undefined ||\n !/^0x[0-9a-fA-F]{64}$/.test(slot0) ||\n !/^0x[0-9a-fA-F]{64}$/.test(liquidity)\n ) {\n throw new InvalidMarketConfigError(\"extsload\", \"Expected exactly two 32-byte storage words.\");\n }\n const raw = BigInt(slot0);\n return {\n sqrtPriceX96: raw & ((1n << 160n) - 1n),\n tick: Number(BigInt.asIntN(24, raw >> 160n)),\n protocolFeePacked: Number((raw >> 184n) & 0xffffffn),\n storedLpFeePips: Number((raw >> 208n) & 0xffffffn),\n activeLiquidity: BigInt(liquidity) & ((1n << 128n) - 1n),\n };\n}\n","import { getAddress, isAddressEqual } from \"viem\";\nimport { marketRampAbi } from \"../abi\";\nimport { MarketDeploymentVerificationError, MarketSettlingError } from \"../errors\";\nimport {\n assertMarketAddress,\n assertMarketUint,\n defineMarketPoolKey,\n getMarketPoolId,\n getMarketRangeId,\n} from \"../math/identifiers\";\nimport type {\n MarketPosition,\n MarketPositionParams,\n MarketRange,\n MarketRangeParams,\n MarketReadContext,\n MarketSnapshot,\n} from \"../read-types\";\nimport { type MarketReadScope, readMarketSnapshot, requireMarketHook } from \"./snapshot\";\n\nasync function readRange(\n scope: MarketReadScope,\n params: Pick<MarketRangeParams, \"hook\" | \"rangeId\">,\n): Promise<MarketRange> {\n const hook = requireMarketHook(scope, params.hook);\n const target = {\n address: hook.address,\n abi: marketRampAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n if (await scope.publicClient.readContract({ ...target, functionName: \"isSettling\" }))\n throw new MarketSettlingError(hook.address);\n const [rawKey, tickLower, tickUpper, set] = await scope.publicClient.readContract({\n ...target,\n functionName: \"rangeKey\",\n args: [params.rangeId],\n });\n if (!set) return { status: \"unset\", hook: hook.address, rangeId: params.rangeId };\n const key = defineMarketPoolKey(rawKey);\n if (!isAddressEqual(key.hooks, hook.address))\n throw new MarketDeploymentVerificationError(\"rangeKey.hooks\", hook.address, key.hooks);\n const poolId = getMarketPoolId(key);\n const expectedId = getMarketRangeId(poolId, tickLower, tickUpper, key.tickSpacing);\n if (expectedId !== params.rangeId)\n throw new MarketDeploymentVerificationError(\"rangeId\", params.rangeId, expectedId);\n const [state, globalPaused, poolPaused, effectiveClaimFeeBps] = await Promise.all([\n scope.publicClient.readContract({\n ...target,\n functionName: \"rangeState\",\n args: [params.rangeId],\n }),\n scope.publicClient.readContract({ ...target, functionName: \"paused\" }),\n scope.publicClient.readContract({ ...target, functionName: \"pausedFor\", args: [poolId] }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"effectiveClaimFee\",\n args: [params.rangeId],\n }),\n ]);\n return {\n status: \"set\",\n hook: hook.address,\n rangeId: params.rangeId,\n key,\n poolId,\n tickLower,\n tickUpper,\n state,\n globalPaused,\n poolPaused,\n effectiveClaimFeeBps,\n };\n}\n\nexport function getMarketRange(\n context: MarketReadContext,\n params: MarketRangeParams,\n): Promise<MarketSnapshot<MarketRange>> {\n const { hook, rangeId } = params;\n assertMarketAddress(hook, \"hook\");\n assertMarketUint(rangeId, \"rangeId\");\n return readMarketSnapshot(context, params, (scope) => readRange(scope, { hook, rangeId }));\n}\n\nexport function getMarketPosition(\n context: MarketReadContext,\n params: MarketPositionParams,\n): Promise<MarketSnapshot<MarketPosition>> {\n const { hook, rangeId } = params;\n assertMarketAddress(hook, \"hook\");\n assertMarketUint(rangeId, \"rangeId\");\n assertMarketAddress(params.owner, \"owner\");\n const owner = getAddress(params.owner);\n return readMarketSnapshot(context, params, async (scope) => {\n const range = await readRange(scope, { hook, rangeId });\n const target = {\n address: range.hook,\n abi: marketRampAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const [shares, position, remainder] = await Promise.all([\n scope.publicClient.readContract({\n ...target,\n functionName: \"balanceOf\",\n args: [owner, rangeId],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"userPosition\",\n args: [rangeId, owner],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"userFeeRemainder\",\n args: [rangeId, owner],\n }),\n ]);\n return {\n range,\n owner,\n shares,\n settledOwed0: position.owed0,\n settledOwed1: position.owed1,\n checkpoint0X128: position.checkpoint0X128,\n checkpoint1X128: position.checkpoint1X128,\n remainder0X128: remainder[0],\n remainder1X128: remainder[1],\n };\n });\n}\n","import { type Hex, isAddressEqual, zeroAddress } from \"viem\";\nimport { marketPoolRegistryAbi } from \"../abi\";\nimport { InvalidMarketConfigError, MarketDeploymentVerificationError } from \"../errors\";\nimport {\n assertMarketPoolId,\n assertMarketUint,\n defineMarketPoolKey,\n getMarketPoolId,\n} from \"../math/identifiers\";\nimport type {\n MarketListPoolsParams,\n MarketPool,\n MarketPoolPage,\n MarketReadContext,\n MarketReadOptions,\n MarketSnapshot,\n} from \"../read-types\";\nimport type { MarketPoolKey } from \"../types\";\nimport { type MarketReadScope, readMarketSnapshot, requireMarketHook } from \"./snapshot\";\n\nfunction normalizePool(\n scope: MarketReadScope,\n raw: { key: MarketPoolKey; id: Hex; active: boolean },\n): MarketPool {\n const key = defineMarketPoolKey(raw.key);\n const expected = getMarketPoolId(key);\n if (expected.toLowerCase() !== raw.id.toLowerCase())\n throw new MarketDeploymentVerificationError(\"poolId\", expected, raw.id);\n const hookKind =\n scope.deployment.hooks.find((entry) => isAddressEqual(entry.address, key.hooks))?.kind ?? null;\n return { key, poolId: raw.id, active: raw.active, hookKind };\n}\n\nexport async function readMarketPoolAt(scope: MarketReadScope, poolId: Hex): Promise<MarketPool> {\n const raw = await scope.publicClient.readContract({\n address: scope.deployment.registry.address,\n abi: marketPoolRegistryAbi,\n functionName: \"poolById\",\n args: [poolId],\n blockNumber: scope.block.blockNumber,\n });\n const pool = normalizePool(scope, raw);\n if (pool.poolId.toLowerCase() !== poolId.toLowerCase())\n throw new MarketDeploymentVerificationError(\"registry.poolId\", poolId, pool.poolId);\n return pool;\n}\n\nexport function requireMarketPoolHook(scope: MarketReadScope, pool: MarketPool) {\n const hook = requireMarketHook(scope, pool.key.hooks);\n if (isAddressEqual(pool.key.currency0, zeroAddress) && hook.kind !== \"ramp-eth\") {\n throw new InvalidMarketConfigError(\"currency0\", \"Native currency requires RampETH.\");\n }\n return hook;\n}\n\nexport function getMarketPool(\n context: MarketReadContext,\n poolId: Hex,\n options: MarketReadOptions = {},\n): Promise<MarketSnapshot<MarketPool>> {\n assertMarketPoolId(poolId);\n return readMarketSnapshot(context, options, (scope) => readMarketPoolAt(scope, poolId));\n}\n\nexport function listMarketPools(\n context: MarketReadContext,\n params: MarketListPoolsParams = {},\n): Promise<MarketSnapshot<MarketPoolPage>> {\n const { offset = 0n, limit = 20, activeOnly = false } = params;\n assertMarketUint(offset, \"offset\");\n if (!Number.isInteger(limit) || limit < 1 || limit > 100)\n throw new InvalidMarketConfigError(\"limit\", \"Page size must be in [1, 100].\");\n return readMarketSnapshot(context, params, async (scope) => {\n const target = {\n address: scope.deployment.registry.address,\n abi: marketPoolRegistryAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const totalCount = await scope.publicClient.readContract({\n ...target,\n functionName: \"poolCount\",\n });\n const end = offset + BigInt(limit) < totalCount ? offset + BigInt(limit) : totalCount;\n const pools: MarketPool[] = [];\n // At most eight concurrent reads; no dependency on a chain's Multicall3 deployment.\n for (let start = offset; start < end; start += 8n) {\n const count = Number(end - start < 8n ? end - start : 8n);\n const batch = await Promise.all(\n Array.from({ length: count }, (_, index) =>\n scope.publicClient.readContract({\n ...target,\n functionName: \"poolAt\",\n args: [start + BigInt(index)],\n }),\n ),\n );\n for (const entry of batch) {\n const pool = normalizePool(scope, entry);\n if (!activeOnly || pool.active) pools.push(pool);\n }\n }\n return { pools, totalCount, nextOffset: end < totalCount ? end : null };\n });\n}\n","import type { Hex } from \"viem\";\nimport { marketRampAbi, marketRampReaderAbi, marketRwaRampAbi } from \"../abi\";\nimport {\n InvalidMarketConfigError,\n MarketDeploymentVerificationError,\n MarketFeatureUnavailableError,\n} from \"../errors\";\nimport { assertMarketPoolId, assertMarketUint } from \"../math/identifiers\";\nimport type {\n MarketCurrentFees,\n MarketFeeBreakdown,\n MarketReadContext,\n MarketReadOptions,\n MarketSession,\n MarketSessionState,\n MarketSnapshot,\n} from \"../read-types\";\nimport { readMarketPoolAt, requireMarketPoolHook } from \"./pools\";\nimport { type MarketReadScope, readMarketSnapshot } from \"./snapshot\";\n\nfunction sessionName(value: number): MarketSession {\n if (value === 0) return \"open\";\n if (value === 1) return \"overnight\";\n if (value === 2) return \"closed\";\n throw new MarketDeploymentVerificationError(\"session\", \"0, 1 or 2\", value);\n}\n\nexport function getMarketCurrentFees(\n context: MarketReadContext,\n poolId: Hex,\n options: MarketReadOptions = {},\n): Promise<MarketSnapshot<MarketCurrentFees>> {\n assertMarketPoolId(poolId);\n return readMarketSnapshot(context, options, async (scope) => {\n const pool = await readMarketPoolAt(scope, poolId);\n const hook = requireMarketPoolHook(scope, pool);\n const target = {\n address: hook.address,\n abi: marketRampAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const [fee0For1Pips, fee1For0Pips, globalPaused, poolPaused] = await Promise.all([\n scope.publicClient.readContract({\n ...target,\n functionName: \"currentFee\",\n args: [poolId, true],\n }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"currentFee\",\n args: [poolId, false],\n }),\n scope.publicClient.readContract({ ...target, functionName: \"paused\" }),\n scope.publicClient.readContract({ ...target, functionName: \"pausedFor\", args: [poolId] }),\n ]);\n return { pool, fee0For1Pips, fee1For0Pips, globalPaused, poolPaused };\n });\n}\n\nasync function readFeeBreakdown(\n scope: MarketReadScope,\n poolId: Hex,\n zeroForOne: boolean,\n timestamp: bigint,\n mode: \"current\" | \"preview\",\n): Promise<MarketFeeBreakdown> {\n const reader = scope.deployment.reader;\n if (!reader) throw new MarketFeatureUnavailableError(\"feeBreakdown requires a Reader\");\n const pool = await readMarketPoolAt(scope, poolId);\n const hook = requireMarketPoolHook(scope, pool);\n const result = await scope.publicClient.readContract({\n address: reader.address,\n abi: marketRampReaderAbi,\n functionName: \"feeBreakdown\",\n args: [poolId, zeroForOne, timestamp],\n blockNumber: scope.block.blockNumber,\n });\n if (result.hasSession !== (hook.kind === \"rwa-ramp\"))\n throw new MarketDeploymentVerificationError(\n \"reader.hasSession\",\n hook.kind === \"rwa-ramp\",\n result.hasSession,\n );\n return {\n pool,\n zeroForOne,\n timestamp,\n mode,\n session: result.hasSession ? sessionName(result.session) : null,\n baseFeePips: result.baseFee,\n directionalPremiumPips: result.directionalPremium,\n cappedAutonomousFeePips: result.cappedAutonomousFee,\n overrideActive: result.overrideActive,\n overrideFeePips: result.overrideFee,\n overrideExpiry: BigInt(result.overrideExpiry),\n overrideMinFeePips: result.overrideMinFee,\n maxFeePips: result.maxFee,\n finalFeePips: result.finalFee,\n };\n}\n\nfunction assertDirection(value: boolean): void {\n if (typeof value !== \"boolean\")\n throw new InvalidMarketConfigError(\"zeroForOne\", \"Expected an explicit direction boolean.\");\n}\n\nexport function getMarketFeeBreakdown(\n context: MarketReadContext,\n poolId: Hex,\n zeroForOne: boolean,\n options: MarketReadOptions = {},\n): Promise<MarketSnapshot<MarketFeeBreakdown>> {\n assertMarketPoolId(poolId);\n assertDirection(zeroForOne);\n return readMarketSnapshot(context, options, (scope) =>\n readFeeBreakdown(scope, poolId, zeroForOne, scope.block.timestamp, \"current\"),\n );\n}\n\n/** Uses the selected block's configuration, not historical configuration at the requested timestamp. */\nexport function previewMarketFeeAt(\n context: MarketReadContext,\n poolId: Hex,\n zeroForOne: boolean,\n timestamp: bigint,\n options: MarketReadOptions = {},\n): Promise<MarketSnapshot<MarketFeeBreakdown>> {\n assertMarketPoolId(poolId);\n assertDirection(zeroForOne);\n assertMarketUint(timestamp, \"timestamp\");\n return readMarketSnapshot(context, options, (scope) =>\n readFeeBreakdown(scope, poolId, zeroForOne, timestamp, \"preview\"),\n );\n}\n\nexport function getMarketSession(\n context: MarketReadContext,\n poolId: Hex,\n options: MarketReadOptions & { readonly timestamp?: bigint } = {},\n): Promise<MarketSnapshot<MarketSessionState>> {\n assertMarketPoolId(poolId);\n const timestamp = options.timestamp;\n if (timestamp !== undefined) assertMarketUint(timestamp, \"timestamp\");\n return readMarketSnapshot(context, options, async (scope) => {\n const pool = await readMarketPoolAt(scope, poolId);\n const hook = requireMarketPoolHook(scope, pool);\n const at = timestamp ?? scope.block.timestamp;\n const session =\n hook.kind === \"rwa-ramp\"\n ? sessionName(\n await scope.publicClient.readContract({\n address: hook.address,\n abi: marketRwaRampAbi,\n functionName: \"sessionAt\",\n args: [poolId, at],\n blockNumber: scope.block.blockNumber,\n }),\n )\n : null;\n return { pool, session, timestamp: at, mode: timestamp === undefined ? \"current\" : \"preview\" };\n });\n}\n","import { type Hex, isAddressEqual } from \"viem\";\nimport { marketExtsloadAbi, marketStateViewAbi } from \"../abi/v4\";\nimport { MarketDeploymentVerificationError, MarketFeatureUnavailableError } from \"../errors\";\nimport { assertMarketPoolId } from \"../math/identifiers\";\nimport { decodeMarketPoolStateWords, marketPoolStorageSlots } from \"../math/pool-state\";\nimport type {\n MarketPoolState,\n MarketReadContext,\n MarketReadOptions,\n MarketSnapshot,\n} from \"../read-types\";\nimport { readMarketPoolAt, requireMarketPoolHook } from \"./pools\";\nimport { assertMarketCode, type MarketReadScope, readMarketSnapshot } from \"./snapshot\";\n\nexport function getMarketPoolState(\n context: MarketReadContext,\n poolId: Hex,\n options: MarketReadOptions = {},\n): Promise<MarketSnapshot<MarketPoolState>> {\n assertMarketPoolId(poolId);\n return readMarketSnapshot(context, options, async (scope) => {\n const pool = await readMarketPoolAt(scope, poolId);\n requireMarketPoolHook(scope, pool);\n return { pool, ...(await readMarketPoolStateAt(scope, poolId)) };\n });\n}\n\n/** Direct manager read also supports exits for pools no longer listed by the registry. */\nexport async function readMarketPoolStateAt(scope: MarketReadScope, poolId: Hex) {\n const reader = scope.deployment.poolStateReader;\n if (!reader) throw new MarketFeatureUnavailableError(\"poolStateReader\");\n await assertMarketCode(scope, scope.deployment.poolManager);\n const blockNumber = scope.block.blockNumber;\n let state: ReturnType<typeof decodeMarketPoolStateWords>;\n if (reader.kind === \"state-view\") {\n await assertMarketCode(scope, reader.contract);\n const target = {\n address: reader.contract.address,\n abi: marketStateViewAbi,\n blockNumber,\n } as const;\n const manager = await scope.publicClient.readContract({\n ...target,\n functionName: \"poolManager\",\n });\n if (!isAddressEqual(manager, scope.deployment.poolManager.address))\n throw new MarketDeploymentVerificationError(\n \"stateView.poolManager\",\n scope.deployment.poolManager.address,\n manager,\n );\n const [slot0, activeLiquidity] = await Promise.all([\n scope.publicClient.readContract({ ...target, functionName: \"getSlot0\", args: [poolId] }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"getLiquidity\",\n args: [poolId],\n }),\n ]);\n state = {\n sqrtPriceX96: slot0[0],\n tick: slot0[1],\n protocolFeePacked: slot0[2],\n storedLpFeePips: slot0[3],\n activeLiquidity,\n };\n } else {\n const words = await scope.publicClient.readContract({\n address: scope.deployment.poolManager.address,\n abi: marketExtsloadAbi,\n functionName: \"extsload\",\n args: [marketPoolStorageSlots(poolId)],\n blockNumber,\n });\n state = decodeMarketPoolStateWords(words);\n }\n if (state.tick < -887272 || state.tick > 887272)\n throw new MarketDeploymentVerificationError(\"pool.tick\", \"v4 tick bounds\", state.tick);\n return { source: reader.kind, initialized: state.sqrtPriceX96 !== 0n, ...state };\n}\n","import { type Address, erc20Abi, isAddressEqual, zeroAddress } from \"viem\";\nimport { immutableClone } from \"../../core\";\nimport { InvalidMarketConfigError } from \"../../errors\";\nimport {\n assertMarketAddress,\n assertMarketUint,\n getMarketPoolId,\n getMarketRangeId,\n} from \"../../math/identifiers\";\nimport { getMarketAmountsForLiquidity } from \"../../math/liquidity\";\nimport type { MarketReadContext, MarketReadOptions, MarketSnapshot } from \"../../read-types\";\nimport type {\n MarketLiquidityParams,\n MarketLiquidityPreview,\n MarketSpendStatus,\n} from \"../../write-types\";\nimport { readMarketPoolStateAt } from \"../pool-state\";\nimport { readMarketSnapshot } from \"../snapshot\";\nimport { expiry, liquidityKey } from \"./guards\";\n\nexport async function previewMarketLiquidity(\n context: MarketReadContext,\n action: \"deposit\" | \"withdraw\",\n input: MarketLiquidityParams,\n): Promise<MarketLiquidityPreview> {\n const params = immutableClone(input);\n const key = liquidityKey(context, params.key);\n const poolId = getMarketPoolId(key);\n const rangeId = getMarketRangeId(poolId, params.tickLower, params.tickUpper, key.tickSpacing);\n assertMarketUint(params.liquidity, \"liquidity\", 128);\n assertMarketUint(params.deadline, \"deadline\");\n if (params.liquidity === 0n)\n throw new InvalidMarketConfigError(\"liquidity\", \"Liquidity must be positive.\");\n if (\n !Number.isInteger(params.slippageBps) ||\n params.slippageBps < 0 ||\n params.slippageBps >= 10000\n )\n throw new InvalidMarketConfigError(\n \"slippageBps\",\n \"Slippage must be an integer from 0 to 9999 bps.\",\n );\n return immutableClone(\n await readMarketSnapshot(context, {}, async (scope) => {\n const lifetime = expiry(scope.block.timestamp, params.validForSeconds);\n if (params.deadline < scope.block.timestamp)\n throw new InvalidMarketConfigError(\"deadline\", \"Deadline has expired.\");\n const state = await readMarketPoolStateAt(scope, poolId);\n const amounts = getMarketAmountsForLiquidity({\n ...params,\n sqrtPriceX96: state.sqrtPriceX96,\n rounding: action === \"deposit\" ? \"up\" : \"down\",\n });\n const limit = (amount: bigint) =>\n action === \"deposit\"\n ? (amount * BigInt(10000 + params.slippageBps) + 9999n) / 10000n\n : (amount * BigInt(10000 - params.slippageBps)) / 10000n;\n const limit0 = limit(amounts.amount0);\n const limit1 = limit(amounts.amount1);\n assertMarketUint(limit0, \"limit0\", 128);\n assertMarketUint(limit1, \"limit1\", 128);\n return {\n ...params,\n key,\n action,\n rangeId,\n sqrtPriceX96: state.sqrtPriceX96,\n ...amounts,\n limit0,\n limit1,\n nativeValue:\n action === \"deposit\" && isAddressEqual(key.currency0, zeroAddress) ? limit0 : 0n,\n estimatedNativeRefund:\n action === \"deposit\" && isAddressEqual(key.currency0, zeroAddress)\n ? limit0 - amounts.amount0\n : 0n,\n expiresAt: params.deadline < lifetime ? params.deadline : lifetime,\n };\n }),\n );\n}\n\nexport function getMarketSpendStatus(\n context: MarketReadContext,\n params: {\n readonly key: MarketLiquidityParams[\"key\"];\n readonly owner: Address;\n readonly amount0: bigint;\n readonly amount1: bigint;\n } & MarketReadOptions,\n): Promise<MarketSnapshot<MarketSpendStatus>> {\n const key = liquidityKey(context, params.key);\n const { owner, amount0, amount1 } = params;\n assertMarketAddress(owner, \"owner\");\n assertMarketUint(amount0, \"amount0\", 128);\n assertMarketUint(amount1, \"amount1\", 128);\n return readMarketSnapshot(context, params, async (scope) => ({\n owner,\n spender: key.hooks,\n tokens: await Promise.all(\n (\n [\n { token: key.currency0, requiredAmount: amount0 },\n { token: key.currency1, requiredAmount: amount1 },\n ] as const\n ).map(async ({ token, requiredAmount }) => {\n if (isAddressEqual(token, zeroAddress)) {\n const balance = await scope.publicClient.getBalance({\n address: owner,\n blockNumber: scope.block.blockNumber,\n });\n return {\n token,\n kind: \"native\" as const,\n balance,\n allowance: null,\n requiredAmount,\n needsApproval: false,\n sufficientBalance: balance >= requiredAmount,\n };\n }\n const target = {\n address: token,\n abi: erc20Abi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const [balance, allowance] = await Promise.all([\n scope.publicClient.readContract({ ...target, functionName: \"balanceOf\", args: [owner] }),\n scope.publicClient.readContract({\n ...target,\n functionName: \"allowance\",\n args: [owner, key.hooks],\n }),\n ]);\n return {\n token,\n kind: \"erc20\" as const,\n balance,\n allowance,\n requiredAmount,\n needsApproval: allowance < requiredAmount,\n sufficientBalance: balance >= requiredAmount,\n };\n }),\n ),\n }));\n}\n","// TickMath constants and rounding follow Uniswap v4 (MIT); see docs/liquidity.md.\nimport { InvalidMarketConfigError } from \"../errors\";\nimport { assertMarketUint } from \"./identifiers\";\n\nconst Q96 = 1n << 96n;\nconst MIN_SQRT = 4295128739n;\nconst MAX_SQRT = 1461446703485210103287273052203988822378723970342n;\nconst FACTORS = [\n 0xfffcb933bd6fad37aa2d162d1a594001n,\n 0xfff97272373d413259a46990580e213an,\n 0xfff2e50f5f656932ef12357cf3c7fdccn,\n 0xffe5caca7e10e4e61c3624eaa0941cd0n,\n 0xffcb9843d60f6159c9db58835c926644n,\n 0xff973b41fa98c081472e6896dfb254c0n,\n 0xff2ea16466c96a3843ec78b326b52861n,\n 0xfe5dee046a99a2a811c461f1969c3053n,\n 0xfcbe86c7900a88aedcffc83b479aa3a4n,\n 0xf987a7253ac413176f2b074cf7815e54n,\n 0xf3392b0822b70005940c7a398e4b70f3n,\n 0xe7159475a2c29b7443b29c7fa6e889d9n,\n 0xd097f3bdfd2022b8845ad8f792aa5825n,\n 0xa9f746462d870fdf8a65dc1f90e061e5n,\n 0x70d869a156d2a1b890bb3df62baf32f7n,\n 0x31be135f97d08fd981231505542fcfa6n,\n 0x9aa508b5b7a84e1c677de54f3e99bc9n,\n 0x5d6af8dedb81196699c329225ee604n,\n 0x2216e584f5fa1ea926041bedfe98n,\n 0x48a170391f7dc42444e8fa2n,\n] as const;\n\nexport function getMarketSqrtPriceAtTick(tick: number): bigint {\n if (!Number.isInteger(tick) || Math.abs(tick) > 887272)\n throw new InvalidMarketConfigError(\"tick\", \"Tick must be an integer in v4 bounds.\");\n const absolute = Math.abs(tick);\n let ratio = 1n << 128n;\n for (let i = 0; i < FACTORS.length; i++) {\n const factor = FACTORS[i];\n if (factor !== undefined && (absolute & (1 << i)) !== 0) ratio = (ratio * factor) >> 128n;\n }\n if (tick > 0) ratio = ((1n << 256n) - 1n) / ratio;\n return (ratio + (1n << 32n) - 1n) >> 32n;\n}\n\nfunction assertPrice(price: bigint): void {\n if (typeof price !== \"bigint\" || price < MIN_SQRT || price >= MAX_SQRT)\n throw new InvalidMarketConfigError(\n \"sqrtPriceX96\",\n \"Price must be initialized and inside v4 bounds.\",\n );\n}\n\nexport function getMarketTickAtSqrtPrice(sqrtPriceX96: bigint): number {\n assertPrice(sqrtPriceX96);\n let lower = -887272;\n let upper = 887272;\n while (lower < upper) {\n const middle = Math.ceil((lower + upper) / 2);\n if (getMarketSqrtPriceAtTick(middle) <= sqrtPriceX96) lower = middle;\n else upper = middle - 1;\n }\n return lower;\n}\n\n/** Exact currency1/currency0 human-unit price; no floating point conversion. */\nexport function getMarketPriceRatio(sqrtPriceX96: bigint, decimals0: number, decimals1: number) {\n assertPrice(sqrtPriceX96);\n for (const decimals of [decimals0, decimals1]) {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255)\n throw new InvalidMarketConfigError(\"decimals\", \"Decimals must fit uint8.\");\n }\n return {\n numerator: sqrtPriceX96 ** 2n * 10n ** BigInt(decimals0),\n denominator: (1n << 192n) * 10n ** BigInt(decimals1),\n };\n}\n\nfunction boundaries(sqrtPriceX96: bigint, tickLower: number, tickUpper: number) {\n assertPrice(sqrtPriceX96);\n const lower = getMarketSqrtPriceAtTick(tickLower);\n const upper = getMarketSqrtPriceAtTick(tickUpper);\n if (lower >= upper)\n throw new InvalidMarketConfigError(\"ticks\", \"Lower tick must precede upper tick.\");\n return {\n lower,\n upper,\n current: sqrtPriceX96 < lower ? lower : sqrtPriceX96 > upper ? upper : sqrtPriceX96,\n };\n}\n\n/** Principal only. Round up for deposits, down for withdrawals. */\nexport function getMarketAmountsForLiquidity(params: {\n readonly sqrtPriceX96: bigint;\n readonly tickLower: number;\n readonly tickUpper: number;\n readonly liquidity: bigint;\n readonly rounding: \"up\" | \"down\";\n}) {\n assertMarketUint(params.liquidity, \"liquidity\", 128);\n if (params.rounding !== \"up\" && params.rounding !== \"down\")\n throw new InvalidMarketConfigError(\"rounding\", \"Expected up or down.\");\n const { lower, upper, current } = boundaries(\n params.sqrtPriceX96,\n params.tickLower,\n params.tickUpper,\n );\n const divide = (n: bigint, d: bigint) => (params.rounding === \"up\" ? (n + d - 1n) / d : n / d);\n return {\n amount0: divide(params.liquidity * Q96 * (upper - current), current * upper),\n amount1: divide(params.liquidity * (current - lower), Q96),\n };\n}\n\n/** Same intermediate floor and uint128 casts as v4 LiquidityAmounts. */\nexport function getMarketLiquidityForAmounts(params: {\n readonly sqrtPriceX96: bigint;\n readonly tickLower: number;\n readonly tickUpper: number;\n readonly amount0: bigint;\n readonly amount1: bigint;\n}): bigint {\n assertMarketUint(params.amount0, \"amount0\");\n assertMarketUint(params.amount1, \"amount1\");\n const { lower, upper, current } = boundaries(\n params.sqrtPriceX96,\n params.tickLower,\n params.tickUpper,\n );\n const l0 =\n current === upper\n ? undefined\n : (params.amount0 * ((current * upper) / Q96)) / (upper - current);\n const l1 = current === lower ? undefined : (params.amount1 * Q96) / (current - lower);\n if (l0 !== undefined) assertMarketUint(l0, \"liquidity0\", 128);\n if (l1 !== undefined) assertMarketUint(l1, \"liquidity1\", 128);\n return l0 === undefined ? (l1 ?? 0n) : l1 === undefined || l0 < l1 ? l0 : l1;\n}\n","import { type Address, isAddressEqual, zeroAddress } from \"viem\";\nimport {\n marketClaimFeePolicyAbi,\n marketMarketCalendarAbi,\n marketRampAbi,\n marketRwaRampAbi,\n} from \"../../abi\";\nimport {\n InvalidMarketConfigError,\n MarketDeploymentVerificationError,\n MarketFeatureUnavailableError,\n} from \"../../errors\";\nimport { assertMarketAddress, defineMarketPoolKey } from \"../../math/identifiers\";\nimport type { MarketReadContext } from \"../../read-types\";\nimport type { MarketPoolKey } from \"../../types\";\nimport { assertMarketCode, type MarketReadScope, requireMarketHook } from \"../snapshot\";\n\nexport function liquidityKey(context: MarketReadContext, input: MarketPoolKey): MarketPoolKey {\n const key = defineMarketPoolKey(input);\n const hook = requireMarketHook(context, key.hooks);\n if (isAddressEqual(key.currency0, zeroAddress) && hook.kind !== \"ramp-eth\")\n throw new MarketFeatureUnavailableError(\"This Hook supports ERC-20 only\");\n return key;\n}\n\nexport function expiry(timestamp: bigint, seconds = 60): bigint {\n if (!Number.isInteger(seconds) || seconds < 1 || seconds > 300)\n throw new InvalidMarketConfigError(\"validForSeconds\", \"Lifetime must be 1..300 seconds.\");\n return timestamp + BigInt(seconds);\n}\n\nexport function recipient(context: MarketReadContext, key: MarketPoolKey, to: Address): Address {\n assertMarketAddress(to, \"to\");\n if (\n [key.hooks, context.deployment.poolManager.address, zeroAddress].some((value) =>\n isAddressEqual(value, to),\n )\n )\n throw new InvalidMarketConfigError(\"to\", \"Recipient cannot be zero, the Hook or PoolManager.\");\n return to;\n}\n\nexport function claimFee(value: number): void {\n if (!Number.isInteger(value) || value < 0 || value > 2000)\n throw new InvalidMarketConfigError(\"maxFeeBps\", \"Claim fee tolerance must be 0..2000 bps.\");\n}\n\n/** Verify the selected funds path without requiring optional readers or Registry availability. */\nexport async function assertWriteDeployment(\n scope: MarketReadScope,\n key: MarketPoolKey,\n claimOperator = false,\n management = false,\n): Promise<void> {\n const hook = requireMarketHook(scope, key.hooks);\n if (management && hook.capabilities.management !== \"verified\")\n throw new MarketFeatureUnavailableError(\"verified management capability\");\n if (!management && hook.capabilities.liquidity !== \"verified\")\n throw new MarketFeatureUnavailableError(\"verified liquidity capability\");\n if (\n !management &&\n isAddressEqual(key.currency0, zeroAddress) &&\n hook.capabilities.nativeLiquidity !== \"verified\"\n )\n throw new MarketFeatureUnavailableError(\"verified nativeLiquidity capability\");\n if (claimOperator && hook.capabilities.claimOperator !== \"verified\")\n throw new MarketFeatureUnavailableError(\"verified claimOperator capability\");\n for (const contract of [\n hook,\n scope.deployment.poolManager,\n scope.deployment.authority,\n hook.claimFeePolicy,\n ])\n await assertMarketCode(scope, contract);\n if (hook.kind === \"rwa-ramp\") {\n if (!hook.calendar) throw new MarketFeatureUnavailableError(\"RWA calendar\");\n await assertMarketCode(scope, hook.calendar);\n const [calendar, controller] = await Promise.all([\n scope.publicClient.readContract({\n address: hook.address,\n abi: marketRwaRampAbi,\n functionName: \"marketCalendar\",\n blockNumber: scope.block.blockNumber,\n }),\n scope.publicClient.readContract({\n address: hook.calendar.address,\n abi: marketMarketCalendarAbi,\n functionName: \"controller\",\n blockNumber: scope.block.blockNumber,\n }),\n ]);\n if (\n !isAddressEqual(calendar, hook.calendar.address) ||\n !isAddressEqual(controller, hook.address)\n )\n throw new MarketDeploymentVerificationError(\n \"write.calendar\",\n [hook.calendar.address, hook.address],\n [calendar, controller],\n );\n }\n const target = {\n address: hook.address,\n abi: marketRampAbi,\n blockNumber: scope.block.blockNumber,\n } as const;\n const actual = await Promise.all([\n scope.publicClient.readContract({ ...target, functionName: \"poolManager\" }),\n scope.publicClient.readContract({ ...target, functionName: \"authority\" }),\n scope.publicClient.readContract({ ...target, functionName: \"claimFeePolicy\" }),\n scope.publicClient.readContract({\n address: hook.claimFeePolicy.address,\n abi: marketClaimFeePolicyAbi,\n functionName: \"ledger\",\n blockNumber: scope.block.blockNumber,\n }),\n ]);\n const expected = [\n scope.deployment.poolManager.address,\n scope.deployment.authority.address,\n hook.claimFeePolicy.address,\n hook.address,\n ];\n for (let index = 0; index < expected.length; index++) {\n const want = expected[index];\n const got = actual[index];\n if (!want || !got || !isAddressEqual(want, got))\n throw new MarketDeploymentVerificationError(`write.binding.${index}`, want, got);\n }\n}\n","import { defineMarketDeployment } from \"./deployment\";\nimport { InvalidMarketConfigError } from \"./errors\";\nimport type { MarketChainConfig } from \"./types\";\n\nexport function defineMarketChain(input: MarketChainConfig): MarketChainConfig {\n const deployment = defineMarketDeployment(input.deployment);\n if (input.chainId !== deployment.chainId) {\n throw new InvalidMarketConfigError(\"chainId\", \"Chain and deployment chain IDs must match.\");\n }\n if (!Number.isSafeInteger(input.confirmations) || input.confirmations < 1) {\n throw new InvalidMarketConfigError(\"confirmations\", \"Expected at least one confirmation.\");\n }\n return Object.freeze({ chainId: input.chainId, deployment, confirmations: input.confirmations });\n}\n","import {\n type Address,\n decodeEventLog,\n encodeFunctionData,\n erc20Abi,\n type Hex,\n isAddressEqual,\n type PublicClient,\n type WalletClient,\n zeroAddress,\n} from \"viem\";\nimport {\n marketAccessManagerAbi,\n marketPoolRegistryAbi,\n marketRampAbi,\n marketRampReaderAbi,\n marketRwaRampAbi,\n} from \"../../abi\";\nimport {\n createPreparedTransactionStore,\n immutableClone,\n resolveLiveWalletAccount,\n transactionResultFromReceipt,\n} from \"../../core\";\nimport {\n InvalidMarketConfigError,\n MarketDeploymentVerificationError,\n MarketTransactionError,\n MarketTransactionReplacedError,\n} from \"../../errors\";\nimport type {\n MarketManagementAction,\n MarketManagementContext,\n MarketManagementEvent,\n MarketManagementExecution,\n} from \"../../management-types\";\nimport {\n assertMarketAddress,\n assertMarketUint,\n getMarketPoolId,\n getMarketRangeId,\n} from \"../../math/identifiers\";\nimport type { MarketReadContext } from \"../../read-types\";\nimport type { MarketChainConfig, MarketPoolKey } from \"../../types\";\nimport type {\n MarketApprovalParams,\n MarketClaimParams,\n MarketLiquidityEvent,\n MarketLiquidityParams,\n MarketLiquidityPreview,\n MarketPreparedTransaction,\n MarketShareEvent,\n MarketShareRangeParams,\n MarketShareTransferParams,\n MarketTransactionRequest,\n MarketTransactionResult,\n MarketWriteAction,\n} from \"../../write-types\";\nimport { readMarketSnapshot } from \"../snapshot\";\nimport { assertWriteDeployment, claimFee, expiry, liquidityKey, recipient } from \"./guards\";\nimport { encodeMarketManagement, inspectMarketManagementAt, managementRequest } from \"./management\";\nimport { getMarketSpendStatus, previewMarketLiquidity } from \"./preview\";\n\n/** One registry per client: prepared values cannot cross client or deployment boundaries. */\nexport function createMarketWriteActions(\n publicClient: PublicClient,\n walletClient: WalletClient | undefined,\n chain: MarketChainConfig,\n) {\n const context: MarketReadContext = { publicClient, deployment: chain.deployment };\n const store = createPreparedTransactionStore();\n const previews = new WeakSet<MarketLiquidityPreview>();\n const sent = new Map<Hex, MarketPreparedTransaction>();\n const submitting = new WeakSet<MarketPreparedTransaction>();\n const submitted = new WeakSet<MarketPreparedTransaction>();\n const account = () =>\n resolveLiveWalletAccount(\n walletClient,\n chain.chainId,\n (expected, actual) =>\n new MarketDeploymentVerificationError(\"wallet.chainId\", expected, actual),\n );\n\n async function simulate(request: MarketTransactionRequest, blockNumber?: bigint): Promise<void> {\n try {\n // Exact calldata preflight. No state-changing request is sent by preparation.\n const result = await publicClient.call({ ...request, blockNumber, batch: false });\n // ERC-20 approve implementations may return false without reverting.\n if (\n request.data.startsWith(\"0x095ea7b3\") &&\n result.data &&\n result.data !== \"0x\" &&\n BigInt(result.data) !== 1n\n )\n throw new InvalidMarketConfigError(\"approve\", \"Token returned false for approve.\");\n } catch (cause) {\n throw new MarketTransactionError(\"simulate\", cause);\n }\n }\n\n async function checkNativeBudget(request: MarketTransactionRequest): Promise<void> {\n if (request.gas === undefined || request.maxFeePerGas === undefined) return;\n const balance = await publicClient.getBalance({ address: request.account });\n if (balance < request.value + request.gas * request.maxFeePerGas)\n throw new InvalidMarketConfigError(\n \"nativeBalance\",\n \"Insufficient native balance for prepaid value plus gas budget.\",\n );\n }\n\n async function fresh(\n block: MarketPreparedTransaction[\"context\"][\"block\"],\n expiresAt: bigint,\n ): Promise<void> {\n const [latest, original, chainId] = await Promise.all([\n publicClient.getBlock({ blockTag: \"latest\" }),\n publicClient.getBlock({ blockNumber: block.blockNumber }),\n publicClient.getChainId(),\n ]);\n if (chainId !== chain.chainId)\n throw new MarketDeploymentVerificationError(\"publicClient.chainId\", chain.chainId, chainId);\n if (original.hash !== block.blockHash)\n throw new MarketDeploymentVerificationError(\n \"preview.blockHash\",\n block.blockHash,\n original.hash,\n );\n if (latest.timestamp < block.timestamp || latest.timestamp > expiresAt)\n throw new InvalidMarketConfigError(\n \"expiry\",\n \"Preview or prepared transaction has expired; prepare again.\",\n );\n }\n\n async function preview(action: \"deposit\" | \"withdraw\", params: MarketLiquidityParams) {\n const result = await previewMarketLiquidity(context, action, params);\n previews.add(result);\n return result;\n }\n\n async function prepare(input: {\n action: MarketWriteAction;\n owner?: Address;\n key: MarketPoolKey;\n to: Address;\n data: Hex;\n rangeId: bigint | null;\n validForSeconds?: number;\n preview?: MarketLiquidityPreview;\n target?: Address;\n management?: { action: MarketManagementAction; execution: MarketManagementExecution };\n }): Promise<MarketPreparedTransaction> {\n const key = liquidityKey(context, input.key);\n const live = await account();\n if (input.preview) await fresh(input.preview.block, input.preview.data.expiresAt);\n let managementContext: MarketManagementContext | undefined;\n const snapshot = await readMarketSnapshot(context, {}, async (scope) => {\n if (!input.management)\n await assertWriteDeployment(\n scope,\n key,\n input.action === \"setClaimOperator\" || input.action === \"claimFor\",\n );\n let request: MarketTransactionRequest = {\n account: live.address,\n to: input.target ?? key.hooks,\n data: input.data,\n value: input.action === \"deposit\" ? (input.preview?.data.nativeValue ?? 0n) : 0n,\n chainId: chain.chainId,\n };\n if (input.management) {\n const { action, execution } = input.management;\n const auth = await inspectMarketManagementAt(\n scope,\n action,\n live.address,\n execution.mode === \"schedule\" ? execution.when : 0,\n );\n request = { ...request, ...managementRequest(auth, execution, scope.block.timestamp) };\n managementContext = {\n action,\n execution,\n target: auth.direct.to,\n operationId: auth.operationId,\n };\n }\n if (input.action === \"deposit\" && input.preview) {\n const status = await getMarketSpendStatus(context, {\n key,\n owner: live.address,\n amount0: input.preview.data.limit0,\n amount1: input.preview.data.limit1,\n ...scope.block,\n });\n if (status.data.tokens.some((token) => !token.sufficientBalance || token.needsApproval))\n throw new InvalidMarketConfigError(\n \"spend\",\n \"Insufficient token balance or allowance for deposit maxima.\",\n );\n }\n await simulate(request, scope.block.blockNumber);\n if (isAddressEqual(key.currency0, zeroAddress)) {\n const fees = await publicClient.estimateFeesPerGas({ chain: undefined, type: \"eip1559\" });\n const estimatedGas = await publicClient.estimateGas({ ...request, ...fees });\n request = { ...request, ...fees, gas: (estimatedGas * 125n + 99n) / 100n };\n await checkNativeBudget(request);\n }\n return request;\n });\n const after = await account();\n if (!isAddressEqual(live.address, after.address))\n throw new InvalidMarketConfigError(\"account\", \"Wallet account changed during preparation.\");\n const expiresAt =\n input.preview?.data.expiresAt ?? expiry(snapshot.block.timestamp, input.validForSeconds);\n const preparedContext = immutableClone({\n action: input.action,\n ...(managementContext ? { management: managementContext } : {}),\n key,\n rangeId: input.rangeId,\n block: snapshot.block,\n expiresAt,\n owner: input.owner ?? live.address,\n recipient: input.action === \"deposit\" || input.action === \"approve\" ? live.address : input.to,\n });\n return store.create(snapshot.data, input.preview ?? null, preparedContext);\n }\n\n function requirePreview(value: MarketLiquidityPreview, action: \"deposit\" | \"withdraw\") {\n if (!previews.has(value) || value.data.action !== action)\n throw new InvalidMarketConfigError(\n \"preview\",\n \"Use an unchanged preview from this client for the requested action.\",\n );\n return value.data;\n }\n\n async function prepareWithdraw(\n previewValue: MarketLiquidityPreview,\n to: Address,\n maxFeeBps?: number,\n ) {\n const q = requirePreview(previewValue, \"withdraw\");\n recipient(context, q.key, to);\n if (maxFeeBps !== undefined) claimFee(maxFeeBps);\n const args = [\n q.key,\n q.tickLower,\n q.tickUpper,\n q.liquidity,\n to,\n q.limit0,\n q.limit1,\n q.deadline,\n ] as const;\n return prepare({\n action: maxFeeBps === undefined ? \"withdraw\" : \"withdrawAndClaim\",\n key: q.key,\n to,\n rangeId: q.rangeId,\n preview: previewValue,\n data:\n maxFeeBps === undefined\n ? encodeFunctionData({ abi: marketRampAbi, functionName: \"withdraw\", args })\n : encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"withdrawAndClaim\",\n args: [...args, maxFeeBps],\n }),\n });\n }\n\n async function send(prepared: MarketPreparedTransaction): Promise<Hex> {\n if (!prepared || typeof prepared !== \"object\" || !store.has(prepared))\n throw new InvalidMarketConfigError(\n \"prepared\",\n \"Transaction was not prepared by this client.\",\n );\n if (submitting.has(prepared) || submitted.has(prepared))\n throw new InvalidMarketConfigError(\n \"prepared\",\n \"Transaction is submitting or already submitted; prepare again for another action.\",\n );\n const request = store.getCanonical<MarketTransactionRequest>(prepared);\n if (!request || !walletClient)\n throw new InvalidMarketConfigError(\"wallet\", \"A wallet is required.\");\n submitting.add(prepared);\n try {\n const live = await account();\n if (!isAddressEqual(live.address, request.account))\n throw new InvalidMarketConfigError(\"account\", \"Wallet account changed; prepare again.\");\n await fresh(prepared.context.block, prepared.context.expiresAt);\n await readMarketSnapshot(context, {}, async (scope) => {\n const management = prepared.context.management;\n if (management) {\n const execution = management.execution;\n const auth = await inspectMarketManagementAt(\n scope,\n management.action,\n live.address,\n execution.mode === \"schedule\" ? execution.when : 0,\n );\n const canonical = managementRequest(auth, execution, scope.block.timestamp);\n if (\n !isAddressEqual(canonical.to, request.to) ||\n canonical.data !== request.data ||\n auth.operationId !== management.operationId\n )\n throw new InvalidMarketConfigError(\n \"management\",\n \"Management request changed; prepare again.\",\n );\n } else\n await assertWriteDeployment(\n scope,\n prepared.context.key,\n prepared.context.action === \"setClaimOperator\" ||\n prepared.context.action === \"claimFor\",\n );\n });\n await simulate(request);\n const finalAccount = await account();\n if (!isAddressEqual(finalAccount.address, request.account))\n throw new InvalidMarketConfigError(\"account\", \"Wallet account changed before signing.\");\n await fresh(prepared.context.block, prepared.context.expiresAt);\n await checkNativeBudget(request);\n let hash: Hex;\n try {\n hash = await walletClient.sendTransaction({\n ...request,\n account: finalAccount,\n chain: walletClient.chain ?? null,\n });\n } catch (cause) {\n throw new MarketTransactionError(\"send\", cause);\n }\n sent.set(hash, prepared);\n submitted.add(prepared);\n return hash;\n } finally {\n submitting.delete(prepared);\n }\n }\n\n async function waitForTransaction(\n hash: Hex,\n options: { readonly timeout?: number } = {},\n ): Promise<MarketTransactionResult> {\n const prepared = sent.get(hash);\n if (!prepared)\n throw new InvalidMarketConfigError(\n \"hash\",\n \"Only hashes sent by this client can be reconciled with its prepared action.\",\n );\n if ((await publicClient.getChainId()) !== chain.chainId)\n throw new InvalidMarketConfigError(\"chainId\", \"Receipt client is on a different chain.\");\n try {\n let replacement: MarketTransactionReplacedError | undefined;\n const receipt = await publicClient.waitForTransactionReceipt({\n hash,\n confirmations: chain.confirmations,\n timeout: options.timeout,\n onReplaced: ({ reason, transaction }) => {\n if (reason !== \"repriced\")\n replacement = new MarketTransactionReplacedError(hash, transaction.hash, reason);\n },\n });\n if (replacement) throw replacement;\n const result = transactionResultFromReceipt(receipt);\n const managementEvents: MarketManagementEvent[] = [];\n const management = prepared.context.management;\n if (receipt.status === \"success\" && management) {\n const eventAbi = [\n ...marketRampAbi,\n ...marketRwaRampAbi,\n ...marketPoolRegistryAbi,\n ...marketRampReaderAbi,\n ...marketAccessManagerAbi,\n ];\n for (const log of receipt.logs) {\n const isAuthority = isAddressEqual(log.address, chain.deployment.authority.address);\n if (!isAuthority && !isAddressEqual(log.address, management.target)) continue;\n try {\n const decoded = decodeEventLog({\n abi: eventAbi,\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n const args = Object.fromEntries(Object.entries(decoded.args ?? {}));\n if (isAuthority && args.operationId !== management.operationId) continue;\n if (!isAuthority && management.execution.mode === \"schedule\") continue;\n managementEvents.push({ address: log.address, eventName: decoded.eventName, args });\n } catch {\n /* Ignore unrelated logs. The canonical receipt remains available. */\n }\n }\n if (management.execution.mode !== \"direct\") {\n const eventName =\n management.execution.mode === \"schedule\" ? \"OperationScheduled\" : \"OperationExecuted\";\n if (\n !managementEvents.some(\n (event) =>\n event.eventName === eventName &&\n isAddressEqual(event.address, chain.deployment.authority.address),\n )\n )\n throw new InvalidMarketConfigError(\n \"receipt.events\",\n \"Missing matching AccessManager operation event.\",\n );\n }\n }\n const events: MarketLiquidityEvent[] = [];\n const shareEvents: MarketShareEvent[] = [];\n if (receipt.status === \"success\")\n for (const log of receipt.logs) {\n if (!isAddressEqual(log.address, prepared.context.key.hooks)) continue;\n try {\n const decoded = decodeEventLog({\n abi: marketRampAbi,\n data: log.data,\n topics: log.topics,\n strict: true,\n });\n const expected = prepared.context;\n if (decoded.eventName === \"Transfer\") {\n const a = decoded.args;\n if (\n (expected.action === \"transferShares\" ||\n expected.action === \"transferSharesFrom\") &&\n a.id === expected.rangeId &&\n isAddressEqual(a.from, expected.owner) &&\n isAddressEqual(a.to, expected.recipient) &&\n isAddressEqual(a.caller, prepared.request.account)\n )\n shareEvents.push({\n eventName: \"Transfer\",\n caller: a.caller,\n from: a.from,\n to: a.to,\n rangeId: a.id,\n amount: a.amount,\n });\n continue;\n }\n if (decoded.eventName === \"Approval\") {\n const a = decoded.args;\n if (\n expected.action === \"approveShares\" &&\n a.id === expected.rangeId &&\n isAddressEqual(a.owner, expected.owner) &&\n isAddressEqual(a.spender, expected.recipient)\n )\n shareEvents.push({\n eventName: \"Approval\",\n owner: a.owner,\n spender: a.spender,\n rangeId: a.id,\n amount: a.amount,\n });\n continue;\n }\n if (decoded.eventName === \"OperatorSet\" || decoded.eventName === \"ClaimOperatorSet\") {\n const a = decoded.args;\n if (\n isAddressEqual(a.owner, expected.owner) &&\n isAddressEqual(a.operator, expected.recipient)\n ) {\n if (decoded.eventName === \"OperatorSet\" && expected.action === \"setShareOperator\")\n shareEvents.push({ eventName: \"OperatorSet\", ...decoded.args });\n if (\n decoded.eventName === \"ClaimOperatorSet\" &&\n expected.action === \"setClaimOperator\" &&\n decoded.args.rangeId === expected.rangeId\n )\n shareEvents.push({ eventName: \"ClaimOperatorSet\", ...decoded.args });\n }\n continue;\n }\n if (\n decoded.eventName !== \"Deposited\" &&\n decoded.eventName !== \"Withdrawn\" &&\n decoded.eventName !== \"FeesClaimed\"\n )\n continue;\n const args = decoded.args;\n const to = \"to\" in args ? args.to : args.owner;\n if (\n !isAddressEqual(args.owner, prepared.context.owner) ||\n args.rangeId !== prepared.context.rangeId ||\n !isAddressEqual(to, prepared.context.recipient)\n )\n continue;\n events.push({\n eventName: decoded.eventName,\n owner: args.owner,\n rangeId: args.rangeId,\n amount0: args.amount0,\n amount1: args.amount1,\n liquidity: \"liquidity\" in args ? args.liquidity : null,\n to,\n });\n } catch {\n /* Other Hook events are not liquidity results. */\n }\n }\n const requiredEvent =\n prepared.context.action === \"deposit\"\n ? \"Deposited\"\n : prepared.context.action === \"withdraw\" || prepared.context.action === \"withdrawAndClaim\"\n ? \"Withdrawn\"\n : null;\n if (\n receipt.status === \"success\" &&\n requiredEvent &&\n !events.some((event) => event.eventName === requiredEvent)\n )\n throw new InvalidMarketConfigError(\n \"receipt.events\",\n \"Successful receipt is missing the matching liquidity event.\",\n );\n if (\n receipt.status === \"success\" &&\n [\n \"transferShares\",\n \"transferSharesFrom\",\n \"approveShares\",\n \"setShareOperator\",\n \"setClaimOperator\",\n ].includes(prepared.context.action) &&\n shareEvents.length === 0\n )\n throw new InvalidMarketConfigError(\n \"receipt.events\",\n \"Successful receipt is missing the matching share/authorization event.\",\n );\n return {\n hash: result.hash,\n status: receipt.status === \"success\" ? \"confirmed\" : \"reverted\",\n receipt,\n events,\n shareEvents,\n managementEvents,\n };\n } catch (cause) {\n if (cause instanceof MarketTransactionReplacedError) throw cause;\n throw new MarketTransactionError(\"receipt\", cause);\n }\n }\n\n function shareRange(params: MarketShareRangeParams) {\n const key = liquidityKey(context, params.key);\n return {\n key,\n rangeId: getMarketRangeId(\n getMarketPoolId(key),\n params.tickLower,\n params.tickUpper,\n key.tickSpacing,\n ),\n };\n }\n function transferShares(input: MarketShareTransferParams & { readonly owner?: Address }) {\n const params = immutableClone(input);\n const { key, rangeId } = shareRange(params);\n recipient(context, key, params.to);\n assertMarketUint(params.amount, \"shares\", 128);\n if (params.amount === 0n)\n throw new InvalidMarketConfigError(\"shares\", \"Share transfer amount must be positive.\");\n if (params.owner) assertMarketAddress(params.owner, \"owner\");\n return prepare({\n action: params.owner ? \"transferSharesFrom\" : \"transferShares\",\n key,\n rangeId,\n owner: params.owner,\n to: params.to,\n validForSeconds: params.validForSeconds,\n data: params.owner\n ? encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"transferFrom\",\n args: [params.owner, params.to, rangeId, params.amount],\n })\n : encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"transfer\",\n args: [params.to, rangeId, params.amount],\n }),\n });\n }\n\n return {\n getManagementAuthorization: (\n input: MarketManagementAction,\n owner: Address,\n options: { readonly when?: number } = {},\n ) => {\n const action = immutableClone(input);\n return readMarketSnapshot(context, {}, (scope) =>\n inspectMarketManagementAt(scope, action, owner, options.when),\n );\n },\n prepareManagement: async (\n input: MarketManagementAction,\n options: {\n readonly execution?: MarketManagementExecution;\n readonly validForSeconds?: number;\n } = {},\n ) => {\n const action = immutableClone(input);\n const execution = immutableClone(options.execution ?? { mode: \"direct\" as const });\n const call = encodeMarketManagement(context, action);\n return prepare({\n action: \"management\",\n key: call.key,\n to: call.to,\n target: call.to,\n data: call.data,\n rangeId: null,\n validForSeconds: options.validForSeconds,\n management: { action, execution },\n });\n },\n previewDeposit: (params: MarketLiquidityParams) => preview(\"deposit\", params),\n previewWithdraw: (params: MarketLiquidityParams) => preview(\"withdraw\", params),\n getSpendStatus: (params: Parameters<typeof getMarketSpendStatus>[1]) =>\n getMarketSpendStatus(context, params),\n prepareApproval: async (input: MarketApprovalParams) => {\n const params = immutableClone(input);\n const key = liquidityKey(context, params.key);\n if (params.currency !== 0 && params.currency !== 1)\n throw new InvalidMarketConfigError(\"currency\", \"Choose currency 0 or 1.\");\n if (params.currency === 0 && isAddressEqual(key.currency0, zeroAddress))\n throw new InvalidMarketConfigError(\n \"currency\",\n \"Native currency does not support approval.\",\n );\n assertMarketUint(params.amount, \"amount\", 128);\n const live = await account();\n return prepare({\n action: \"approve\",\n key,\n to: live.address,\n target: params.currency === 0 ? key.currency0 : key.currency1,\n rangeId: null,\n validForSeconds: params.validForSeconds,\n data: encodeFunctionData({\n abi: erc20Abi,\n functionName: \"approve\",\n args: [key.hooks, params.amount],\n }),\n });\n },\n prepareDeposit: async (value: MarketLiquidityPreview) => {\n const q = requirePreview(value, \"deposit\");\n const live = await account();\n return prepare({\n action: \"deposit\",\n key: q.key,\n to: live.address,\n rangeId: q.rangeId,\n preview: value,\n data: encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"deposit\",\n args: [q.key, q.tickLower, q.tickUpper, q.liquidity, q.limit0, q.limit1, q.deadline],\n }),\n });\n },\n prepareWithdraw: (value: MarketLiquidityPreview, to: Address) => prepareWithdraw(value, to),\n prepareWithdrawAndClaim: (value: MarketLiquidityPreview, to: Address, maxFeeBps: number) =>\n prepareWithdraw(value, to, maxFeeBps),\n prepareClaim: (input: MarketClaimParams) => {\n const params = immutableClone(input);\n const key = liquidityKey(context, params.key);\n recipient(context, key, params.to);\n claimFee(params.maxFeeBps);\n const rangeId = getMarketRangeId(\n getMarketPoolId(key),\n params.tickLower,\n params.tickUpper,\n key.tickSpacing,\n );\n return prepare({\n action: \"claim\",\n key,\n to: params.to,\n rangeId,\n validForSeconds: params.validForSeconds,\n data: encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"claimFees\",\n args: [key, params.tickLower, params.tickUpper, params.to, params.maxFeeBps],\n }),\n });\n },\n prepareTransferShares: (params: MarketShareTransferParams) =>\n transferShares({ ...params, owner: undefined }),\n prepareTransferSharesFrom: (\n params: MarketShareTransferParams & { readonly owner: Address },\n ) => {\n assertMarketAddress(params.owner, \"owner\");\n return transferShares(params);\n },\n prepareApproveShares: (\n input: MarketShareRangeParams & { readonly spender: Address; readonly amount: bigint },\n ) => {\n const params = immutableClone(input);\n const { key, rangeId } = shareRange(params);\n assertMarketAddress(params.spender, \"spender\");\n assertMarketUint(params.amount, \"allowance\");\n return prepare({\n action: \"approveShares\",\n key,\n rangeId,\n to: params.spender,\n validForSeconds: params.validForSeconds,\n data: encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"approve\",\n args: [params.spender, rangeId, params.amount],\n }),\n });\n },\n prepareSetShareOperator: (input: {\n readonly key: MarketPoolKey;\n readonly operator: Address;\n readonly approved: boolean;\n readonly validForSeconds?: number;\n }) => {\n const params = immutableClone(input);\n const key = liquidityKey(context, params.key);\n assertMarketAddress(params.operator, \"operator\");\n if (typeof params.approved !== \"boolean\")\n throw new InvalidMarketConfigError(\"approved\", \"Expected a boolean.\");\n return prepare({\n action: \"setShareOperator\",\n key,\n rangeId: null,\n to: params.operator,\n validForSeconds: params.validForSeconds,\n data: encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"setOperator\",\n args: [params.operator, params.approved],\n }),\n });\n },\n prepareSetClaimOperator: (\n input: MarketShareRangeParams & { readonly operator: Address; readonly approved: boolean },\n ) => {\n const params = immutableClone(input);\n const { key, rangeId } = shareRange(params);\n assertMarketAddress(params.operator, \"operator\");\n if (typeof params.approved !== \"boolean\")\n throw new InvalidMarketConfigError(\"approved\", \"Expected a boolean.\");\n return prepare({\n action: \"setClaimOperator\",\n key,\n rangeId,\n to: params.operator,\n validForSeconds: params.validForSeconds,\n data: encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"setClaimOperator\",\n args: [rangeId, params.operator, params.approved],\n }),\n });\n },\n prepareClaimFeesFor: (input: MarketClaimParams & { readonly owner: Address }) => {\n const params = immutableClone(input);\n const { key, rangeId } = shareRange(params);\n assertMarketAddress(params.owner, \"owner\");\n recipient(context, key, params.to);\n claimFee(params.maxFeeBps);\n return prepare({\n action: \"claimFor\",\n key,\n rangeId,\n owner: params.owner,\n to: params.to,\n validForSeconds: params.validForSeconds,\n data: encodeFunctionData({\n abi: marketRampAbi,\n functionName: \"claimFeesFor\",\n args: [\n key,\n params.tickLower,\n params.tickUpper,\n params.owner,\n params.to,\n params.maxFeeBps,\n ],\n }),\n });\n },\n send,\n waitForTransaction,\n };\n}\n","import {\n type Address,\n encodeAbiParameters,\n encodeFunctionData,\n type Hex,\n isAddressEqual,\n keccak256,\n zeroAddress,\n} from \"viem\";\nimport {\n marketAccessManagerAbi,\n marketPoolRegistryAbi,\n marketRampAbi,\n marketRampReaderAbi,\n marketRwaRampAbi,\n} from \"../../abi\";\nimport {\n InvalidMarketConfigError,\n MarketDeploymentVerificationError,\n MarketFeatureUnavailableError,\n} from \"../../errors\";\nimport type {\n MarketManagementAction,\n MarketManagementAuthorization,\n MarketManagementExecution,\n} from \"../../management-types\";\nimport { marketDaysInMonth, packMarketDayOverrides } from \"../../math/calendar\";\nimport { assertMarketAddress, getMarketPoolId } from \"../../math/identifiers\";\nimport type { MarketReadContext } from \"../../read-types\";\nimport { assertMarketCode, type MarketReadScope, requireMarketHook } from \"../snapshot\";\nimport { assertWriteDeployment, claimFee, liquidityKey, recipient } from \"./guards\";\n\nfunction integer(value: number, field: string, min = 0, max = 0xffffff) {\n if (!Number.isSafeInteger(value) || value < min || value > max)\n throw new InvalidMarketConfigError(field, `Expected integer ${min}..${max}.`);\n}\nfunction condition(ok: boolean, field: string) {\n if (!ok)\n throw new InvalidMarketConfigError(\n field,\n `Invalid management parameter combination: ${field}.`,\n );\n}\n\n/** Only known management operations are encodable; never accepts arbitrary target/calldata. */\nexport function encodeMarketManagement(context: MarketReadContext, a: MarketManagementAction) {\n const key = liquidityKey(context, a.key);\n const hook = requireMarketHook(context, key.hooks);\n const id = getMarketPoolId(key);\n const target = hook.address;\n const ramp = marketRampAbi;\n const rwa = marketRwaRampAbi;\n const result = (data: Hex, to = target) => ({ key, to, data, value: 0n as const });\n const requireRwa = () => {\n if (hook.kind !== \"rwa-ramp\") throw new MarketFeatureUnavailableError(\"RWA Hook required\");\n };\n switch (a.kind) {\n case \"pokeFee\":\n integer(a.fee0For1, \"fee0For1\");\n integer(a.fee1For0, \"fee1For0\");\n integer(a.ttl, \"ttl\", 1, 259200);\n condition(a.fee0For1 !== 0 || a.fee1For0 !== 0, \"pokeFee\");\n return result(\n encodeFunctionData({\n abi: ramp,\n functionName: \"pokeFee\",\n args: [id, a.fee0For1, a.fee1For0, a.ttl],\n }),\n );\n case \"clearPoke\":\n return result(encodeFunctionData({ abi: ramp, functionName: \"clearPoke\", args: [id] }));\n case \"setPoolAsymmetry\":\n integer(a.premiumPips, \"premiumPips\");\n condition(typeof a.premiumZeroForOne === \"boolean\", \"direction\");\n return result(\n encodeFunctionData({\n abi: ramp,\n functionName: \"setPoolAsymmetry\",\n args: [key, a.premiumPips, a.premiumZeroForOne],\n }),\n );\n case \"setCryptoPoolConfig\":\n if (hook.kind === \"rwa-ramp\") throw new MarketFeatureUnavailableError(\"Crypto Hook required\");\n integer(a.floorPips, \"floorPips\", 100);\n integer(a.flatPips, \"flatPips\", a.floorPips);\n integer(a.cap, \"cap\", a.flatPips);\n return result(\n encodeFunctionData({\n abi: ramp,\n functionName: \"setPoolConfig\",\n args: [key, a.floorPips, a.flatPips, a.cap],\n }),\n );\n case \"setRwaPoolConfig\": {\n requireRwa();\n integer(a.cap, \"cap\", 100);\n const c = a.config;\n for (const field of [\"openFloor\", \"overnightFloor\", \"closedFloor\"] as const)\n integer(c[field], field, 100, a.cap);\n integer(c.spikeMult, \"spikeMult\", 0, 20);\n integer(c.closedSpike, \"closedSpike\");\n integer(c.descentWindow, \"descentWindow\", 0, 21600);\n integer(c.closeFloor, \"closeFloor\", 0, a.cap);\n integer(c.closeBefore, \"closeBefore\", 0, 21600);\n integer(c.closeAfter, \"closeAfter\", 0, 21600);\n condition(\n c.descentWindow === 0\n ? c.spikeMult === 0 && c.closedSpike === 0\n : c.overnightFloor * c.spikeMult > c.openFloor && c.closedSpike > c.openFloor,\n \"descentWindow\",\n );\n condition(\n c.closeFloor === 0\n ? c.closeBefore === 0 && c.closeAfter === 0\n : c.closeFloor >= c.openFloor && (c.closeBefore !== 0 || c.closeAfter !== 0),\n \"closeFloor\",\n );\n // viem cannot reliably distinguish these overloads from the first tuple argument alone.\n return result(\n encodeFunctionData({\n abi: rwa.filter(\n (item) =>\n item.type !== \"function\" || item.name !== \"setPoolConfig\" || item.inputs.length === 3,\n ),\n functionName: \"setPoolConfig\",\n args: [key, c, a.cap],\n }),\n );\n }\n case \"setSessionHours\":\n requireRwa();\n integer(a.openSec, \"openSec\", 32400, 36000);\n integer(a.closeSec, \"closeSec\", 55800, 59400);\n condition(a.closeSec - a.openSec >= 3600 && a.closeSec - a.openSec <= 43200, \"sessionHours\");\n return result(\n encodeFunctionData({\n abi: rwa,\n functionName: \"setSessionHours\",\n args: [id, a.openSec, a.closeSec],\n }),\n );\n case \"setDayOverrides\": {\n requireRwa();\n const packed = packMarketDayOverrides(a.year, a.month, a.days);\n return result(\n encodeFunctionData({\n abi: rwa,\n functionName: \"setDayOverrides\",\n args: [id, BigInt(a.year * 100 + a.month), packed],\n }),\n );\n }\n case \"setDstMode\":\n requireRwa();\n condition([\"auto\", \"est\", \"edt\"].includes(a.mode), \"mode\");\n return result(\n encodeFunctionData({\n abi: rwa,\n functionName: \"setDstMode\",\n args: [id, a.mode === \"auto\" ? 0 : a.mode === \"est\" ? 1 : 2],\n }),\n );\n case \"setEarlyClose\":\n requireRwa();\n integer(a.day, \"day\", 1, marketDaysInMonth(a.year, a.month));\n integer(a.closeSec, \"closeSec\", 0, 86400);\n return result(\n encodeFunctionData({\n abi: rwa,\n functionName: \"setEarlyClose\",\n args: [id, BigInt(a.year), BigInt(a.month), BigInt(a.day), a.closeSec],\n }),\n );\n case \"setPaused\":\n case \"setPoolPaused\":\n integer(a.duration, \"duration\", 0, 604800);\n return result(\n a.kind === \"setPaused\"\n ? encodeFunctionData({ abi: ramp, functionName: \"setPaused\", args: [BigInt(a.duration)] })\n : encodeFunctionData({\n abi: ramp,\n functionName: \"setPoolPaused\",\n args: [key, BigInt(a.duration)],\n }),\n );\n case \"setClaimFee\":\n claimFee(a.bps);\n assertMarketAddress(a.recipient, \"recipient\", a.bps === 0);\n if (!isAddressEqual(a.recipient, zeroAddress)) recipient(context, key, a.recipient);\n condition(Array.isArray(a.settleFirst), \"settleFirst\");\n for (const currency of a.settleFirst)\n assertMarketAddress(currency, \"settleFirst\", hook.kind === \"ramp-eth\");\n condition(\n new Set(a.settleFirst.map((v) => v.toLowerCase())).size === a.settleFirst.length,\n \"settleFirst\",\n );\n return result(\n encodeFunctionData({\n abi: ramp,\n functionName: \"setClaimFee\",\n args: [key, a.settleFirst, a.bps, a.recipient],\n }),\n );\n case \"setClaimFeeBps\":\n claimFee(a.bps);\n return result(\n encodeFunctionData({ abi: ramp, functionName: \"setClaimFeeBps\", args: [key, a.bps] }),\n );\n case \"sweepClaimFee\":\n assertMarketAddress(a.currency, \"currency\", hook.kind === \"ramp-eth\");\n return result(\n encodeFunctionData({ abi: ramp, functionName: \"sweepClaimFee\", args: [a.currency] }),\n );\n case \"register\":\n return result(\n encodeFunctionData({ abi: marketPoolRegistryAbi, functionName: \"register\", args: [key] }),\n context.deployment.registry.address,\n );\n case \"deregister\":\n case \"reregister\":\n return result(\n encodeFunctionData({ abi: marketPoolRegistryAbi, functionName: a.kind, args: [id] }),\n context.deployment.registry.address,\n );\n case \"setHook\":\n case \"disableHook\": {\n const reader = context.deployment.reader;\n if (!reader) throw new MarketFeatureUnavailableError(\"Reader required\");\n if (a.kind === \"disableHook\")\n return result(\n encodeFunctionData({\n abi: marketRampReaderAbi,\n functionName: \"disableHook\",\n args: [hook.address],\n }),\n reader.address,\n );\n condition(\n /^0x[0-9a-fA-F]{64}$/.test(a.expectedCodeHash) &&\n a.expectedCodeHash.toLowerCase() === hook.runtimeCodeHash.toLowerCase(),\n \"expectedCodeHash\",\n );\n return result(\n encodeFunctionData({\n abi: marketRampReaderAbi,\n functionName: \"setHook\",\n args: [hook.address, hook.kind === \"rwa-ramp\" ? 2 : 1, a.expectedCodeHash],\n }),\n reader.address,\n );\n }\n default:\n throw new InvalidMarketConfigError(\"kind\", \"Unknown management action.\");\n }\n}\n\nexport async function inspectMarketManagementAt(\n scope: MarketReadScope,\n a: MarketManagementAction,\n account: Address,\n when = 0,\n): Promise<MarketManagementAuthorization> {\n assertMarketAddress(account, \"account\");\n integer(when, \"when\", 0, 2 ** 48 - 1);\n const call = encodeMarketManagement(scope, a);\n const hook = requireMarketHook(scope, call.key.hooks);\n if (hook.capabilities.management !== \"verified\")\n throw new MarketFeatureUnavailableError(\"verified management capability\");\n const registryAction = [\n \"register\",\n \"deregister\",\n \"reregister\",\n \"setHook\",\n \"disableHook\",\n ].includes(a.kind);\n const readerAction = a.kind === \"setHook\" || a.kind === \"disableHook\";\n // Disable a broken Hook without querying it: only the Reader and its authority/Registry matter.\n if (a.kind !== \"disableHook\" && a.kind !== \"deregister\" && a.kind !== \"reregister\")\n await assertWriteDeployment(scope, call.key, false, true);\n else await assertMarketCode(scope, scope.deployment.authority);\n const read = { blockNumber: scope.block.blockNumber };\n if (registryAction) {\n await assertMarketCode(scope, scope.deployment.registry);\n const actual = await scope.publicClient.readContract({\n ...read,\n address: scope.deployment.registry.address,\n abi: marketPoolRegistryAbi,\n functionName: \"authority\",\n });\n if (!isAddressEqual(actual, scope.deployment.authority.address))\n throw new MarketDeploymentVerificationError(\n \"registry.authority\",\n scope.deployment.authority.address,\n actual,\n );\n }\n if (readerAction) {\n const reader = scope.deployment.reader;\n if (!reader) throw new MarketFeatureUnavailableError(\"Reader required\");\n await assertMarketCode(scope, reader);\n const [registry, authority] = await Promise.all([\n scope.publicClient.readContract({\n ...read,\n address: reader.address,\n abi: marketRampReaderAbi,\n functionName: \"registry\",\n }),\n scope.publicClient.readContract({\n ...read,\n address: reader.address,\n abi: marketRampReaderAbi,\n functionName: \"authority\",\n }),\n ]);\n if (\n !isAddressEqual(registry, scope.deployment.registry.address) ||\n !isAddressEqual(authority, scope.deployment.authority.address)\n )\n throw new MarketDeploymentVerificationError(\"reader.bindings\", scope.deployment, [\n registry,\n authority,\n ]);\n }\n const hookRead = { ...read, address: hook.address, abi: marketRampAbi } as const;\n if (a.kind === \"setCryptoPoolConfig\" || a.kind === \"setRwaPoolConfig\") {\n const absolute = await scope.publicClient.readContract({\n ...hookRead,\n functionName: \"ABSOLUTE_MAX_FEE\",\n });\n condition(a.cap <= absolute, \"cap\");\n }\n if (a.kind === \"pokeFee\" || a.kind === \"setPoolAsymmetry\") {\n const id = getMarketPoolId(call.key);\n const [floor, cap] = await Promise.all([\n scope.publicClient.readContract({ ...hookRead, functionName: \"pokeFloor\", args: [id] }),\n scope.publicClient.readContract({ ...hookRead, functionName: \"maxFee\", args: [id] }),\n ]);\n if (a.kind === \"pokeFee\")\n condition(\n [a.fee0For1, a.fee1For0].every((fee) => fee === 0 || (fee >= floor && fee <= cap)),\n \"pokeFee.band\",\n );\n else condition(a.premiumPips <= cap - floor, \"premiumPips.band\");\n }\n if (a.kind === \"setEarlyClose\" && a.closeSec !== 0) {\n const id = getMarketPoolId(call.key);\n const [open, close] = await Promise.all([\n scope.publicClient.readContract({\n ...read,\n address: hook.address,\n abi: marketRwaRampAbi,\n functionName: \"openSec\",\n args: [id],\n }),\n scope.publicClient.readContract({\n ...read,\n address: hook.address,\n abi: marketRwaRampAbi,\n functionName: \"closeSec\",\n args: [id],\n }),\n ]);\n condition(a.closeSec <= close && a.closeSec - open >= 10800, \"earlyClose\");\n }\n const target = {\n ...read,\n address: scope.deployment.authority.address,\n abi: marketAccessManagerAbi,\n } as const;\n const [immediate, delay] =\n a.kind === \"sweepClaimFee\"\n ? ([true, 0] as const)\n : await scope.publicClient.readContract({\n ...target,\n functionName: \"canCall\",\n args: [account, call.to, call.data.slice(0, 10) as Hex],\n });\n const operationId = keccak256(\n encodeAbiParameters(\n [{ type: \"address\" }, { type: \"address\" }, { type: \"bytes\" }],\n [account, call.to, call.data],\n ),\n );\n const scheduledAt = await scope.publicClient.readContract({\n ...target,\n functionName: \"getSchedule\",\n args: [operationId],\n });\n return {\n permission: immediate ? \"immediate\" : delay > 0 ? \"delayed\" : \"denied\",\n delay,\n operationId,\n scheduledAt,\n direct: { to: call.to, data: call.data, value: 0n },\n schedule: {\n to: target.address,\n value: 0n,\n data: encodeFunctionData({\n abi: marketAccessManagerAbi,\n functionName: \"schedule\",\n args: [call.to, call.data, when],\n }),\n },\n execute: {\n to: target.address,\n value: 0n,\n data: encodeFunctionData({\n abi: marketAccessManagerAbi,\n functionName: \"execute\",\n args: [call.to, call.data],\n }),\n },\n };\n}\n\nexport function managementRequest(\n auth: MarketManagementAuthorization,\n execution: MarketManagementExecution,\n timestamp: bigint,\n) {\n if (auth.permission === \"denied\")\n throw new InvalidMarketConfigError(\n \"permission\",\n \"Account is not authorized for this management selector.\",\n );\n if (execution.mode === \"direct\") {\n condition(auth.permission === \"immediate\", \"permission.scheduleRequired\");\n return auth.direct;\n }\n if (execution.mode === \"schedule\") {\n condition(auth.permission === \"delayed\" && auth.scheduledAt === 0, \"schedule\");\n const when = execution.when ?? 0;\n condition(when === 0 || BigInt(when) >= timestamp + BigInt(auth.delay), \"when\");\n return auth.schedule;\n }\n if (execution.mode === \"execute\") {\n condition(\n auth.scheduledAt !== 0 && BigInt(auth.scheduledAt) <= timestamp,\n \"schedule.notReadyOrExpired\",\n );\n return auth.execute;\n }\n throw new InvalidMarketConfigError(\"mode\", \"Unknown management execution mode.\");\n}\n","import { InvalidMarketConfigError } from \"../errors\";\nimport type { MarketDayOverride } from \"../management-types\";\n\n/** Gregorian input domain for the SDK calendar helpers: years 1970..9999. */\nexport function marketDaysInMonth(year: number, month: number): number {\n if (\n !Number.isInteger(year) ||\n year < 1970 ||\n year > 9999 ||\n !Number.isInteger(month) ||\n month < 1 ||\n month > 12\n )\n throw new InvalidMarketConfigError(\"date\", \"Expected year 1970..9999 and month 1..12.\");\n if (month === 2) return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28;\n return [4, 6, 9, 11].includes(month) ? 30 : 31;\n}\n/** Replaces the whole month's overrides. Empty days clears the month; at most ten distinct dates. */\nexport function packMarketDayOverrides(\n year: number,\n month: number,\n days: readonly MarketDayOverride[],\n): bigint {\n const maximum = marketDaysInMonth(year, month);\n if (!Array.isArray(days) || days.length > 10)\n throw new InvalidMarketConfigError(\"days\", \"At most ten overrides per month.\");\n const seen = new Set<number>();\n let packed = 0n;\n for (const { day, status } of days) {\n if (\n !Number.isInteger(day) ||\n day < 1 ||\n day > maximum ||\n seen.has(day) ||\n (status !== \"closed\" && status !== \"open\")\n )\n throw new InvalidMarketConfigError(\"days\", \"Invalid or duplicate override date/status.\");\n seen.add(day);\n packed |= (status === \"closed\" ? 1n : 2n) << BigInt((day - 1) * 2);\n }\n return packed;\n}\n","import { isAddressEqual, keccak256, type PublicClient } from \"viem\";\nimport {\n marketClaimFeePolicyAbi,\n marketMarketCalendarAbi,\n marketPoolRegistryAbi,\n marketRampAbi,\n marketRampReaderAbi,\n marketRwaRampAbi,\n marketStateViewAbi,\n} from \"./abi\";\nimport { defineMarketDeployment } from \"./deployment\";\nimport { MarketDeploymentVerificationError, MarketReadError } from \"./errors\";\nimport type { MarketDeployment, MarketDeploymentVerification } from \"./types\";\n\nfunction assertEqual(field: string, expected: unknown, actual: unknown): void {\n if (expected !== actual) throw new MarketDeploymentVerificationError(field, expected, actual);\n}\n\n/** Pins all reads to one block and rejects a reorg before returning a code-and-wiring report. */\nexport async function verifyMarketDeployment(\n publicClient: PublicClient,\n input: MarketDeployment,\n options: { readonly blockNumber?: bigint } = {},\n): Promise<MarketDeploymentVerification> {\n const deployment = defineMarketDeployment(input);\n try {\n assertEqual(\"chainId\", deployment.chainId, await publicClient.getChainId());\n const block = await publicClient.getBlock(\n options.blockNumber === undefined\n ? { blockTag: \"latest\" }\n : { blockNumber: options.blockNumber },\n );\n if (block.number === null || block.hash === null) {\n throw new MarketDeploymentVerificationError(\"block\", \"mined block\", block);\n }\n const blockNumber = block.number;\n const contracts = [\n deployment.poolManager,\n deployment.registry,\n deployment.authority,\n ...(deployment.reader ? [deployment.reader] : []),\n ...(deployment.poolStateReader?.kind === \"state-view\"\n ? [deployment.poolStateReader.contract]\n : []),\n ...deployment.hooks.flatMap((hook) => [\n hook,\n hook.claimFeePolicy,\n ...(hook.calendar ? [hook.calendar] : []),\n ]),\n ];\n // Sequential reads keep requests bounded even for large caller-supplied Hook lists.\n for (const contract of contracts) {\n const code = await publicClient.getCode({ address: contract.address, blockNumber });\n if (!code || code === \"0x\") {\n throw new MarketDeploymentVerificationError(contract.address, \"deployed code\", code);\n }\n assertEqual(contract.address, contract.runtimeCodeHash.toLowerCase(), keccak256(code));\n }\n const assertAddress = (field: string, expected: `0x${string}`, actual: `0x${string}`) => {\n if (!isAddressEqual(expected, actual)) {\n throw new MarketDeploymentVerificationError(field, expected, actual);\n }\n };\n if (deployment.poolStateReader?.kind === \"state-view\") {\n assertAddress(\n \"stateView.poolManager\",\n deployment.poolManager.address,\n await publicClient.readContract({\n address: deployment.poolStateReader.contract.address,\n abi: marketStateViewAbi,\n functionName: \"poolManager\",\n blockNumber,\n }),\n );\n }\n assertAddress(\n \"registry.authority\",\n deployment.authority.address,\n await publicClient.readContract({\n address: deployment.registry.address,\n abi: marketPoolRegistryAbi,\n functionName: \"authority\",\n blockNumber,\n }),\n );\n if (deployment.reader) {\n const reader = {\n address: deployment.reader.address,\n abi: marketRampReaderAbi,\n blockNumber,\n } as const;\n assertAddress(\n \"reader.registry\",\n deployment.registry.address,\n await publicClient.readContract({ ...reader, functionName: \"registry\" }),\n );\n assertAddress(\n \"reader.authority\",\n deployment.authority.address,\n await publicClient.readContract({ ...reader, functionName: \"authority\" }),\n );\n }\n for (const hook of deployment.hooks) {\n const target = { address: hook.address, abi: marketRampAbi, blockNumber } as const;\n assertAddress(\n `${hook.address}.poolManager`,\n deployment.poolManager.address,\n await publicClient.readContract({ ...target, functionName: \"poolManager\" }),\n );\n assertAddress(\n `${hook.address}.authority`,\n deployment.authority.address,\n await publicClient.readContract({ ...target, functionName: \"authority\" }),\n );\n assertAddress(\n `${hook.address}.claimFeePolicy`,\n hook.claimFeePolicy.address,\n await publicClient.readContract({ ...target, functionName: \"claimFeePolicy\" }),\n );\n assertAddress(\n `${hook.address}.policy.ledger`,\n hook.address,\n await publicClient.readContract({\n address: hook.claimFeePolicy.address,\n abi: marketClaimFeePolicyAbi,\n functionName: \"ledger\",\n blockNumber,\n }),\n );\n assertEqual(\n `${hook.address}.MAX_POKE_DISCOUNT_BPS`,\n 5000,\n await publicClient.readContract({ ...target, functionName: \"MAX_POKE_DISCOUNT_BPS\" }),\n );\n if (hook.calendar) {\n assertAddress(\n `${hook.address}.calendar`,\n hook.calendar.address,\n await publicClient.readContract({\n address: hook.address,\n abi: marketRwaRampAbi,\n functionName: \"marketCalendar\",\n blockNumber,\n }),\n );\n assertAddress(\n `${hook.address}.calendar.controller`,\n hook.address,\n await publicClient.readContract({\n address: hook.calendar.address,\n abi: marketMarketCalendarAbi,\n functionName: \"controller\",\n blockNumber,\n }),\n );\n }\n if (deployment.reader) {\n assertEqual(\n `${hook.address}.readerKind`,\n hook.kind === \"rwa-ramp\" ? 2 : 1,\n await publicClient.readContract({\n address: deployment.reader.address,\n abi: marketRampReaderAbi,\n functionName: \"hookKind\",\n args: [hook.address],\n blockNumber,\n }),\n );\n }\n }\n const finalBlock = await publicClient.getBlock({ blockNumber });\n assertEqual(\"blockHash\", block.hash, finalBlock.hash);\n return Object.freeze({\n chainId: deployment.chainId,\n deploymentId: deployment.deploymentId,\n blockNumber,\n blockHash: block.hash,\n scope: \"code-and-wiring\",\n checkedContracts: contracts.length,\n });\n } catch (error) {\n if (error instanceof MarketDeploymentVerificationError) throw error;\n throw new MarketReadError(error);\n }\n}\n","import type { Hex, PublicClient, WalletClient } from \"viem\";\nimport { getMarketClaimOperator, getMarketShareAuthorization } from \"./actions/authorizations\";\nimport { estimateMarketClaimableFees, getMarketFeeSnapshot } from \"./actions/earnings\";\nimport {\n getMarketCurrentFees,\n getMarketFeeBreakdown,\n getMarketSession,\n previewMarketFeeAt,\n} from \"./actions/fees\";\nimport { getMarketPoolState } from \"./actions/pool-state\";\nimport { getMarketPool, listMarketPools } from \"./actions/pools\";\nimport { getMarketPosition, getMarketRange } from \"./actions/positions\";\nimport { createMarketWriteActions } from \"./actions/write/transactions\";\nimport { defineMarketChain } from \"./chains\";\nimport { InvalidMarketConfigError } from \"./errors\";\nimport type {\n MarketListPoolsParams,\n MarketPositionParams,\n MarketRangeParams,\n MarketReadOptions,\n} from \"./read-types\";\nimport type { MarketChainConfig } from \"./types\";\nimport { verifyMarketDeployment } from \"./verify\";\n\nexport interface MarketClientOptions {\n readonly publicClient: PublicClient;\n readonly chain: MarketChainConfig;\n readonly walletClient?: WalletClient;\n}\n\n/** Construction does not issue RPC requests or certify the deployment. Wallet is optional for reads. */\nexport function createMarketClient(options: MarketClientOptions) {\n const chain = defineMarketChain(options.chain);\n const publicClient = options.publicClient;\n if (publicClient.chain && publicClient.chain.id !== chain.chainId) {\n throw new InvalidMarketConfigError(\"publicClient.chain\", \"Public client chain does not match.\");\n }\n const context = { publicClient, deployment: chain.deployment };\n return Object.freeze({\n chain,\n getClaimOperator: (params: Parameters<typeof getMarketClaimOperator>[1]) =>\n getMarketClaimOperator(context, params),\n getShareAuthorization: (params: Parameters<typeof getMarketShareAuthorization>[1]) =>\n getMarketShareAuthorization(context, params),\n getFeeSnapshot: (params: MarketPositionParams) => getMarketFeeSnapshot(context, params),\n estimateClaimableFees: (params: MarketPositionParams) =>\n estimateMarketClaimableFees(context, params),\n ...createMarketWriteActions(publicClient, options.walletClient, chain),\n verifyDeployment: (readOptions?: { readonly blockNumber?: bigint }) =>\n verifyMarketDeployment(publicClient, chain.deployment, readOptions),\n getPool: (poolId: Hex, readOptions?: MarketReadOptions) =>\n getMarketPool(context, poolId, readOptions),\n listPools: (params?: MarketListPoolsParams) => listMarketPools(context, params),\n getCurrentFees: (poolId: Hex, readOptions?: MarketReadOptions) =>\n getMarketCurrentFees(context, poolId, readOptions),\n getFeeBreakdown: (poolId: Hex, zeroForOne: boolean, readOptions?: MarketReadOptions) =>\n getMarketFeeBreakdown(context, poolId, zeroForOne, readOptions),\n previewFeeAt: (\n poolId: Hex,\n zeroForOne: boolean,\n timestamp: bigint,\n readOptions?: MarketReadOptions,\n ) => previewMarketFeeAt(context, poolId, zeroForOne, timestamp, readOptions),\n getSession: (poolId: Hex, readOptions?: MarketReadOptions & { readonly timestamp?: bigint }) =>\n getMarketSession(context, poolId, readOptions),\n getRange: (params: MarketRangeParams) => getMarketRange(context, params),\n getPosition: (params: MarketPositionParams) => getMarketPosition(context, params),\n getPoolState: (poolId: Hex, readOptions?: MarketReadOptions) =>\n getMarketPoolState(context, poolId, readOptions),\n });\n}\n\nexport type MarketClient = ReturnType<typeof createMarketClient>;\n","import type { Address, Hex } from \"viem\";\nimport type { MarketHookKind, MarketPoolKey } from \"./types\";\n\n/** Historical discovery data, not a verified deployment or a write-capability grant. */\nexport interface MarketTestPool {\n readonly chainId: number;\n readonly name: string;\n readonly testAssets: true;\n readonly permissionlessMint: true;\n readonly hookKind: MarketHookKind;\n readonly poolId: Hex;\n readonly key: Readonly<MarketPoolKey>;\n readonly base: { readonly symbol: string; readonly address: Address; readonly decimals: number };\n readonly quote: { readonly symbol: string; readonly address: Address; readonly decimals: number };\n readonly components: {\n readonly poolManager: Address;\n readonly registry: Address;\n readonly reader: Address;\n readonly accessManager: Address;\n };\n readonly source: {\n readonly commit: string;\n readonly path: string;\n readonly blockNumber: number;\n readonly blockHash: Hex;\n };\n}\n\n/** Valueless, openly mintable ERC-20 pools on mainnets; tBNB is not native BNB. */\nexport const marketTestPools = [\n {\n chainId: 5042,\n name: \"tBTC/tUSDC\",\n testAssets: true,\n permissionlessMint: true,\n hookKind: \"ramp\",\n poolId: \"0x1a325fe4671d6584778464cbe5ea68b111c2a72718f128a9427717298e85e2cd\",\n key: {\n currency0: \"0x442fc5b4d43fb7ec18ff8ac0a8fb9fdd2efec0db\",\n currency1: \"0x44e90eb500868af9b0b16406f3ce165c90e1e85e\",\n fee: 8388608,\n tickSpacing: 1,\n hooks: \"0x928f4c9b7f80dcbe95b606867e76336a956fa080\",\n },\n base: {\n symbol: \"tBTC\",\n address: \"0x442fc5b4d43fb7ec18ff8ac0a8fb9fdd2efec0db\",\n decimals: 8,\n },\n quote: {\n symbol: \"tUSDC\",\n address: \"0x44e90eb500868af9b0b16406f3ce165c90e1e85e\",\n decimals: 6,\n },\n components: {\n poolManager: \"0x8366a39cc670b4001a1121b8f6a443a643e40951\",\n registry: \"0x3386feb5016983790ef05410e888a8b7bf5a722d\",\n reader: \"0xbd782f3de07f2c8f27ef3a2cb165f36c5a505e45\",\n accessManager: \"0x005710955b542c11fa2259721840329cddf44914\",\n },\n source: {\n commit: \"cf16bd9376c12ea50de04658b279176d8d56e4f5\",\n path: \"docs/test-pools/arc.json\",\n blockNumber: 23523593,\n blockHash: \"0xea3eb1e8cd308955ad999df48212f3b839e3eec7b55cf7702aba213d548f847d\",\n },\n },\n {\n chainId: 56,\n name: \"tBNB/tUSDT\",\n testAssets: true,\n permissionlessMint: true,\n hookKind: \"ramp\",\n poolId: \"0xb1cf54cb728bb02bb40def7d4f088a7274f35ef05b6257cb518d5f10be438bee\",\n key: {\n currency0: \"0x78e708f1f8fe842abaaeaf23ade31e524e153980\",\n currency1: \"0x8a5218b1b296ced5c88cd55c256fcb58c32f227d\",\n fee: 8388608,\n tickSpacing: 1,\n hooks: \"0xa6a75d930f7a920391c4afffe744069233c4e080\",\n },\n base: {\n symbol: \"tBNB\",\n address: \"0x78e708f1f8fe842abaaeaf23ade31e524e153980\",\n decimals: 18,\n },\n quote: {\n symbol: \"tUSDT\",\n address: \"0x8a5218b1b296ced5c88cd55c256fcb58c32f227d\",\n decimals: 18,\n },\n components: {\n poolManager: \"0x28e2Ea090877bF75740558f6BFB36A5ffeE9e9dF\",\n registry: \"0xe75be888ae3d92be2f962f62f78775228eb3cbc9\",\n reader: \"0x2fd8d887a67bf61166e5aacae375cda0ad72d292\",\n accessManager: \"0x09e9f944a86c5c239eb0dceac85e1f4805d61256\",\n },\n source: {\n commit: \"cf16bd9376c12ea50de04658b279176d8d56e4f5\",\n path: \"docs/test-pools/bsc.json\",\n blockNumber: 124890195,\n blockHash: \"0xba1ae7df7b719fc6d0cf4b49a2278926fc6c62aaf12e2bc49c9788579bba948e\",\n },\n },\n {\n chainId: 56,\n name: \"tQQQ/tUSDT\",\n testAssets: true,\n permissionlessMint: true,\n hookKind: \"rwa-ramp\",\n poolId: \"0x9ccf485776611256dd717db8c53808e370160d8c90668a75c6d456dd07f21423\",\n key: {\n currency0: \"0x51984c455a78c072f9a23453e236bd3729dc3efd\",\n currency1: \"0x8a5218b1b296ced5c88cd55c256fcb58c32f227d\",\n fee: 8388608,\n tickSpacing: 1,\n hooks: \"0x7b144d9583c71a1b20cb26954d2ccd330af46080\",\n },\n base: {\n symbol: \"tQQQ\",\n address: \"0x51984c455a78c072f9a23453e236bd3729dc3efd\",\n decimals: 18,\n },\n quote: {\n symbol: \"tUSDT\",\n address: \"0x8a5218b1b296ced5c88cd55c256fcb58c32f227d\",\n decimals: 18,\n },\n components: {\n poolManager: \"0x28e2Ea090877bF75740558f6BFB36A5ffeE9e9dF\",\n registry: \"0xe75be888ae3d92be2f962f62f78775228eb3cbc9\",\n reader: \"0x2fd8d887a67bf61166e5aacae375cda0ad72d292\",\n accessManager: \"0x09e9f944a86c5c239eb0dceac85e1f4805d61256\",\n },\n source: {\n commit: \"cf16bd9376c12ea50de04658b279176d8d56e4f5\",\n path: \"docs/test-pools/bsc.json\",\n blockNumber: 124890195,\n blockHash: \"0xba1ae7df7b719fc6d0cf4b49a2278926fc6c62aaf12e2bc49c9788579bba948e\",\n },\n },\n] as const satisfies readonly MarketTestPool[];\n"],"mappings":"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","names":["import_viem","hook","import_viem","import_viem","import_viem","hook","contract","hook","import_viem","import_viem","import_viem","import_viem","import_viem","hook","hook","contract","import_viem","hook","hook","import_viem","import_viem","import_viem","hook","contract","balance","import_viem","import_viem","hook","import_viem","hook","contract"]}
|