timelock-sdk 0.0.77 → 0.0.79

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
@@ -1,23 +1,23 @@
1
1
  'use client';
2
2
 
3
3
 
4
- const require_numberUtils = require('./numberUtils-fHghA8Tv.cjs');
4
+ const require_optionUtils = require('./optionUtils-CDD_7qmy.cjs');
5
5
  const require_optionsMarket = require('./optionsMarket-DxGdV3HF.cjs');
6
6
  const require_singleOwnerVault = require('./singleOwnerVault-gf2zNZVk.cjs');
7
7
  let viem = require("viem");
8
- viem = require_numberUtils.__toESM(viem);
8
+ viem = require_optionUtils.__toESM(viem);
9
9
  let react = require("react");
10
- react = require_numberUtils.__toESM(react);
10
+ react = require_optionUtils.__toESM(react);
11
11
  let wagmi = require("wagmi");
12
- wagmi = require_numberUtils.__toESM(wagmi);
12
+ wagmi = require_optionUtils.__toESM(wagmi);
13
13
  let graphql_request = require("graphql-request");
14
- graphql_request = require_numberUtils.__toESM(graphql_request);
14
+ graphql_request = require_optionUtils.__toESM(graphql_request);
15
15
  let graphql_tag = require("graphql-tag");
16
- graphql_tag = require_numberUtils.__toESM(graphql_tag);
16
+ graphql_tag = require_optionUtils.__toESM(graphql_tag);
17
17
  let viem_actions = require("viem/actions");
18
- viem_actions = require_numberUtils.__toESM(viem_actions);
18
+ viem_actions = require_optionUtils.__toESM(viem_actions);
19
19
  let __tanstack_react_query = require("@tanstack/react-query");
20
- __tanstack_react_query = require_numberUtils.__toESM(__tanstack_react_query);
20
+ __tanstack_react_query = require_optionUtils.__toESM(__tanstack_react_query);
21
21
 
22
22
  //#region src/generated/graphql.ts
23
23
  const UserOptionFieldsFragmentDoc = graphql_tag.default`
@@ -291,8 +291,8 @@ function getSdk(client, withWrapper = defaultWrapper) {
291
291
  const TimelockMarketContext = (0, react.createContext)(void 0);
292
292
  const TimelockMarketProvider = ({ children, marketData, envioGraphqlUrl }) => {
293
293
  const chainId = (0, wagmi.useChainId)();
294
- const lensAddr = require_numberUtils.timelockLenses[chainId];
295
- const uniswapMathLensAddr = require_numberUtils.uniswapMathLenses[chainId];
294
+ const lensAddr = require_optionUtils.timelockLenses[chainId];
295
+ const uniswapMathLensAddr = require_optionUtils.uniswapMathLenses[chainId];
296
296
  const graphqlClient = (0, react.useMemo)(() => {
297
297
  if (envioGraphqlUrl) return getSdk(new graphql_request.GraphQLClient(envioGraphqlUrl));
298
298
  }, [envioGraphqlUrl]);
@@ -327,8 +327,8 @@ const useTimelockConfig = () => {
327
327
  const useLens = () => {
328
328
  const client = (0, wagmi.useClient)();
329
329
  return (0, react.useMemo)(() => ({
330
- timelockLens: client ? require_numberUtils.getTimelockLens(client) : void 0,
331
- uniswapLens: client ? require_numberUtils.getUniswapMathLens(client) : void 0
330
+ timelockLens: client ? require_optionUtils.getTimelockLens(client) : void 0,
331
+ uniswapLens: client ? require_optionUtils.getUniswapMathLens(client) : void 0
332
332
  }), [client]);
333
333
  };
334
334
 
@@ -447,8 +447,8 @@ const useMaxPositionSize = (marketAddr, strikeTick, maxBorrowableRange = 100) =>
447
447
  });
448
448
  const data = strikeTick !== void 0 ? data1 : data0;
449
449
  const { maxCallSize, maxPutSize } = (0, react.useMemo)(() => data && optionAssetDecimals ? {
450
- maxCallSize: require_numberUtils.wrapAmount(data[0], optionAssetDecimals),
451
- maxPutSize: require_numberUtils.wrapAmount(data[1], optionAssetDecimals)
450
+ maxCallSize: require_optionUtils.wrapAmount(data[0], optionAssetDecimals),
451
+ maxPutSize: require_optionUtils.wrapAmount(data[1], optionAssetDecimals)
452
452
  } : {}, [data, optionAssetDecimals]);
453
453
  const refetch = () => {
454
454
  refetch0();
@@ -488,7 +488,7 @@ const useApproval = () => {
488
488
  const { writeContractAsync, data: hash, isPending, error, reset } = (0, wagmi.useWriteContract)();
489
489
  const askForApproval = async (tokenAddress, spenderAddress, amount) => {
490
490
  if (!client || !address) throw new Error("Wallet not connected");
491
- if (await require_numberUtils.getErc20(tokenAddress, client).read.allowance([address, spenderAddress]) < amount) await (0, viem_actions.waitForTransactionReceipt)(client, { hash: await writeContractAsync({
491
+ if (await require_optionUtils.getErc20(tokenAddress, client).read.allowance([address, spenderAddress]) < amount) await (0, viem_actions.waitForTransactionReceipt)(client, { hash: await writeContractAsync({
492
492
  address: tokenAddress,
493
493
  abi: viem.erc20Abi,
494
494
  functionName: "approve",
@@ -522,8 +522,8 @@ const useMintOption = (marketAddr) => {
522
522
  if (!timelockLens) throw new Error("Timelock lens not available");
523
523
  if (!vault || !payoutAsset || optionAssetIsToken0 === void 0) throw new Error("Market data not available");
524
524
  if (currentTick === void 0 || !tickSpacing) throw new Error("Pool data not available");
525
- strikeTick = require_numberUtils.getNearestValidStrikeTick(optionType, optionAssetIsToken0, tickSpacing, currentTick, strikeTick);
526
- const [premium, protocolFee] = await require_numberUtils.getTimelockMarket(marketAddr, client).read.calculatePremium([
525
+ strikeTick = require_optionUtils.getNearestValidStrikeTick(optionType, optionAssetIsToken0, tickSpacing, currentTick, strikeTick);
526
+ const [premium, protocolFee] = await require_optionUtils.getTimelockMarket(marketAddr, client).read.calculatePremium([
527
527
  optionType === "CALL" ? 0 : 1,
528
528
  amount,
529
529
  strikeTick,
@@ -555,15 +555,16 @@ const useMintOption = (marketAddr) => {
555
555
  //#endregion
556
556
  //#region src/hooks/market/useOptionPnl.ts
557
557
  const useOptionPnl = (option) => {
558
- const { marketAddr, optionType, strikePrice, positionSizeCurrent } = option;
558
+ const { marketAddr, optionType, entryTick, positionSizeCurrent } = option;
559
559
  const { pool, optionAssetIsToken0, payoutAssetDecimals, tickSpacing } = useMarketData(marketAddr);
560
560
  const { exact: currentTick } = useCurrentTick(pool);
561
- const strikeSize = positionSizeCurrent * strikePrice / require_numberUtils.PRICE_PRECISION;
562
561
  const displayPnl = (0, react.useMemo)(() => {
563
- if (optionAssetIsToken0 === void 0 || currentTick === void 0 || !positionSizeCurrent || !payoutAssetDecimals) return void 0;
564
- const delta = (optionAssetIsToken0 ? require_numberUtils.token0ToToken1(positionSizeCurrent, currentTick) : require_numberUtils.token1ToToken0(positionSizeCurrent, currentTick)) - strikeSize;
565
- return require_numberUtils.wrapAmount(optionType === "CALL" ? delta : -delta, payoutAssetDecimals);
562
+ if (optionAssetIsToken0 === void 0 || currentTick === void 0 || !payoutAssetDecimals) return void 0;
563
+ const entrySize = optionAssetIsToken0 ? require_optionUtils.token0ToToken1(positionSizeCurrent, entryTick) : require_optionUtils.token1ToToken0(positionSizeCurrent, entryTick);
564
+ const delta = (optionAssetIsToken0 ? require_optionUtils.token0ToToken1(positionSizeCurrent, currentTick) : require_optionUtils.token1ToToken0(positionSizeCurrent, currentTick)) - entrySize;
565
+ return require_optionUtils.wrapAmount(optionType === "CALL" ? delta : -delta, payoutAssetDecimals);
566
566
  }, [
567
+ entryTick,
567
568
  optionType,
568
569
  optionAssetIsToken0,
569
570
  currentTick,
@@ -572,16 +573,14 @@ const useOptionPnl = (option) => {
572
573
  ]);
573
574
  return {
574
575
  unrealizedPayout: (0, react.useMemo)(() => {
575
- if (!payoutAssetDecimals || !currentTick || !tickSpacing) return void 0;
576
- const [amount0, amount1] = require_numberUtils.liquiditiesToAmounts(option.liquiditiesCurrent, option.startTick, currentTick, tickSpacing);
577
- const delta = (optionAssetIsToken0 ? amount1 + require_numberUtils.token0ToToken1(amount0, currentTick) : amount0 + require_numberUtils.token1ToToken0(amount1, currentTick)) - strikeSize;
578
- const pnl = optionType === "CALL" ? delta : -delta;
579
- return require_numberUtils.wrapAmount(pnl < 0 ? 0n : pnl, payoutAssetDecimals);
576
+ if (!payoutAssetDecimals || !currentTick || !tickSpacing || optionAssetIsToken0 === void 0) return void 0;
577
+ return require_optionUtils.wrapAmount(require_optionUtils.getPayoutAtTick(option, option.liquiditiesCurrent, currentTick, tickSpacing, optionAssetIsToken0), payoutAssetDecimals);
580
578
  }, [
581
579
  currentTick,
582
580
  tickSpacing,
583
581
  optionType,
584
- payoutAssetDecimals
582
+ payoutAssetDecimals,
583
+ optionAssetIsToken0
585
584
  ]),
586
585
  displayPnl
587
586
  };
@@ -595,7 +594,7 @@ const useOptionPremium = (marketAddr, optionType, optionAmount, addedDuration, r
595
594
  const { exact: currentTick } = useCurrentTick(pool);
596
595
  const strikeTickRounded = (0, react.useMemo)(() => {
597
596
  if (!tickSpacing || currentTick === void 0) return;
598
- let strikeTickRounded$1 = require_numberUtils.roundTickDown(strikeTick ?? currentTick, tickSpacing);
597
+ let strikeTickRounded$1 = require_optionUtils.roundTickDown(strikeTick ?? currentTick, tickSpacing);
599
598
  if (optionType === "CALL" && optionAssetIsToken0 || optionType === "PUT" && !optionAssetIsToken0) strikeTickRounded$1 += tickSpacing;
600
599
  return strikeTickRounded$1;
601
600
  }, [
@@ -621,9 +620,9 @@ const useOptionPremium = (marketAddr, optionType, optionAmount, addedDuration, r
621
620
  return (0, react.useMemo)(() => {
622
621
  if (premium === void 0 || protocolFee === void 0 || payoutAssetDecimals === void 0) return {};
623
622
  return {
624
- premium: require_numberUtils.wrapAmount(premium, payoutAssetDecimals),
625
- protocolFee: require_numberUtils.wrapAmount(protocolFee, payoutAssetDecimals),
626
- totalPremium: require_numberUtils.wrapAmount(premium + protocolFee, payoutAssetDecimals)
623
+ premium: require_optionUtils.wrapAmount(premium, payoutAssetDecimals),
624
+ protocolFee: require_optionUtils.wrapAmount(protocolFee, payoutAssetDecimals),
625
+ totalPremium: require_optionUtils.wrapAmount(premium + protocolFee, payoutAssetDecimals)
627
626
  };
628
627
  }, [
629
628
  premium,
@@ -674,7 +673,7 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
674
673
  enabled: !!userAddr && !!marketAddr && !!graphqlClient
675
674
  });
676
675
  return {
677
- data: data || [],
676
+ data: data || require_optionUtils.EMPTY_ARRAY,
678
677
  ...rest
679
678
  };
680
679
  };
@@ -697,7 +696,7 @@ const useExtendOption = (marketAddr) => {
697
696
  const extendOption = async ({ option, duration }) => {
698
697
  if (!client || !address) throw new Error("Wallet not connected");
699
698
  if (!marketAddr || !payoutAsset) throw new Error("Market address not available");
700
- const market = require_numberUtils.getTimelockMarket(marketAddr, client);
699
+ const market = require_optionUtils.getTimelockMarket(marketAddr, client);
701
700
  const remainingDuration = Math.max(0, Math.floor((option.expiresAt.getTime() - Date.now()) / 1e3));
702
701
  const [premium, protocolFee] = await market.read.calculatePremium([
703
702
  option.optionType === "CALL" ? 0 : 1,
@@ -749,7 +748,7 @@ const useUserOperators = (userAddr, marketAddr) => {
749
748
  });
750
749
  return {
751
750
  ...rest,
752
- data: data || []
751
+ data: data || require_optionUtils.EMPTY_ARRAY
753
752
  };
754
753
  };
755
754
 
@@ -787,12 +786,84 @@ const useSetOperatorPerms = (marketAddr) => {
787
786
  return (0, __tanstack_react_query.useMutation)({ mutationFn: setOperatorPerms });
788
787
  };
789
788
 
789
+ //#endregion
790
+ //#region src/hooks/market/useOptionTimeline.ts
791
+ const useOptionTimeline = (marketAddr, optionId) => {
792
+ const { graphqlClient } = useTimelockConfig();
793
+ marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
794
+ const { data,...rest } = (0, __tanstack_react_query.useQuery)({
795
+ queryKey: [
796
+ "optionTimeline",
797
+ marketAddr || "--",
798
+ (optionId === null || optionId === void 0 ? void 0 : optionId.toString()) || "--"
799
+ ],
800
+ queryFn: async () => {
801
+ if (!graphqlClient || !marketAddr || optionId === void 0) return [];
802
+ const result = await graphqlClient.GetOptionEvents({
803
+ marketAddr,
804
+ optionId: optionId.toString()
805
+ });
806
+ const mintEvents = result.MintOptionEvent.map((event) => ({
807
+ id: event.id,
808
+ optionType: event.optionType,
809
+ strikeTick: event.strikeTick,
810
+ currentTick: event.currentTick,
811
+ expiresAt: /* @__PURE__ */ new Date(Number(event.expiresAt) * 1e3),
812
+ premium: BigInt(event.premium),
813
+ protocolFee: BigInt(event.protocolFee),
814
+ liquidities: event.liquidities.map((l) => BigInt(l)),
815
+ timestamp: /* @__PURE__ */ new Date(Number(event.timestamp) * 1e3),
816
+ blockNumber: BigInt(event.blockNumber),
817
+ transactionHash: event.transactionHash
818
+ }));
819
+ const exerciseEvents = result.ExerciseOptionEvent.map((event) => ({
820
+ id: event.id,
821
+ liquidities: event.liquidities.map((l) => BigInt(l)),
822
+ currentTick: event.currentTick,
823
+ payout: BigInt(event.payout),
824
+ timestamp: /* @__PURE__ */ new Date(Number(event.timestamp) * 1e3),
825
+ blockNumber: BigInt(event.blockNumber),
826
+ transactionHash: event.transactionHash
827
+ }));
828
+ const extendEvents = result.ExtendOptionEvent.map((event) => ({
829
+ id: event.id,
830
+ premium: BigInt(event.premium),
831
+ protocolFee: BigInt(event.protocolFee),
832
+ currentTick: event.currentTick,
833
+ addedDuration: BigInt(event.addedDuration),
834
+ timestamp: /* @__PURE__ */ new Date(Number(event.timestamp) * 1e3),
835
+ blockNumber: BigInt(event.blockNumber),
836
+ transactionHash: event.transactionHash
837
+ }));
838
+ return [
839
+ ...mintEvents.map((data$1) => ({
840
+ type: "mint",
841
+ data: data$1
842
+ })),
843
+ ...exerciseEvents.map((data$1) => ({
844
+ type: "exercise",
845
+ data: data$1
846
+ })),
847
+ ...extendEvents.map((data$1) => ({
848
+ type: "extend",
849
+ data: data$1
850
+ }))
851
+ ].sort((a, b) => a.data.timestamp.getTime() - b.data.timestamp.getTime());
852
+ },
853
+ enabled: !!marketAddr && optionId !== void 0 && !!graphqlClient
854
+ });
855
+ return {
856
+ data: data || require_optionUtils.EMPTY_ARRAY,
857
+ ...rest
858
+ };
859
+ };
860
+
790
861
  //#endregion
791
862
  //#region src/hooks/pool/usePriceAtTick.ts
792
863
  const usePriceAtTick = (tick, poolAddr) => {
793
864
  const { token0Decimals, token1Decimals } = usePoolData(poolAddr);
794
- const priceBigInt = (0, react.useMemo)(() => tick ? require_numberUtils.getPriceAtTick(tick) : void 0, [tick]);
795
- return (0, react.useMemo)(() => priceBigInt && token0Decimals && token1Decimals ? require_numberUtils.wrapPrice(priceBigInt, token0Decimals, token1Decimals) : void 0, [
865
+ const priceBigInt = (0, react.useMemo)(() => tick ? require_optionUtils.getPriceAtTick(tick) : void 0, [tick]);
866
+ return (0, react.useMemo)(() => priceBigInt && token0Decimals && token1Decimals ? require_optionUtils.wrapPrice(priceBigInt, token0Decimals, token1Decimals) : void 0, [
796
867
  priceBigInt,
797
868
  token0Decimals,
798
869
  token1Decimals
@@ -1038,7 +1109,7 @@ const useMintLiquidity = (vaultAddr) => {
1038
1109
  if (!address || !client) throw new Error("Wallet not connected");
1039
1110
  if (currentTick.exact === void 0 || !token0 || !token1 || !vaultAddr || !uniswapLens) throw new Error("Current tick not available");
1040
1111
  const { totalAmount0, totalAmount1 } = await batchGetAmountsFromLiquidity(uniswapLens, params.map((p) => p.tickLower), params.map((p) => p.tickUpper), params.map((p) => p.liquidity), currentTick.exact);
1041
- const [allowance0, allowance1] = await Promise.all([require_numberUtils.getErc20(token0, client).read.allowance([address, vaultAddr]), require_numberUtils.getErc20(token1, client).read.allowance([address, vaultAddr])]);
1112
+ const [allowance0, allowance1] = await Promise.all([require_optionUtils.getErc20(token0, client).read.allowance([address, vaultAddr]), require_optionUtils.getErc20(token1, client).read.allowance([address, vaultAddr])]);
1042
1113
  const approvalPromises = [];
1043
1114
  if (allowance0 <= totalAmount0) {
1044
1115
  const approvalHash = await writeContractAsync({
@@ -1135,13 +1206,13 @@ const useVaultTVL = (vaultAddr) => {
1135
1206
  });
1136
1207
  return (0, react.useMemo)(() => {
1137
1208
  if (!token0Decimals || !token1Decimals || !data) return {};
1138
- const totalAmount0 = require_numberUtils.wrapAmount(data[0], token0Decimals);
1139
- const totalAmount1 = require_numberUtils.wrapAmount(data[1], token1Decimals);
1140
- const borrowedAmount0 = require_numberUtils.wrapAmount(data[2], token0Decimals);
1141
- const borrowedAmount1 = require_numberUtils.wrapAmount(data[3], token1Decimals);
1209
+ const totalAmount0 = require_optionUtils.wrapAmount(data[0], token0Decimals);
1210
+ const totalAmount1 = require_optionUtils.wrapAmount(data[1], token1Decimals);
1211
+ const borrowedAmount0 = require_optionUtils.wrapAmount(data[2], token0Decimals);
1212
+ const borrowedAmount1 = require_optionUtils.wrapAmount(data[3], token1Decimals);
1142
1213
  return {
1143
- tvl0: require_numberUtils.wrapAmount(data[4], token0Decimals),
1144
- tvl1: require_numberUtils.wrapAmount(data[5], token1Decimals),
1214
+ tvl0: require_optionUtils.wrapAmount(data[4], token0Decimals),
1215
+ tvl1: require_optionUtils.wrapAmount(data[5], token1Decimals),
1145
1216
  totalAmount0,
1146
1217
  totalAmount1,
1147
1218
  borrowedAmount0,
@@ -1177,6 +1248,7 @@ exports.useMintLiquidity = useMintLiquidity;
1177
1248
  exports.useMintOption = useMintOption;
1178
1249
  exports.useOptionPnl = useOptionPnl;
1179
1250
  exports.useOptionPremium = useOptionPremium;
1251
+ exports.useOptionTimeline = useOptionTimeline;
1180
1252
  exports.usePoolData = usePoolData;
1181
1253
  exports.usePriceAtTick = usePriceAtTick;
1182
1254
  exports.usePriceHistory = usePriceHistory;