timelock-sdk 0.0.8 → 0.0.9

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/client.cjs CHANGED
@@ -15,6 +15,8 @@
15
15
  optionType
16
16
  strikeTick
17
17
  entryTick
18
+ strikePrice
19
+ entryPrice
18
20
  expiresAt
19
21
  createdAt
20
22
  premiumPaid
@@ -22,6 +24,8 @@
22
24
  marketAddr
23
25
  liquiditiesAtOpen
24
26
  liquiditiesCurrent
27
+ positionSizeAtOpen
28
+ positionSizeCurrent
25
29
  fullyExercised
26
30
  }
27
31
  }
@@ -42,6 +46,8 @@
42
46
  optionType
43
47
  strikeTick
44
48
  entryTick
49
+ strikePrice
50
+ entryPrice
45
51
  expiresAt
46
52
  createdAt
47
53
  premiumPaid
@@ -49,8 +55,10 @@
49
55
  marketAddr
50
56
  liquiditiesAtOpen
51
57
  liquiditiesCurrent
58
+ positionSizeAtOpen
59
+ positionSizeCurrent
52
60
  fullyExercised
53
61
  }
54
62
  }
55
- `,u=(e,t,n,r)=>e();function d(e,t=u){return{GetActiveUserOptions(n,r,i){return t(t=>e.request({document:c,variables:n,requestHeaders:{...r,...t},signal:i}),`GetActiveUserOptions`,`query`,n)},GetClosedUserOptions(n,r,i){return t(t=>e.request({document:l,variables:n,requestHeaders:{...r,...t},signal:i}),`GetClosedUserOptions`,`query`,n)}}}const f=(0,n.createContext)(void 0),p=({children:t,marketData:i,envioGraphqlUrl:a})=>{let o=(0,r.useChainId)(),s=e.timelockLenses[o],c=e.uniswapMathLenses[o];return n.default.createElement(f.Provider,{value:{marketData:i||{},lensAddr:s,uniswapMathLensAddr:c,envioGraphqlUrl:a}},t)},m=()=>{let e=(0,n.useContext)(f);if(e===void 0)throw Error(`useCurrentMarket must be used within a TimelockMarketProvider`);return e.marketData},h=()=>{let e=(0,n.useContext)(f);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?d(new i.GraphQLClient(e.envioGraphqlUrl)):void 0}},g=()=>{let t=(0,r.useClient)(),n=t?e.getTimelockLens(t):void 0;return{uniswapLens:t?e.getUniswapMathLens(t):void 0,timelockLens:n}},_=t=>{let{timelockLens:n}=g(),i=(0,r.useClient)(),a=typeof t==`string`?t:t==null?void 0:t.address,{data:o}=(0,r.useReadContract)({address:n==null?void 0:n.address,abi:e.lensAbi,functionName:`getMarketData`,args:a?[a]:void 0,query:{enabled:a!==void 0}});return!o||!a||!i?{}:{...o,address:a}},v=t=>{let{vault:n}=_(t),i=(0,r.useClient)(),{data:a}=(0,r.useReadContract)({address:n,abi:e.singleOwnerVaultAbi,functionName:`lowestTick`}),{writeContractAsync:s,data:c,isPending:l,error:u}=(0,r.useWriteContract)(),{isLoading:d,isSuccess:f}=(0,r.useWaitForTransactionReceipt)({hash:c}),p=typeof t==`string`?t:t==null?void 0:t.address;return{exerciseOption:async(t,n)=>{if(!i)throw Error(`Wallet not connected`);if(a===void 0||!p)throw Error(`Lowest tick lower not available`);let r=await s({address:p,abi:e.optionsMarketAbi,functionName:`exerciseOption`,args:[t,n,0n,a]});return await(0,o.waitForTransactionReceipt)(i,{hash:r}),r},hash:c,isPending:l,isConfirming:d,isSuccess:f,error:u,isLoading:l||d}},y=(t,i,a=100)=>{let{timelockLens:o}=g(),{optionAssetDecimals:s}=_(t),c=typeof t==`string`?t:t==null?void 0:t.address,{data:l,refetch:u}=(0,r.useReadContract)({address:o==null?void 0:o.address,abi:e.lensAbi,functionName:`getMaxPositionSizeAtCurrentTick`,args:[c,a],query:{enabled:!!c&&!!o},gas:100000000n}),{data:d,refetch:f}=(0,r.useReadContract)({address:o==null?void 0:o.address,abi:e.lensAbi,functionName:`getMaxPositionSize`,args:[c,i,a],query:{enabled:!!c&&!!o&&i!==void 0},gas:100000000n}),p=i===void 0?l:d,{maxCallSize:m,maxPutSize:h}=(0,n.useMemo)(()=>p&&s?{maxCallSize:e.wrapAmount(p[0],s),maxPutSize:e.wrapAmount(p[1],s)}:{},[p,s]);return{maxCallSize:m,maxPutSize:h,refetch:()=>{u(),f()}}},b=async e=>{let[t,{1:n}]=await Promise.all([e.read.tickSpacing(),e.read.slot0()]);return{exact:n,rounded:Math.floor(n/t)*t}},x=t=>{let n=(0,r.useClient)(),{data:i}=(0,s.useQuery)({queryKey:[`currentTick`,typeof t==`string`?t:(t==null?void 0:t.address)||`-`],queryFn:()=>b(typeof t==`string`?e.getUniswapPool(t,n):t),enabled:!!t&&!!n,refetchInterval:5e3});return i||{}},S=t=>{let n=typeof t==`string`?t:t==null?void 0:t.address,{timelockLens:i}=g(),a=(0,r.useClient)(),{data:o}=(0,r.useReadContract)({address:i==null?void 0:i.address,abi:e.lensAbi,functionName:`getPoolData`,args:n?[n]:void 0,query:{enabled:!!n&&!!a}});return o||{}},C=n=>{let{timelockLens:i}=g(),{payoutAsset:a,vault:s,pool:c,optionAssetIsToken0:l}=_(n),{tickSpacing:u}=S(c),{exact:d}=x(c),f=(0,r.useClient)(),{address:p}=(0,r.useAccount)(),{writeContractAsync:m,data:h,isPending:v,error:y}=(0,r.useWriteContract)(),{isLoading:b,isSuccess:C}=(0,r.useWaitForTransactionReceipt)({hash:h}),w=typeof n==`string`?n:n==null?void 0:n.address,T=async n=>{if(!f||!p)throw Error(`Wallet not connected`);if(!a||!w)throw Error(`Tokens not available`);await e.getErc20(a,f).read.allowance([p,w])<n&&await(0,o.waitForTransactionReceipt)(f,{hash:await m({address:a,abi:t.erc20Abi,functionName:`approve`,args:[w,t.maxUint256]})})};return{mintOption:async(t,n,r,a)=>{if(!f)throw Error(`Wallet not connected`);if(!i||!s||!w||!d||!u)throw Error(`Lowest tick lower not available`);a=a??d,a=t===`CALL`&&l||t===`PUT`&&!l?e.roundTickUp(a,u):e.roundTickDown(a,u),await T(await e.getTimelockMarket(w,f).read.calculatePremium([t===`CALL`?0:1,n,a,BigInt(r)]));let c=await m({address:w,abi:e.optionsMarketAbi,functionName:`mintOption`,args:[t===`CALL`?0:1,n,a,BigInt(r),BigInt(1e69),await i.read.getRefTick([s,a])]});return await(0,o.waitForTransactionReceipt)(f,{hash:c}),c},hash:h,isPending:v,isConfirming:b,isSuccess:C,error:y,isLoading:v||b}},w=(t,n,r,i,a,o)=>{let s=r-(a===`CALL`?0:i*t.length),c=e.liquiditiesToAmount0(t,s,i),l=e.liquiditiesToAmount1(t,s,i);return a===`CALL`?o?c:l:o?e.token1ToToken0(l,n):e.token0ToToken1(c,n)},T=(t,n)=>{let r=e.getPriceAtTick(t);return n?r:e.PRICE_PRECISION/r},E=t=>{let{marketAddr:r,optionType:i,liquiditiesAtOpen:a,liquiditiesCurrent:o,strikeTick:s,entryTick:c}=t,{pool:l,optionAssetIsToken0:u,optionAssetDecimals:d,payoutAssetDecimals:f}=_(r),{tickSpacing:p}=S(l),{exact:m}=x(l),{strikePrice:h,entryPrice:g}=(0,n.useMemo)(()=>{if(u===void 0||!d||!f)return{};let t=e.wrapPrice(T(c,u),d,f);return{strikePrice:e.wrapPrice(T(s,u),d,f),entryPrice:t}},[t,u,d,f]),{positionSizeAtOpen:v,positionSizeCurrent:y}=(0,n.useMemo)(()=>u===void 0||!p||!d||!f?{}:{positionSizeAtOpen:e.wrapAmount(w(a,c,s,p,i,u),d),positionSizeCurrent:e.wrapAmount(w(o,c,s,p,i,u),d)},[t,u,p,d,f]),{displayPnl:b,unrealizedPayout:C}=(0,n.useMemo)(()=>{if(u===void 0||m===void 0||!y||!f)return{};let t=y.scaled,n=u?e.token0ToToken1(t,m)-e.token0ToToken1(t,c):e.token1ToToken0(t,m)-e.token1ToToken0(t,c),r=e.wrapAmount(i===`CALL`?n:-n,f);return{unrealizedPayout:e.wrapAmount(r.scaled<0?0n:r.scaled,f),displayPnl:r}},[t,u,m,y]);return{positionSizeCurrent:y,positionSizeAtOpen:v,displayPnl:b,unrealizedPayout:C,strikePrice:h,entryPrice:g}},D=(t,i,a,o)=>{let{pool:s}=_(t),c=x(s),{tickSpacing:l}=S(s),{payoutAssetDecimals:u}=_(t),d=typeof t==`string`?t:t==null?void 0:t.address,f=(0,n.useMemo)(()=>{if(!(c.rounded===void 0||l===void 0))return i===`CALL`?c.rounded+l:c.rounded},[c.rounded,l,i]),{data:p}=(0,r.useReadContract)({address:d,abi:e.optionsMarketAbi,functionName:`calculatePremium`,args:f===void 0?void 0:[i===`CALL`?0:1,a,f,BigInt(o)],query:{enabled:c.rounded!==void 0&&u!==void 0&&l!==void 0&&f!==void 0}});return(0,n.useMemo)(()=>{if(!(p===void 0||u===void 0))return e.wrapAmount(p,u)},[p,u])},O=(e,t=!1)=>{let{graphqlClient:r}=h(),{data:i,...a}=(0,s.useQuery)({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:(0,n.useMemo)(()=>(i==null?void 0:i.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()))||[],[i]),...a}},k=e=>O(e,!0),A=e=>O(e,!1),j=(t,r)=>{let{token0Decimals:i,token1Decimals:a}=S(r);return(0,n.useMemo)(()=>t&&i&&a?e.wrapPrice(e.getPriceAtTick(t),i,a):void 0,[t,i,a])},M=e=>{let t=x(e);return{currentPrice:j(t.exact,e),currentTick:t}},N=t=>{let{data:n}=(0,r.useReadContract)({address:typeof t==`string`?t:t==null?void 0:t.address,abi:e.singleOwnerVaultAbi,functionName:`pool`});return{pool:n}},P=n=>{let i=(0,r.useClient)(),{pool:a}=N(n),s=x(a),{timelockLens:c}=g(),l=typeof n==`string`?n:n==null?void 0:n.address,{writeContractAsync:u,data:d,isPending:f,error:p}=(0,r.useWriteContract)(),{isLoading:m,isSuccess:h}=(0,r.useWaitForTransactionReceipt)({hash:d}),_=async(t,n,r)=>{if(!i)throw Error(`Wallet not connected`);if(!l||!c)throw Error(`Vault/lens not available`);let a=await u({address:l,abi:e.singleOwnerVaultAbi,functionName:`burn`,args:[t,n,r,await c.read.getRefTick([l,t])]});return await(0,o.waitForTransactionReceipt)(i,{hash:a}),a};return{burnMultiple:async n=>{if(!i)throw Error(`Wallet not connected`);if(!s.exact)throw Error(`Current tick not available`);if(n.length===0)throw Error(`No positions to burn`);if(!c||!l)throw Error(`Vault/lens not available`);if(n.length===1)await _(n[0].tickLower,n[0].tickUpper,n[0].liquidity);else{let r=await c.read.batchGetRefTick([l,n.map(e=>e.tickLower)]);await(0,o.waitForTransactionReceipt)(i,{hash:await u({address:l,abi:e.singleOwnerVaultAbi,functionName:`multicall`,args:[n.map((n,i)=>(0,t.encodeFunctionData)({abi:e.singleOwnerVaultAbi,functionName:`burn`,args:[n.tickLower,n.tickUpper,n.liquidity,r[i]]}))]})})}},burn:_,hash:d,isPending:f,isConfirming:m,isSuccess:h,error:p,isLoading:f||m}},F=t=>{let{timelockLens:r}=g(),{pool:i}=N(t),{token0Decimals:a,token1Decimals:o}=S(i),{currentPrice:c}=M(i),l=typeof t==`string`?t:t==null?void 0:t.address,{data:u=[],refetch:d}=(0,s.useQuery)({queryKey:[`liquidityBlocks`,l],queryFn:()=>r.read.getAllBlocks([l]),enabled:!!l&&!!r}),{totalAmount0:f,totalAmount1:p,borrowedAmount0:m,borrowedAmount1:h}=(0,n.useMemo)(()=>({totalAmount0:a?e.wrapAmount(u.reduce((e,t)=>e+t.totalAmount0,0n),a):void 0,totalAmount1:o?e.wrapAmount(u.reduce((e,t)=>e+t.totalAmount1,0n),o):void 0,borrowedAmount0:a?e.wrapAmount(u.reduce((e,t)=>e+t.borrowedAmount0,0n),a):void 0,borrowedAmount1:o?e.wrapAmount(u.reduce((e,t)=>e+t.borrowedAmount1,0n),o):void 0}),[u,a,o]);return{tvl1:(0,n.useMemo)(()=>{if(!f||!p||!c||!o)return;let t=f.scaled*c.scaled/10n**18n,n=p.scaled;return e.wrapAmount(t+n,o)},[f,p,c,o]),blocks:u,totalAmount0:f,totalAmount1:p,borrowedAmount0:m,borrowedAmount1:h,refetch:d}},I=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}},L=n=>{let i=(0,r.useClient)(),{address:a}=(0,r.useAccount)(),{pool:s}=N(n),{timelockLens:c,uniswapLens:l}=g(),u=x(s),{token0:d,token1:f}=S(s),p=typeof n==`string`?n:n==null?void 0:n.address,{writeContractAsync:m,data:h,isPending:_,error:v}=(0,r.useWriteContract)(),{isLoading:y,isSuccess:b}=(0,r.useWaitForTransactionReceipt)({hash:h}),C=async n=>{if(!a||!i)throw Error(`Wallet not connected`);if(u.exact===void 0||!d||!f||!p||!l)throw Error(`Current tick not available`);let{totalAmount0:r,totalAmount1:s}=await I(l,n.map(e=>e.tickLower),n.map(e=>e.tickUpper),n.map(e=>e.liquidity),u.exact),[c,h]=await Promise.all([e.getErc20(d,i).read.allowance([a,p]),e.getErc20(f,i).read.allowance([a,p])]),g=[];if(c<=r){let e=await m({address:d,abi:t.erc20Abi,functionName:`approve`,args:[p,t.maxUint256]});g.push((0,o.waitForTransactionReceipt)(i,{hash:e}))}if(h<=s){let e=await m({address:f,abi:t.erc20Abi,functionName:`approve`,args:[p,t.maxUint256]});g.push((0,o.waitForTransactionReceipt)(i,{hash:e}))}g.length>0&&await Promise.all(g)},w=async(t,n,r)=>{if(!i)throw Error(`Wallet not connected`);if(!p||!c)throw Error(`Vault/lens not available`);await C([{tickLower:t,tickUpper:n,liquidity:r}]);let a=await m({address:p,abi:e.singleOwnerVaultAbi,functionName:`mint`,args:[t,n,r,await c.read.getRefTick([p,t])]});return await(0,o.waitForTransactionReceipt)(i,{hash:a}),a};return{mintMultiple:async n=>{if(!i)throw Error(`Wallet not connected`);if(!u.exact)throw Error(`Current tick not available`);if(n.length===0)throw Error(`No positions to mint`);if(!c||!p)throw Error(`Vault/lens not available`);if(n.length===1)await w(n[0].tickLower,n[0].tickUpper,n[0].liquidity);else{await C(n);let r=await c.read.batchGetRefTick([p,n.map(e=>e.tickLower)]);await(0,o.waitForTransactionReceipt)(i,{hash:await m({address:p,abi:e.singleOwnerVaultAbi,functionName:`multicall`,args:[n.map((n,i)=>(0,t.encodeFunctionData)({abi:e.singleOwnerVaultAbi,functionName:`mint`,args:[n.tickLower,n.tickUpper,n.liquidity,r[i]]}))]})})}},mint:w,hash:h,isPending:_,isConfirming:y,isSuccess:b,error:v,isLoading:_||y}},R=t=>{let{timelockLens:n}=g(),{pool:i}=N(t),{token0Decimals:a,token1Decimals:o}=S(i),s=typeof t==`string`?t:t==null?void 0:t.address,{data:c,refetch:l}=(0,r.useReadContract)({address:n==null?void 0:n.address,abi:e.lensAbi,functionName:`getVaultTVL`,args:[s],query:{enabled:!!s&&!!n}}),u=c&&a?e.wrapAmount(c[0],a):void 0,d=c&&o?e.wrapAmount(c[1],o):void 0,f=c&&a?e.wrapAmount(c[2],a):void 0,p=c&&o?e.wrapAmount(c[3],o):void 0;return{tvl0:c&&a?e.wrapAmount(c[4],a):void 0,tvl1:c&&o?e.wrapAmount(c[5],o):void 0,totalAmount0:u,totalAmount1:d,borrowedAmount0:f,borrowedAmount1:p,refetch:l}};exports.TimelockMarketProvider=p,exports.batchGetAmountsFromLiquidity=I,exports.getCurrentTick=b,exports.useActiveUserOptions=k,exports.useBurnLiquidity=P,exports.useClosedUserOptions=A,exports.useCurrentMarket=m,exports.useCurrentPrice=M,exports.useCurrentTick=x,exports.useExerciseOption=v,exports.useLens=g,exports.useLiquidityBlocks=F,exports.useMarketData=_,exports.useMaxPositionSize=y,exports.useMintLiquidity=L,exports.useMintOption=C,exports.useOptionLiquidityData=E,exports.useOptionPremium=D,exports.usePoolData=S,exports.usePriceAtTick=j,exports.useTimelockConfig=h,exports.useVaultData=N,exports.useVaultTVL=R;
63
+ `,u=(e,t,n,r)=>e();function d(e,t=u){return{GetActiveUserOptions(n,r,i){return t(t=>e.request({document:c,variables:n,requestHeaders:{...r,...t},signal:i}),`GetActiveUserOptions`,`query`,n)},GetClosedUserOptions(n,r,i){return t(t=>e.request({document:l,variables:n,requestHeaders:{...r,...t},signal:i}),`GetClosedUserOptions`,`query`,n)}}}const f=(0,n.createContext)(void 0),p=({children:t,marketData:i,envioGraphqlUrl:a})=>{let o=(0,r.useChainId)(),s=e.timelockLenses[o],c=e.uniswapMathLenses[o];return n.default.createElement(f.Provider,{value:{marketData:i||{},lensAddr:s,uniswapMathLensAddr:c,envioGraphqlUrl:a}},t)},m=()=>{let e=(0,n.useContext)(f);if(e===void 0)throw Error(`useCurrentMarket must be used within a TimelockMarketProvider`);return e.marketData},h=()=>{let e=(0,n.useContext)(f);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?d(new i.GraphQLClient(e.envioGraphqlUrl)):void 0}},g=()=>{let t=(0,r.useClient)(),n=t?e.getTimelockLens(t):void 0;return{uniswapLens:t?e.getUniswapMathLens(t):void 0,timelockLens:n}},_=t=>{let{timelockLens:n}=g(),i=(0,r.useClient)(),a=typeof t==`string`?t:t==null?void 0:t.address,{data:o}=(0,r.useReadContract)({address:n==null?void 0:n.address,abi:e.lensAbi,functionName:`getMarketData`,args:a?[a]:void 0,query:{enabled:a!==void 0}});return!o||!a||!i?{}:{...o,address:a}},v=t=>{let{vault:n}=_(t),i=(0,r.useClient)(),{data:a}=(0,r.useReadContract)({address:n,abi:e.singleOwnerVaultAbi,functionName:`lowestTick`}),{writeContractAsync:s,data:c,isPending:l,error:u}=(0,r.useWriteContract)(),{isLoading:d,isSuccess:f}=(0,r.useWaitForTransactionReceipt)({hash:c}),p=typeof t==`string`?t:t==null?void 0:t.address;return{exerciseOption:async(t,n)=>{if(!i)throw Error(`Wallet not connected`);if(a===void 0||!p)throw Error(`Lowest tick lower not available`);let r=await s({address:p,abi:e.optionsMarketAbi,functionName:`exerciseOption`,args:[t,n,0n,a]});return await(0,o.waitForTransactionReceipt)(i,{hash:r}),r},hash:c,isPending:l,isConfirming:d,isSuccess:f,error:u,isLoading:l||d}},y=(t,i,a=100)=>{let{timelockLens:o}=g(),{optionAssetDecimals:s}=_(t),c=typeof t==`string`?t:t==null?void 0:t.address,{data:l,refetch:u}=(0,r.useReadContract)({address:o==null?void 0:o.address,abi:e.lensAbi,functionName:`getMaxPositionSizeAtCurrentTick`,args:[c,a],query:{enabled:!!c&&!!o},gas:100000000n}),{data:d,refetch:f}=(0,r.useReadContract)({address:o==null?void 0:o.address,abi:e.lensAbi,functionName:`getMaxPositionSize`,args:[c,i,a],query:{enabled:!!c&&!!o&&i!==void 0},gas:100000000n}),p=i===void 0?l:d,{maxCallSize:m,maxPutSize:h}=(0,n.useMemo)(()=>p&&s?{maxCallSize:e.wrapAmount(p[0],s),maxPutSize:e.wrapAmount(p[1],s)}:{},[p,s]);return{maxCallSize:m,maxPutSize:h,refetch:()=>{u(),f()}}},b=async e=>{let[t,{1:n}]=await Promise.all([e.read.tickSpacing(),e.read.slot0()]);return{exact:n,rounded:Math.floor(n/t)*t}},x=t=>{let n=(0,r.useClient)(),{data:i}=(0,s.useQuery)({queryKey:[`currentTick`,typeof t==`string`?t:(t==null?void 0:t.address)||`-`],queryFn:()=>b(typeof t==`string`?e.getUniswapPool(t,n):t),enabled:!!t&&!!n,refetchInterval:5e3});return i||{}},S=t=>{let n=typeof t==`string`?t:t==null?void 0:t.address,{timelockLens:i}=g(),a=(0,r.useClient)(),{data:o}=(0,r.useReadContract)({address:i==null?void 0:i.address,abi:e.lensAbi,functionName:`getPoolData`,args:n?[n]:void 0,query:{enabled:!!n&&!!a}});return o||{}},C=n=>{let{timelockLens:i}=g(),{payoutAsset:a,vault:s,pool:c,optionAssetIsToken0:l}=_(n),{tickSpacing:u}=S(c),{exact:d}=x(c),f=(0,r.useClient)(),{address:p}=(0,r.useAccount)(),{writeContractAsync:m,data:h,isPending:v,error:y}=(0,r.useWriteContract)(),{isLoading:b,isSuccess:C}=(0,r.useWaitForTransactionReceipt)({hash:h}),w=typeof n==`string`?n:n==null?void 0:n.address,T=async n=>{if(!f||!p)throw Error(`Wallet not connected`);if(!a||!w)throw Error(`Tokens not available`);await e.getErc20(a,f).read.allowance([p,w])<n&&await(0,o.waitForTransactionReceipt)(f,{hash:await m({address:a,abi:t.erc20Abi,functionName:`approve`,args:[w,t.maxUint256]})})};return{mintOption:async(t,n,r,a)=>{if(!f)throw Error(`Wallet not connected`);if(!i||!s||!w||!d||!u)throw Error(`Lowest tick lower not available`);a=a??d,a=t===`CALL`&&l||t===`PUT`&&!l?e.roundTickUp(a,u):e.roundTickDown(a,u),await T(await e.getTimelockMarket(w,f).read.calculatePremium([t===`CALL`?0:1,n,a,BigInt(r)]));let c=await m({address:w,abi:e.optionsMarketAbi,functionName:`mintOption`,args:[t===`CALL`?0:1,n,a,BigInt(r),BigInt(1e69),await i.read.getRefTick([s,a])]});return await(0,o.waitForTransactionReceipt)(f,{hash:c}),c},hash:h,isPending:v,isConfirming:b,isSuccess:C,error:y,isLoading:v||b}},w=t=>{let{marketAddr:r,optionType:i,entryTick:a,positionSizeCurrent:o}=t,{pool:s,optionAssetIsToken0:c,payoutAssetDecimals:l}=_(r),{exact:u}=x(s),{displayPnl:d,unrealizedPayout:f}=(0,n.useMemo)(()=>{if(c===void 0||u===void 0||!o||!l)return{};let t=c?e.token0ToToken1(o,u)-e.token0ToToken1(o,a):e.token1ToToken0(o,u)-e.token1ToToken0(o,a),n=e.wrapAmount(i===`CALL`?t:-t,l);return{unrealizedPayout:e.wrapAmount(n.scaled<0?0n:n.scaled,l),displayPnl:n}},[t,c,u,o]);return{displayPnl:d,unrealizedPayout:f}},T=(t,i,a,o)=>{let{pool:s}=_(t),c=x(s),{tickSpacing:l}=S(s),{payoutAssetDecimals:u}=_(t),d=typeof t==`string`?t:t==null?void 0:t.address,f=(0,n.useMemo)(()=>{if(!(c.rounded===void 0||l===void 0))return i===`CALL`?c.rounded+l:c.rounded},[c.rounded,l,i]),{data:p}=(0,r.useReadContract)({address:d,abi:e.optionsMarketAbi,functionName:`calculatePremium`,args:f===void 0?void 0:[i===`CALL`?0:1,a,f,BigInt(o)],query:{enabled:c.rounded!==void 0&&u!==void 0&&l!==void 0&&f!==void 0}});return(0,n.useMemo)(()=>{if(!(p===void 0||u===void 0))return e.wrapAmount(p,u)},[p,u])},E=(e,t=!1)=>{let{graphqlClient:r}=h(),{data:i,...a}=(0,s.useQuery)({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)),positionSizeAtOpen:BigInt(e.positionSizeAtOpen),positionSizeCurrent:BigInt(e.positionSizeCurrent),strikePrice:BigInt(e.strikePrice),entryPrice:BigInt(e.entryPrice)}))},enabled:!!e&&!!r});return{data:(0,n.useMemo)(()=>(i==null?void 0:i.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()))||[],[i]),...a}},D=e=>E(e,!0),O=e=>E(e,!1),k=(t,r)=>{let{token0Decimals:i,token1Decimals:a}=S(r);return(0,n.useMemo)(()=>t&&i&&a?e.wrapPrice(e.getPriceAtTick(t),i,a):void 0,[t,i,a])},A=e=>{let t=x(e);return{currentPrice:k(t.exact,e),currentTick:t}},j=t=>{let{data:n}=(0,r.useReadContract)({address:typeof t==`string`?t:t==null?void 0:t.address,abi:e.singleOwnerVaultAbi,functionName:`pool`});return{pool:n}},M=n=>{let i=(0,r.useClient)(),{pool:a}=j(n),s=x(a),{timelockLens:c}=g(),l=typeof n==`string`?n:n==null?void 0:n.address,{writeContractAsync:u,data:d,isPending:f,error:p}=(0,r.useWriteContract)(),{isLoading:m,isSuccess:h}=(0,r.useWaitForTransactionReceipt)({hash:d}),_=async(t,n,r)=>{if(!i)throw Error(`Wallet not connected`);if(!l||!c)throw Error(`Vault/lens not available`);let a=await u({address:l,abi:e.singleOwnerVaultAbi,functionName:`burn`,args:[t,n,r,await c.read.getRefTick([l,t])]});return await(0,o.waitForTransactionReceipt)(i,{hash:a}),a};return{burnMultiple:async n=>{if(!i)throw Error(`Wallet not connected`);if(!s.exact)throw Error(`Current tick not available`);if(n.length===0)throw Error(`No positions to burn`);if(!c||!l)throw Error(`Vault/lens not available`);if(n.length===1)await _(n[0].tickLower,n[0].tickUpper,n[0].liquidity);else{let r=await c.read.batchGetRefTick([l,n.map(e=>e.tickLower)]);await(0,o.waitForTransactionReceipt)(i,{hash:await u({address:l,abi:e.singleOwnerVaultAbi,functionName:`multicall`,args:[n.map((n,i)=>(0,t.encodeFunctionData)({abi:e.singleOwnerVaultAbi,functionName:`burn`,args:[n.tickLower,n.tickUpper,n.liquidity,r[i]]}))]})})}},burn:_,hash:d,isPending:f,isConfirming:m,isSuccess:h,error:p,isLoading:f||m}},N=t=>{let{timelockLens:r}=g(),{pool:i}=j(t),{token0Decimals:a,token1Decimals:o}=S(i),{currentPrice:c}=A(i),l=typeof t==`string`?t:t==null?void 0:t.address,{data:u=[],refetch:d}=(0,s.useQuery)({queryKey:[`liquidityBlocks`,l],queryFn:()=>r.read.getAllBlocks([l]),enabled:!!l&&!!r}),{totalAmount0:f,totalAmount1:p,borrowedAmount0:m,borrowedAmount1:h}=(0,n.useMemo)(()=>({totalAmount0:a?e.wrapAmount(u.reduce((e,t)=>e+t.totalAmount0,0n),a):void 0,totalAmount1:o?e.wrapAmount(u.reduce((e,t)=>e+t.totalAmount1,0n),o):void 0,borrowedAmount0:a?e.wrapAmount(u.reduce((e,t)=>e+t.borrowedAmount0,0n),a):void 0,borrowedAmount1:o?e.wrapAmount(u.reduce((e,t)=>e+t.borrowedAmount1,0n),o):void 0}),[u,a,o]);return{tvl1:(0,n.useMemo)(()=>{if(!f||!p||!c||!o)return;let t=f.scaled*c.scaled/10n**18n,n=p.scaled;return e.wrapAmount(t+n,o)},[f,p,c,o]),blocks:u,totalAmount0:f,totalAmount1:p,borrowedAmount0:m,borrowedAmount1:h,refetch:d}},P=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}},F=n=>{let i=(0,r.useClient)(),{address:a}=(0,r.useAccount)(),{pool:s}=j(n),{timelockLens:c,uniswapLens:l}=g(),u=x(s),{token0:d,token1:f}=S(s),p=typeof n==`string`?n:n==null?void 0:n.address,{writeContractAsync:m,data:h,isPending:_,error:v}=(0,r.useWriteContract)(),{isLoading:y,isSuccess:b}=(0,r.useWaitForTransactionReceipt)({hash:h}),C=async n=>{if(!a||!i)throw Error(`Wallet not connected`);if(u.exact===void 0||!d||!f||!p||!l)throw Error(`Current tick not available`);let{totalAmount0:r,totalAmount1:s}=await P(l,n.map(e=>e.tickLower),n.map(e=>e.tickUpper),n.map(e=>e.liquidity),u.exact),[c,h]=await Promise.all([e.getErc20(d,i).read.allowance([a,p]),e.getErc20(f,i).read.allowance([a,p])]),g=[];if(c<=r){let e=await m({address:d,abi:t.erc20Abi,functionName:`approve`,args:[p,t.maxUint256]});g.push((0,o.waitForTransactionReceipt)(i,{hash:e}))}if(h<=s){let e=await m({address:f,abi:t.erc20Abi,functionName:`approve`,args:[p,t.maxUint256]});g.push((0,o.waitForTransactionReceipt)(i,{hash:e}))}g.length>0&&await Promise.all(g)},w=async(t,n,r)=>{if(!i)throw Error(`Wallet not connected`);if(!p||!c)throw Error(`Vault/lens not available`);await C([{tickLower:t,tickUpper:n,liquidity:r}]);let a=await m({address:p,abi:e.singleOwnerVaultAbi,functionName:`mint`,args:[t,n,r,await c.read.getRefTick([p,t])]});return await(0,o.waitForTransactionReceipt)(i,{hash:a}),a};return{mintMultiple:async n=>{if(!i)throw Error(`Wallet not connected`);if(!u.exact)throw Error(`Current tick not available`);if(n.length===0)throw Error(`No positions to mint`);if(!c||!p)throw Error(`Vault/lens not available`);if(n.length===1)await w(n[0].tickLower,n[0].tickUpper,n[0].liquidity);else{await C(n);let r=await c.read.batchGetRefTick([p,n.map(e=>e.tickLower)]);await(0,o.waitForTransactionReceipt)(i,{hash:await m({address:p,abi:e.singleOwnerVaultAbi,functionName:`multicall`,args:[n.map((n,i)=>(0,t.encodeFunctionData)({abi:e.singleOwnerVaultAbi,functionName:`mint`,args:[n.tickLower,n.tickUpper,n.liquidity,r[i]]}))]})})}},mint:w,hash:h,isPending:_,isConfirming:y,isSuccess:b,error:v,isLoading:_||y}},I=t=>{let{timelockLens:n}=g(),{pool:i}=j(t),{token0Decimals:a,token1Decimals:o}=S(i),s=typeof t==`string`?t:t==null?void 0:t.address,{data:c,refetch:l}=(0,r.useReadContract)({address:n==null?void 0:n.address,abi:e.lensAbi,functionName:`getVaultTVL`,args:[s],query:{enabled:!!s&&!!n}}),u=c&&a?e.wrapAmount(c[0],a):void 0,d=c&&o?e.wrapAmount(c[1],o):void 0,f=c&&a?e.wrapAmount(c[2],a):void 0,p=c&&o?e.wrapAmount(c[3],o):void 0;return{tvl0:c&&a?e.wrapAmount(c[4],a):void 0,tvl1:c&&o?e.wrapAmount(c[5],o):void 0,totalAmount0:u,totalAmount1:d,borrowedAmount0:f,borrowedAmount1:p,refetch:l}};exports.TimelockMarketProvider=p,exports.batchGetAmountsFromLiquidity=P,exports.getCurrentTick=b,exports.useActiveUserOptions=D,exports.useBurnLiquidity=M,exports.useClosedUserOptions=O,exports.useCurrentMarket=m,exports.useCurrentPrice=A,exports.useCurrentTick=x,exports.useExerciseOption=v,exports.useLens=g,exports.useLiquidityBlocks=N,exports.useMarketData=_,exports.useMaxPositionSize=y,exports.useMintLiquidity=F,exports.useMintOption=C,exports.useOptionPnl=w,exports.useOptionPremium=T,exports.usePoolData=S,exports.usePriceAtTick=k,exports.useTimelockConfig=h,exports.useVaultData=j,exports.useVaultTVL=I;
56
64
  //# sourceMappingURL=client.cjs.map