timelock-sdk 0.0.196 → 0.0.198
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abis.cjs +1 -1
- package/dist/abis.d.cts +1 -1
- package/dist/abis.d.ts +1 -1
- package/dist/abis.js +1 -1
- package/dist/{client-3oF5mDiF.d.ts → client-BPfSSNYu.d.cts} +1125 -715
- package/dist/{client-BLs46E49.d.cts → client-DL7bGEe_.d.ts} +1145 -735
- package/dist/client.cjs +2 -2
- package/dist/client.d.cts +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +2 -2
- package/dist/{optionUtils-DerSn_Ua.cjs → optionUtils-DnlZztx2.cjs} +19 -50
- package/dist/optionUtils-DnlZztx2.cjs.map +1 -0
- package/dist/{optionUtils-CR8qGvTh.js → optionUtils-Xu6KDjhk.js} +20 -27
- package/dist/optionUtils-Xu6KDjhk.js.map +1 -0
- package/dist/{optionsMarket-BVrCBIJQ.d.cts → optionsMarket-BVeFBAO9.d.ts} +10 -2
- package/dist/{optionsMarket-MkvkHTLL.d.ts → optionsMarket-jE1scXOT.d.cts} +10 -2
- package/dist/package.cjs +1 -5
- package/dist/package.d.cts +2 -2
- package/dist/package.d.ts +2 -2
- package/dist/package.js +2 -2
- package/dist/{statelessStateView-WNW62g3Q.cjs → statelessStateView-BdEzGGOS.cjs} +12 -2
- package/dist/statelessStateView-BdEzGGOS.cjs.map +1 -0
- package/dist/{statelessStateView-DW9FOpWt.js → statelessStateView-UwLGcATc.js} +12 -2
- package/dist/statelessStateView-UwLGcATc.js.map +1 -0
- package/package.json +1 -1
- package/dist/optionUtils-CR8qGvTh.js.map +0 -1
- package/dist/optionUtils-DerSn_Ua.cjs.map +0 -1
- package/dist/statelessStateView-DW9FOpWt.js.map +0 -1
- package/dist/statelessStateView-WNW62g3Q.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statelessStateView-UwLGcATc.js","names":[],"sources":["../src/abis/erc20.ts","../src/abis/lens.ts","../src/abis/optionsMarket.ts","../src/abis/statelessStateView.ts"],"sourcesContent":["export const erc20Abi = [\n {\n type: 'constructor',\n inputs: [\n {name: 'name_', type: 'string', internalType: 'string'},\n {name: 'symbol_', type: 'string', internalType: 'string'},\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'spender', type: 'address', internalType: 'address'},\n ],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n {name: 'spender', type: 'address', internalType: 'address'},\n {name: 'amount', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [{name: '', type: 'bool', internalType: 'bool'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{name: 'account', type: 'address', internalType: 'address'}],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{name: '', type: 'uint8', internalType: 'uint8'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decreaseAllowance',\n inputs: [\n {name: 'spender', type: 'address', internalType: 'address'},\n {\n name: 'subtractedValue',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [{name: '', type: 'bool', internalType: 'bool'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'increaseAllowance',\n inputs: [\n {name: 'spender', type: 'address', internalType: 'address'},\n {name: 'addedValue', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [{name: '', type: 'bool', internalType: 'bool'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{name: '', type: 'string', internalType: 'string'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{name: '', type: 'string', internalType: 'string'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n {name: 'to', type: 'address', internalType: 'address'},\n {name: 'amount', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [{name: '', type: 'bool', internalType: 'bool'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n {name: 'from', type: 'address', internalType: 'address'},\n {name: 'to', type: 'address', internalType: 'address'},\n {name: 'amount', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [{name: '', type: 'bool', internalType: 'bool'}],\n stateMutability: 'nonpayable',\n },\n] as const;\n","export const lensAbi = [\n {\n type: 'function',\n name: 'batchGetRefTick',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n {name: 'tickLower', type: 'int24[]', internalType: 'int24[]'},\n ],\n outputs: [{name: 'refTicks', type: 'int24[]', internalType: 'int24[]'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getAllBlocks',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n ],\n outputs: [\n {\n name: 'blocks',\n type: 'tuple[]',\n internalType: 'struct TimelockLens.LiquidityBlockData[]',\n components: [\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {\n name: 'prevTickLower',\n type: 'int24',\n internalType: 'int24',\n },\n {\n name: 'totalLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'borrowedLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'reservedLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'borrowableLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'withdrawableLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'totalAmount0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'totalAmount1',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'borrowedAmount0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'borrowedAmount1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getExpiredOptions',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n {name: 'startId', type: 'uint256', internalType: 'uint256'},\n {name: 'endId', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [\n {\n name: 'expiredOptions',\n type: 'tuple[]',\n internalType: 'struct TimelockLens.OptionData[]',\n components: [\n {\n name: 'optionId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'startTick', type: 'int24', internalType: 'int24'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {\n name: 'strikePrice',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'positionSize',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'expiresAt', type: 'uint32', internalType: 'uint32'},\n {\n name: 'liquidities',\n type: 'uint128[]',\n internalType: 'uint128[]',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeRates',\n inputs: [\n {\n name: 'feeStrategy',\n type: 'address',\n internalType: 'contract FeeStrategy',\n },\n ],\n outputs: [\n {\n name: 'rates',\n type: 'tuple',\n internalType: 'struct TimelockLens.FeeStrategyRates',\n components: [\n {\n name: 'openingFeeRate',\n type: 'uint32',\n internalType: 'uint32',\n },\n {\n name: 'baseFeeRate',\n type: 'uint32',\n internalType: 'uint32',\n },\n {\n name: 'minOpeningFee',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'minBaseFee',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'feeRecipient',\n type: 'address',\n internalType: 'address',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getGlobalGuardianState',\n inputs: [\n {\n name: 'guardian',\n type: 'address',\n internalType: 'contract TimelockGuardian',\n },\n ],\n outputs: [\n {\n name: 'guardianState',\n type: 'tuple',\n internalType: 'struct TimelockLens.GuardianGlobalState',\n components: [\n {\n name: 'globalMintPaused',\n type: 'tuple',\n internalType: 'struct TimelockGuardian.PauseState',\n components: [\n {name: 'paused', type: 'bool', internalType: 'bool'},\n {\n name: 'updatedAt',\n type: 'uint64',\n internalType: 'uint64',\n },\n ],\n },\n {\n name: 'globalBurnPaused',\n type: 'tuple',\n internalType: 'struct TimelockGuardian.PauseState',\n components: [\n {name: 'paused', type: 'bool', internalType: 'bool'},\n {\n name: 'updatedAt',\n type: 'uint64',\n internalType: 'uint64',\n },\n ],\n },\n {\n name: 'globalTradingPaused',\n type: 'tuple',\n internalType: 'struct TimelockGuardian.PauseState',\n components: [\n {name: 'paused', type: 'bool', internalType: 'bool'},\n {\n name: 'updatedAt',\n type: 'uint64',\n internalType: 'uint64',\n },\n ],\n },\n {\n name: 'minWithdrawalInterval',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'senderIsAdmin', type: 'bool', internalType: 'bool'},\n {name: 'senderIsPauser', type: 'bool', internalType: 'bool'},\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidityAtTick',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'totalLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n {\n name: 'borrowedLiquidity',\n type: 'uint128',\n internalType: 'uint128',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMarketData',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n ],\n outputs: [\n {\n name: 'marketData',\n type: 'tuple',\n internalType: 'struct TimelockLens.TimelockMarketData',\n components: [\n {\n name: 'guardian',\n type: 'address',\n internalType: 'contract TimelockGuardian',\n },\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract ITimelockVault',\n },\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'poolKey',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\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 {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {\n name: 'optionAssetIsToken0',\n type: 'bool',\n internalType: 'bool',\n },\n {\n name: 'optionAsset',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'payoutAsset',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'optionAssetDecimals',\n type: 'uint8',\n internalType: 'uint8',\n },\n {\n name: 'payoutAssetDecimals',\n type: 'uint8',\n internalType: 'uint8',\n },\n {\n name: 'optionAssetSymbol',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'payoutAssetSymbol',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'optionAssetName',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'payoutAssetName',\n type: 'string',\n internalType: 'string',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMarketState',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n ],\n outputs: [\n {\n name: 'marketState',\n type: 'tuple',\n internalType: 'struct TimelockLens.TimelockMarketState',\n components: [\n {\n name: 'optionsCount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'optionPricing',\n type: 'address',\n internalType: 'address',\n },\n {\n name: 'feeStrategy',\n type: 'address',\n internalType: 'contract IFeeStrategy',\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMaxATMPositionSizes',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n {name: 'maxSteps', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {name: 'maxCallSize', type: 'uint256', internalType: 'uint256'},\n {name: 'maxPutSize', type: 'uint256', internalType: 'uint256'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMaxBorrowable0',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {name: 'maxSteps', type: 'int24', internalType: 'int24'},\n ],\n outputs: [{name: 'borrowable0', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMaxBorrowable1',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {name: 'maxSteps', type: 'int24', internalType: 'int24'},\n ],\n outputs: [{name: 'borrowable1', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getMaxPositionSizes',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {name: 'maxSteps', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {name: 'maxCallSize', type: 'uint256', internalType: 'uint256'},\n {name: 'maxPutSize', type: 'uint256', internalType: 'uint256'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOptionData',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n {name: 'optionId', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct TimelockLens.OptionData',\n components: [\n {\n name: 'optionId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'startTick', type: 'int24', internalType: 'int24'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {\n name: 'strikePrice',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'positionSize',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'expiresAt', type: 'uint32', internalType: 'uint32'},\n {\n name: 'liquidities',\n type: 'uint128[]',\n internalType: 'uint128[]',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOptionPricingParams',\n inputs: [\n {\n name: 'pricing',\n type: 'address',\n internalType: 'contract OptionPricing',\n },\n ],\n outputs: [\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct TimelockLens.OptionPricingParams',\n components: [\n {\n name: 'logicContract',\n type: 'address',\n internalType: 'contract StatelessOptionPricing',\n },\n {name: 'iv', type: 'uint32', internalType: 'uint32'},\n {\n name: 'riskFreeRate',\n type: 'uint32',\n internalType: 'uint32',\n },\n {\n name: 'minPremiumDailyRate',\n type: 'uint32',\n internalType: 'uint32',\n },\n {\n name: 'minPremiumAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOptionsData',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n {\n name: 'optionIds',\n type: 'uint256[]',\n internalType: 'uint256[]',\n },\n ],\n outputs: [\n {\n name: 'optionsData',\n type: 'tuple[]',\n internalType: 'struct TimelockLens.OptionData[]',\n components: [\n {\n name: 'optionId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'startTick', type: 'int24', internalType: 'int24'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {\n name: 'strikePrice',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'positionSize',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'expiresAt', type: 'uint32', internalType: 'uint32'},\n {\n name: 'liquidities',\n type: 'uint128[]',\n internalType: 'uint128[]',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPoolData',\n inputs: [\n {\n name: '',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'poolKey',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'poolData',\n type: 'tuple',\n internalType: 'struct TimelockLens.UniswapPoolData',\n components: [\n {name: 'token0', type: 'address', internalType: 'address'},\n {name: 'token1', type: 'address', internalType: 'address'},\n {\n name: 'token0Decimals',\n type: 'uint8',\n internalType: 'uint8',\n },\n {\n name: 'token1Decimals',\n type: 'uint8',\n internalType: 'uint8',\n },\n {\n name: 'token0Symbol',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'token1Symbol',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'token0Name',\n type: 'string',\n internalType: 'string',\n },\n {\n name: 'token1Name',\n type: 'string',\n internalType: 'string',\n },\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPricingParams',\n inputs: [{name: 'pricing', type: 'address', internalType: 'address'}],\n outputs: [\n {name: 'pricingModel', type: 'uint8', internalType: 'uint8'},\n {name: 'data', type: 'bytes', internalType: 'bytes'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRefTick',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n ],\n outputs: [{name: 'refTick', type: 'int24', internalType: 'int24'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getStaticPricingParams',\n inputs: [\n {\n name: 'pricing',\n type: 'address',\n internalType: 'contract StaticPerpsPricing',\n },\n ],\n outputs: [\n {\n name: 'params',\n type: 'tuple',\n internalType: 'struct TimelockLens.StaticPerpsPricingParams',\n components: [\n {\n name: 'dailyFundingRate',\n type: 'uint32',\n internalType: 'uint32',\n },\n {\n name: 'minFundingAmount',\n type: 'uint128',\n internalType: 'uint128',\n },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTokenData',\n inputs: [{name: 'token', type: 'address', internalType: 'address'}],\n outputs: [\n {\n name: 'tokenData',\n type: 'tuple',\n internalType: 'struct TimelockLens.TokenData',\n components: [\n {name: 'decimals', type: 'uint8', internalType: 'uint8'},\n {name: 'symbol', type: 'string', internalType: 'string'},\n {name: 'name', type: 'string', internalType: 'string'},\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getUserOptions',\n inputs: [\n {\n name: 'market',\n type: 'address',\n internalType: 'contract TimelockOptionsMarket',\n },\n {name: 'user', type: 'address', internalType: 'address'},\n {name: 'startId', type: 'uint256', internalType: 'uint256'},\n {name: 'limit', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [\n {\n name: 'userOptions',\n type: 'tuple[]',\n internalType: 'struct TimelockLens.OptionData[]',\n components: [\n {\n name: 'optionId',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'startTick', type: 'int24', internalType: 'int24'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {\n name: 'strikePrice',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'positionSize',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'expiresAt', type: 'uint32', internalType: 'uint32'},\n {\n name: 'liquidities',\n type: 'uint128[]',\n internalType: 'uint128[]',\n },\n ],\n },\n {name: 'nextStartId', type: 'uint256', internalType: 'uint256'},\n {name: 'hasMore', type: 'bool', internalType: 'bool'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getVaultData',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n ],\n outputs: [\n {\n name: 'vaultData',\n type: 'tuple',\n internalType: 'struct TimelockLens.TimelockVaultData',\n components: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'poolKey',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\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 {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'lowestTick', type: 'int24', internalType: 'int24'},\n {name: 'highestTick', type: 'int24', internalType: 'int24'},\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getVaultTVL',\n inputs: [\n {\n name: 'vault',\n type: 'address',\n internalType: 'contract TimelockSingleOwnerVault',\n },\n ],\n outputs: [\n {name: 'total0', type: 'uint256', internalType: 'uint256'},\n {name: 'total1', type: 'uint256', internalType: 'uint256'},\n {name: 'borrowed0', type: 'uint256', internalType: 'uint256'},\n {name: 'borrowed1', type: 'uint256', internalType: 'uint256'},\n {name: 'tvlAs0', type: 'uint256', internalType: 'uint256'},\n {name: 'tvlAs1', type: 'uint256', internalType: 'uint256'},\n {name: 'blocksCount', type: 'uint256', internalType: 'uint256'},\n ],\n stateMutability: 'view',\n },\n] as const;\n","export const optionsMarketAbi = [\n {\n type: 'constructor',\n inputs: [\n {\n name: '_vault',\n type: 'address',\n internalType: 'contract ITimelockVault',\n },\n {\n name: '_optionPricing',\n type: 'address',\n internalType: 'contract IOptionPricing',\n },\n {\n name: '_feeStrategy',\n type: 'address',\n internalType: 'contract IFeeStrategy',\n },\n {\n name: '_guardian',\n type: 'address',\n internalType: 'contract TimelockGuardian',\n },\n {\n name: '_optionAssetIsToken0',\n type: 'bool',\n internalType: 'bool',\n },\n {name: '_owner', type: 'address', internalType: 'address'},\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'MAX_OPTION_STEPS',\n inputs: [],\n outputs: [{name: '', type: 'uint24', internalType: 'uint24'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'calculatePremium',\n inputs: [\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {\n name: 'optionAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {name: 'addedDuration', type: 'uint32', internalType: 'uint32'},\n {\n name: 'remainingDuration',\n type: 'uint32',\n internalType: 'uint32',\n },\n ],\n outputs: [\n {name: 'premium', type: 'uint256', internalType: 'uint256'},\n {name: 'protocolFee', type: 'uint256', internalType: 'uint256'},\n {name: 'feeRecipient', type: 'address', internalType: 'address'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'emergencyWithdraw',\n inputs: [\n {\n name: 'tokens',\n type: 'address[]',\n internalType: 'contract IERC20[]',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'exerciseOption',\n inputs: [\n {name: 'optionId', type: 'uint256', internalType: 'uint256'},\n {\n name: 'liquidities',\n type: 'uint128[]',\n internalType: 'uint128[]',\n },\n {name: 'minPayout', type: 'uint256', internalType: 'uint256'},\n {\n name: 'swapper',\n type: 'address',\n internalType: 'contract ISwapper',\n },\n {name: 'swapperData', type: 'bytes', internalType: 'bytes'},\n {name: 'refTick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [{name: 'payout', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'extendOption',\n inputs: [\n {name: 'optionId', type: 'uint256', internalType: 'uint256'},\n {name: 'addedDuration', type: 'uint32', internalType: 'uint32'},\n {name: 'maxPremium', type: 'uint256', internalType: 'uint256'},\n ],\n outputs: [\n {name: 'premium', type: 'uint256', internalType: 'uint256'},\n {name: 'protocolFee', type: 'uint256', internalType: 'uint256'},\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'feeStrategy',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'contract IFeeStrategy',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getOption',\n inputs: [{name: 'optionId', type: 'uint256', internalType: 'uint256'}],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct TimelockOptionsMarket.OptionData',\n components: [\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {name: 'expiresAt', type: 'uint32', internalType: 'uint32'},\n ],\n },\n {name: '', type: 'uint128[]', internalType: 'uint128[]'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionSize',\n inputs: [\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {\n name: 'liquidities',\n type: 'uint128[]',\n internalType: 'uint128[]',\n },\n ],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'guardian',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'contract TimelockGuardian',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxDuration',\n inputs: [],\n outputs: [{name: '', type: 'uint32', internalType: 'uint32'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'maxPositionSize',\n inputs: [],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'minDuration',\n inputs: [],\n outputs: [{name: '', type: 'uint32', internalType: 'uint32'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'minPositionSize',\n inputs: [],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mintOption',\n inputs: [\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'optionType', type: 'uint8', internalType: 'uint8'},\n {name: 'amount', type: 'uint256', internalType: 'uint256'},\n {name: 'strikeTick', type: 'int24', internalType: 'int24'},\n {name: 'duration', type: 'uint32', internalType: 'uint32'},\n {name: 'maxPremium', type: 'uint256', internalType: 'uint256'},\n {name: 'maxSteps', type: 'uint24', internalType: 'uint24'},\n {name: 'refTick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {name: 'optionId', type: 'uint256', internalType: 'uint256'},\n {name: 'finalAmount', type: 'uint256', internalType: 'uint256'},\n {name: 'premium', type: 'uint256', internalType: 'uint256'},\n {name: 'protocolFee', type: 'uint256', internalType: 'uint256'},\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'multicall',\n inputs: [{name: 'data', type: 'bytes[]', internalType: 'bytes[]'}],\n outputs: [{name: 'results', type: 'bytes[]', internalType: 'bytes[]'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'nextOptionId',\n inputs: [],\n outputs: [{name: '', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'operatorPerms',\n inputs: [\n {name: '', type: 'address', internalType: 'address'},\n {name: '', type: 'address', internalType: 'address'},\n ],\n outputs: [\n {name: 'canExtend', type: 'bool', internalType: 'bool'},\n {name: 'canExercise', type: 'bool', internalType: 'bool'},\n {name: 'canTransfer', type: 'bool', internalType: 'bool'},\n {name: 'canMint', type: 'bool', internalType: 'bool'},\n {\n name: 'spendingApproval',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'optionAsset',\n inputs: [],\n outputs: [{name: '', type: 'address', internalType: 'contract IERC20'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'optionAssetIsToken0',\n inputs: [],\n outputs: [{name: '', type: 'bool', internalType: 'bool'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'optionPricing',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'contract IOptionPricing',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{name: '', type: 'address', internalType: 'address'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'payoutAsset',\n inputs: [],\n outputs: [{name: '', type: 'address', internalType: 'contract IERC20'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'poolId',\n inputs: [],\n outputs: [{name: '', type: 'bytes32', internalType: 'PoolId'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'poolKey',\n inputs: [],\n outputs: [\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\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: 'renounceOwnership',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setOperatorPerms',\n inputs: [\n {name: 'operator', type: 'address', internalType: 'address'},\n {name: 'canExtend', type: 'bool', internalType: 'bool'},\n {name: 'canExercise', type: 'bool', internalType: 'bool'},\n {name: 'canTransfer', type: 'bool', internalType: 'bool'},\n {name: 'canMint', type: 'bool', internalType: 'bool'},\n {\n name: 'spendingApproval',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'tickSpacing',\n inputs: [],\n outputs: [{name: '', type: 'int24', internalType: 'int24'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'token0',\n inputs: [],\n outputs: [{name: '', type: 'address', internalType: 'contract IERC20'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'token1',\n inputs: [],\n outputs: [{name: '', type: 'address', internalType: 'contract IERC20'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transferOption',\n inputs: [\n {name: 'optionId', type: 'uint256', internalType: 'uint256'},\n {name: 'to', type: 'address', internalType: 'address'},\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferOwnership',\n inputs: [{name: 'newOwner', type: 'address', internalType: 'address'}],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unlockCallback',\n inputs: [{name: 'data', type: 'bytes', internalType: 'bytes'}],\n outputs: [{name: '', type: 'bytes', internalType: 'bytes'}],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateAddresses',\n inputs: [\n {\n name: '_optionPricing',\n type: 'address',\n internalType: 'contract IOptionPricing',\n },\n {\n name: '_feeStrategy',\n type: 'address',\n internalType: 'contract IFeeStrategy',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updatePositionBounds',\n inputs: [\n {name: '_minDuration', type: 'uint32', internalType: 'uint32'},\n {name: '_maxDuration', type: 'uint32', internalType: 'uint32'},\n {\n name: '_minPositionSize',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: '_maxPositionSize',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'vault',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'address',\n internalType: 'contract ITimelockVault',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'whitelistSwapper',\n inputs: [\n {\n name: 'swapper',\n type: 'address',\n internalType: 'contract ISwapper',\n },\n {name: 'whitelisted', type: 'bool', internalType: 'bool'},\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'event',\n name: 'EmergencyWithdraw',\n inputs: [\n {\n name: 'tokens',\n type: 'address[]',\n indexed: false,\n internalType: 'contract IERC20[]',\n },\n {\n name: 'balances',\n type: 'uint256[]',\n indexed: false,\n internalType: 'uint256[]',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ExerciseOption',\n inputs: [\n {\n name: 'optionId',\n type: 'uint256',\n indexed: true,\n internalType: 'uint256',\n },\n {\n name: 'liquidities',\n type: 'uint128[]',\n indexed: false,\n internalType: 'uint128[]',\n },\n {\n name: 'currentPrice',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'payout',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'ExtendOption',\n inputs: [\n {\n name: 'optionId',\n type: 'uint256',\n indexed: true,\n internalType: 'uint256',\n },\n {\n name: 'premium',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'protocolFee',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'currentPrice',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'addedDuration',\n type: 'uint32',\n indexed: false,\n internalType: 'uint32',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'MintOption',\n inputs: [\n {\n name: 'optionId',\n type: 'uint256',\n indexed: true,\n internalType: 'uint256',\n },\n {\n name: 'owner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'optionType',\n type: 'uint8',\n indexed: false,\n internalType: 'uint8',\n },\n {\n name: 'strikeTick',\n type: 'int24',\n indexed: false,\n internalType: 'int24',\n },\n {\n name: 'currentPrice',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'expiresAt',\n type: 'uint32',\n indexed: false,\n internalType: 'uint32',\n },\n {\n name: 'premium',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'protocolFee',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'liquidities',\n type: 'uint128[]',\n indexed: false,\n internalType: 'uint128[]',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'OwnershipTransferred',\n inputs: [\n {\n name: 'previousOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n {\n name: 'newOwner',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'TransferOption',\n inputs: [\n {\n name: 'optionId',\n type: 'uint256',\n indexed: true,\n internalType: 'uint256',\n },\n {\n name: 'to',\n type: 'address',\n indexed: true,\n internalType: 'address',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'UpdateAddresses',\n inputs: [\n {\n name: 'optionPricing',\n type: 'address',\n indexed: false,\n internalType: 'contract IOptionPricing',\n },\n {\n name: 'feeStrategy',\n type: 'address',\n indexed: false,\n internalType: 'contract IFeeStrategy',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'UpdateOperatorPerms',\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: 'canExtend',\n type: 'bool',\n indexed: false,\n internalType: 'bool',\n },\n {\n name: 'canExercise',\n type: 'bool',\n indexed: false,\n internalType: 'bool',\n },\n {\n name: 'canTransfer',\n type: 'bool',\n indexed: false,\n internalType: 'bool',\n },\n {\n name: 'canMint',\n type: 'bool',\n indexed: false,\n internalType: 'bool',\n },\n {\n name: 'spendingApproval',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'UpdatePositionBounds',\n inputs: [\n {\n name: 'minDuration',\n type: 'uint32',\n indexed: false,\n internalType: 'uint32',\n },\n {\n name: 'maxDuration',\n type: 'uint32',\n indexed: false,\n internalType: 'uint32',\n },\n {\n name: 'minPositionSize',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n {\n name: 'maxPositionSize',\n type: 'uint256',\n indexed: false,\n internalType: 'uint256',\n },\n ],\n anonymous: false,\n },\n {\n type: 'event',\n name: 'WhitelistSwapper',\n inputs: [\n {\n name: 'swapper',\n type: 'address',\n indexed: true,\n internalType: 'contract ISwapper',\n },\n {\n name: 'whitelisted',\n type: 'bool',\n indexed: false,\n internalType: 'bool',\n },\n ],\n anonymous: false,\n },\n {\n type: 'error',\n name: 'AddressEmptyCode',\n inputs: [{name: 'target', type: 'address', internalType: 'address'}],\n },\n {type: 'error', name: 'DurationTooHigh', inputs: []},\n {type: 'error', name: 'DurationTooLow', inputs: []},\n {type: 'error', name: 'FailedCall', inputs: []},\n {\n type: 'error',\n name: 'InsufficientLiquidity',\n inputs: [\n {\n name: 'remainingAmount',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n {type: 'error', name: 'InvalidAmount', inputs: []},\n {type: 'error', name: 'InvalidArrayLength', inputs: []},\n {type: 'error', name: 'InvalidDuration', inputs: []},\n {type: 'error', name: 'InvalidOptionType', inputs: []},\n {\n type: 'error',\n name: 'MInvalidTickRange',\n inputs: [\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n },\n {type: 'error', name: 'NotAuthorized', inputs: []},\n {type: 'error', name: 'NotEnoughLiquidity', inputs: []},\n {type: 'error', name: 'NotEnoughPayout', inputs: []},\n {type: 'error', name: 'OptionExpired', inputs: []},\n {type: 'error', name: 'OptionNotFound', inputs: []},\n {\n type: 'error',\n name: 'OwnableInvalidOwner',\n inputs: [{name: 'owner', type: 'address', internalType: 'address'}],\n },\n {\n type: 'error',\n name: 'OwnableUnauthorizedAccount',\n inputs: [{name: 'account', type: 'address', internalType: 'address'}],\n },\n {type: 'error', name: 'PoolNotSupported', inputs: []},\n {type: 'error', name: 'PositionSizeTooHigh', inputs: []},\n {type: 'error', name: 'PositionSizeTooLow', inputs: []},\n {type: 'error', name: 'PremiumTooHigh', inputs: []},\n {type: 'error', name: 'PriceTooLow', inputs: []},\n {type: 'error', name: 'ReentrancyGuardReentrantCall', inputs: []},\n {\n type: 'error',\n name: 'SafeERC20FailedOperation',\n inputs: [{name: 'token', type: 'address', internalType: 'address'}],\n },\n {\n type: 'error',\n name: 'SwapFailed',\n inputs: [\n {\n name: 'amountReceived',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'amountExpected',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n },\n {type: 'error', name: 'SwapperNotWhitelisted', inputs: []},\n {\n type: 'error',\n name: 'TooManySteps',\n inputs: [\n {name: 'steps', type: 'uint256', internalType: 'uint256'},\n {name: 'maxSteps', type: 'uint256', internalType: 'uint256'},\n ],\n },\n {type: 'error', name: 'TradingPaused', inputs: []},\n {type: 'error', name: 'UnauthorizedCaller', inputs: []},\n {type: 'error', name: 'WithdrawNotAllowed', inputs: []},\n {type: 'error', name: 'ZeroAddress', inputs: []},\n] as const;\n","export const statelessStateViewAbi = [\n {\n type: 'function',\n name: 'getFeeGrowthGlobals',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'feeGrowthGlobal0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthGlobal1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthGlobals',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [\n {\n name: 'feeGrowthGlobal0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthGlobal1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthInside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthInside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthInside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthInside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {name: 'salt', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {name: 'salt', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSlot0',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'sqrtPriceX96',\n type: 'uint160',\n internalType: 'uint160',\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n {name: 'protocolFee', type: 'uint24', internalType: 'uint24'},\n {name: 'lpFee', type: 'uint24', internalType: 'uint24'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSlot0FromId',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [\n {\n name: 'sqrtPriceX96',\n type: 'uint160',\n internalType: 'uint160',\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n {name: 'protocolFee', type: 'uint24', internalType: 'uint24'},\n {name: 'lpFee', type: 'uint24', internalType: 'uint24'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickBitmap',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int16', internalType: 'int16'},\n ],\n outputs: [{name: 'tickBitmap', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickBitmap',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int16', internalType: 'int16'},\n ],\n outputs: [{name: 'tickBitmap', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickFeeGrowthOutside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickFeeGrowthOutside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\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 {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n ],\n stateMutability: 'view',\n },\n] as const;\n"],"mappings":"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ACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACF;GACF,CACF;EACD,iBAAiB;EAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACd,YAAY;IACV;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACd,YAAY,CACV;MAAC,MAAM;MAAU,MAAM;MAAQ,cAAc;MAAO,EACpD;MACE,MAAM;MACN,MAAM;MACN,cAAc;MACf,CACF;KACF;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACd,YAAY,CACV;MAAC,MAAM;MAAU,MAAM;MAAQ,cAAc;MAAO,EACpD;MACE,MAAM;MACN,MAAM;MACN,cAAc;MACf,CACF;KACF;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACd,YAAY,CACV;MAAC,MAAM;MAAU,MAAM;MAAQ,cAAc;MAAO,EACpD;MACE,MAAM;MACN,MAAM;MACN,cAAc;MACf,CACF;KACF;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KAAC,MAAM;KAAiB,MAAM;KAAQ,cAAc;KAAO;IAC3D;KAAC,MAAM;KAAkB,MAAM;KAAQ,cAAc;KAAO;IAC7D;GACF,CACF;EACD,iBAAiB;EAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACf,EACD;GAAC,MAAM;GAAa,MAAM;GAAS,cAAc;GAAQ,CAC1D;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACf,EACD;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACf,CACF;EACD,iBAAiB;EAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACd,YAAY;IACV;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACd,YAAY;MACV;OACE,MAAM;OACN,MAAM;OACN,cAAc;OACf;MACD;OACE,MAAM;OACN,MAAM;OACN,cAAc;OACf;MACD;OAAC,MAAM;OAAO,MAAM;OAAU,cAAc;OAAS;MACrD;OACE,MAAM;OACN,MAAM;OACN,cAAc;OACf;MACD;OACE,MAAM;OACN,MAAM;OACN,cAAc;OACf;MACF;KACF;IACD;KAAC,MAAM;KAAU,MAAM;KAAW,cAAc;KAAS;IACzD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACF;GACF,CACF;EACD,iBAAiB;EAClB;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACf,CACF;EACD,SAAS,CACP;GACE,MAAM;GACN,MAAM;GACN,cAAc;GACd,YAAY;IACV;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KACE,MAAM;KACN,MAAM;KACN,cAAc;KACf;IACD;KAAC,MAAM;KAAS,MAAM;KAAW,cAAc;KAAU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AM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,EACD;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,CACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,EACD;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,CACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,EACD;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,CACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACD;IACE,MAAM;IACN,MAAM;IACN,SAAS;IACT,cAAc;IACf;GACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,EACD;GACE,MAAM;GACN,MAAM;GACN,SAAS;GACT,cAAc;GACf,CACF;EACD,WAAW;EACZ;CACD;EACE,MAAM;EACN,MAAM;EACN,QAAQ,CAAC;GAAC,MAAM;GAAU,MAAM;GAAW,cA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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optionUtils-CR8qGvTh.js","names":["erc20Abi","swappers: Record<number, Address>","timelockLenses: Record<number, Address>","timelockFactories: Record<number, Address>","swapRouters: Record<number, Address>","stateViews: Record<number, Address>","filled: PriceDataPoint[]","lastKnownPrice: PriceDataPoint | null","zero: Amount"],"sources":["../src/lib/contracts.ts","../src/lib/price.ts","../src/lib/liquidityUtils.ts","../src/lib/numberUtils.ts","../src/lib/optionUtils.ts"],"sourcesContent":["import type {Address, Client, PublicClient, GetContractReturnType} from 'viem';\nimport {getContract} from 'viem';\nimport {baseSepolia} from 'viem/chains';\n\nimport {erc20Abi} from '~/abis/erc20';\nimport {lensAbi} from '~/abis/lens';\nimport {optionsMarketAbi} from '~/abis/optionsMarket';\nimport {statelessStateViewAbi} from '~/abis/statelessStateView';\n\nexport type TimelockMarket = GetContractReturnType<\n typeof optionsMarketAbi,\n Client,\n Address\n>;\nexport type TimelockLens = GetContractReturnType<\n typeof lensAbi,\n Client,\n Address\n>;\n\nexport type TimelockMarketData = Awaited<\n ReturnType<TimelockLens['read']['getMarketData']>\n> & {address: Address};\n\nexport const getErc20 = (address: Address, client: Client) =>\n getContract({abi: erc20Abi, address, client});\n\nexport const getTimelockMarket = (\n address: Address,\n client: Client,\n): TimelockMarket => {\n return getContract({abi: optionsMarketAbi, address, client});\n};\n\nexport const getStateView = async (client: PublicClient, address?: Address) => {\n if (!address) {\n const chainId = await client.getChainId();\n address = stateViews[chainId];\n if (!address) throw new Error(`No state view found for ${chainId}`);\n }\n return getContract({abi: statelessStateViewAbi, address, client});\n};\n\nexport const getTimelockLens = async (\n client: PublicClient,\n address?: Address,\n) => {\n if (!address) {\n const chainId = await client.getChainId();\n address = timelockLenses[chainId];\n if (!address) throw new Error(`No timelock lens found for ${chainId}`);\n }\n return getContract({abi: lensAbi, address, client});\n};\n\nexport const swappers: Record<number, Address> = {\n [baseSepolia.id]: '0xA16412db5c1Fc7e81574077913f5760d6c368Bd9',\n};\nexport const timelockLenses: Record<number, Address> = {\n [baseSepolia.id]: '0x3B8edE9d261505134A5D8D8C853e158066D13e6d',\n};\nexport const timelockFactories: Record<number, Address> = {\n [baseSepolia.id]: '0xea78d1869f78e301A18ab064b4287563974ab977',\n};\nexport const swapRouters: Record<number, Address> = {\n [baseSepolia.id]: '0x1a005FE3C05F076983F0d66a5F80CB9C61561a5b',\n};\nexport const stateViews: Record<number, Address> = {\n [baseSepolia.id]: '0x06AF24d39b8cb2100958EAAF279707Bec11160C8',\n};\n","import type {Address} from 'viem';\n\nexport interface PriceData {\n currentPrice: number;\n percentChange: number;\n poolAddr: string;\n timestamp: number;\n}\n\nexport interface PriceDataPoint {\n timestamp: Date;\n price: number;\n}\n\nexport type PriceResolution = '1m' | '5m' | '15m' | '1h' | '4h' | '1d';\n\nconst getResolutionConfig = (resolution: PriceResolution) => {\n const resolutionMap = {\n '1m': {timeframe: 'minute', aggregate: '1', seconds: 60},\n '5m': {timeframe: 'minute', aggregate: '5', seconds: 300},\n '15m': {timeframe: 'minute', aggregate: '15', seconds: 900},\n '1h': {timeframe: 'hour', aggregate: '1', seconds: 3600},\n '4h': {timeframe: 'hour', aggregate: '4', seconds: 14400},\n '1d': {timeframe: 'day', aggregate: '1', seconds: 86400},\n };\n return resolutionMap[resolution];\n};\n\nconst fillGaps = (\n prices: PriceDataPoint[],\n start: Date,\n end: Date,\n intervalMs: number,\n): PriceDataPoint[] => {\n if (prices.length === 0) return [];\n\n const priceMap = new Map<number, PriceDataPoint>();\n\n for (const point of prices) {\n const alignedTime =\n Math.floor(point.timestamp.getTime() / intervalMs) * intervalMs;\n priceMap.set(alignedTime, point);\n }\n const filled: PriceDataPoint[] = [];\n\n const actualStart =\n Math.floor(prices[0].timestamp.getTime() / intervalMs) * intervalMs;\n\n let currentTime = actualStart;\n let lastKnownPrice: PriceDataPoint | null = null;\n\n while (currentTime <= end.getTime()) {\n const existing = priceMap.get(currentTime);\n\n if (existing) {\n filled.push(existing);\n lastKnownPrice = existing;\n } else if (lastKnownPrice) {\n filled.push({\n timestamp: new Date(currentTime),\n price: lastKnownPrice.price,\n });\n }\n currentTime += intervalMs;\n }\n return filled;\n};\n\nexport const getPriceHistory = async (\n pool: Address,\n token: 0 | 1,\n resolution: PriceResolution,\n start: Date,\n end: Date,\n): Promise<PriceDataPoint[]> => {\n const network = 'monad-testnet';\n const {timeframe, aggregate, seconds} = getResolutionConfig(resolution);\n\n if (end.getTime() > Date.now()) {\n end = new Date(Date.now());\n }\n const startSecs = Math.floor(start.getTime() / 1000);\n const endSecs = Math.floor(end.getTime() / 1000);\n const diffSeconds = endSecs - startSecs;\n\n const limit = Math.min(Math.ceil(diffSeconds / seconds), 1000);\n\n const url =\n `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${pool}/ohlcv/${timeframe}` +\n `?aggregate=${aggregate}` +\n `&limit=${limit}` +\n `&token=${token === 0 ? 'base' : 'quote'}` +\n '¤cy=usd' +\n `&before_timestamp=${endSecs}`;\n\n const res = await fetch(url, {headers: {Accept: 'application/json'}});\n\n if (!res.ok) {\n throw new Error(`Failed to fetch price history: ${res.statusText}`);\n }\n const data = (await res.json()) as {\n data: {\n attributes: {\n ohlcv_list: [number, number, number, number, number, number][];\n };\n };\n };\n const prices: PriceDataPoint[] = data.data.attributes.ohlcv_list\n .map(([timestamp, , , , close]) => ({\n timestamp: new Date(timestamp * 1000),\n price: close,\n }))\n .sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n\n return fillGaps(prices, start, end, seconds * 1000).filter(\n point =>\n point.timestamp.getTime() / 1000 >= startSecs &&\n point.timestamp.getTime() / 1000 <= endSecs,\n );\n};\n\nexport const getCurrentPrice = async (\n poolAddr: Address,\n tokenAddr: Address,\n): Promise<PriceData> => {\n const network = 'monad-testnet';\n const geckoUrl = `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${poolAddr.toLowerCase()}`;\n\n const response = await fetch(geckoUrl, {\n method: 'GET',\n headers: {Accept: 'application/json', 'User-Agent': 'TimelockTrade/1.0'},\n cache: 'no-store', // Keep no-store for real-time data\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch price data for pool ${poolAddr}`);\n }\n const data = (await response.json()) as {\n data: {\n attributes: {\n base_token_price_quote_token: string;\n quote_token_price_base_token: string;\n price_change_percentage: {h24: string};\n };\n relationships: {\n base_token: {data: {id: string; type: string}};\n quote_token: {data: {id: string; type: string}};\n };\n };\n };\n const pool = data.data.attributes;\n const relationships = data.data.relationships;\n\n const baseTokenAddr = relationships.base_token.data.id\n .split('_')[1]\n .toLowerCase();\n const quoteTokenAddr = relationships.quote_token.data.id\n .split('_')[1]\n .toLowerCase();\n\n const isBaseToken = tokenAddr.toLowerCase() === baseTokenAddr.toLowerCase();\n const isQuoteToken = tokenAddr.toLowerCase() === quoteTokenAddr.toLowerCase();\n\n if (!isBaseToken && !isQuoteToken) {\n throw new Error(`Token ${tokenAddr} is not part of pool ${poolAddr}`);\n }\n const price = isBaseToken\n ? pool.base_token_price_quote_token\n : pool.quote_token_price_base_token;\n const priceChange = pool.price_change_percentage?.h24;\n\n return {\n currentPrice: parseFloat(price || '0'),\n percentChange: parseFloat(priceChange || '0'),\n poolAddr: poolAddr,\n timestamp: Date.now(),\n };\n};\n","import {SqrtPriceMath, TickMath} from '@uniswap/v3-sdk';\nimport Big from 'big.js';\nimport JSBI from 'jsbi';\nimport type {Amount} from './numberUtils';\n\n// Set Big.js precision to handle 512-bit arithmetic\n// 155 decimal places provides ~515 bits of precision (log2(10^155) ≈ 515)\nBig.DP = 155; // Decimal places for division and sqrt operations\nBig.RM = Big.roundDown; // Round down to match Solidity's integer division behavior\n\nexport const PRICE_PRECISION = BigInt(2) ** BigInt(128);\n\nexport const getPriceAtSqrtPriceX96 = (sqrtPriceX96: bigint) => {\n const priceX192 = sqrtPriceX96 * sqrtPriceX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getSqrtPriceX96AtPrice = (price: bigint) => {\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(price.toString())\n .mul(2 ** 192)\n .div(PRICE_PRECISION.toString())\n .sqrt()\n .toFixed(0),\n );\n return sqrtPriceX96;\n};\n\nexport const getPriceAtTick = (tick: number) => {\n const sqrtRatioX96 = BigInt(TickMath.getSqrtRatioAtTick(tick).toString());\n\n const priceX192 = sqrtRatioX96 * sqrtRatioX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getTickAtPrice = (price: bigint) => {\n const priceX192 = (price * BigInt(2 ** 192)) / PRICE_PRECISION;\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(priceX192.toString()).sqrt().toFixed(0),\n );\n return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n};\n\nexport const getNearestValidStrikeTick = (\n optionType: 'CALL' | 'PUT',\n optionAssetIsToken0: boolean,\n tickSpacing: number,\n currentTick: number,\n strikeTick?: number,\n) => {\n strikeTick = roundTick(strikeTick ?? currentTick, tickSpacing);\n\n if (\n (optionType === 'CALL' && optionAssetIsToken0) ||\n (optionType === 'PUT' && !optionAssetIsToken0)\n ) {\n strikeTick += tickSpacing;\n }\n return strikeTick;\n};\n\nexport const roundTick = (tick: number, spacing: number) => {\n const rem = tick % spacing;\n if (rem >= 0) return tick - rem;\n return tick - rem - spacing;\n};\n\nexport const token0ToToken1 = (amount0: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0 = (amount1: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const token0ToToken1AtTick = (amount0: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0AtTick = (amount1: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const getAmountsFromLiquidity = (\n tickLower: number,\n tickUpper: number,\n liquidity: bigint,\n currentTick: number,\n): [bigint, bigint] => {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(currentTick);\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n let delta0 = JSBI.BigInt(0);\n let delta1 = JSBI.BigInt(0);\n\n if (currentTick < tickLower) {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else if (currentTick >= tickUpper) {\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n }\n return [BigInt(delta0.toString()), BigInt(delta1.toString())];\n};\n\nexport const liquiditiesToAmount0 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount0 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount0Delta = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(amount0Delta.toString());\n }\n return amount0;\n};\n\nexport const liquiditiesToAmount1 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount1 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount1Delta = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(amount1Delta.toString());\n }\n return amount1;\n};\n\nexport const liquiditiesToAmounts = (\n liquidities: bigint[],\n startTick: number,\n price: bigint,\n tickSpacing: number,\n) => {\n let amount0 = 0n;\n let amount1 = 0n;\n\n const sqrtRatioX96 = getSqrtPriceX96AtPrice(price);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n if (JSBI.lessThanOrEqual(sqrtRatioX96, sqrtRatioAX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n } else if (JSBI.lessThan(sqrtRatioX96, sqrtRatioBX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n amount1 += BigInt(delta1.toString());\n } else {\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(delta1.toString());\n }\n }\n return [amount0, amount1];\n};\n","import Big from 'big.js';\nimport {PRICE_PRECISION} from './liquidityUtils';\n\nexport type Amount = {\n scaled: bigint;\n unscaled: Big;\n scalingFactor: bigint;\n formatted: string;\n};\n\nexport const zero: Amount = {\n scaled: 0n,\n unscaled: Big(0),\n scalingFactor: BigInt(1e18),\n formatted: '0',\n};\n\nexport const wrapAmount = (scaled: bigint, decimals: number): Amount => {\n const scalingFactor = BigInt(Big(10).pow(decimals).toFixed(0));\n const unscaled = unscaleAmount(scaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const wrapAmountUnscaled = (\n unscaled: Big | number | string,\n decimals: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scalingFactor = BigInt(Big(10).pow(decimals).toFixed(0));\n const scaled = scaleAmount(unscaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const wrapPrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n): Amount => {\n const scalingFactor = BigInt(\n Big(PRICE_PRECISION.toString())\n .pow(2)\n .mul(Big(10).pow(decimals1))\n .div(Big(10).pow(decimals0))\n .toFixed(0),\n );\n const unscaled = unscalePrice(scaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const wrapPriceUnscaled = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scalingFactor = BigInt(\n Big(PRICE_PRECISION.toString())\n .pow(2)\n .mul(Big(10).pow(decimals1))\n .div(Big(10).pow(decimals0))\n .toFixed(0),\n );\n const scaled = scalePrice(unscaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const unscaleAmount = (scaled: bigint, decimals: number) => {\n return new Big(scaled.toString()).div(new Big(10).pow(decimals));\n};\n\nexport const scaleAmount = (\n unscaled: Big | number | string,\n decimals: number,\n) => {\n return BigInt(\n Big(unscaled).mul(new Big(10).pow(decimals)).round().toFixed(0),\n );\n};\n\nexport const unscalePrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n) => {\n return new Big(scaled.toString())\n .mul(new Big(10).pow(decimals0))\n .div(new Big(10).pow(decimals1))\n .div(PRICE_PRECISION.toString());\n};\n\nexport const scalePrice = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n precision = 18,\n) => {\n return BigInt(\n Big(unscaled)\n .mul(new Big(10).pow(precision))\n .mul(new Big(10).pow(decimals1))\n .div(new Big(10).pow(decimals0))\n .round()\n .toFixed(0),\n );\n};\n\nexport const formatAmount = (value?: Big | number | string) => {\n if (!value) return '-';\n value = new Big(value);\n\n if (value.gte(1e8)) return formatVagueAmount(value, 2);\n return formatCondensed(Big(value).toFixed(100));\n};\n\nexport const formatVagueAmount = (\n value: Big | number | bigint | string,\n fractionDigits = 2,\n) => {\n value = Number(value);\n if (value === 0) return '0';\n\n const formatted = value.toExponential(fractionDigits);\n return formatted.replace(/\\.?0+e/, 'e').replace(/e\\+/, 'e');\n};\n\nexport const formatCondensed = (\n input: string | number,\n decimals = 2,\n): string => {\n const str = (typeof input === 'number' ? input.toFixed(20) : input)\n .replace(/(\\.\\d*?)0+$/, '$1')\n .replace(/\\.$/, '');\n\n const [whole, decimal] = str.split('.');\n\n const formattedWhole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n if (!decimal) return formattedWhole;\n\n const leadingZeroMatch = decimal.match(/^(0{3,})/);\n\n if (leadingZeroMatch) {\n const zeroCount = leadingZeroMatch[1].length;\n const subscript = toSubscript(zeroCount.toString());\n const remaining = decimal.slice(zeroCount);\n\n const twoDigits = remaining.slice(0, decimals);\n return `${formattedWhole}.0${subscript}${twoDigits}`;\n } else {\n // No subscript needed, find first 2 significant digits\n const nonZeroStart = decimal.search(/[1-9]/); // Find first non-zero digit\n\n if (nonZeroStart === -1) {\n return formattedWhole; // All zeros\n }\n const significantPart = decimal.slice(nonZeroStart);\n const twoDigits = significantPart.slice(0, decimals);\n const leadingZeros = decimal.slice(0, nonZeroStart);\n\n return `${formattedWhole}.${leadingZeros}${twoDigits}`;\n }\n};\n\nconst toSubscript = (input: string) => {\n return input.replace(/[0-9]/g, m => '₀₁₂₃₄₅₆₇₈₉'[+m]);\n};\n\nexport const formatUSD = (value: Big | string | number): string => {\n return '$' + formatAmount(value);\n};\n","import type {OptionData} from '~/package/client';\nimport {\n getPriceAtTick,\n liquiditiesToAmounts,\n token0ToToken1,\n token1ToToken0,\n} from './liquidityUtils';\n\nexport const getPayoutAtTick = (\n option: OptionData,\n liquidities: bigint[],\n tick: number,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n return getPayoutAtPrice(\n option,\n liquidities,\n getPriceAtTick(tick),\n tickSpacing,\n optionAssetIsToken0,\n );\n};\n\nexport const getPayoutAtPrice = (\n option: OptionData,\n liquidities: bigint[],\n price: bigint,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n const [borrowedAmount0, borrowedAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n option.entryPrice,\n tickSpacing,\n );\n const [repayAmount0, repayAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n price,\n tickSpacing,\n );\n const totalAmount = optionAssetIsToken0\n ? borrowedAmount1 + token0ToToken1(borrowedAmount0, price)\n : borrowedAmount0 + token1ToToken0(borrowedAmount1, price);\n\n const repayAmount = optionAssetIsToken0\n ? repayAmount1 + token0ToToken1(repayAmount0, price)\n : repayAmount0 + token1ToToken0(repayAmount1, price);\n\n const delta = totalAmount - repayAmount;\n const payout = delta < 0n ? 0n : delta;\n\n return payout;\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optionUtils-DerSn_Ua.cjs","names":["erc20Abi","optionsMarketAbi","statelessStateViewAbi","lensAbi","swappers: Record<number, Address>","baseSepolia","timelockLenses: Record<number, Address>","timelockFactories: Record<number, Address>","swapRouters: Record<number, Address>","stateViews: Record<number, Address>","filled: PriceDataPoint[]","lastKnownPrice: PriceDataPoint | null","Big","JSBI","TickMath","SqrtPriceMath","zero: Amount","Big"],"sources":["../src/lib/contracts.ts","../src/lib/price.ts","../src/lib/liquidityUtils.ts","../src/lib/numberUtils.ts","../src/lib/optionUtils.ts"],"sourcesContent":["import type {Address, Client, PublicClient, GetContractReturnType} from 'viem';\nimport {getContract} from 'viem';\nimport {baseSepolia} from 'viem/chains';\n\nimport {erc20Abi} from '~/abis/erc20';\nimport {lensAbi} from '~/abis/lens';\nimport {optionsMarketAbi} from '~/abis/optionsMarket';\nimport {statelessStateViewAbi} from '~/abis/statelessStateView';\n\nexport type TimelockMarket = GetContractReturnType<\n typeof optionsMarketAbi,\n Client,\n Address\n>;\nexport type TimelockLens = GetContractReturnType<\n typeof lensAbi,\n Client,\n Address\n>;\n\nexport type TimelockMarketData = Awaited<\n ReturnType<TimelockLens['read']['getMarketData']>\n> & {address: Address};\n\nexport const getErc20 = (address: Address, client: Client) =>\n getContract({abi: erc20Abi, address, client});\n\nexport const getTimelockMarket = (\n address: Address,\n client: Client,\n): TimelockMarket => {\n return getContract({abi: optionsMarketAbi, address, client});\n};\n\nexport const getStateView = async (client: PublicClient, address?: Address) => {\n if (!address) {\n const chainId = await client.getChainId();\n address = stateViews[chainId];\n if (!address) throw new Error(`No state view found for ${chainId}`);\n }\n return getContract({abi: statelessStateViewAbi, address, client});\n};\n\nexport const getTimelockLens = async (\n client: PublicClient,\n address?: Address,\n) => {\n if (!address) {\n const chainId = await client.getChainId();\n address = timelockLenses[chainId];\n if (!address) throw new Error(`No timelock lens found for ${chainId}`);\n }\n return getContract({abi: lensAbi, address, client});\n};\n\nexport const swappers: Record<number, Address> = {\n [baseSepolia.id]: '0xA16412db5c1Fc7e81574077913f5760d6c368Bd9',\n};\nexport const timelockLenses: Record<number, Address> = {\n [baseSepolia.id]: '0x3B8edE9d261505134A5D8D8C853e158066D13e6d',\n};\nexport const timelockFactories: Record<number, Address> = {\n [baseSepolia.id]: '0xea78d1869f78e301A18ab064b4287563974ab977',\n};\nexport const swapRouters: Record<number, Address> = {\n [baseSepolia.id]: '0x1a005FE3C05F076983F0d66a5F80CB9C61561a5b',\n};\nexport const stateViews: Record<number, Address> = {\n [baseSepolia.id]: '0x06AF24d39b8cb2100958EAAF279707Bec11160C8',\n};\n","import type {Address} from 'viem';\n\nexport interface PriceData {\n currentPrice: number;\n percentChange: number;\n poolAddr: string;\n timestamp: number;\n}\n\nexport interface PriceDataPoint {\n timestamp: Date;\n price: number;\n}\n\nexport type PriceResolution = '1m' | '5m' | '15m' | '1h' | '4h' | '1d';\n\nconst getResolutionConfig = (resolution: PriceResolution) => {\n const resolutionMap = {\n '1m': {timeframe: 'minute', aggregate: '1', seconds: 60},\n '5m': {timeframe: 'minute', aggregate: '5', seconds: 300},\n '15m': {timeframe: 'minute', aggregate: '15', seconds: 900},\n '1h': {timeframe: 'hour', aggregate: '1', seconds: 3600},\n '4h': {timeframe: 'hour', aggregate: '4', seconds: 14400},\n '1d': {timeframe: 'day', aggregate: '1', seconds: 86400},\n };\n return resolutionMap[resolution];\n};\n\nconst fillGaps = (\n prices: PriceDataPoint[],\n start: Date,\n end: Date,\n intervalMs: number,\n): PriceDataPoint[] => {\n if (prices.length === 0) return [];\n\n const priceMap = new Map<number, PriceDataPoint>();\n\n for (const point of prices) {\n const alignedTime =\n Math.floor(point.timestamp.getTime() / intervalMs) * intervalMs;\n priceMap.set(alignedTime, point);\n }\n const filled: PriceDataPoint[] = [];\n\n const actualStart =\n Math.floor(prices[0].timestamp.getTime() / intervalMs) * intervalMs;\n\n let currentTime = actualStart;\n let lastKnownPrice: PriceDataPoint | null = null;\n\n while (currentTime <= end.getTime()) {\n const existing = priceMap.get(currentTime);\n\n if (existing) {\n filled.push(existing);\n lastKnownPrice = existing;\n } else if (lastKnownPrice) {\n filled.push({\n timestamp: new Date(currentTime),\n price: lastKnownPrice.price,\n });\n }\n currentTime += intervalMs;\n }\n return filled;\n};\n\nexport const getPriceHistory = async (\n pool: Address,\n token: 0 | 1,\n resolution: PriceResolution,\n start: Date,\n end: Date,\n): Promise<PriceDataPoint[]> => {\n const network = 'monad-testnet';\n const {timeframe, aggregate, seconds} = getResolutionConfig(resolution);\n\n if (end.getTime() > Date.now()) {\n end = new Date(Date.now());\n }\n const startSecs = Math.floor(start.getTime() / 1000);\n const endSecs = Math.floor(end.getTime() / 1000);\n const diffSeconds = endSecs - startSecs;\n\n const limit = Math.min(Math.ceil(diffSeconds / seconds), 1000);\n\n const url =\n `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${pool}/ohlcv/${timeframe}` +\n `?aggregate=${aggregate}` +\n `&limit=${limit}` +\n `&token=${token === 0 ? 'base' : 'quote'}` +\n '¤cy=usd' +\n `&before_timestamp=${endSecs}`;\n\n const res = await fetch(url, {headers: {Accept: 'application/json'}});\n\n if (!res.ok) {\n throw new Error(`Failed to fetch price history: ${res.statusText}`);\n }\n const data = (await res.json()) as {\n data: {\n attributes: {\n ohlcv_list: [number, number, number, number, number, number][];\n };\n };\n };\n const prices: PriceDataPoint[] = data.data.attributes.ohlcv_list\n .map(([timestamp, , , , close]) => ({\n timestamp: new Date(timestamp * 1000),\n price: close,\n }))\n .sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n\n return fillGaps(prices, start, end, seconds * 1000).filter(\n point =>\n point.timestamp.getTime() / 1000 >= startSecs &&\n point.timestamp.getTime() / 1000 <= endSecs,\n );\n};\n\nexport const getCurrentPrice = async (\n poolAddr: Address,\n tokenAddr: Address,\n): Promise<PriceData> => {\n const network = 'monad-testnet';\n const geckoUrl = `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${poolAddr.toLowerCase()}`;\n\n const response = await fetch(geckoUrl, {\n method: 'GET',\n headers: {Accept: 'application/json', 'User-Agent': 'TimelockTrade/1.0'},\n cache: 'no-store', // Keep no-store for real-time data\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch price data for pool ${poolAddr}`);\n }\n const data = (await response.json()) as {\n data: {\n attributes: {\n base_token_price_quote_token: string;\n quote_token_price_base_token: string;\n price_change_percentage: {h24: string};\n };\n relationships: {\n base_token: {data: {id: string; type: string}};\n quote_token: {data: {id: string; type: string}};\n };\n };\n };\n const pool = data.data.attributes;\n const relationships = data.data.relationships;\n\n const baseTokenAddr = relationships.base_token.data.id\n .split('_')[1]\n .toLowerCase();\n const quoteTokenAddr = relationships.quote_token.data.id\n .split('_')[1]\n .toLowerCase();\n\n const isBaseToken = tokenAddr.toLowerCase() === baseTokenAddr.toLowerCase();\n const isQuoteToken = tokenAddr.toLowerCase() === quoteTokenAddr.toLowerCase();\n\n if (!isBaseToken && !isQuoteToken) {\n throw new Error(`Token ${tokenAddr} is not part of pool ${poolAddr}`);\n }\n const price = isBaseToken\n ? pool.base_token_price_quote_token\n : pool.quote_token_price_base_token;\n const priceChange = pool.price_change_percentage?.h24;\n\n return {\n currentPrice: parseFloat(price || '0'),\n percentChange: parseFloat(priceChange || '0'),\n poolAddr: poolAddr,\n timestamp: Date.now(),\n };\n};\n","import {SqrtPriceMath, TickMath} from '@uniswap/v3-sdk';\nimport Big from 'big.js';\nimport JSBI from 'jsbi';\nimport type {Amount} from './numberUtils';\n\n// Set Big.js precision to handle 512-bit arithmetic\n// 155 decimal places provides ~515 bits of precision (log2(10^155) ≈ 515)\nBig.DP = 155; // Decimal places for division and sqrt operations\nBig.RM = Big.roundDown; // Round down to match Solidity's integer division behavior\n\nexport const PRICE_PRECISION = BigInt(2) ** BigInt(128);\n\nexport const getPriceAtSqrtPriceX96 = (sqrtPriceX96: bigint) => {\n const priceX192 = sqrtPriceX96 * sqrtPriceX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getSqrtPriceX96AtPrice = (price: bigint) => {\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(price.toString())\n .mul(2 ** 192)\n .div(PRICE_PRECISION.toString())\n .sqrt()\n .toFixed(0),\n );\n return sqrtPriceX96;\n};\n\nexport const getPriceAtTick = (tick: number) => {\n const sqrtRatioX96 = BigInt(TickMath.getSqrtRatioAtTick(tick).toString());\n\n const priceX192 = sqrtRatioX96 * sqrtRatioX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getTickAtPrice = (price: bigint) => {\n const priceX192 = (price * BigInt(2 ** 192)) / PRICE_PRECISION;\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(priceX192.toString()).sqrt().toFixed(0),\n );\n return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n};\n\nexport const getNearestValidStrikeTick = (\n optionType: 'CALL' | 'PUT',\n optionAssetIsToken0: boolean,\n tickSpacing: number,\n currentTick: number,\n strikeTick?: number,\n) => {\n strikeTick = roundTick(strikeTick ?? currentTick, tickSpacing);\n\n if (\n (optionType === 'CALL' && optionAssetIsToken0) ||\n (optionType === 'PUT' && !optionAssetIsToken0)\n ) {\n strikeTick += tickSpacing;\n }\n return strikeTick;\n};\n\nexport const roundTick = (tick: number, spacing: number) => {\n const rem = tick % spacing;\n if (rem >= 0) return tick - rem;\n return tick - rem - spacing;\n};\n\nexport const token0ToToken1 = (amount0: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0 = (amount1: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const token0ToToken1AtTick = (amount0: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0AtTick = (amount1: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const getAmountsFromLiquidity = (\n tickLower: number,\n tickUpper: number,\n liquidity: bigint,\n currentTick: number,\n): [bigint, bigint] => {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(currentTick);\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n let delta0 = JSBI.BigInt(0);\n let delta1 = JSBI.BigInt(0);\n\n if (currentTick < tickLower) {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else if (currentTick >= tickUpper) {\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n }\n return [BigInt(delta0.toString()), BigInt(delta1.toString())];\n};\n\nexport const liquiditiesToAmount0 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount0 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount0Delta = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(amount0Delta.toString());\n }\n return amount0;\n};\n\nexport const liquiditiesToAmount1 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount1 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount1Delta = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(amount1Delta.toString());\n }\n return amount1;\n};\n\nexport const liquiditiesToAmounts = (\n liquidities: bigint[],\n startTick: number,\n price: bigint,\n tickSpacing: number,\n) => {\n let amount0 = 0n;\n let amount1 = 0n;\n\n const sqrtRatioX96 = getSqrtPriceX96AtPrice(price);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n if (JSBI.lessThanOrEqual(sqrtRatioX96, sqrtRatioAX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n } else if (JSBI.lessThan(sqrtRatioX96, sqrtRatioBX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n amount1 += BigInt(delta1.toString());\n } else {\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(delta1.toString());\n }\n }\n return [amount0, amount1];\n};\n","import Big from 'big.js';\nimport {PRICE_PRECISION} from './liquidityUtils';\n\nexport type Amount = {\n scaled: bigint;\n unscaled: Big;\n scalingFactor: bigint;\n formatted: string;\n};\n\nexport const zero: Amount = {\n scaled: 0n,\n unscaled: Big(0),\n scalingFactor: BigInt(1e18),\n formatted: '0',\n};\n\nexport const wrapAmount = (scaled: bigint, decimals: number): Amount => {\n const scalingFactor = BigInt(Big(10).pow(decimals).toFixed(0));\n const unscaled = unscaleAmount(scaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const wrapAmountUnscaled = (\n unscaled: Big | number | string,\n decimals: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scalingFactor = BigInt(Big(10).pow(decimals).toFixed(0));\n const scaled = scaleAmount(unscaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const wrapPrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n): Amount => {\n const scalingFactor = BigInt(\n Big(PRICE_PRECISION.toString())\n .pow(2)\n .mul(Big(10).pow(decimals1))\n .div(Big(10).pow(decimals0))\n .toFixed(0),\n );\n const unscaled = unscalePrice(scaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const wrapPriceUnscaled = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scalingFactor = BigInt(\n Big(PRICE_PRECISION.toString())\n .pow(2)\n .mul(Big(10).pow(decimals1))\n .div(Big(10).pow(decimals0))\n .toFixed(0),\n );\n const scaled = scalePrice(unscaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, scalingFactor, formatted};\n};\n\nexport const unscaleAmount = (scaled: bigint, decimals: number) => {\n return new Big(scaled.toString()).div(new Big(10).pow(decimals));\n};\n\nexport const scaleAmount = (\n unscaled: Big | number | string,\n decimals: number,\n) => {\n return BigInt(\n Big(unscaled).mul(new Big(10).pow(decimals)).round().toFixed(0),\n );\n};\n\nexport const unscalePrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n) => {\n return new Big(scaled.toString())\n .mul(new Big(10).pow(decimals0))\n .div(new Big(10).pow(decimals1))\n .div(PRICE_PRECISION.toString());\n};\n\nexport const scalePrice = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n precision = 18,\n) => {\n return BigInt(\n Big(unscaled)\n .mul(new Big(10).pow(precision))\n .mul(new Big(10).pow(decimals1))\n .div(new Big(10).pow(decimals0))\n .round()\n .toFixed(0),\n );\n};\n\nexport const formatAmount = (value?: Big | number | string) => {\n if (!value) return '-';\n value = new Big(value);\n\n if (value.gte(1e8)) return formatVagueAmount(value, 2);\n return formatCondensed(Big(value).toFixed(100));\n};\n\nexport const formatVagueAmount = (\n value: Big | number | bigint | string,\n fractionDigits = 2,\n) => {\n value = Number(value);\n if (value === 0) return '0';\n\n const formatted = value.toExponential(fractionDigits);\n return formatted.replace(/\\.?0+e/, 'e').replace(/e\\+/, 'e');\n};\n\nexport const formatCondensed = (\n input: string | number,\n decimals = 2,\n): string => {\n const str = (typeof input === 'number' ? input.toFixed(20) : input)\n .replace(/(\\.\\d*?)0+$/, '$1')\n .replace(/\\.$/, '');\n\n const [whole, decimal] = str.split('.');\n\n const formattedWhole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n if (!decimal) return formattedWhole;\n\n const leadingZeroMatch = decimal.match(/^(0{3,})/);\n\n if (leadingZeroMatch) {\n const zeroCount = leadingZeroMatch[1].length;\n const subscript = toSubscript(zeroCount.toString());\n const remaining = decimal.slice(zeroCount);\n\n const twoDigits = remaining.slice(0, decimals);\n return `${formattedWhole}.0${subscript}${twoDigits}`;\n } else {\n // No subscript needed, find first 2 significant digits\n const nonZeroStart = decimal.search(/[1-9]/); // Find first non-zero digit\n\n if (nonZeroStart === -1) {\n return formattedWhole; // All zeros\n }\n const significantPart = decimal.slice(nonZeroStart);\n const twoDigits = significantPart.slice(0, decimals);\n const leadingZeros = decimal.slice(0, nonZeroStart);\n\n return `${formattedWhole}.${leadingZeros}${twoDigits}`;\n }\n};\n\nconst toSubscript = (input: string) => {\n return input.replace(/[0-9]/g, m => '₀₁₂₃₄₅₆₇₈₉'[+m]);\n};\n\nexport const formatUSD = (value: Big | string | number): string => {\n return '$' + formatAmount(value);\n};\n","import type {OptionData} from '~/package/client';\nimport {\n getPriceAtTick,\n liquiditiesToAmounts,\n token0ToToken1,\n token1ToToken0,\n} from './liquidityUtils';\n\nexport const getPayoutAtTick = (\n option: OptionData,\n liquidities: bigint[],\n tick: number,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n return getPayoutAtPrice(\n option,\n liquidities,\n getPriceAtTick(tick),\n tickSpacing,\n optionAssetIsToken0,\n );\n};\n\nexport const getPayoutAtPrice = (\n option: OptionData,\n liquidities: bigint[],\n price: bigint,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n const [borrowedAmount0, borrowedAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n option.entryPrice,\n tickSpacing,\n );\n const [repayAmount0, repayAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n price,\n tickSpacing,\n );\n const totalAmount = optionAssetIsToken0\n ? borrowedAmount1 + token0ToToken1(borrowedAmount0, price)\n : borrowedAmount0 + token1ToToken0(borrowedAmount1, price);\n\n const repayAmount = optionAssetIsToken0\n ? repayAmount1 + token0ToToken1(repayAmount0, price)\n : repayAmount0 + token1ToToken0(repayAmount1, price);\n\n const delta = totalAmount - repayAmount;\n const payout = delta < 0n ? 0n : delta;\n\n return payout;\n};\n"],"mappings":"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"}
|