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 +9 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +274 -56
- package/dist/client.d.ts +268 -50
- package/dist/client.js +11 -3
- package/dist/client.js.map +1 -1
- package/dist/{index-CCFK8AUb.d.cts → index-DDAsERk2.d.cts} +108 -108
- package/dist/package.d.cts +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";import{
|
|
1
|
+
"use client";import{getErc20 as e,getPriceAtTick as t,getTimelockLens as n,getTimelockMarket as r,getUniswapMathLens as i,getUniswapPool as a,lensAbi as o,optionsMarketAbi as s,roundTickDown as c,roundTickUp as l,singleOwnerVaultAbi as u,timelockLenses as d,token0ToToken1 as f,token1ToToken0 as p,uniswapMathLenses as m,wrapAmount as h,wrapPrice as g}from"./numberUtils-DB5N1e6G.js";import{encodeFunctionData as _,erc20Abi as v,maxUint256 as y}from"viem";import b,{createContext as x,useContext as S,useMemo as C}from"react";import{useAccount as w,useChainId as T,useClient as E,useReadContract as D,useWaitForTransactionReceipt as O,useWriteContract as k}from"wagmi";import{GraphQLClient as A}from"graphql-request";import j from"graphql-tag";import{waitForTransactionReceipt as M}from"viem/actions";import{useQuery as N}from"@tanstack/react-query";const P=j`
|
|
2
2
|
query GetActiveUserOptions($user: String!) {
|
|
3
3
|
UserOption(
|
|
4
4
|
where: {ownerAddr: {_eq: $user}, fullyExercised: {_eq: false}}
|
|
@@ -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,10 +24,12 @@
|
|
|
22
24
|
marketAddr
|
|
23
25
|
liquiditiesAtOpen
|
|
24
26
|
liquiditiesCurrent
|
|
27
|
+
positionSizeAtOpen
|
|
28
|
+
positionSizeCurrent
|
|
25
29
|
fullyExercised
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
|
-
`,
|
|
32
|
+
`,F=j`
|
|
29
33
|
query GetClosedUserOptions($user: String!) {
|
|
30
34
|
UserOption(
|
|
31
35
|
where: {ownerAddr: {_eq: $user}, fullyExercised: {_eq: true}}
|
|
@@ -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
|
-
`,L=(e,t,n,r)=>e();function R(e,t=L){return{GetActiveUserOptions(n,r,i){return t(t=>e.request({document:F,variables:n,requestHeaders:{...r,...t},signal:i}),`GetActiveUserOptions`,`query`,n)},GetClosedUserOptions(n,r,i){return t(t=>e.request({document:I,variables:n,requestHeaders:{...r,...t},signal:i}),`GetClosedUserOptions`,`query`,n)}}}const z=w(void 0),B=({children:e,marketData:t,envioGraphqlUrl:n})=>{let r=ee(),i=m[r],a=_[r];return C.createElement(z.Provider,{value:{marketData:t||{},lensAddr:i,uniswapMathLensAddr:a,envioGraphqlUrl:n}},e)},ne=()=>{let e=T(z);if(e===void 0)throw Error(`useCurrentMarket must be used within a TimelockMarketProvider`);return e.marketData},V=()=>{let e=T(z);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?R(new te(e.envioGraphqlUrl)):void 0}},H=()=>{let e=O(),t=e?r(e):void 0;return{uniswapLens:e?a(e):void 0,timelockLens:t}},U=e=>{let{timelockLens:t}=H(),n=O(),r=typeof e==`string`?e:e==null?void 0:e.address,{data:i}=k({address:t==null?void 0:t.address,abi:s,functionName:`getMarketData`,args:r?[r]:void 0,query:{enabled:r!==void 0}});return!i||!r||!n?{}:{...i,address:r}},re=e=>{let{vault:t}=U(e),n=O(),{data:r}=k({address:t,abi:p,functionName:`lowestTick`}),{writeContractAsync:i,data:a,isPending:o,error:s}=j(),{isLoading:c,isSuccess:l}=A({hash:a}),d=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||!d)throw Error(`Lowest tick lower not available`);let a=await i({address:d,abi:u,functionName:`exerciseOption`,args:[e,t,0n,r]});return await N(n,{hash:a}),a},hash:a,isPending:o,isConfirming:c,isSuccess:l,error:s,isLoading:o||c}},ie=(e,t,n=100)=>{let{timelockLens:r}=H(),{optionAssetDecimals:i}=U(e),a=typeof e==`string`?e:e==null?void 0:e.address,{data:o,refetch:c}=k({address:r==null?void 0:r.address,abi:s,functionName:`getMaxPositionSizeAtCurrentTick`,args:[a,n],query:{enabled:!!a&&!!r},gas:100000000n}),{data:l,refetch:u}=k({address:r==null?void 0:r.address,abi:s,functionName:`getMaxPositionSize`,args:[a,t,n],query:{enabled:!!a&&!!r&&t!==void 0},gas:100000000n}),d=t===void 0?o:l,{maxCallSize:f,maxPutSize:p}=E(()=>d&&i?{maxCallSize:v(d[0],i),maxPutSize:v(d[1],i)}:{},[d,i]);return{maxCallSize:f,maxPutSize:p,refetch:()=>{c(),u()}}},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=O(),{data:n}=P({queryKey:[`currentTick`,typeof e==`string`?e:(e==null?void 0:e.address)||`-`],queryFn:()=>W(typeof e==`string`?o(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}=H(),r=O(),{data:i}=k({address:n==null?void 0:n.address,abi:s,functionName:`getPoolData`,args:t?[t]:void 0,query:{enabled:!!t&&!!r}});return i||{}},ae=e=>{let{timelockLens:n}=H(),{payoutAsset:r,vault:a,pool:o,optionAssetIsToken0:s}=U(e),{tickSpacing:c}=K(o),{exact:l}=G(o),p=O(),{address:m}=D(),{writeContractAsync:h,data:g,isPending:_,error:v}=j(),{isLoading:y,isSuccess:b}=A({hash:g}),C=typeof e==`string`?e:e==null?void 0:e.address,w=async e=>{if(!p||!m)throw Error(`Wallet not connected`);if(!r||!C)throw Error(`Tokens not available`);await t(r,p).read.allowance([m,C])<e&&await N(p,{hash:await h({address:r,abi:x,functionName:`approve`,args:[C,S]})})};return{mintOption:async(e,t,r,o)=>{if(!p)throw Error(`Wallet not connected`);if(!n||!a||!C||!l||!c)throw Error(`Lowest tick lower not available`);o=o??l,o=e===`CALL`&&s||e===`PUT`&&!s?f(o,c):d(o,c),await w(await i(C,p).read.calculatePremium([e===`CALL`?0:1,t,o,BigInt(r)]));let m=await h({address:C,abi:u,functionName:`mintOption`,args:[e===`CALL`?0:1,t,o,BigInt(r),BigInt(1e69),await n.read.getRefTick([a,o])]});return await N(p,{hash:m}),m},hash:g,isPending:_,isConfirming:y,isSuccess:b,error:v,isLoading:_||y}},q=(e,t,n,r,i,a)=>{let o=n-(i===`CALL`?0:r*e.length),s=c(e,o,r),u=l(e,o,r);return i===`CALL`?a?s:u:a?g(u,t):h(s,t)},J=(t,r)=>{let i=n(t);return r?i:e/i},oe=e=>{let{marketAddr:t,optionType:n,liquiditiesAtOpen:r,liquiditiesCurrent:i,strikeTick:a,entryTick:o}=e,{pool:s,optionAssetIsToken0:c,optionAssetDecimals:l,payoutAssetDecimals:u}=U(t),{tickSpacing:d}=K(s),{exact:f}=G(s),{strikePrice:p,entryPrice:m}=E(()=>{if(c===void 0||!l||!u)return{};let e=y(J(o,c),l,u);return{strikePrice:y(J(a,c),l,u),entryPrice:e}},[e,c,l,u]),{positionSizeAtOpen:_,positionSizeCurrent:b}=E(()=>c===void 0||!d||!l||!u?{}:{positionSizeAtOpen:v(q(r,o,a,d,n,c),l),positionSizeCurrent:v(q(i,o,a,d,n,c),l)},[e,c,d,l,u]),{displayPnl:x,unrealizedPayout:S}=E(()=>{if(c===void 0||f===void 0||!b||!u)return{};let e=b.scaled,t=c?h(e,f)-h(e,o):g(e,f)-g(e,o),r=v(n===`CALL`?t:-t,u);return{unrealizedPayout:v(r.scaled<0?0n:r.scaled,u),displayPnl:r}},[e,c,f,b]);return{positionSizeCurrent:b,positionSizeAtOpen:_,displayPnl:x,unrealizedPayout:S,strikePrice:p,entryPrice:m}},se=(e,t,n,r)=>{let{pool:i}=U(e),a=G(i),{tickSpacing:o}=K(i),{payoutAssetDecimals:s}=U(e),c=typeof e==`string`?e:e==null?void 0:e.address,l=E(()=>{if(!(a.rounded===void 0||o===void 0))return t===`CALL`?a.rounded+o:a.rounded},[a.rounded,o,t]),{data:d}=k({address:c,abi:u,functionName:`calculatePremium`,args:l===void 0?void 0:[t===`CALL`?0:1,n,l,BigInt(r)],query:{enabled:a.rounded!==void 0&&s!==void 0&&o!==void 0&&l!==void 0}});return E(()=>{if(!(d===void 0||s===void 0))return v(d,s)},[d,s])},Y=(e,t=!1)=>{let{graphqlClient:n}=V(),{data:r,...i}=P({queryKey:[`userTrades`,e||`--`,t],queryFn:()=>t?n==null?void 0:n.GetActiveUserOptions({user:e.toLowerCase()}):n==null?void 0:n.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&&!!n});return{data:E(()=>(r==null?void 0:r.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()))||[],[r]),...i}},ce=e=>Y(e,!0),le=e=>Y(e,!1),X=(e,t)=>{let{token0Decimals:r,token1Decimals:i}=K(t);return E(()=>e&&r&&i?y(n(e),r,i):void 0,[e,r,i])},Z=e=>{let t=G(e);return{currentPrice:X(t.exact,e),currentTick:t}},Q=e=>{let{data:t}=k({address:typeof e==`string`?e:e==null?void 0:e.address,abi:p,functionName:`pool`});return{pool:t}},ue=e=>{let t=O(),{pool:n}=Q(e),r=G(n),{timelockLens:i}=H(),a=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:o,data:s,isPending:c,error:l}=j(),{isLoading:u,isSuccess:d}=A({hash:s}),f=async(e,n,r)=>{if(!t)throw Error(`Wallet not connected`);if(!a||!i)throw Error(`Vault/lens not available`);let s=await o({address:a,abi:p,functionName:`burn`,args:[e,n,r,await i.read.getRefTick([a,e])]});return await N(t,{hash:s}),s};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||!a)throw Error(`Vault/lens not available`);if(e.length===1)await f(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{let n=await i.read.batchGetRefTick([a,e.map(e=>e.tickLower)]);await N(t,{hash:await o({address:a,abi:p,functionName:`multicall`,args:[e.map((e,t)=>b({abi:p,functionName:`burn`,args:[e.tickLower,e.tickUpper,e.liquidity,n[t]]}))]})})}},burn:f,hash:s,isPending:c,isConfirming:u,isSuccess:d,error:l,isLoading:c||u}},de=e=>{let{timelockLens:t}=H(),{pool:n}=Q(e),{token0Decimals:r,token1Decimals:i}=K(n),{currentPrice:a}=Z(n),o=typeof e==`string`?e:e==null?void 0:e.address,{data:s=[],refetch:c}=P({queryKey:[`liquidityBlocks`,o],queryFn:()=>t.read.getAllBlocks([o]),enabled:!!o&&!!t}),{totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f}=E(()=>({totalAmount0:r?v(s.reduce((e,t)=>e+t.totalAmount0,0n),r):void 0,totalAmount1:i?v(s.reduce((e,t)=>e+t.totalAmount1,0n),i):void 0,borrowedAmount0:r?v(s.reduce((e,t)=>e+t.borrowedAmount0,0n),r):void 0,borrowedAmount1:i?v(s.reduce((e,t)=>e+t.borrowedAmount1,0n),i):void 0}),[s,r,i]);return{tvl1:E(()=>{if(!l||!u||!a||!i)return;let e=l.scaled*a.scaled/10n**18n,t=u.scaled;return v(e+t,i)},[l,u,a,i]),blocks:s,totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f,refetch:c}},$=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 n=O(),{address:r}=D(),{pool:i}=Q(e),{timelockLens:a,uniswapLens:o}=H(),s=G(i),{token0:c,token1:l}=K(i),u=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:d,data:f,isPending:m,error:h}=j(),{isLoading:g,isSuccess:_}=A({hash:f}),v=async e=>{if(!r||!n)throw Error(`Wallet not connected`);if(s.exact===void 0||!c||!l||!u||!o)throw Error(`Current tick not available`);let{totalAmount0:i,totalAmount1:a}=await $(o,e.map(e=>e.tickLower),e.map(e=>e.tickUpper),e.map(e=>e.liquidity),s.exact),[f,p]=await Promise.all([t(c,n).read.allowance([r,u]),t(l,n).read.allowance([r,u])]),m=[];if(f<=i){let e=await d({address:c,abi:x,functionName:`approve`,args:[u,S]});m.push(N(n,{hash:e}))}if(p<=a){let e=await d({address:l,abi:x,functionName:`approve`,args:[u,S]});m.push(N(n,{hash:e}))}m.length>0&&await Promise.all(m)},y=async(e,t,r)=>{if(!n)throw Error(`Wallet not connected`);if(!u||!a)throw Error(`Vault/lens not available`);await v([{tickLower:e,tickUpper:t,liquidity:r}]);let i=await d({address:u,abi:p,functionName:`mint`,args:[e,t,r,await a.read.getRefTick([u,e])]});return await N(n,{hash:i}),i};return{mintMultiple:async e=>{if(!n)throw Error(`Wallet not connected`);if(!s.exact)throw Error(`Current tick not available`);if(e.length===0)throw Error(`No positions to mint`);if(!a||!u)throw Error(`Vault/lens not available`);if(e.length===1)await y(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{await v(e);let t=await a.read.batchGetRefTick([u,e.map(e=>e.tickLower)]);await N(n,{hash:await d({address:u,abi:p,functionName:`multicall`,args:[e.map((e,n)=>b({abi:p,functionName:`mint`,args:[e.tickLower,e.tickUpper,e.liquidity,t[n]]}))]})})}},mint:y,hash:f,isPending:m,isConfirming:g,isSuccess:_,error:h,isLoading:m||g}},pe=e=>{let{timelockLens:t}=H(),{pool:n}=Q(e),{token0Decimals:r,token1Decimals:i}=K(n),a=typeof e==`string`?e:e==null?void 0:e.address,{data:o,refetch:c}=k({address:t==null?void 0:t.address,abi:s,functionName:`getVaultTVL`,args:[a],query:{enabled:!!a&&!!t}}),l=o&&r?v(o[0],r):void 0,u=o&&i?v(o[1],i):void 0,d=o&&r?v(o[2],r):void 0,f=o&&i?v(o[3],i):void 0;return{tvl0:o&&r?v(o[4],r):void 0,tvl1:o&&i?v(o[5],i):void 0,totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f,refetch:c}};export{B as TimelockMarketProvider,$ as batchGetAmountsFromLiquidity,W as getCurrentTick,ce as useActiveUserOptions,ue as useBurnLiquidity,le as useClosedUserOptions,ne as useCurrentMarket,Z as useCurrentPrice,G as useCurrentTick,re as useExerciseOption,H as useLens,de as useLiquidityBlocks,U as useMarketData,ie as useMaxPositionSize,fe as useMintLiquidity,ae as useMintOption,oe as useOptionLiquidityData,se as useOptionPremium,K as usePoolData,X as usePriceAtTick,V as useTimelockConfig,Q as useVaultData,pe as useVaultTVL};
|
|
63
|
+
`,I=(e,t,n,r)=>e();function L(e,t=I){return{GetActiveUserOptions(n,r,i){return t(t=>e.request({document:P,variables:n,requestHeaders:{...r,...t},signal:i}),`GetActiveUserOptions`,`query`,n)},GetClosedUserOptions(n,r,i){return t(t=>e.request({document:F,variables:n,requestHeaders:{...r,...t},signal:i}),`GetClosedUserOptions`,`query`,n)}}}const R=x(void 0),z=({children:e,marketData:t,envioGraphqlUrl:n})=>{let r=T(),i=d[r],a=m[r];return b.createElement(R.Provider,{value:{marketData:t||{},lensAddr:i,uniswapMathLensAddr:a,envioGraphqlUrl:n}},e)},B=()=>{let e=S(R);if(e===void 0)throw Error(`useCurrentMarket must be used within a TimelockMarketProvider`);return e.marketData},V=()=>{let e=S(R);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?L(new A(e.envioGraphqlUrl)):void 0}},H=()=>{let e=E(),t=e?n(e):void 0;return{uniswapLens:e?i(e):void 0,timelockLens:t}},U=e=>{let{timelockLens:t}=H(),n=E(),r=typeof e==`string`?e:e==null?void 0:e.address,{data:i}=D({address:t==null?void 0:t.address,abi:o,functionName:`getMarketData`,args:r?[r]:void 0,query:{enabled:r!==void 0}});return!i||!r||!n?{}:{...i,address:r}},W=e=>{let{vault:t}=U(e),n=E(),{data:r}=D({address:t,abi:u,functionName:`lowestTick`}),{writeContractAsync:i,data:a,isPending:o,error:c}=k(),{isLoading:l,isSuccess:d}=O({hash:a}),f=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||!f)throw Error(`Lowest tick lower not available`);let a=await i({address:f,abi:s,functionName:`exerciseOption`,args:[e,t,0n,r]});return await M(n,{hash:a}),a},hash:a,isPending:o,isConfirming:l,isSuccess:d,error:c,isLoading:o||l}},G=(e,t,n=100)=>{let{timelockLens:r}=H(),{optionAssetDecimals:i}=U(e),a=typeof e==`string`?e:e==null?void 0:e.address,{data:s,refetch:c}=D({address:r==null?void 0:r.address,abi:o,functionName:`getMaxPositionSizeAtCurrentTick`,args:[a,n],query:{enabled:!!a&&!!r},gas:100000000n}),{data:l,refetch:u}=D({address:r==null?void 0:r.address,abi:o,functionName:`getMaxPositionSize`,args:[a,t,n],query:{enabled:!!a&&!!r&&t!==void 0},gas:100000000n}),d=t===void 0?s:l,{maxCallSize:f,maxPutSize:p}=C(()=>d&&i?{maxCallSize:h(d[0],i),maxPutSize:h(d[1],i)}:{},[d,i]);return{maxCallSize:f,maxPutSize:p,refetch:()=>{c(),u()}}},K=async e=>{let[t,{1:n}]=await Promise.all([e.read.tickSpacing(),e.read.slot0()]);return{exact:n,rounded:Math.floor(n/t)*t}},q=e=>{let t=E(),{data:n}=N({queryKey:[`currentTick`,typeof e==`string`?e:(e==null?void 0:e.address)||`-`],queryFn:()=>K(typeof e==`string`?a(e,t):e),enabled:!!e&&!!t,refetchInterval:5e3});return n||{}},J=e=>{let t=typeof e==`string`?e:e==null?void 0:e.address,{timelockLens:n}=H(),r=E(),{data:i}=D({address:n==null?void 0:n.address,abi:o,functionName:`getPoolData`,args:t?[t]:void 0,query:{enabled:!!t&&!!r}});return i||{}},ee=t=>{let{timelockLens:n}=H(),{payoutAsset:i,vault:a,pool:o,optionAssetIsToken0:u}=U(t),{tickSpacing:d}=J(o),{exact:f}=q(o),p=E(),{address:m}=w(),{writeContractAsync:h,data:g,isPending:_,error:b}=k(),{isLoading:x,isSuccess:S}=O({hash:g}),C=typeof t==`string`?t:t==null?void 0:t.address,T=async t=>{if(!p||!m)throw Error(`Wallet not connected`);if(!i||!C)throw Error(`Tokens not available`);await e(i,p).read.allowance([m,C])<t&&await M(p,{hash:await h({address:i,abi:v,functionName:`approve`,args:[C,y]})})};return{mintOption:async(e,t,i,o)=>{if(!p)throw Error(`Wallet not connected`);if(!n||!a||!C||!f||!d)throw Error(`Lowest tick lower not available`);o=o??f,o=e===`CALL`&&u||e===`PUT`&&!u?l(o,d):c(o,d),await T(await r(C,p).read.calculatePremium([e===`CALL`?0:1,t,o,BigInt(i)]));let m=await h({address:C,abi:s,functionName:`mintOption`,args:[e===`CALL`?0:1,t,o,BigInt(i),BigInt(1e69),await n.read.getRefTick([a,o])]});return await M(p,{hash:m}),m},hash:g,isPending:_,isConfirming:x,isSuccess:S,error:b,isLoading:_||x}},te=e=>{let{marketAddr:t,optionType:n,entryTick:r,positionSizeCurrent:i}=e,{pool:a,optionAssetIsToken0:o,payoutAssetDecimals:s}=U(t),{exact:c}=q(a),{displayPnl:l,unrealizedPayout:u}=C(()=>{if(o===void 0||c===void 0||!i||!s)return{};let e=o?f(i,c)-f(i,r):p(i,c)-p(i,r),t=h(n===`CALL`?e:-e,s);return{unrealizedPayout:h(t.scaled<0?0n:t.scaled,s),displayPnl:t}},[e,o,c,i]);return{displayPnl:l,unrealizedPayout:u}},ne=(e,t,n,r)=>{let{pool:i}=U(e),a=q(i),{tickSpacing:o}=J(i),{payoutAssetDecimals:c}=U(e),l=typeof e==`string`?e:e==null?void 0:e.address,u=C(()=>{if(!(a.rounded===void 0||o===void 0))return t===`CALL`?a.rounded+o:a.rounded},[a.rounded,o,t]),{data:d}=D({address:l,abi:s,functionName:`calculatePremium`,args:u===void 0?void 0:[t===`CALL`?0:1,n,u,BigInt(r)],query:{enabled:a.rounded!==void 0&&c!==void 0&&o!==void 0&&u!==void 0}});return C(()=>{if(!(d===void 0||c===void 0))return h(d,c)},[d,c])},Y=(e,t=!1)=>{let{graphqlClient:n}=V(),{data:r,...i}=N({queryKey:[`userTrades`,e||`--`,t],queryFn:()=>t?n==null?void 0:n.GetActiveUserOptions({user:e.toLowerCase()}):n==null?void 0:n.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&&!!n});return{data:C(()=>(r==null?void 0:r.sort((e,t)=>t.createdAt.getTime()-e.createdAt.getTime()))||[],[r]),...i}},re=e=>Y(e,!0),ie=e=>Y(e,!1),X=(e,n)=>{let{token0Decimals:r,token1Decimals:i}=J(n);return C(()=>e&&r&&i?g(t(e),r,i):void 0,[e,r,i])},Z=e=>{let t=q(e);return{currentPrice:X(t.exact,e),currentTick:t}},Q=e=>{let{data:t}=D({address:typeof e==`string`?e:e==null?void 0:e.address,abi:u,functionName:`pool`});return{pool:t}},ae=e=>{let t=E(),{pool:n}=Q(e),r=q(n),{timelockLens:i}=H(),a=typeof e==`string`?e:e==null?void 0:e.address,{writeContractAsync:o,data:s,isPending:c,error:l}=k(),{isLoading:d,isSuccess:f}=O({hash:s}),p=async(e,n,r)=>{if(!t)throw Error(`Wallet not connected`);if(!a||!i)throw Error(`Vault/lens not available`);let s=await o({address:a,abi:u,functionName:`burn`,args:[e,n,r,await i.read.getRefTick([a,e])]});return await M(t,{hash:s}),s};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||!a)throw Error(`Vault/lens not available`);if(e.length===1)await p(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{let n=await i.read.batchGetRefTick([a,e.map(e=>e.tickLower)]);await M(t,{hash:await o({address:a,abi:u,functionName:`multicall`,args:[e.map((e,t)=>_({abi:u,functionName:`burn`,args:[e.tickLower,e.tickUpper,e.liquidity,n[t]]}))]})})}},burn:p,hash:s,isPending:c,isConfirming:d,isSuccess:f,error:l,isLoading:c||d}},oe=e=>{let{timelockLens:t}=H(),{pool:n}=Q(e),{token0Decimals:r,token1Decimals:i}=J(n),{currentPrice:a}=Z(n),o=typeof e==`string`?e:e==null?void 0:e.address,{data:s=[],refetch:c}=N({queryKey:[`liquidityBlocks`,o],queryFn:()=>t.read.getAllBlocks([o]),enabled:!!o&&!!t}),{totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f}=C(()=>({totalAmount0:r?h(s.reduce((e,t)=>e+t.totalAmount0,0n),r):void 0,totalAmount1:i?h(s.reduce((e,t)=>e+t.totalAmount1,0n),i):void 0,borrowedAmount0:r?h(s.reduce((e,t)=>e+t.borrowedAmount0,0n),r):void 0,borrowedAmount1:i?h(s.reduce((e,t)=>e+t.borrowedAmount1,0n),i):void 0}),[s,r,i]);return{tvl1:C(()=>{if(!l||!u||!a||!i)return;let e=l.scaled*a.scaled/10n**18n,t=u.scaled;return h(e+t,i)},[l,u,a,i]),blocks:s,totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f,refetch:c}},$=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}},se=t=>{let n=E(),{address:r}=w(),{pool:i}=Q(t),{timelockLens:a,uniswapLens:o}=H(),s=q(i),{token0:c,token1:l}=J(i),d=typeof t==`string`?t:t==null?void 0:t.address,{writeContractAsync:f,data:p,isPending:m,error:h}=k(),{isLoading:g,isSuccess:b}=O({hash:p}),x=async t=>{if(!r||!n)throw Error(`Wallet not connected`);if(s.exact===void 0||!c||!l||!d||!o)throw Error(`Current tick not available`);let{totalAmount0:i,totalAmount1:a}=await $(o,t.map(e=>e.tickLower),t.map(e=>e.tickUpper),t.map(e=>e.liquidity),s.exact),[u,p]=await Promise.all([e(c,n).read.allowance([r,d]),e(l,n).read.allowance([r,d])]),m=[];if(u<=i){let e=await f({address:c,abi:v,functionName:`approve`,args:[d,y]});m.push(M(n,{hash:e}))}if(p<=a){let e=await f({address:l,abi:v,functionName:`approve`,args:[d,y]});m.push(M(n,{hash:e}))}m.length>0&&await Promise.all(m)},S=async(e,t,r)=>{if(!n)throw Error(`Wallet not connected`);if(!d||!a)throw Error(`Vault/lens not available`);await x([{tickLower:e,tickUpper:t,liquidity:r}]);let i=await f({address:d,abi:u,functionName:`mint`,args:[e,t,r,await a.read.getRefTick([d,e])]});return await M(n,{hash:i}),i};return{mintMultiple:async e=>{if(!n)throw Error(`Wallet not connected`);if(!s.exact)throw Error(`Current tick not available`);if(e.length===0)throw Error(`No positions to mint`);if(!a||!d)throw Error(`Vault/lens not available`);if(e.length===1)await S(e[0].tickLower,e[0].tickUpper,e[0].liquidity);else{await x(e);let t=await a.read.batchGetRefTick([d,e.map(e=>e.tickLower)]);await M(n,{hash:await f({address:d,abi:u,functionName:`multicall`,args:[e.map((e,n)=>_({abi:u,functionName:`mint`,args:[e.tickLower,e.tickUpper,e.liquidity,t[n]]}))]})})}},mint:S,hash:p,isPending:m,isConfirming:g,isSuccess:b,error:h,isLoading:m||g}},ce=e=>{let{timelockLens:t}=H(),{pool:n}=Q(e),{token0Decimals:r,token1Decimals:i}=J(n),a=typeof e==`string`?e:e==null?void 0:e.address,{data:s,refetch:c}=D({address:t==null?void 0:t.address,abi:o,functionName:`getVaultTVL`,args:[a],query:{enabled:!!a&&!!t}}),l=s&&r?h(s[0],r):void 0,u=s&&i?h(s[1],i):void 0,d=s&&r?h(s[2],r):void 0,f=s&&i?h(s[3],i):void 0;return{tvl0:s&&r?h(s[4],r):void 0,tvl1:s&&i?h(s[5],i):void 0,totalAmount0:l,totalAmount1:u,borrowedAmount0:d,borrowedAmount1:f,refetch:c}};export{z as TimelockMarketProvider,$ as batchGetAmountsFromLiquidity,K as getCurrentTick,re as useActiveUserOptions,ae as useBurnLiquidity,ie as useClosedUserOptions,B as useCurrentMarket,Z as useCurrentPrice,q as useCurrentTick,W as useExerciseOption,H as useLens,oe as useLiquidityBlocks,U as useMarketData,G as useMaxPositionSize,se as useMintLiquidity,ee as useMintOption,te as useOptionPnl,ne as useOptionPremium,J as usePoolData,X as usePriceAtTick,V as useTimelockConfig,Q as useVaultData,ce as useVaultTVL};
|
|
56
64
|
//# sourceMappingURL=client.js.map
|