timelock-sdk 0.0.1 → 0.0.2
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/package.cjs +3 -3
- package/dist/package.cjs.map +1 -1
- package/dist/package.d.cts +855 -149
- package/dist/package.d.ts +881 -175
- package/dist/package.js +4 -4
- package/dist/package.js.map +1 -1
- package/package.json +1 -1
package/dist/package.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createContext as e,useContext as t,useMemo as n}from"react";import{useAccount as r,useChainId as i,useClient as a,useReadContract as o,useWaitForTransactionReceipt as s,useWriteContract as c}from"wagmi";import{GraphQLClient as l}from"graphql-request";import{encodeFunctionData as u,erc20Abi as d,getContract as f,maxUint256 as p}from"viem";import{monadTestnet as m}from"viem/chains";import h from"graphql-tag";import{waitForTransactionReceipt as g}from"viem/actions";import _ from"big.js";import{useQuery as v}from"@tanstack/react-query";import{SqrtPriceMath as y,TickMath as b}from"@uniswap/v3-sdk";import x from"jsbi";const S=[{type:`constructor`,inputs:[{name:`name_`,type:`string`,internalType:`string`},{name:`symbol_`,type:`string`,internalType:`string`}],stateMutability:`nonpayable`},{type:`function`,name:`allowance`,inputs:[{name:`owner`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`approve`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`balanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`decimals`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`decreaseAllowance`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`subtractedValue`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`increaseAllowance`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`addedValue`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`name`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`symbol`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`totalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`transfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`event`,name:`Approval`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`spender`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Transfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1}],C=[{type:`function`,name:`burn`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`amount`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`collect`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`amount0Requested`,type:`uint128`,internalType:`uint128`},{name:`amount1Requested`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint128`,internalType:`uint128`},{name:`amount1`,type:`uint128`,internalType:`uint128`}],stateMutability:`nonpayable`},{type:`function`,name:`collectProtocol`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`amount0Requested`,type:`uint128`,internalType:`uint128`},{name:`amount1Requested`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint128`,internalType:`uint128`},{name:`amount1`,type:`uint128`,internalType:`uint128`}],stateMutability:`nonpayable`},{type:`function`,name:`factory`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`fee`,inputs:[],outputs:[{name:``,type:`uint24`,internalType:`uint24`}],stateMutability:`view`},{type:`function`,name:`feeGrowthGlobal0X128`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`feeGrowthGlobal1X128`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`flash`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`increaseObservationCardinalityNext`,inputs:[{name:`observationCardinalityNext`,type:`uint16`,internalType:`uint16`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`initialize`,inputs:[{name:`sqrtPriceX96`,type:`uint160`,internalType:`uint160`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`liquidity`,inputs:[],outputs:[{name:``,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`maxLiquidityPerTick`,inputs:[],outputs:[{name:``,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`mint`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`amount`,type:`uint128`,internalType:`uint128`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`observations`,inputs:[{name:`index`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`blockTimestamp`,type:`uint32`,internalType:`uint32`},{name:`tickCumulative`,type:`int56`,internalType:`int56`},{name:`secondsPerLiquidityCumulativeX128`,type:`uint160`,internalType:`uint160`},{name:`initialized`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`observe`,inputs:[{name:`secondsAgos`,type:`uint32[]`,internalType:`uint32[]`}],outputs:[{name:`tickCumulatives`,type:`int56[]`,internalType:`int56[]`},{name:`secondsPerLiquidityCumulativeX128s`,type:`uint160[]`,internalType:`uint160[]`}],stateMutability:`view`},{type:`function`,name:`positions`,inputs:[{name:`key`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`feeGrowthInside0LastX128`,type:`uint256`,internalType:`uint256`},{name:`feeGrowthInside1LastX128`,type:`uint256`,internalType:`uint256`},{name:`tokensOwed0`,type:`uint128`,internalType:`uint128`},{name:`tokensOwed1`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`protocolFees`,inputs:[],outputs:[{name:`token0`,type:`uint128`,internalType:`uint128`},{name:`token1`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`setFeeProtocol`,inputs:[{name:`feeProtocol0`,type:`uint8`,internalType:`uint8`},{name:`feeProtocol1`,type:`uint8`,internalType:`uint8`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`slot0`,inputs:[],outputs:[{name:`sqrtPriceX96`,type:`uint160`,internalType:`uint160`},{name:`tick`,type:`int24`,internalType:`int24`},{name:`observationIndex`,type:`uint16`,internalType:`uint16`},{name:`observationCardinality`,type:`uint16`,internalType:`uint16`},{name:`observationCardinalityNext`,type:`uint16`,internalType:`uint16`},{name:`feeProtocol`,type:`uint8`,internalType:`uint8`},{name:`unlocked`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`snapshotCumulativesInside`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}],outputs:[{name:`tickCumulativeInside`,type:`int56`,internalType:`int56`},{name:`secondsPerLiquidityInsideX128`,type:`uint160`,internalType:`uint160`},{name:`secondsInside`,type:`uint32`,internalType:`uint32`}],stateMutability:`view`},{type:`function`,name:`swap`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`zeroForOne`,type:`bool`,internalType:`bool`},{name:`amountSpecified`,type:`int256`,internalType:`int256`},{name:`sqrtPriceLimitX96`,type:`uint160`,internalType:`uint160`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`amount0`,type:`int256`,internalType:`int256`},{name:`amount1`,type:`int256`,internalType:`int256`}],stateMutability:`nonpayable`},{type:`function`,name:`tickBitmap`,inputs:[{name:`wordPosition`,type:`int16`,internalType:`int16`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`tickSpacing`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`ticks`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`}],outputs:[{name:`liquidityGross`,type:`uint128`,internalType:`uint128`},{name:`liquidityNet`,type:`int128`,internalType:`int128`},{name:`feeGrowthOutside0X128`,type:`uint256`,internalType:`uint256`},{name:`feeGrowthOutside1X128`,type:`uint256`,internalType:`uint256`},{name:`tickCumulativeOutside`,type:`int56`,internalType:`int56`},{name:`secondsPerLiquidityOutsideX128`,type:`uint160`,internalType:`uint160`},{name:`secondsOutside`,type:`uint32`,internalType:`uint32`},{name:`initialized`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`token0`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`token1`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`event`,name:`Burn`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!0,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!0,internalType:`int24`},{name:`amount`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Collect`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!0,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!0,internalType:`int24`},{name:`amount0`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount1`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`CollectProtocol`,inputs:[{name:`sender`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!0,internalType:`address`},{name:`amount0`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount1`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`Flash`,inputs:[{name:`sender`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!0,internalType:`address`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`paid0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`paid1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`IncreaseObservationCardinalityNext`,inputs:[{name:`observationCardinalityNextOld`,type:`uint16`,indexed:!1,internalType:`uint16`},{name:`observationCardinalityNextNew`,type:`uint16`,indexed:!1,internalType:`uint16`}],anonymous:!1},{type:`event`,name:`Initialize`,inputs:[{name:`sqrtPriceX96`,type:`uint160`,indexed:!1,internalType:`uint160`},{name:`tick`,type:`int24`,indexed:!1,internalType:`int24`}],anonymous:!1},{type:`event`,name:`Mint`,inputs:[{name:`sender`,type:`address`,indexed:!1,internalType:`address`},{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!0,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!0,internalType:`int24`},{name:`amount`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`SetFeeProtocol`,inputs:[{name:`feeProtocol0Old`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`feeProtocol1Old`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`feeProtocol0New`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`feeProtocol1New`,type:`uint8`,indexed:!1,internalType:`uint8`}],anonymous:!1},{type:`event`,name:`Swap`,inputs:[{name:`sender`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!0,internalType:`address`},{name:`amount0`,type:`int256`,indexed:!1,internalType:`int256`},{name:`amount1`,type:`int256`,indexed:!1,internalType:`int256`},{name:`sqrtPriceX96`,type:`uint160`,indexed:!1,internalType:`uint160`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`tick`,type:`int24`,indexed:!1,internalType:`int24`}],anonymous:!1},{type:`error`,name:`AI`,inputs:[]},{type:`error`,name:`AS`,inputs:[]},{type:`error`,name:`F0`,inputs:[]},{type:`error`,name:`F1`,inputs:[]},{type:`error`,name:`IIA`,inputs:[]},{type:`error`,name:`L`,inputs:[]},{type:`error`,name:`LOK`,inputs:[]},{type:`error`,name:`M0`,inputs:[]},{type:`error`,name:`M1`,inputs:[]},{type:`error`,name:`TLM`,inputs:[]},{type:`error`,name:`TLU`,inputs:[]},{type:`error`,name:`TUM`,inputs:[]}],w=[{type:`function`,name:`batchGetAmount0ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmount0ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmount1ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmount1ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmountsForLiquidity`,inputs:[{name:`sqrtRatioX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmountsForLiquidityTicks`,inputs:[{name:`tick`,type:`int24[]`,internalType:`int24[]`},{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount0`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount0Ticks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount1`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount1Ticks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmounts`,inputs:[{name:`sqrtRatioX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmountsTicks`,inputs:[{name:`tick`,type:`int24[]`,internalType:`int24[]`},{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetPriceAtTick`,inputs:[{name:`ticks`,type:`int24[]`,internalType:`int24[]`}],outputs:[{name:`prices`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`getAmount0ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmount0ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmount1ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmount1ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmountsForLiquidity`,inputs:[{name:`sqrtRatioX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmountsForLiquidityTicks`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`},{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount0`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`amount0`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount0Ticks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`amount0`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount1`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount1Ticks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmounts`,inputs:[{name:`sqrtRatioX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmountsTicks`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`},{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getPriceAtTick`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`}],T=[{type:`function`,name:`batchGetRefTick`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockSingleOwnerVault`},{name:`tickLower`,type:`int24[]`,internalType:`int24[]`}],outputs:[{name:`refTicks`,type:`int24[]`,internalType:`int24[]`}],stateMutability:`view`},{type:`function`,name:`getAllBlocks`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockVaultCore`}],outputs:[{name:`blocks`,type:`tuple[]`,internalType:`struct TimelockLens.LiquidityBlockData[]`,components:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`prevTickLower`,type:`int24`,internalType:`int24`},{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`},{name:`totalAmount0`,type:`uint256`,internalType:`uint256`},{name:`totalAmount1`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount0`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount1`,type:`uint256`,internalType:`uint256`}]}],stateMutability:`view`},{type:`function`,name:`getExpiredOptions`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`startId`,type:`uint256`,internalType:`uint256`},{name:`limit`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`expiredOptions`,type:`tuple[]`,internalType:`struct TimelockLens.OptionData[]`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]},{name:`nextStartId`,type:`uint256`,internalType:`uint256`},{name:`hasMore`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`getLiquidityAtTick`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockSingleOwnerVault`},{name:`tickLower`,type:`int24`,internalType:`int24`}],outputs:[{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`getMarketData`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`}],outputs:[{name:`marketData`,type:`tuple`,internalType:`struct TimelockLens.TimelockMarketData`,components:[{name:`optionAssetIsToken0`,type:`bool`,internalType:`bool`},{name:`vault`,type:`address`,internalType:`contract ITimelockVault`},{name:`pool`,type:`address`,internalType:`contract IUniswapV3Pool`},{name:`optionAsset`,type:`address`,internalType:`address`},{name:`payoutAsset`,type:`address`,internalType:`address`},{name:`optionAssetDecimals`,type:`uint8`,internalType:`uint8`},{name:`payoutAssetDecimals`,type:`uint8`,internalType:`uint8`},{name:`optionAssetSymbol`,type:`string`,internalType:`string`},{name:`payoutAssetSymbol`,type:`string`,internalType:`string`},{name:`optionAssetName`,type:`string`,internalType:`string`},{name:`payoutAssetName`,type:`string`,internalType:`string`},{name:`optionsCount`,type:`uint256`,internalType:`uint256`}]}],stateMutability:`view`},{type:`function`,name:`getMaxPositionSize`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`maxBorrowableRange`,type:`int24`,internalType:`int24`}],outputs:[{name:`maxCallSize`,type:`uint256`,internalType:`uint256`},{name:`maxPutSize`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`getMaxPositionSizeAtCurrentTick`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`maxBorrowableRange`,type:`int24`,internalType:`int24`}],outputs:[{name:`maxCallSize`,type:`uint256`,internalType:`uint256`},{name:`maxPutSize`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`getOptionData`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`optionId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`tuple`,internalType:`struct TimelockLens.OptionData`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]}],stateMutability:`view`},{type:`function`,name:`getOptionsData`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`optionIds`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`optionsData`,type:`tuple[]`,internalType:`struct TimelockLens.OptionData[]`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]}],stateMutability:`view`},{type:`function`,name:`getPoolData`,inputs:[{name:`pool`,type:`address`,internalType:`contract IUniswapV3Pool`}],outputs:[{name:`poolData`,type:`tuple`,internalType:`struct TimelockLens.UniswapPoolData`,components:[{name:`token0`,type:`address`,internalType:`address`},{name:`token1`,type:`address`,internalType:`address`},{name:`token0Decimals`,type:`uint8`,internalType:`uint8`},{name:`token1Decimals`,type:`uint8`,internalType:`uint8`},{name:`token0Symbol`,type:`string`,internalType:`string`},{name:`token1Symbol`,type:`string`,internalType:`string`},{name:`token0Name`,type:`string`,internalType:`string`},{name:`token1Name`,type:`string`,internalType:`string`},{name:`tickSpacing`,type:`int24`,internalType:`int24`},{name:`fee`,type:`uint24`,internalType:`uint24`}]}],stateMutability:`view`},{type:`function`,name:`getRefTick`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockSingleOwnerVault`},{name:`tickLower`,type:`int24`,internalType:`int24`}],outputs:[{name:`refTick`,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`getUserOptions`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`user`,type:`address`,internalType:`address`},{name:`startId`,type:`uint256`,internalType:`uint256`},{name:`limit`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`userOptions`,type:`tuple[]`,internalType:`struct TimelockLens.OptionData[]`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]},{name:`nextStartId`,type:`uint256`,internalType:`uint256`},{name:`hasMore`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`getVaultTVL`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockVaultCore`}],outputs:[{name:`totalAmount0`,type:`uint256`,internalType:`uint256`},{name:`totalAmount1`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount0`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount1`,type:`uint256`,internalType:`uint256`},{name:`tvl0`,type:`uint256`,internalType:`uint256`},{name:`tvl1`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`}],E=[{type:`constructor`,inputs:[{name:`_pool`,type:`address`,internalType:`contract IUniswapV3Pool`},{name:`_owner`,type:`address`,internalType:`address`}],stateMutability:`nonpayable`},{type:`function`,name:`BORROW`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`BURN`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`MINT`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`MIN_DUST_THRESHOLD`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`REPAY`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`blocks`,inputs:[{name:``,type:`int24`,internalType:`int24`}],outputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`prevTickLower`,type:`int24`,internalType:`int24`},{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`blocksCount`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`borrow`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`borrowerWhitelist`,inputs:[{name:``,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`burn`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`collectFees`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}],outputs:[{name:`totalAmount0`,type:`uint256`,internalType:`uint256`},{name:`totalAmount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`getBlock`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:``,type:`tuple`,internalType:`struct TimelockVaultCore.LiquidityBlock`,components:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`prevTickLower`,type:`int24`,internalType:`int24`},{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`}]}],stateMutability:`view`},{type:`function`,name:`highestTick`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`lowestTick`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`mint`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`multicall`,inputs:[{name:`data`,type:`bytes[]`,internalType:`bytes[]`}],outputs:[{name:`results`,type:`bytes[]`,internalType:`bytes[]`}],stateMutability:`nonpayable`},{type:`function`,name:`owner`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`pool`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IUniswapV3Pool`}],stateMutability:`view`},{type:`function`,name:`pool_`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IUniswapV3Pool`}],stateMutability:`view`},{type:`function`,name:`renounceOwnership`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`repay`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`tickSpacing`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`token0`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`token1`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`transferOwnership`,inputs:[{name:`newOwner`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`uniswapV3MintCallback`,inputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`whitelistBorrower`,inputs:[{name:`borrower`,type:`address`,internalType:`address`},{name:`status`,type:`bool`,internalType:`bool`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`withdrawTokens`,inputs:[{name:`tokens`,type:`address[]`,internalType:`contract IERC20[]`}],outputs:[],stateMutability:`nonpayable`},{type:`event`,name:`Borrow`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`Burn`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`FeesCollected`,inputs:[{name:`feeRecipient`,type:`address`,indexed:!1,internalType:`address`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Mint`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`OwnershipTransferred`,inputs:[{name:`previousOwner`,type:`address`,indexed:!0,internalType:`address`},{name:`newOwner`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`Repay`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`error`,name:`AddressEmptyCode`,inputs:[{name:`target`,type:`address`,internalType:`address`}]},{type:`error`,name:`AmountsMismatch`,inputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`expectedAmount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`},{name:`expectedAmount1`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`BorrowerNotWhitelisted`,inputs:[{name:`borrower`,type:`address`,internalType:`address`}]},{type:`error`,name:`FailedCall`,inputs:[]},{type:`error`,name:`InvalidActionType`,inputs:[{name:`actionType`,type:`uint8`,internalType:`uint8`}]},{type:`error`,name:`InvalidRefTick`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`}]},{type:`error`,name:`InvalidTickRange`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}]},{type:`error`,name:`OwnableInvalidOwner`,inputs:[{name:`owner`,type:`address`,internalType:`address`}]},{type:`error`,name:`OwnableUnauthorizedAccount`,inputs:[{name:`account`,type:`address`,internalType:`address`}]},{type:`error`,name:`ReentrancyGuardReentrantCall`,inputs:[]},{type:`error`,name:`SafeERC20FailedOperation`,inputs:[{name:`token`,type:`address`,internalType:`address`}]}],D=[{type:`constructor`,inputs:[{name:`_vault`,type:`address`,internalType:`contract ITimelockVault`},{name:`_optionPricing`,type:`address`,internalType:`contract IOptionPricing`},{name:`_optionAssetIsToken0`,type:`bool`,internalType:`bool`},{name:`_swapRouter`,type:`address`,internalType:`contract ISwapRouter`},{name:`_quoter`,type:`address`,internalType:`contract IQuoter`},{name:`_owner`,type:`address`,internalType:`address`}],stateMutability:`nonpayable`},{type:`function`,name:`BASIS_POINTS`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`DUST_THRESHOLD`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`MAX_STEPS`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`OPTION_FEE_PERCENT`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`calculatePremium`,inputs:[{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`optionAmount`,type:`uint256`,internalType:`uint256`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`duration`,type:`uint64`,internalType:`uint64`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`exerciseOption`,inputs:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`},{name:`minPayout`,type:`uint256`,internalType:`uint256`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`payout`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`getOption`,inputs:[{name:`optionId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`tuple`,internalType:`struct TimelockOptionsMarket.OptionData`,components:[{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]}],stateMutability:`view`},{type:`function`,name:`liquiditiesToAmounts`,inputs:[{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`},{name:`optionType`,type:`uint8`,internalType:`uint8`}],outputs:[{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`maxDuration`,inputs:[],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`maxOptionAmount`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`minDuration`,inputs:[],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`minOptionAmount`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`mintOption`,inputs:[{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`amount`,type:`uint256`,internalType:`uint256`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`duration`,type:`uint64`,internalType:`uint64`},{name:`maxPremium`,type:`uint256`,internalType:`uint256`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`finalAmount`,type:`uint256`,internalType:`uint256`},{name:`totalPremium`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`nextOptionId`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`optionAsset`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`optionAssetIsToken0`,inputs:[],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`optionPricing`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IOptionPricing`}],stateMutability:`view`},{type:`function`,name:`owner`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`payoutAsset`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`pool`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IUniswapV3Pool`}],stateMutability:`view`},{type:`function`,name:`protocolFees`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`quoter`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IQuoter`}],stateMutability:`view`},{type:`function`,name:`renounceOwnership`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`swapRouter`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract ISwapRouter`}],stateMutability:`view`},{type:`function`,name:`tickSpacing`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`token0`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`token1`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`transferOwnership`,inputs:[{name:`newOwner`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`updateDurationBounds`,inputs:[{name:`_minDuration`,type:`uint64`,internalType:`uint64`},{name:`_maxDuration`,type:`uint64`,internalType:`uint64`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`updateOptionAmountBounds`,inputs:[{name:`_minOptionAmount`,type:`uint256`,internalType:`uint256`},{name:`_maxOptionAmount`,type:`uint256`,internalType:`uint256`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`vault`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract ITimelockVault`}],stateMutability:`view`},{type:`function`,name:`withdrawTokens`,inputs:[{name:`tokens`,type:`address[]`,internalType:`contract IERC20[]`}],outputs:[],stateMutability:`nonpayable`},{type:`event`,name:`ExerciseOption`,inputs:[{name:`optionId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`liquidities`,type:`uint128[]`,indexed:!1,internalType:`uint128[]`},{name:`payout`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`FeesWithdrawn`,inputs:[{name:`fees0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`fees1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`MintOption`,inputs:[{name:`optionId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`buyer`,type:`address`,indexed:!0,internalType:`address`},{name:`optionType`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`strikeTick`,type:`int24`,indexed:!1,internalType:`int24`},{name:`currentTick`,type:`int24`,indexed:!1,internalType:`int24`},{name:`expiresAt`,type:`uint64`,indexed:!1,internalType:`uint64`},{name:`timestamp`,type:`uint64`,indexed:!1,internalType:`uint64`},{name:`totalPremium`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`liquidities`,type:`uint128[]`,indexed:!1,internalType:`uint128[]`}],anonymous:!1},{type:`event`,name:`OwnershipTransferred`,inputs:[{name:`previousOwner`,type:`address`,indexed:!0,internalType:`address`},{name:`newOwner`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`error`,name:`AmountOutOfBounds`,inputs:[]},{type:`error`,name:`DurationOutOfBounds`,inputs:[]},{type:`error`,name:`InsufficientLiquidity`,inputs:[]},{type:`error`,name:`InvalidArrayLength`,inputs:[]},{type:`error`,name:`InvalidOptionType`,inputs:[]},{type:`error`,name:`InvalidTickRange`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}]},{type:`error`,name:`NotEnoughPayout`,inputs:[]},{type:`error`,name:`NotOptionOwner`,inputs:[]},{type:`error`,name:`OptionExpired`,inputs:[]},{type:`error`,name:`OptionNotFound`,inputs:[]},{type:`error`,name:`OwnableInvalidOwner`,inputs:[{name:`owner`,type:`address`,internalType:`address`}]},{type:`error`,name:`OwnableUnauthorizedAccount`,inputs:[{name:`account`,type:`address`,internalType:`address`}]},{type:`error`,name:`PremiumTooHigh`,inputs:[]},{type:`error`,name:`ReentrancyGuardReentrantCall`,inputs:[]},{type:`error`,name:`SafeERC20FailedOperation`,inputs:[{name:`token`,type:`address`,internalType:`address`}]}],O=(e,t)=>f({abi:S,address:e,client:t}),ee=(e,t)=>f({abi:E,address:e,client:t}),k=(e,t)=>f({abi:D,address:e,client:t}),te=(e,t)=>f({abi:C,address:e,client:t}),ne=e=>f({abi:w,address:M[e.chain.id],client:e}),A=e=>f({abi:T,address:j[e.chain.id],client:e}),j={[m.id]:`0x97558b2ccb55F88118989BC19FCEa7AFa13F71b9`},M={[m.id]:`0x4C8375D1F6D5F452e92e211C1D3E7a44F78dFc95`},re={[m.id]:`0x`},ie=h`
|
|
1
|
+
import{createContext as e,useContext as t,useMemo as n}from"react";import{useAccount as r,useChainId as i,useClient as a,useReadContract as o,useWaitForTransactionReceipt as s,useWriteContract as c}from"wagmi";import{GraphQLClient as l}from"graphql-request";import{encodeFunctionData as u,erc20Abi as d,getContract as f,maxUint256 as p}from"viem";import{monadTestnet as m}from"viem/chains";import h from"graphql-tag";import{waitForTransactionReceipt as g}from"viem/actions";import _ from"big.js";import{useQuery as v}from"@tanstack/react-query";import{SqrtPriceMath as y,TickMath as b}from"@uniswap/v3-sdk";import x from"jsbi";const S=[{type:`constructor`,inputs:[{name:`name_`,type:`string`,internalType:`string`},{name:`symbol_`,type:`string`,internalType:`string`}],stateMutability:`nonpayable`},{type:`function`,name:`allowance`,inputs:[{name:`owner`,type:`address`,internalType:`address`},{name:`spender`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`approve`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`balanceOf`,inputs:[{name:`account`,type:`address`,internalType:`address`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`decimals`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`decreaseAllowance`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`subtractedValue`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`increaseAllowance`,inputs:[{name:`spender`,type:`address`,internalType:`address`},{name:`addedValue`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`name`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`symbol`,inputs:[],outputs:[{name:``,type:`string`,internalType:`string`}],stateMutability:`view`},{type:`function`,name:`totalSupply`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`transfer`,inputs:[{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`function`,name:`transferFrom`,inputs:[{name:`from`,type:`address`,internalType:`address`},{name:`to`,type:`address`,internalType:`address`},{name:`amount`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`nonpayable`},{type:`event`,name:`Approval`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`spender`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Transfer`,inputs:[{name:`from`,type:`address`,indexed:!0,internalType:`address`},{name:`to`,type:`address`,indexed:!0,internalType:`address`},{name:`value`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1}],C=[{type:`function`,name:`burn`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`amount`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`collect`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`amount0Requested`,type:`uint128`,internalType:`uint128`},{name:`amount1Requested`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint128`,internalType:`uint128`},{name:`amount1`,type:`uint128`,internalType:`uint128`}],stateMutability:`nonpayable`},{type:`function`,name:`collectProtocol`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`amount0Requested`,type:`uint128`,internalType:`uint128`},{name:`amount1Requested`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint128`,internalType:`uint128`},{name:`amount1`,type:`uint128`,internalType:`uint128`}],stateMutability:`nonpayable`},{type:`function`,name:`factory`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`fee`,inputs:[],outputs:[{name:``,type:`uint24`,internalType:`uint24`}],stateMutability:`view`},{type:`function`,name:`feeGrowthGlobal0X128`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`feeGrowthGlobal1X128`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`flash`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`increaseObservationCardinalityNext`,inputs:[{name:`observationCardinalityNext`,type:`uint16`,internalType:`uint16`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`initialize`,inputs:[{name:`sqrtPriceX96`,type:`uint160`,internalType:`uint160`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`liquidity`,inputs:[],outputs:[{name:``,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`maxLiquidityPerTick`,inputs:[],outputs:[{name:``,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`mint`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`amount`,type:`uint128`,internalType:`uint128`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`observations`,inputs:[{name:`index`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`blockTimestamp`,type:`uint32`,internalType:`uint32`},{name:`tickCumulative`,type:`int56`,internalType:`int56`},{name:`secondsPerLiquidityCumulativeX128`,type:`uint160`,internalType:`uint160`},{name:`initialized`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`observe`,inputs:[{name:`secondsAgos`,type:`uint32[]`,internalType:`uint32[]`}],outputs:[{name:`tickCumulatives`,type:`int56[]`,internalType:`int56[]`},{name:`secondsPerLiquidityCumulativeX128s`,type:`uint160[]`,internalType:`uint160[]`}],stateMutability:`view`},{type:`function`,name:`positions`,inputs:[{name:`key`,type:`bytes32`,internalType:`bytes32`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`feeGrowthInside0LastX128`,type:`uint256`,internalType:`uint256`},{name:`feeGrowthInside1LastX128`,type:`uint256`,internalType:`uint256`},{name:`tokensOwed0`,type:`uint128`,internalType:`uint128`},{name:`tokensOwed1`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`protocolFees`,inputs:[],outputs:[{name:`token0`,type:`uint128`,internalType:`uint128`},{name:`token1`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`setFeeProtocol`,inputs:[{name:`feeProtocol0`,type:`uint8`,internalType:`uint8`},{name:`feeProtocol1`,type:`uint8`,internalType:`uint8`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`slot0`,inputs:[],outputs:[{name:`sqrtPriceX96`,type:`uint160`,internalType:`uint160`},{name:`tick`,type:`int24`,internalType:`int24`},{name:`observationIndex`,type:`uint16`,internalType:`uint16`},{name:`observationCardinality`,type:`uint16`,internalType:`uint16`},{name:`observationCardinalityNext`,type:`uint16`,internalType:`uint16`},{name:`feeProtocol`,type:`uint8`,internalType:`uint8`},{name:`unlocked`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`snapshotCumulativesInside`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}],outputs:[{name:`tickCumulativeInside`,type:`int56`,internalType:`int56`},{name:`secondsPerLiquidityInsideX128`,type:`uint160`,internalType:`uint160`},{name:`secondsInside`,type:`uint32`,internalType:`uint32`}],stateMutability:`view`},{type:`function`,name:`swap`,inputs:[{name:`recipient`,type:`address`,internalType:`address`},{name:`zeroForOne`,type:`bool`,internalType:`bool`},{name:`amountSpecified`,type:`int256`,internalType:`int256`},{name:`sqrtPriceLimitX96`,type:`uint160`,internalType:`uint160`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[{name:`amount0`,type:`int256`,internalType:`int256`},{name:`amount1`,type:`int256`,internalType:`int256`}],stateMutability:`nonpayable`},{type:`function`,name:`tickBitmap`,inputs:[{name:`wordPosition`,type:`int16`,internalType:`int16`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`tickSpacing`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`ticks`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`}],outputs:[{name:`liquidityGross`,type:`uint128`,internalType:`uint128`},{name:`liquidityNet`,type:`int128`,internalType:`int128`},{name:`feeGrowthOutside0X128`,type:`uint256`,internalType:`uint256`},{name:`feeGrowthOutside1X128`,type:`uint256`,internalType:`uint256`},{name:`tickCumulativeOutside`,type:`int56`,internalType:`int56`},{name:`secondsPerLiquidityOutsideX128`,type:`uint160`,internalType:`uint160`},{name:`secondsOutside`,type:`uint32`,internalType:`uint32`},{name:`initialized`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`token0`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`token1`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`event`,name:`Burn`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!0,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!0,internalType:`int24`},{name:`amount`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Collect`,inputs:[{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!0,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!0,internalType:`int24`},{name:`amount0`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount1`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`CollectProtocol`,inputs:[{name:`sender`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!0,internalType:`address`},{name:`amount0`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount1`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`Flash`,inputs:[{name:`sender`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!0,internalType:`address`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`paid0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`paid1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`IncreaseObservationCardinalityNext`,inputs:[{name:`observationCardinalityNextOld`,type:`uint16`,indexed:!1,internalType:`uint16`},{name:`observationCardinalityNextNew`,type:`uint16`,indexed:!1,internalType:`uint16`}],anonymous:!1},{type:`event`,name:`Initialize`,inputs:[{name:`sqrtPriceX96`,type:`uint160`,indexed:!1,internalType:`uint160`},{name:`tick`,type:`int24`,indexed:!1,internalType:`int24`}],anonymous:!1},{type:`event`,name:`Mint`,inputs:[{name:`sender`,type:`address`,indexed:!1,internalType:`address`},{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!0,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!0,internalType:`int24`},{name:`amount`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`SetFeeProtocol`,inputs:[{name:`feeProtocol0Old`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`feeProtocol1Old`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`feeProtocol0New`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`feeProtocol1New`,type:`uint8`,indexed:!1,internalType:`uint8`}],anonymous:!1},{type:`event`,name:`Swap`,inputs:[{name:`sender`,type:`address`,indexed:!0,internalType:`address`},{name:`recipient`,type:`address`,indexed:!0,internalType:`address`},{name:`amount0`,type:`int256`,indexed:!1,internalType:`int256`},{name:`amount1`,type:`int256`,indexed:!1,internalType:`int256`},{name:`sqrtPriceX96`,type:`uint160`,indexed:!1,internalType:`uint160`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`tick`,type:`int24`,indexed:!1,internalType:`int24`}],anonymous:!1},{type:`error`,name:`AI`,inputs:[]},{type:`error`,name:`AS`,inputs:[]},{type:`error`,name:`F0`,inputs:[]},{type:`error`,name:`F1`,inputs:[]},{type:`error`,name:`IIA`,inputs:[]},{type:`error`,name:`L`,inputs:[]},{type:`error`,name:`LOK`,inputs:[]},{type:`error`,name:`M0`,inputs:[]},{type:`error`,name:`M1`,inputs:[]},{type:`error`,name:`TLM`,inputs:[]},{type:`error`,name:`TLU`,inputs:[]},{type:`error`,name:`TUM`,inputs:[]}],w=[{type:`function`,name:`batchGetAmount0ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmount0ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmount1ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmount1ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmountsForLiquidity`,inputs:[{name:`sqrtRatioX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetAmountsForLiquidityTicks`,inputs:[{name:`tick`,type:`int24[]`,internalType:`int24[]`},{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`liquidity`,type:`uint128[]`,internalType:`uint128[]`}],outputs:[{name:`amounts0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amounts1`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount0`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount0Ticks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount1`,inputs:[{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmount1Ticks`,inputs:[{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmounts`,inputs:[{name:`sqrtRatioX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioAX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`sqrtRatioBX96`,type:`uint160[]`,internalType:`uint160[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetLiquidityForAmountsTicks`,inputs:[{name:`tick`,type:`int24[]`,internalType:`int24[]`},{name:`tickA`,type:`int24[]`,internalType:`int24[]`},{name:`tickB`,type:`int24[]`,internalType:`int24[]`},{name:`amount0`,type:`uint256[]`,internalType:`uint256[]`},{name:`amount1`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}],stateMutability:`pure`},{type:`function`,name:`batchGetPriceAtTick`,inputs:[{name:`ticks`,type:`int24[]`,internalType:`int24[]`}],outputs:[{name:`prices`,type:`uint256[]`,internalType:`uint256[]`}],stateMutability:`pure`},{type:`function`,name:`getAmount0ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmount0ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmount1ForLiquidity`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmount1ForLiquidityTicks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmountsForLiquidity`,inputs:[{name:`sqrtRatioX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getAmountsForLiquidityTicks`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`},{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount0`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`amount0`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount0Ticks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`amount0`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount1`,inputs:[{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmount1Ticks`,inputs:[{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmounts`,inputs:[{name:`sqrtRatioX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioAX96`,type:`uint160`,internalType:`uint160`},{name:`sqrtRatioBX96`,type:`uint160`,internalType:`uint160`},{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getLiquidityForAmountsTicks`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`},{name:`tickA`,type:`int24`,internalType:`int24`},{name:`tickB`,type:`int24`,internalType:`int24`},{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`liquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`pure`},{type:`function`,name:`getPriceAtTick`,inputs:[{name:`tick`,type:`int24`,internalType:`int24`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`pure`}],T=[{type:`function`,name:`batchGetRefTick`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockSingleOwnerVault`},{name:`tickLower`,type:`int24[]`,internalType:`int24[]`}],outputs:[{name:`refTicks`,type:`int24[]`,internalType:`int24[]`}],stateMutability:`view`},{type:`function`,name:`getAllBlocks`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockVaultCore`}],outputs:[{name:`blocks`,type:`tuple[]`,internalType:`struct TimelockLens.LiquidityBlockData[]`,components:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`prevTickLower`,type:`int24`,internalType:`int24`},{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`},{name:`totalAmount0`,type:`uint256`,internalType:`uint256`},{name:`totalAmount1`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount0`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount1`,type:`uint256`,internalType:`uint256`}]}],stateMutability:`view`},{type:`function`,name:`getExpiredOptions`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`startId`,type:`uint256`,internalType:`uint256`},{name:`limit`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`expiredOptions`,type:`tuple[]`,internalType:`struct TimelockLens.OptionData[]`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]},{name:`nextStartId`,type:`uint256`,internalType:`uint256`},{name:`hasMore`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`getLiquidityAtTick`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockSingleOwnerVault`},{name:`tickLower`,type:`int24`,internalType:`int24`}],outputs:[{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`getMarketData`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`}],outputs:[{name:`marketData`,type:`tuple`,internalType:`struct TimelockLens.TimelockMarketData`,components:[{name:`optionAssetIsToken0`,type:`bool`,internalType:`bool`},{name:`vault`,type:`address`,internalType:`contract ITimelockVault`},{name:`pool`,type:`address`,internalType:`contract IUniswapV3Pool`},{name:`optionAsset`,type:`address`,internalType:`address`},{name:`payoutAsset`,type:`address`,internalType:`address`},{name:`optionAssetDecimals`,type:`uint8`,internalType:`uint8`},{name:`payoutAssetDecimals`,type:`uint8`,internalType:`uint8`},{name:`optionAssetSymbol`,type:`string`,internalType:`string`},{name:`payoutAssetSymbol`,type:`string`,internalType:`string`},{name:`optionAssetName`,type:`string`,internalType:`string`},{name:`payoutAssetName`,type:`string`,internalType:`string`},{name:`optionsCount`,type:`uint256`,internalType:`uint256`}]}],stateMutability:`view`},{type:`function`,name:`getMaxPositionSize`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`maxBorrowableRange`,type:`int24`,internalType:`int24`}],outputs:[{name:`maxCallSize`,type:`uint256`,internalType:`uint256`},{name:`maxPutSize`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`getMaxPositionSizeAtCurrentTick`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`maxBorrowableRange`,type:`int24`,internalType:`int24`}],outputs:[{name:`maxCallSize`,type:`uint256`,internalType:`uint256`},{name:`maxPutSize`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`getOptionData`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`optionId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`tuple`,internalType:`struct TimelockLens.OptionData`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]}],stateMutability:`view`},{type:`function`,name:`getOptionsData`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`optionIds`,type:`uint256[]`,internalType:`uint256[]`}],outputs:[{name:`optionsData`,type:`tuple[]`,internalType:`struct TimelockLens.OptionData[]`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]}],stateMutability:`view`},{type:`function`,name:`getPoolData`,inputs:[{name:`pool`,type:`address`,internalType:`contract IUniswapV3Pool`}],outputs:[{name:`poolData`,type:`tuple`,internalType:`struct TimelockLens.UniswapPoolData`,components:[{name:`token0`,type:`address`,internalType:`address`},{name:`token1`,type:`address`,internalType:`address`},{name:`token0Decimals`,type:`uint8`,internalType:`uint8`},{name:`token1Decimals`,type:`uint8`,internalType:`uint8`},{name:`token0Symbol`,type:`string`,internalType:`string`},{name:`token1Symbol`,type:`string`,internalType:`string`},{name:`token0Name`,type:`string`,internalType:`string`},{name:`token1Name`,type:`string`,internalType:`string`},{name:`tickSpacing`,type:`int24`,internalType:`int24`},{name:`fee`,type:`uint24`,internalType:`uint24`}]}],stateMutability:`view`},{type:`function`,name:`getRefTick`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockSingleOwnerVault`},{name:`tickLower`,type:`int24`,internalType:`int24`}],outputs:[{name:`refTick`,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`getUserOptions`,inputs:[{name:`market`,type:`address`,internalType:`contract TimelockOptionsMarket`},{name:`user`,type:`address`,internalType:`address`},{name:`startId`,type:`uint256`,internalType:`uint256`},{name:`limit`,type:`uint256`,internalType:`uint256`}],outputs:[{name:`userOptions`,type:`tuple[]`,internalType:`struct TimelockLens.OptionData[]`,components:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`strikePrice`,type:`uint256`,internalType:`uint256`},{name:`entryPrice`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`positionSize`,type:`uint256`,internalType:`uint256`},{name:`netOptionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]},{name:`nextStartId`,type:`uint256`,internalType:`uint256`},{name:`hasMore`,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`getVaultTVL`,inputs:[{name:`vault`,type:`address`,internalType:`contract TimelockVaultCore`}],outputs:[{name:`totalAmount0`,type:`uint256`,internalType:`uint256`},{name:`totalAmount1`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount0`,type:`uint256`,internalType:`uint256`},{name:`borrowedAmount1`,type:`uint256`,internalType:`uint256`},{name:`tvl0`,type:`uint256`,internalType:`uint256`},{name:`tvl1`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`}],E=[{type:`constructor`,inputs:[{name:`_pool`,type:`address`,internalType:`contract IUniswapV3Pool`},{name:`_owner`,type:`address`,internalType:`address`}],stateMutability:`nonpayable`},{type:`function`,name:`BORROW`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`BURN`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`MINT`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`MIN_DUST_THRESHOLD`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`REPAY`,inputs:[],outputs:[{name:``,type:`uint8`,internalType:`uint8`}],stateMutability:`view`},{type:`function`,name:`blocks`,inputs:[{name:``,type:`int24`,internalType:`int24`}],outputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`prevTickLower`,type:`int24`,internalType:`int24`},{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`}],stateMutability:`view`},{type:`function`,name:`blocksCount`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`borrow`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`borrowerWhitelist`,inputs:[{name:``,type:`address`,internalType:`address`}],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`burn`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`collectFees`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}],outputs:[{name:`totalAmount0`,type:`uint256`,internalType:`uint256`},{name:`totalAmount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`getBlock`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:``,type:`tuple`,internalType:`struct TimelockVaultCore.LiquidityBlock`,components:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`prevTickLower`,type:`int24`,internalType:`int24`},{name:`totalLiquidity`,type:`uint128`,internalType:`uint128`},{name:`borrowedLiquidity`,type:`uint128`,internalType:`uint128`}]}],stateMutability:`view`},{type:`function`,name:`highestTick`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`lowestTick`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`mint`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`multicall`,inputs:[{name:`data`,type:`bytes[]`,internalType:`bytes[]`}],outputs:[{name:`results`,type:`bytes[]`,internalType:`bytes[]`}],stateMutability:`nonpayable`},{type:`function`,name:`owner`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`pool`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IUniswapV3Pool`}],stateMutability:`view`},{type:`function`,name:`pool_`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IUniswapV3Pool`}],stateMutability:`view`},{type:`function`,name:`renounceOwnership`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`repay`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`},{name:`liquidity`,type:`uint128`,internalType:`uint128`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`tickSpacing`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`token0`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`token1`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`transferOwnership`,inputs:[{name:`newOwner`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`uniswapV3MintCallback`,inputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`},{name:`data`,type:`bytes`,internalType:`bytes`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`whitelistBorrower`,inputs:[{name:`borrower`,type:`address`,internalType:`address`},{name:`status`,type:`bool`,internalType:`bool`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`withdrawTokens`,inputs:[{name:`tokens`,type:`address[]`,internalType:`contract IERC20[]`}],outputs:[],stateMutability:`nonpayable`},{type:`event`,name:`Borrow`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`Burn`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`FeesCollected`,inputs:[{name:`feeRecipient`,type:`address`,indexed:!1,internalType:`address`},{name:`amount0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`amount1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`Mint`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`event`,name:`OwnershipTransferred`,inputs:[{name:`previousOwner`,type:`address`,indexed:!0,internalType:`address`},{name:`newOwner`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`event`,name:`Repay`,inputs:[{name:`user`,type:`address`,indexed:!1,internalType:`address`},{name:`tickLower`,type:`int24`,indexed:!1,internalType:`int24`},{name:`tickUpper`,type:`int24`,indexed:!1,internalType:`int24`},{name:`liquidity`,type:`uint128`,indexed:!1,internalType:`uint128`}],anonymous:!1},{type:`error`,name:`AddressEmptyCode`,inputs:[{name:`target`,type:`address`,internalType:`address`}]},{type:`error`,name:`AmountsMismatch`,inputs:[{name:`amount0`,type:`uint256`,internalType:`uint256`},{name:`expectedAmount0`,type:`uint256`,internalType:`uint256`},{name:`amount1`,type:`uint256`,internalType:`uint256`},{name:`expectedAmount1`,type:`uint256`,internalType:`uint256`}]},{type:`error`,name:`BorrowerNotWhitelisted`,inputs:[{name:`borrower`,type:`address`,internalType:`address`}]},{type:`error`,name:`FailedCall`,inputs:[]},{type:`error`,name:`InvalidActionType`,inputs:[{name:`actionType`,type:`uint8`,internalType:`uint8`}]},{type:`error`,name:`InvalidRefTick`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`}]},{type:`error`,name:`InvalidTickRange`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}]},{type:`error`,name:`OwnableInvalidOwner`,inputs:[{name:`owner`,type:`address`,internalType:`address`}]},{type:`error`,name:`OwnableUnauthorizedAccount`,inputs:[{name:`account`,type:`address`,internalType:`address`}]},{type:`error`,name:`ReentrancyGuardReentrantCall`,inputs:[]},{type:`error`,name:`SafeERC20FailedOperation`,inputs:[{name:`token`,type:`address`,internalType:`address`}]}],D=[{type:`constructor`,inputs:[{name:`_vault`,type:`address`,internalType:`contract ITimelockVault`},{name:`_optionPricing`,type:`address`,internalType:`contract IOptionPricing`},{name:`_optionAssetIsToken0`,type:`bool`,internalType:`bool`},{name:`_swapRouter`,type:`address`,internalType:`contract ISwapRouter`},{name:`_quoter`,type:`address`,internalType:`contract IQuoter`},{name:`_owner`,type:`address`,internalType:`address`}],stateMutability:`nonpayable`},{type:`function`,name:`BASIS_POINTS`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`DUST_THRESHOLD`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`MAX_STEPS`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`OPTION_FEE_PERCENT`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`calculatePremium`,inputs:[{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`optionAmount`,type:`uint256`,internalType:`uint256`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`duration`,type:`uint64`,internalType:`uint64`}],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`exerciseOption`,inputs:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`},{name:`minPayout`,type:`uint256`,internalType:`uint256`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`payout`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`getOption`,inputs:[{name:`optionId`,type:`uint256`,internalType:`uint256`}],outputs:[{name:``,type:`tuple`,internalType:`struct TimelockOptionsMarket.OptionData`,components:[{name:`owner`,type:`address`,internalType:`address`},{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`entryTick`,type:`int24`,internalType:`int24`},{name:`expiresAt`,type:`uint64`,internalType:`uint64`},{name:`createdAt`,type:`uint64`,internalType:`uint64`},{name:`premiumPaid`,type:`uint128`,internalType:`uint128`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`}]}],stateMutability:`view`},{type:`function`,name:`liquiditiesToAmounts`,inputs:[{name:`leftTick`,type:`int24`,internalType:`int24`},{name:`liquidities`,type:`uint128[]`,internalType:`uint128[]`},{name:`optionType`,type:`uint8`,internalType:`uint8`}],outputs:[{name:`optionAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetToRepay`,type:`uint256`,internalType:`uint256`},{name:`optionAssetBorrowed`,type:`uint256`,internalType:`uint256`},{name:`payoutAssetBorrowed`,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`maxDuration`,inputs:[],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`maxOptionAmount`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`minDuration`,inputs:[],outputs:[{name:``,type:`uint64`,internalType:`uint64`}],stateMutability:`view`},{type:`function`,name:`minOptionAmount`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`mintOption`,inputs:[{name:`optionType`,type:`uint8`,internalType:`uint8`},{name:`amount`,type:`uint256`,internalType:`uint256`},{name:`strikeTick`,type:`int24`,internalType:`int24`},{name:`duration`,type:`uint64`,internalType:`uint64`},{name:`maxPremium`,type:`uint256`,internalType:`uint256`},{name:`refTick`,type:`int24`,internalType:`int24`}],outputs:[{name:`optionId`,type:`uint256`,internalType:`uint256`},{name:`finalAmount`,type:`uint256`,internalType:`uint256`},{name:`totalPremium`,type:`uint256`,internalType:`uint256`}],stateMutability:`nonpayable`},{type:`function`,name:`nextOptionId`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`optionAsset`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`optionAssetIsToken0`,inputs:[],outputs:[{name:``,type:`bool`,internalType:`bool`}],stateMutability:`view`},{type:`function`,name:`optionPricing`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IOptionPricing`}],stateMutability:`view`},{type:`function`,name:`owner`,inputs:[],outputs:[{name:``,type:`address`,internalType:`address`}],stateMutability:`view`},{type:`function`,name:`payoutAsset`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`pool`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IUniswapV3Pool`}],stateMutability:`view`},{type:`function`,name:`protocolFees`,inputs:[],outputs:[{name:``,type:`uint256`,internalType:`uint256`}],stateMutability:`view`},{type:`function`,name:`quoter`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IQuoter`}],stateMutability:`view`},{type:`function`,name:`renounceOwnership`,inputs:[],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`swapRouter`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract ISwapRouter`}],stateMutability:`view`},{type:`function`,name:`tickSpacing`,inputs:[],outputs:[{name:``,type:`int24`,internalType:`int24`}],stateMutability:`view`},{type:`function`,name:`token0`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`token1`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract IERC20`}],stateMutability:`view`},{type:`function`,name:`transferOwnership`,inputs:[{name:`newOwner`,type:`address`,internalType:`address`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`updateDurationBounds`,inputs:[{name:`_minDuration`,type:`uint64`,internalType:`uint64`},{name:`_maxDuration`,type:`uint64`,internalType:`uint64`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`updateOptionAmountBounds`,inputs:[{name:`_minOptionAmount`,type:`uint256`,internalType:`uint256`},{name:`_maxOptionAmount`,type:`uint256`,internalType:`uint256`}],outputs:[],stateMutability:`nonpayable`},{type:`function`,name:`vault`,inputs:[],outputs:[{name:``,type:`address`,internalType:`contract ITimelockVault`}],stateMutability:`view`},{type:`function`,name:`withdrawTokens`,inputs:[{name:`tokens`,type:`address[]`,internalType:`contract IERC20[]`}],outputs:[],stateMutability:`nonpayable`},{type:`event`,name:`ExerciseOption`,inputs:[{name:`optionId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`owner`,type:`address`,indexed:!0,internalType:`address`},{name:`liquidities`,type:`uint128[]`,indexed:!1,internalType:`uint128[]`},{name:`payout`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`FeesWithdrawn`,inputs:[{name:`fees0`,type:`uint256`,indexed:!1,internalType:`uint256`},{name:`fees1`,type:`uint256`,indexed:!1,internalType:`uint256`}],anonymous:!1},{type:`event`,name:`MintOption`,inputs:[{name:`optionId`,type:`uint256`,indexed:!0,internalType:`uint256`},{name:`buyer`,type:`address`,indexed:!0,internalType:`address`},{name:`optionType`,type:`uint8`,indexed:!1,internalType:`uint8`},{name:`strikeTick`,type:`int24`,indexed:!1,internalType:`int24`},{name:`currentTick`,type:`int24`,indexed:!1,internalType:`int24`},{name:`expiresAt`,type:`uint64`,indexed:!1,internalType:`uint64`},{name:`timestamp`,type:`uint64`,indexed:!1,internalType:`uint64`},{name:`totalPremium`,type:`uint128`,indexed:!1,internalType:`uint128`},{name:`liquidities`,type:`uint128[]`,indexed:!1,internalType:`uint128[]`}],anonymous:!1},{type:`event`,name:`OwnershipTransferred`,inputs:[{name:`previousOwner`,type:`address`,indexed:!0,internalType:`address`},{name:`newOwner`,type:`address`,indexed:!0,internalType:`address`}],anonymous:!1},{type:`error`,name:`AmountOutOfBounds`,inputs:[]},{type:`error`,name:`DurationOutOfBounds`,inputs:[]},{type:`error`,name:`InsufficientLiquidity`,inputs:[]},{type:`error`,name:`InvalidArrayLength`,inputs:[]},{type:`error`,name:`InvalidOptionType`,inputs:[]},{type:`error`,name:`InvalidTickRange`,inputs:[{name:`tickLower`,type:`int24`,internalType:`int24`},{name:`tickUpper`,type:`int24`,internalType:`int24`}]},{type:`error`,name:`NotEnoughPayout`,inputs:[]},{type:`error`,name:`NotOptionOwner`,inputs:[]},{type:`error`,name:`OptionExpired`,inputs:[]},{type:`error`,name:`OptionNotFound`,inputs:[]},{type:`error`,name:`OwnableInvalidOwner`,inputs:[{name:`owner`,type:`address`,internalType:`address`}]},{type:`error`,name:`OwnableUnauthorizedAccount`,inputs:[{name:`account`,type:`address`,internalType:`address`}]},{type:`error`,name:`PremiumTooHigh`,inputs:[]},{type:`error`,name:`ReentrancyGuardReentrantCall`,inputs:[]},{type:`error`,name:`SafeERC20FailedOperation`,inputs:[{name:`token`,type:`address`,internalType:`address`}]}],O=(e,t)=>f({abi:S,address:e,client:t}),ee=(e,t)=>f({abi:E,address:e,client:t}),k=(e,t)=>f({abi:D,address:e,client:t}),te=(e,t)=>f({abi:C,address:e,client:t}),ne=e=>f({abi:w,address:M[e.chain.id],client:e}),A=e=>f({abi:T,address:j[e.chain.id],client:e}),j={[m.id]:`0x97558b2ccb55F88118989BC19FCEa7AFa13F71b9`},M={[m.id]:`0x4C8375D1F6D5F452e92e211C1D3E7a44F78dFc95`},re=h`
|
|
2
2
|
query GetActiveUserOptions($user: String!) {
|
|
3
3
|
UserOption(
|
|
4
4
|
where: {owner: {_eq: $user}, fullyExercised: {_eq: false}}
|
|
@@ -25,7 +25,7 @@ import{createContext as e,useContext as t,useMemo as n}from"react";import{useAcc
|
|
|
25
25
|
fullyExercised
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
`,
|
|
28
|
+
`,ie=h`
|
|
29
29
|
query GetClosedUserOptions($user: String!) {
|
|
30
30
|
UserOption(
|
|
31
31
|
where: {owner: {_eq: $user}, fullyExercised: {_eq: true}}
|
|
@@ -52,7 +52,7 @@ import{createContext as e,useContext as t,useMemo as n}from"react";import{useAcc
|
|
|
52
52
|
fullyExercised
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
`,
|
|
55
|
+
`,ae=(e,t,n,r)=>e();function oe(e,t=ae){return{GetActiveUserOptions(n,r,i){return t(t=>e.request({document:re,variables:n,requestHeaders:{...r,...t},signal:i}),`GetActiveUserOptions`,`query`,n)},GetClosedUserOptions(n,r,i){return t(t=>e.request({document:ie,variables:n,requestHeaders:{...r,...t},signal:i}),`GetClosedUserOptions`,`query`,n)}}}const N=e(void 0),se=({children:e,marketData:t,envioGraphqlUrl:n})=>{let r=i(),a=j[r],o=M[r];return<N.Provider value={{marketData:t||{},lensAddr:a,uniswapMathLensAddr:o,envioGraphqlUrl:n}}>
|
|
56
56
|
{e}
|
|
57
|
-
</N.Provider>},le=()=>{let e=t(N);if(e===void 0)throw Error(`useCurrentMarket must be used within a TimelockMarketProvider`);return e.marketData},ue=()=>{let e=t(N);if(e===void 0)throw Error(`useConfig must be used within a TimelockMarketProvider`);return{lensAddr:e.lensAddr,uniswapMathLensAddr:e.uniswapMathLensAddr,envioGraphqlUrl:e.envioGraphqlUrl,graphqlClient:e.envioGraphqlUrl?se(new l(e.envioGraphqlUrl)):void 0}},P=()=>{let e=a(),t=e?A(e):void 0;return{uniswapLens:e?ne(e):void 0,timelockLens:t}},F=e=>{let{timelockLens:t}=P(),n=a(),r=typeof e==`string`?e:e==null?void 0:e.address,{data:i}=o({address:t==null?void 0:t.address,abi:T,functionName:`getMarketData`,args:r?[r]:void 0,query:{enabled:r!==void 0}});return!i||!r||!n?{}:{...i,address:r}},de=e=>{let{vault:t}=F(e),n=a(),{data:r}=o({address:t,abi:E,functionName:`lowestTick`}),{writeContractAsync:i,data:l,isPending:u,error:d}=c(),{isLoading:f,isSuccess:p}=s({hash:l}),m=typeof e==`string`?e:e==null?void 0:e.address;return{exerciseOption:async(e,t)=>{if(!n)throw Error(`Wallet not connected`);if(r===void 0||!m)throw Error(`Lowest tick lower not available`);let a=await i({address:m,abi:D,functionName:`exerciseOption`,args:[e,t,0n,r]});return await g(n,{hash:a}),a},hash:l,isPending:u,isConfirming:f,isSuccess:p,error:d,isLoading:u||f}},fe={scaled:0n,unscaled:_(0),decimals:18,formatted:`0`},I=(e,t)=>{let n=R(e,t);return{scaled:e,unscaled:n,decimals:t,formatted:H(n)}},pe=(e,t)=>{e=_(e);let n=z(e,t),r=H(e);return{scaled:n,unscaled:e,decimals:t,formatted:r}},L=(e,t,n)=>{let r=B(e,t,n),i=H(r);return{scaled:e,unscaled:r,decimals:36+n-t,formatted:i}},me=(e,t,n)=>{e=_(e);let r=V(e,t,n),i=H(e);return{scaled:r,unscaled:e,decimals:36+n-t,formatted:i}},R=(e,t)=>new _(e.toString()).div(new _(10).pow(t)),z=(e,t)=>BigInt(_(e).mul(new _(10).pow(t)).round().toFixed(0)),B=(e,t,n,r=18)=>new _(e.toString()).mul(new _(10).pow(t)).div(new _(10).pow(n)).div(new _(10).pow(r)),V=(e,t,n,r=18)=>BigInt(_(e).mul(new _(10).pow(r)).mul(new _(10).pow(n)).div(new _(10).pow(t)).round().toFixed(0)),H=e=>e===void 0?`-`:U(_(e).toFixed(100)),he=e=>(e=Number(e),e>=0xe8d4a51000?`${(e/0xe8d4a51000).toFixed(2)}T`:e>=1e9?`${(e/1e9).toFixed(2)}B`:e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(2)}K`:e<1?e.toPrecision(2):e.toFixed(2)),U=(e,t=2)=>{let[n,r]=(typeof e==`number`?e.toFixed(20):e).replace(/(\.\d*?)0+$/,`$1`).replace(/\.$/,``).split(`.`),i=n.replace(/\B(?=(\d{3})+(?!\d))/g,`,`);if(!r)return i;let a=r.match(/^(0{3,})/);if(a){let e=a[1].length;return`${i}.0${ge(e.toString())}${r.slice(e).slice(0,t)}`}else{let e=r.search(/[1-9]/);if(e===-1)return i;let n=r.slice(e).slice(0,t);return`${i}.${r.slice(0,e)}${n}`}},ge=e=>e.replace(/[0-9]/g,e=>`₀₁₂₃₄₅₆₇₈₉`[+e]),_e=e=>`$`+H(e),ve=(e,t,r=100)=>{let{timelockLens:i}=P(),{optionAssetDecimals:a}=F(e),s=typeof e==`string`?e:e==null?void 0:e.address,{data:c,refetch:l}=o({address:i==null?void 0:i.address,abi:T,functionName:`getMaxPositionSizeAtCurrentTick`,args:[s,r],query:{enabled:!!s&&!!i},gas:100000000n}),{data:u,refetch:d}=o({address:i==null?void 0:i.address,abi:T,functionName:`getMaxPositionSize`,args:[s,t,r],query:{enabled:!!s&&!!i&&t!==void 0},gas:100000000n}),f=t===void 0?c:u,{maxCallSize:p,maxPutSize:m}=n(()=>f&&a?{maxCallSize:I(f[0],a),maxPutSize:I(f[1],a)}:{},[f,a]);return{maxCallSize:p,maxPutSize:m,refetch:()=>{l(),d()}}},ye=async e=>{let[t,{1:n}]=await Promise.all([e.read.tickSpacing(),e.read.slot0()]);return{exact:n,rounded:Math.floor(n/t)*t}},W=e=>{let t=a(),{data:n}=v({queryKey:[`currentTick`,typeof e==`string`?e:(e==null?void 0:e.address)||`-`],queryFn:()=>ye(typeof e==`string`?te(e,t):e),enabled:!!e&&!!t,refetchInterval:5e3});return n||{}},G=e=>{let t=typeof e==`string`?e:e==null?void 0:e.address,{timelockLens:n}=P(),r=a(),{data:i}=o({address:n==null?void 0:n.address,abi:T,functionName:`getPoolData`,args:t?[t]:void 0,query:{enabled:!!t&&!!r}});return i||{}},K=BigInt(0xde0b6b3a7640000),q=e=>{let t=BigInt(b.getSqrtRatioAtTick(e).toString());return t*t*K/BigInt(2**192)},be=e=>{let t=e*BigInt(2**192)/K,n=x.BigInt(new _(t.toString()).sqrt().toFixed(0));return b.getTickAtSqrtRatio(n)},J=(e,t)=>{let n=e%t;return n>=0?e-n:e-n-t},Y=(e,t)=>{let n=e%t;return n===0?e:n>0?e-n+t:e-n},X=(e,t)=>e*q(t)/K,Z=(e,t)=>{let n=q(t);return e*K/n},xe=(e,t,n)=>{let r=BigInt(0);for(let i=0;i<e.length;i++){let a=e[i];if(a===BigInt(0))continue;let o=t+n*i,s=o+n,c=b.getSqrtRatioAtTick(o),l=b.getSqrtRatioAtTick(s),u=x.BigInt(a.toString()),d=y.getAmount0Delta(c,l,u,!1);r+=BigInt(d.toString())}return r},Se=(e,t,n)=>{let r=BigInt(0);for(let i=0;i<e.length;i++){let a=e[i];if(a===BigInt(0))continue;let o=t+n*i,s=o+n,c=b.getSqrtRatioAtTick(o),l=b.getSqrtRatioAtTick(s),u=x.BigInt(a.toString()),d=y.getAmount1Delta(c,l,u,!1);r+=BigInt(d.toString())}return r},Ce=(e,t,n,r)=>{let i=0n,a=0n,o=b.getSqrtRatioAtTick(n);for(let s=0;s<e.length;s++){let c=e[s];if(c===BigInt(0))continue;let l=t+r*s,u=l+r,d=b.getSqrtRatioAtTick(l),f=b.getSqrtRatioAtTick(u),p=x.BigInt(c.toString());if(n<l){let e=y.getAmount0Delta(d,f,p,!1);i+=BigInt(e.toString())}else if(n>=u){let e=y.getAmount1Delta(d,f,p,!1);a+=BigInt(e.toString())}else{let e=y.getAmount0Delta(o,f,p,!1),t=y.getAmount1Delta(d,o,p,!1);i+=BigInt(e.toString()),a+=BigInt(t.toString())}}return[i,a]},we=e=>{let{timelockLens:t}=P(),{payoutAsset:n,vault:i,pool:o,optionAssetIsToken0:l}=F(e),{tickSpacing:u}=G(o),{exact:f}=W(o),m=a(),{address:h}=r(),{writeContractAsync:_,data:v,isPending:y,error:b}=c(),{isLoading:x,isSuccess:S}=s({hash:v}),C=typeof e==`string`?e:e==null?void 0:e.address,w=async e=>{if(!m||!h)throw Error(`Wallet not connected`);if(!n||!C)throw Error(`Tokens not available`);await O(n,m).read.allowance([h,C])<e&&await g(m,{hash:await _({address:n,abi:d,functionName:`approve`,args:[C,p]})})};return{mintOption:async(e,n,r,a)=>{if(!m)throw Error(`Wallet not connected`);if(!t||!i||!C||!f||!u)throw Error(`Lowest tick lower not available`);a=a??f,a=e===`CALL`&&l||e===`PUT`&&!l?Y(a,u):J(a,u),await w(await k(C,m).read.calculatePremium([e===`CALL`?0:1,n,a,BigInt(r)]));let o=await _({address:C,abi:D,functionName:`mintOption`,args:[e===`CALL`?0:1,n,a,BigInt(r),BigInt(1e69),await t.read.getRefTick([i,a])]});return await g(m,{hash:o}),o},hash:v,isPending:y,isConfirming:x,isSuccess:S,error:b,isLoading:y||x}},Te=(e,t,n,r,i,a)=>{let o=n-(i===`CALL`?0:r*e.length),s=xe(e,o,r),c=Se(e,o,r);return i===`CALL`?a?s:c:a?Z(c,t):X(s,t)},Ee=(e,t)=>{let n=q(e);return t?n:K/n},De=e=>{let{marketAddr:t,optionType:r,liquiditiesAtOpen:i,liquiditiesCurrent:a,strikeTick:o,entryTick:s}=e,{pool:c,optionAssetIsToken0:l,optionAssetDecimals:u,payoutAssetDecimals:d}=F(t),{tickSpacing:f}=G(c),{exact:p}=W(c),{strikePrice:m,entryPrice:h}=n(()=>{if(l===void 0||!u||!d)return{};let e=L(Ee(s,l),u,d);return{strikePrice:L(Ee(o,l),u,d),entryPrice:e}},[e,l,u,d]),{positionSizeAtOpen:g,positionSizeCurrent:_}=n(()=>l===void 0||!f||!u||!d?{}:{positionSizeAtOpen:I(Te(i,s,o,f,r,l),u),positionSizeCurrent:I(Te(a,s,o,f,r,l),u)},[e,l,f,u,d]),{displayPnl:v,unrealizedPayout:y}=n(()=>{if(l===void 0||p===void 0||!_||!d)return{};let e=_.scaled,t=l?X(e,p)-X(e,s):Z(e,p)-Z(e,s),n=I(r===`CALL`?t:-t,d);return{unrealizedPayout:I(n.scaled<0?0n:n.scaled,d),displayPnl:n}},[e,l,p,_]);return{positionSizeCurrent:_,positionSizeAtOpen:g,displayPnl:v,unrealizedPayout:y,strikePrice:m,entryPrice:h}},Oe=(e,t,r,i)=>{let{pool:a}=F(e),s=W(a),{tickSpacing:c}=G(a),{payoutAssetDecimals:l}=F(e),u=typeof e==`string`?e:e==null?void 0:e.address,d=n(()=>{if(!(s.rounded===void 0||c===void 0))return t===`CALL`?s.rounded+c:s.rounded},[s.rounded,c,t]),{data:f}=o({address:u,abi:D,functionName:`calculatePremium`,args:d===void 0?void 0:[t===`CALL`?0:1,r,d,BigInt(i)],query:{enabled:s.rounded!==void 0&&l!==void 0&&c!==void 0&&d!==void 0}});return n(()=>{if(!(f===void 0||l===void 0))return I(f,l)},[f,l])},Q=(e,t=!1)=>{let{graphqlClient:r}=ue(),{data:i,...a}=v({queryKey:[`userTrades`,e||`--`,t],queryFn:()=>t?r==null?void 0:r.GetActiveUserOptions({user:e.toLowerCase()}):r==null?void 0:r.GetClosedUserOptions({user:e.toLowerCase()}),select:e=>{var t;return e==null||(t=e.UserOption)==null?void 0:t.map(e=>({...e,id:BigInt(e.id),marketAddr:e.marketAddr,optionType:e.optionType,createdAt:new Date(Number(e.createdAt)*1e3),expiresAt:new Date(Number(e.expiresAt)*1e3),premiumPaid:BigInt(e.premiumPaid),realizedPayout:BigInt(e.realizedPayout),liquiditiesAtOpen:e.liquiditiesAtOpen.map(e=>BigInt(e)),liquiditiesCurrent:e.liquiditiesCurrent.map(e=>BigInt(e))}))},enabled:!!e&&!!r});return{data:n(()=>(i==null?void 0:i.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()))||[],[i]),...a}},ke=e=>Q(e,!0),Ae=e=>Q(e,!1),je=(e,t)=>{let{token0Decimals:r,token1Decimals:i}=G(t);return n(()=>e&&r&&i?L(q(e),r,i):void 0,[e,r,i])},Me=e=>{let t=W(e);return{currentPrice:je(t.exact,e),currentTick:t}},$=e=>{let{data:t}=o({address:typeof e==`string`?e:e==null?void 0:e.address,abi:E,functionName:`pool`});return{pool:t}},Ne=e=>{let t=a(),{pool:n}=$(e),r=W(n),{timelockLens:i}=P(),o=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:l,data:d,isPending:f,error:p}=c(),{isLoading:m,isSuccess:h}=s({hash:d}),_=async(e,n,r)=>{if(!t)throw Error(`Wallet not connected`);if(!o||!i)throw Error(`Vault/lens not available`);let a=await l({address:o,abi:E,functionName:`burn`,args:[e,n,r,await i.read.getRefTick([o,e])]});return await g(t,{hash:a}),a};return{burnMultiple:async e=>{if(!t)throw Error(`Wallet not connected`);if(!r.exact)throw Error(`Current tick not available`);if(e.length===0)throw Error(`No positions to burn`);if(!i||!o)throw Error(`Vault/lens not available`);if(e.length===1)await _(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{let n=await i.read.batchGetRefTick([o,e.map(e=>e.tickLower)]);await g(t,{hash:await l({address:o,abi:E,functionName:`multicall`,args:[e.map((e,t)=>u({abi:E,functionName:`burn`,args:[e.tickLower,e.tickUpper,e.liquidity,n[t]]}))]})})}},burn:_,hash:d,isPending:f,isConfirming:m,isSuccess:h,error:p,isLoading:f||m}},Pe=e=>{let{timelockLens:t}=P(),{pool:r}=$(e),{token0Decimals:i,token1Decimals:a}=G(r),{currentPrice:o}=Me(r),s=typeof e==`string`?e:e==null?void 0:e.address,{data:c=[],refetch:l}=v({queryKey:[`liquidityBlocks`,s],queryFn:()=>t.read.getAllBlocks([s]),enabled:!!s&&!!t}),{totalAmount0:u,totalAmount1:d,borrowedAmount0:f,borrowedAmount1:p}=n(()=>({totalAmount0:i?I(c.reduce((e,t)=>e+t.totalAmount0,0n),i):void 0,totalAmount1:a?I(c.reduce((e,t)=>e+t.totalAmount1,0n),a):void 0,borrowedAmount0:i?I(c.reduce((e,t)=>e+t.borrowedAmount0,0n),i):void 0,borrowedAmount1:a?I(c.reduce((e,t)=>e+t.borrowedAmount1,0n),a):void 0}),[c,i,a]);return{tvl1:n(()=>{if(!u||!d||!o||!a)return;let e=u.scaled*o.scaled/10n**18n,t=d.scaled;return I(e+t,a)},[u,d,o,a]),blocks:c,totalAmount0:u,totalAmount1:d,borrowedAmount0:f,borrowedAmount1:p,refetch:l}},Fe=async(e,t,n,r,i)=>{let a=Array(t.length).fill(i),o=await e.read.batchGetAmountsForLiquidityTicks([a,t,n,r]),s=0n,c=0n,l=[],u=[];for(let e of o[0])s+=e,l.push(e);for(let e of o[1])c+=e,u.push(e);return{totalAmount0:s,totalAmount1:c,amounts0:l,amounts1:u}},Ie=e=>{let t=a(),{address:n}=r(),{pool:i}=$(e),{timelockLens:o,uniswapLens:l}=P(),f=W(i),{token0:m,token1:h}=G(i),_=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:v,data:y,isPending:b,error:x}=c(),{isLoading:S,isSuccess:C}=s({hash:y}),w=async e=>{if(!n||!t)throw Error(`Wallet not connected`);if(f.exact===void 0||!m||!h||!_||!l)throw Error(`Current tick not available`);let{totalAmount0:r,totalAmount1:i}=await Fe(l,e.map(e=>e.tickLower),e.map(e=>e.tickUpper),e.map(e=>e.liquidity),f.exact),[a,o]=await Promise.all([O(m,t).read.allowance([n,_]),O(h,t).read.allowance([n,_])]),s=[];if(a<=r){let e=await v({address:m,abi:d,functionName:`approve`,args:[_,p]});s.push(g(t,{hash:e}))}if(o<=i){let e=await v({address:h,abi:d,functionName:`approve`,args:[_,p]});s.push(g(t,{hash:e}))}s.length>0&&await Promise.all(s)},T=async(e,n,r)=>{if(!t)throw Error(`Wallet not connected`);if(!_||!o)throw Error(`Vault/lens not available`);await w([{tickLower:e,tickUpper:n,liquidity:r}]);let i=await v({address:_,abi:E,functionName:`mint`,args:[e,n,r,await o.read.getRefTick([_,e])]});return await g(t,{hash:i}),i};return{mintMultiple:async e=>{if(!t)throw Error(`Wallet not connected`);if(!f.exact)throw Error(`Current tick not available`);if(e.length===0)throw Error(`No positions to mint`);if(!o||!_)throw Error(`Vault/lens not available`);if(e.length===1)await T(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{await w(e);let n=await o.read.batchGetRefTick([_,e.map(e=>e.tickLower)]);await g(t,{hash:await v({address:_,abi:E,functionName:`multicall`,args:[e.map((e,t)=>u({abi:E,functionName:`mint`,args:[e.tickLower,e.tickUpper,e.liquidity,n[t]]}))]})})}},mint:T,hash:y,isPending:b,isConfirming:S,isSuccess:C,error:x,isLoading:b||S}},Le=e=>{let{timelockLens:t}=P(),{pool:n}=$(e),{token0Decimals:r,token1Decimals:i}=G(n),a=typeof e==`string`?e:e==null?void 0:e.address,{data:s,refetch:c}=o({address:t==null?void 0:t.address,abi:T,functionName:`getVaultTVL`,args:[a],query:{enabled:!!a&&!!t}}),l=s&&r?I(s[0],r):void 0,u=s&&i?I(s[1],i):void 0,d=s&&r?I(s[2],r):void 0,f=s&&i?I(s[3],i):void 0;return{tvl0:s&&r?I(s[4],r):void 0,tvl1:s&&i?I(s[5],i):void 0,totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f,refetch:c}};export{K as PRICE_PRECISION,ce as TimelockMarketProvider,S as erc20Abi,H as formatAmount,U as formatCondensed,_e as formatUSD,he as formatVagueAmount,O as getErc20,q as getPriceAtTick,be as getTickAtPrice,A as getTimelockLens,k as getTimelockMarket,ee as getTimelockVault,ne as getUniswapMathLens,te as getUniswapPool,T as lensAbi,xe as liquiditiesToAmount0,Se as liquiditiesToAmount1,Ce as liquiditiesToAmounts,D as optionsMarketAbi,J as roundTickDown,Y as roundTickUp,z as scaleAmount,V as scalePrice,E as singleOwnerVaultAbi,re as swapRouters,j as timelockLenses,X as token0ToToken1,Z as token1ToToken0,w as uniswapMathLensAbi,M as uniswapMathLenses,C as uniswapV3PoolAbi,R as unscaleAmount,B as unscalePrice,ke as useActiveUserOptions,Ne as useBurnLiquidity,Ae as useClosedUserOptions,le as useCurrentMarket,Me as useCurrentPrice,W as useCurrentTick,de as useExerciseOption,P as useLens,Pe as useLiquidityBlocks,F as useMarketData,ve as useMaxPositionSize,Ie as useMintLiquidity,we as useMintOption,De as useOptionLiquidityData,Oe as useOptionPremium,G as usePoolData,je as usePriceAtTick,$ as useVaultData,Le as useVaultTVL,I as wrapAmount,pe as wrapAmountUnscaled,L as wrapPrice,me as wrapPriceUnscaled,fe as zero};
|
|
57
|
+
</N.Provider>},ce=()=>{let e=t(N);if(e===void 0)throw Error(`useCurrentMarket must be used within a TimelockMarketProvider`);return e.marketData},le=()=>{let e=t(N);if(e===void 0)throw Error(`useConfig must be used within a TimelockMarketProvider`);return{lensAddr:e.lensAddr,uniswapMathLensAddr:e.uniswapMathLensAddr,envioGraphqlUrl:e.envioGraphqlUrl,graphqlClient:e.envioGraphqlUrl?oe(new l(e.envioGraphqlUrl)):void 0}},P=()=>{let e=a(),t=e?A(e):void 0;return{uniswapLens:e?ne(e):void 0,timelockLens:t}},F=e=>{let{timelockLens:t}=P(),n=a(),r=typeof e==`string`?e:e==null?void 0:e.address,{data:i}=o({address:t==null?void 0:t.address,abi:T,functionName:`getMarketData`,args:r?[r]:void 0,query:{enabled:r!==void 0}});return!i||!r||!n?{}:{...i,address:r}},ue=e=>{let{vault:t}=F(e),n=a(),{data:r}=o({address:t,abi:E,functionName:`lowestTick`}),{writeContractAsync:i,data:l,isPending:u,error:d}=c(),{isLoading:f,isSuccess:p}=s({hash:l}),m=typeof e==`string`?e:e==null?void 0:e.address;return{exerciseOption:async(e,t)=>{if(!n)throw Error(`Wallet not connected`);if(r===void 0||!m)throw Error(`Lowest tick lower not available`);let a=await i({address:m,abi:D,functionName:`exerciseOption`,args:[e,t,0n,r]});return await g(n,{hash:a}),a},hash:l,isPending:u,isConfirming:f,isSuccess:p,error:d,isLoading:u||f}},de={scaled:0n,unscaled:_(0),decimals:18,formatted:`0`},I=(e,t)=>{let n=R(e,t);return{scaled:e,unscaled:n,decimals:t,formatted:H(n)}},fe=(e,t)=>{e=_(e);let n=z(e,t),r=H(e);return{scaled:n,unscaled:e,decimals:t,formatted:r}},L=(e,t,n)=>{let r=B(e,t,n),i=H(r);return{scaled:e,unscaled:r,decimals:36+n-t,formatted:i}},pe=(e,t,n)=>{e=_(e);let r=V(e,t,n),i=H(e);return{scaled:r,unscaled:e,decimals:36+n-t,formatted:i}},R=(e,t)=>new _(e.toString()).div(new _(10).pow(t)),z=(e,t)=>BigInt(_(e).mul(new _(10).pow(t)).round().toFixed(0)),B=(e,t,n,r=18)=>new _(e.toString()).mul(new _(10).pow(t)).div(new _(10).pow(n)).div(new _(10).pow(r)),V=(e,t,n,r=18)=>BigInt(_(e).mul(new _(10).pow(r)).mul(new _(10).pow(n)).div(new _(10).pow(t)).round().toFixed(0)),H=e=>e===void 0?`-`:U(_(e).toFixed(100)),me=e=>(e=Number(e),e>=0xe8d4a51000?`${(e/0xe8d4a51000).toFixed(2)}T`:e>=1e9?`${(e/1e9).toFixed(2)}B`:e>=1e6?`${(e/1e6).toFixed(2)}M`:e>=1e3?`${(e/1e3).toFixed(2)}K`:e<1?e.toPrecision(2):e.toFixed(2)),U=(e,t=2)=>{let[n,r]=(typeof e==`number`?e.toFixed(20):e).replace(/(\.\d*?)0+$/,`$1`).replace(/\.$/,``).split(`.`),i=n.replace(/\B(?=(\d{3})+(?!\d))/g,`,`);if(!r)return i;let a=r.match(/^(0{3,})/);if(a){let e=a[1].length;return`${i}.0${he(e.toString())}${r.slice(e).slice(0,t)}`}else{let e=r.search(/[1-9]/);if(e===-1)return i;let n=r.slice(e).slice(0,t);return`${i}.${r.slice(0,e)}${n}`}},he=e=>e.replace(/[0-9]/g,e=>`₀₁₂₃₄₅₆₇₈₉`[+e]),ge=e=>`$`+H(e),_e=(e,t,r=100)=>{let{timelockLens:i}=P(),{optionAssetDecimals:a}=F(e),s=typeof e==`string`?e:e==null?void 0:e.address,{data:c,refetch:l}=o({address:i==null?void 0:i.address,abi:T,functionName:`getMaxPositionSizeAtCurrentTick`,args:[s,r],query:{enabled:!!s&&!!i},gas:100000000n}),{data:u,refetch:d}=o({address:i==null?void 0:i.address,abi:T,functionName:`getMaxPositionSize`,args:[s,t,r],query:{enabled:!!s&&!!i&&t!==void 0},gas:100000000n}),f=t===void 0?c:u,{maxCallSize:p,maxPutSize:m}=n(()=>f&&a?{maxCallSize:I(f[0],a),maxPutSize:I(f[1],a)}:{},[f,a]);return{maxCallSize:p,maxPutSize:m,refetch:()=>{l(),d()}}},W=async e=>{let[t,{1:n}]=await Promise.all([e.read.tickSpacing(),e.read.slot0()]);return{exact:n,rounded:Math.floor(n/t)*t}},G=e=>{let t=a(),{data:n}=v({queryKey:[`currentTick`,typeof e==`string`?e:(e==null?void 0:e.address)||`-`],queryFn:()=>W(typeof e==`string`?te(e,t):e),enabled:!!e&&!!t,refetchInterval:5e3});return n||{}},K=e=>{let t=typeof e==`string`?e:e==null?void 0:e.address,{timelockLens:n}=P(),r=a(),{data:i}=o({address:n==null?void 0:n.address,abi:T,functionName:`getPoolData`,args:t?[t]:void 0,query:{enabled:!!t&&!!r}});return i||{}},q=BigInt(0xde0b6b3a7640000),J=e=>{let t=BigInt(b.getSqrtRatioAtTick(e).toString());return t*t*q/BigInt(2**192)},ve=e=>{let t=e*BigInt(2**192)/q,n=x.BigInt(new _(t.toString()).sqrt().toFixed(0));return b.getTickAtSqrtRatio(n)},Y=(e,t)=>{let n=e%t;return n>=0?e-n:e-n-t},ye=(e,t)=>{let n=e%t;return n===0?e:n>0?e-n+t:e-n},X=(e,t)=>e*J(t)/q,Z=(e,t)=>{let n=J(t);return e*q/n},be=(e,t,n)=>{let r=BigInt(0);for(let i=0;i<e.length;i++){let a=e[i];if(a===BigInt(0))continue;let o=t+n*i,s=o+n,c=b.getSqrtRatioAtTick(o),l=b.getSqrtRatioAtTick(s),u=x.BigInt(a.toString()),d=y.getAmount0Delta(c,l,u,!1);r+=BigInt(d.toString())}return r},xe=(e,t,n)=>{let r=BigInt(0);for(let i=0;i<e.length;i++){let a=e[i];if(a===BigInt(0))continue;let o=t+n*i,s=o+n,c=b.getSqrtRatioAtTick(o),l=b.getSqrtRatioAtTick(s),u=x.BigInt(a.toString()),d=y.getAmount1Delta(c,l,u,!1);r+=BigInt(d.toString())}return r},Se=(e,t,n,r)=>{let i=0n,a=0n,o=b.getSqrtRatioAtTick(n);for(let s=0;s<e.length;s++){let c=e[s];if(c===BigInt(0))continue;let l=t+r*s,u=l+r,d=b.getSqrtRatioAtTick(l),f=b.getSqrtRatioAtTick(u),p=x.BigInt(c.toString());if(n<l){let e=y.getAmount0Delta(d,f,p,!1);i+=BigInt(e.toString())}else if(n>=u){let e=y.getAmount1Delta(d,f,p,!1);a+=BigInt(e.toString())}else{let e=y.getAmount0Delta(o,f,p,!1),t=y.getAmount1Delta(d,o,p,!1);i+=BigInt(e.toString()),a+=BigInt(t.toString())}}return[i,a]},Ce=e=>{let{timelockLens:t}=P(),{payoutAsset:n,vault:i,pool:o,optionAssetIsToken0:l}=F(e),{tickSpacing:u}=K(o),{exact:f}=G(o),m=a(),{address:h}=r(),{writeContractAsync:_,data:v,isPending:y,error:b}=c(),{isLoading:x,isSuccess:S}=s({hash:v}),C=typeof e==`string`?e:e==null?void 0:e.address,w=async e=>{if(!m||!h)throw Error(`Wallet not connected`);if(!n||!C)throw Error(`Tokens not available`);await O(n,m).read.allowance([h,C])<e&&await g(m,{hash:await _({address:n,abi:d,functionName:`approve`,args:[C,p]})})};return{mintOption:async(e,n,r,a)=>{if(!m)throw Error(`Wallet not connected`);if(!t||!i||!C||!f||!u)throw Error(`Lowest tick lower not available`);a=a??f,a=e===`CALL`&&l||e===`PUT`&&!l?ye(a,u):Y(a,u),await w(await k(C,m).read.calculatePremium([e===`CALL`?0:1,n,a,BigInt(r)]));let o=await _({address:C,abi:D,functionName:`mintOption`,args:[e===`CALL`?0:1,n,a,BigInt(r),BigInt(1e69),await t.read.getRefTick([i,a])]});return await g(m,{hash:o}),o},hash:v,isPending:y,isConfirming:x,isSuccess:S,error:b,isLoading:y||x}},we=(e,t,n,r,i,a)=>{let o=n-(i===`CALL`?0:r*e.length),s=be(e,o,r),c=xe(e,o,r);return i===`CALL`?a?s:c:a?Z(c,t):X(s,t)},Te=(e,t)=>{let n=J(e);return t?n:q/n},Ee=e=>{let{marketAddr:t,optionType:r,liquiditiesAtOpen:i,liquiditiesCurrent:a,strikeTick:o,entryTick:s}=e,{pool:c,optionAssetIsToken0:l,optionAssetDecimals:u,payoutAssetDecimals:d}=F(t),{tickSpacing:f}=K(c),{exact:p}=G(c),{strikePrice:m,entryPrice:h}=n(()=>{if(l===void 0||!u||!d)return{};let e=L(Te(s,l),u,d);return{strikePrice:L(Te(o,l),u,d),entryPrice:e}},[e,l,u,d]),{positionSizeAtOpen:g,positionSizeCurrent:_}=n(()=>l===void 0||!f||!u||!d?{}:{positionSizeAtOpen:I(we(i,s,o,f,r,l),u),positionSizeCurrent:I(we(a,s,o,f,r,l),u)},[e,l,f,u,d]),{displayPnl:v,unrealizedPayout:y}=n(()=>{if(l===void 0||p===void 0||!_||!d)return{};let e=_.scaled,t=l?X(e,p)-X(e,s):Z(e,p)-Z(e,s),n=I(r===`CALL`?t:-t,d);return{unrealizedPayout:I(n.scaled<0?0n:n.scaled,d),displayPnl:n}},[e,l,p,_]);return{positionSizeCurrent:_,positionSizeAtOpen:g,displayPnl:v,unrealizedPayout:y,strikePrice:m,entryPrice:h}},De=(e,t,r,i)=>{let{pool:a}=F(e),s=G(a),{tickSpacing:c}=K(a),{payoutAssetDecimals:l}=F(e),u=typeof e==`string`?e:e==null?void 0:e.address,d=n(()=>{if(!(s.rounded===void 0||c===void 0))return t===`CALL`?s.rounded+c:s.rounded},[s.rounded,c,t]),{data:f}=o({address:u,abi:D,functionName:`calculatePremium`,args:d===void 0?void 0:[t===`CALL`?0:1,r,d,BigInt(i)],query:{enabled:s.rounded!==void 0&&l!==void 0&&c!==void 0&&d!==void 0}});return n(()=>{if(!(f===void 0||l===void 0))return I(f,l)},[f,l])},Oe=(e,t=!1)=>{let{graphqlClient:r}=le(),{data:i,...a}=v({queryKey:[`userTrades`,e||`--`,t],queryFn:()=>t?r==null?void 0:r.GetActiveUserOptions({user:e.toLowerCase()}):r==null?void 0:r.GetClosedUserOptions({user:e.toLowerCase()}),select:e=>{var t;return e==null||(t=e.UserOption)==null?void 0:t.map(e=>({...e,id:BigInt(e.id),marketAddr:e.marketAddr,optionType:e.optionType,createdAt:new Date(Number(e.createdAt)*1e3),expiresAt:new Date(Number(e.expiresAt)*1e3),premiumPaid:BigInt(e.premiumPaid),realizedPayout:BigInt(e.realizedPayout),liquiditiesAtOpen:e.liquiditiesAtOpen.map(e=>BigInt(e)),liquiditiesCurrent:e.liquiditiesCurrent.map(e=>BigInt(e))}))},enabled:!!e&&!!r});return{data:n(()=>(i==null?void 0:i.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()))||[],[i]),...a}},ke=e=>Oe(e,!0),Ae=e=>Oe(e,!1),je=(e,t)=>{let{token0Decimals:r,token1Decimals:i}=K(t);return n(()=>e&&r&&i?L(J(e),r,i):void 0,[e,r,i])},Me=e=>{let t=G(e);return{currentPrice:je(t.exact,e),currentTick:t}},Q=e=>{let{data:t}=o({address:typeof e==`string`?e:e==null?void 0:e.address,abi:E,functionName:`pool`});return{pool:t}},Ne=e=>{let t=a(),{pool:n}=Q(e),r=G(n),{timelockLens:i}=P(),o=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:l,data:d,isPending:f,error:p}=c(),{isLoading:m,isSuccess:h}=s({hash:d}),_=async(e,n,r)=>{if(!t)throw Error(`Wallet not connected`);if(!o||!i)throw Error(`Vault/lens not available`);let a=await l({address:o,abi:E,functionName:`burn`,args:[e,n,r,await i.read.getRefTick([o,e])]});return await g(t,{hash:a}),a};return{burnMultiple:async e=>{if(!t)throw Error(`Wallet not connected`);if(!r.exact)throw Error(`Current tick not available`);if(e.length===0)throw Error(`No positions to burn`);if(!i||!o)throw Error(`Vault/lens not available`);if(e.length===1)await _(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{let n=await i.read.batchGetRefTick([o,e.map(e=>e.tickLower)]);await g(t,{hash:await l({address:o,abi:E,functionName:`multicall`,args:[e.map((e,t)=>u({abi:E,functionName:`burn`,args:[e.tickLower,e.tickUpper,e.liquidity,n[t]]}))]})})}},burn:_,hash:d,isPending:f,isConfirming:m,isSuccess:h,error:p,isLoading:f||m}},Pe=e=>{let{timelockLens:t}=P(),{pool:r}=Q(e),{token0Decimals:i,token1Decimals:a}=K(r),{currentPrice:o}=Me(r),s=typeof e==`string`?e:e==null?void 0:e.address,{data:c=[],refetch:l}=v({queryKey:[`liquidityBlocks`,s],queryFn:()=>t.read.getAllBlocks([s]),enabled:!!s&&!!t}),{totalAmount0:u,totalAmount1:d,borrowedAmount0:f,borrowedAmount1:p}=n(()=>({totalAmount0:i?I(c.reduce((e,t)=>e+t.totalAmount0,0n),i):void 0,totalAmount1:a?I(c.reduce((e,t)=>e+t.totalAmount1,0n),a):void 0,borrowedAmount0:i?I(c.reduce((e,t)=>e+t.borrowedAmount0,0n),i):void 0,borrowedAmount1:a?I(c.reduce((e,t)=>e+t.borrowedAmount1,0n),a):void 0}),[c,i,a]);return{tvl1:n(()=>{if(!u||!d||!o||!a)return;let e=u.scaled*o.scaled/10n**18n,t=d.scaled;return I(e+t,a)},[u,d,o,a]),blocks:c,totalAmount0:u,totalAmount1:d,borrowedAmount0:f,borrowedAmount1:p,refetch:l}},$=async(e,t,n,r,i)=>{let a=Array(t.length).fill(i),o=await e.read.batchGetAmountsForLiquidityTicks([a,t,n,r]),s=0n,c=0n,l=[],u=[];for(let e of o[0])s+=e,l.push(e);for(let e of o[1])c+=e,u.push(e);return{totalAmount0:s,totalAmount1:c,amounts0:l,amounts1:u}},Fe=e=>{let t=a(),{address:n}=r(),{pool:i}=Q(e),{timelockLens:o,uniswapLens:l}=P(),f=G(i),{token0:m,token1:h}=K(i),_=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:v,data:y,isPending:b,error:x}=c(),{isLoading:S,isSuccess:C}=s({hash:y}),w=async e=>{if(!n||!t)throw Error(`Wallet not connected`);if(f.exact===void 0||!m||!h||!_||!l)throw Error(`Current tick not available`);let{totalAmount0:r,totalAmount1:i}=await $(l,e.map(e=>e.tickLower),e.map(e=>e.tickUpper),e.map(e=>e.liquidity),f.exact),[a,o]=await Promise.all([O(m,t).read.allowance([n,_]),O(h,t).read.allowance([n,_])]),s=[];if(a<=r){let e=await v({address:m,abi:d,functionName:`approve`,args:[_,p]});s.push(g(t,{hash:e}))}if(o<=i){let e=await v({address:h,abi:d,functionName:`approve`,args:[_,p]});s.push(g(t,{hash:e}))}s.length>0&&await Promise.all(s)},T=async(e,n,r)=>{if(!t)throw Error(`Wallet not connected`);if(!_||!o)throw Error(`Vault/lens not available`);await w([{tickLower:e,tickUpper:n,liquidity:r}]);let i=await v({address:_,abi:E,functionName:`mint`,args:[e,n,r,await o.read.getRefTick([_,e])]});return await g(t,{hash:i}),i};return{mintMultiple:async e=>{if(!t)throw Error(`Wallet not connected`);if(!f.exact)throw Error(`Current tick not available`);if(e.length===0)throw Error(`No positions to mint`);if(!o||!_)throw Error(`Vault/lens not available`);if(e.length===1)await T(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{await w(e);let n=await o.read.batchGetRefTick([_,e.map(e=>e.tickLower)]);await g(t,{hash:await v({address:_,abi:E,functionName:`multicall`,args:[e.map((e,t)=>u({abi:E,functionName:`mint`,args:[e.tickLower,e.tickUpper,e.liquidity,n[t]]}))]})})}},mint:T,hash:y,isPending:b,isConfirming:S,isSuccess:C,error:x,isLoading:b||S}},Ie=e=>{let{timelockLens:t}=P(),{pool:n}=Q(e),{token0Decimals:r,token1Decimals:i}=K(n),a=typeof e==`string`?e:e==null?void 0:e.address,{data:s,refetch:c}=o({address:t==null?void 0:t.address,abi:T,functionName:`getVaultTVL`,args:[a],query:{enabled:!!a&&!!t}}),l=s&&r?I(s[0],r):void 0,u=s&&i?I(s[1],i):void 0,d=s&&r?I(s[2],r):void 0,f=s&&i?I(s[3],i):void 0;return{tvl0:s&&r?I(s[4],r):void 0,tvl1:s&&i?I(s[5],i):void 0,totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f,refetch:c}};export{q as PRICE_PRECISION,se as TimelockMarketProvider,$ as batchGetAmountsFromLiquidity,S as erc20Abi,H as formatAmount,U as formatCondensed,ge as formatUSD,me as formatVagueAmount,W as getCurrentTick,O as getErc20,J as getPriceAtTick,ve as getTickAtPrice,A as getTimelockLens,k as getTimelockMarket,ee as getTimelockVault,ne as getUniswapMathLens,te as getUniswapPool,T as lensAbi,be as liquiditiesToAmount0,xe as liquiditiesToAmount1,Se as liquiditiesToAmounts,D as optionsMarketAbi,Y as roundTickDown,ye as roundTickUp,z as scaleAmount,V as scalePrice,E as singleOwnerVaultAbi,j as timelockLenses,X as token0ToToken1,Z as token1ToToken0,w as uniswapMathLensAbi,M as uniswapMathLenses,C as uniswapV3PoolAbi,R as unscaleAmount,B as unscalePrice,ke as useActiveUserOptions,Ne as useBurnLiquidity,Ae as useClosedUserOptions,ce as useCurrentMarket,Me as useCurrentPrice,G as useCurrentTick,ue as useExerciseOption,P as useLens,Pe as useLiquidityBlocks,F as useMarketData,_e as useMaxPositionSize,Fe as useMintLiquidity,Ce as useMintOption,Ee as useOptionLiquidityData,De as useOptionPremium,K as usePoolData,je as usePriceAtTick,le as useTimelockConfig,Q as useVaultData,Ie as useVaultTVL,I as wrapAmount,fe as wrapAmountUnscaled,L as wrapPrice,pe as wrapPriceUnscaled,de as zero};
|
|
58
58
|
//# sourceMappingURL=package.js.map
|