timelock-sdk 0.0.131 → 0.0.133

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.
Files changed (31) hide show
  1. package/dist/abis.cjs +1 -1
  2. package/dist/abis.d.cts +1 -1
  3. package/dist/abis.d.ts +1 -1
  4. package/dist/abis.js +2 -2
  5. package/dist/{client-Cs5UA8KQ.d.cts → client-BuKYj0pW.d.ts} +3117 -1193
  6. package/dist/{client-BzO_GBnM.d.ts → client-QYPs5kB7.d.cts} +3381 -1457
  7. package/dist/client.cjs +75 -105
  8. package/dist/client.cjs.map +1 -1
  9. package/dist/client.d.cts +2 -2
  10. package/dist/client.d.ts +2 -2
  11. package/dist/client.js +78 -108
  12. package/dist/client.js.map +1 -1
  13. package/dist/{optionUtils-CUg_L5bP.js → optionUtils-CQzUsKpO.js} +3 -3
  14. package/dist/{optionUtils-CUg_L5bP.js.map → optionUtils-CQzUsKpO.js.map} +1 -1
  15. package/dist/{optionUtils-BQIg6hnc.cjs → optionUtils-OfLzCR6R.cjs} +3 -3
  16. package/dist/{optionUtils-BQIg6hnc.cjs.map → optionUtils-OfLzCR6R.cjs.map} +1 -1
  17. package/dist/{optionsMarket-Dkwpa2uO.js → optionsMarket-B2IsvbeA.js} +48 -25
  18. package/dist/optionsMarket-B2IsvbeA.js.map +1 -0
  19. package/dist/{optionsMarket-C8-v8IvX.cjs → optionsMarket-C6K82im8.cjs} +48 -25
  20. package/dist/optionsMarket-C6K82im8.cjs.map +1 -0
  21. package/dist/package.cjs +2 -2
  22. package/dist/package.d.cts +2 -2
  23. package/dist/package.d.ts +2 -2
  24. package/dist/package.js +2 -2
  25. package/dist/{singleOwnerVault-BeJChjfJ.js → singleOwnerVault-p81IjmWe.js} +1 -1
  26. package/dist/{singleOwnerVault-BeJChjfJ.js.map → singleOwnerVault-p81IjmWe.js.map} +1 -1
  27. package/dist/{uniswapMathLens-DtacRMPz.d.cts → uniswapMathLens-Be6lFJcD.d.cts} +31 -13
  28. package/dist/{uniswapMathLens-JKcBN1v_.d.ts → uniswapMathLens-DHfzEjej.d.ts} +31 -13
  29. package/package.json +11 -11
  30. package/dist/optionsMarket-C8-v8IvX.cjs.map +0 -1
  31. package/dist/optionsMarket-Dkwpa2uO.js.map +0 -1
package/dist/client.d.cts CHANGED
@@ -1,3 +1,3 @@
1
- import "./uniswapMathLens-DtacRMPz.cjs";
2
- import { $ as OptionEvent, Ct as OptionData, Dt as useCurrentMarket, Et as TimelockProvider, G as useClosedUserPerps, H as useUserOperators, J as useClosePerp, K as useUserPerps, Ot as useTimelockConfig, Q as MintOptionEvent, St as useExerciseOption, Tt as useClosedUserOptions, U as useOperatorPerms, V as useSetOperatorPerms, W as useActiveUserPerps, X as ExerciseOptionEvent, Y as useMintPerp, Z as ExtendEvent, _ as useCurrentPrice, a as batchGetAmountsFromLiquidity, at as useMaxPositionSize, c as useLiquidityBlocks, d as usePriceHistory, et as useOptionTimeline, f as usePriceAtTick, g as useCurrentTick, h as usePoolData, i as useVaultData, it as useMintOption, l as useBurnLiquidity, m as UniswapPoolData, n as useLens, nt as useOptionPremium, o as useMintLiquidity, p as usePriceSqrtPriceX96, q as usePerpsOperator, r as useVaultTVL, rt as useOptionPnl, s as LiquidityBlockData, t as useApproval, tt as useExtendOption, u as useMarketPriceHistory, wt as useActiveUserOptions, xt as useMarketData } from "./client-Cs5UA8KQ.cjs";
1
+ import "./uniswapMathLens-Be6lFJcD.cjs";
2
+ import { $ as OptionEvent, Ct as OptionData, Dt as useCurrentMarket, Et as TimelockProvider, G as useClosedUserPerps, H as useUserOperators, J as useClosePerp, K as useUserPerps, Ot as useTimelockConfig, Q as MintOptionEvent, St as useExerciseOption, Tt as useClosedUserOptions, U as useOperatorPerms, V as useSetOperatorPerms, W as useActiveUserPerps, X as ExerciseOptionEvent, Y as useMintPerp, Z as ExtendEvent, _ as useCurrentPrice, a as batchGetAmountsFromLiquidity, at as useMaxPositionSize, c as useLiquidityBlocks, d as usePriceHistory, et as useOptionTimeline, f as usePriceAtTick, g as useCurrentTick, h as usePoolData, i as useVaultData, it as useMintOption, l as useBurnLiquidity, m as UniswapPoolData, n as useLens, nt as useOptionPremium, o as useMintLiquidity, p as usePriceSqrtPriceX96, q as usePerpsOperator, r as useVaultTVL, rt as useOptionPnl, s as LiquidityBlockData, t as useApproval, tt as useExtendOption, u as useMarketPriceHistory, wt as useActiveUserOptions, xt as useMarketData } from "./client-QYPs5kB7.cjs";
3
3
  export { ExerciseOptionEvent, ExtendEvent, LiquidityBlockData, MintOptionEvent, OptionData, OptionEvent, TimelockProvider, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMarketPriceHistory, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtTick, usePriceHistory, usePriceSqrtPriceX96, useSetOperatorPerms, useTimelockConfig, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import "./uniswapMathLens-JKcBN1v_.js";
2
- import { $ as OptionEvent, Ct as OptionData, Dt as useCurrentMarket, Et as TimelockProvider, G as useClosedUserPerps, H as useUserOperators, J as useClosePerp, K as useUserPerps, Ot as useTimelockConfig, Q as MintOptionEvent, St as useExerciseOption, Tt as useClosedUserOptions, U as useOperatorPerms, V as useSetOperatorPerms, W as useActiveUserPerps, X as ExerciseOptionEvent, Y as useMintPerp, Z as ExtendEvent, _ as useCurrentPrice, a as batchGetAmountsFromLiquidity, at as useMaxPositionSize, c as useLiquidityBlocks, d as usePriceHistory, et as useOptionTimeline, f as usePriceAtTick, g as useCurrentTick, h as usePoolData, i as useVaultData, it as useMintOption, l as useBurnLiquidity, m as UniswapPoolData, n as useLens, nt as useOptionPremium, o as useMintLiquidity, p as usePriceSqrtPriceX96, q as usePerpsOperator, r as useVaultTVL, rt as useOptionPnl, s as LiquidityBlockData, t as useApproval, tt as useExtendOption, u as useMarketPriceHistory, wt as useActiveUserOptions, xt as useMarketData } from "./client-BzO_GBnM.js";
1
+ import "./uniswapMathLens-DHfzEjej.js";
2
+ import { $ as OptionEvent, Ct as OptionData, Dt as useCurrentMarket, Et as TimelockProvider, G as useClosedUserPerps, H as useUserOperators, J as useClosePerp, K as useUserPerps, Ot as useTimelockConfig, Q as MintOptionEvent, St as useExerciseOption, Tt as useClosedUserOptions, U as useOperatorPerms, V as useSetOperatorPerms, W as useActiveUserPerps, X as ExerciseOptionEvent, Y as useMintPerp, Z as ExtendEvent, _ as useCurrentPrice, a as batchGetAmountsFromLiquidity, at as useMaxPositionSize, c as useLiquidityBlocks, d as usePriceHistory, et as useOptionTimeline, f as usePriceAtTick, g as useCurrentTick, h as usePoolData, i as useVaultData, it as useMintOption, l as useBurnLiquidity, m as UniswapPoolData, n as useLens, nt as useOptionPremium, o as useMintLiquidity, p as usePriceSqrtPriceX96, q as usePerpsOperator, r as useVaultTVL, rt as useOptionPnl, s as LiquidityBlockData, t as useApproval, tt as useExtendOption, u as useMarketPriceHistory, wt as useActiveUserOptions, xt as useMarketData } from "./client-BuKYj0pW.js";
3
3
  export { ExerciseOptionEvent, ExtendEvent, LiquidityBlockData, MintOptionEvent, OptionData, OptionEvent, TimelockProvider, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMarketPriceHistory, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtTick, usePriceHistory, usePriceSqrtPriceX96, useSetOperatorPerms, useTimelockConfig, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
3
 
4
- import { r as lensAbi, t as optionsMarketAbi } from "./optionsMarket-Dkwpa2uO.js";
5
- import { A as token0ToToken1AtTick, B as timelockLenses, D as roundTickDown, F as getErc20, I as getTimelockLens, L as getTimelockMarket, M as token1ToToken0AtTick, P as getPriceHistory, R as getUniswapMathLens, V as uniswapMathLenses, b as getPriceAtSqrtPriceX96, f as wrapAmount, j as token1ToToken0, k as token0ToToken1, m as wrapPrice, r as EMPTY_ARRAY$1, t as getPayoutAtPrice, v as getAmountsFromLiquidity, x as getPriceAtTick, y as getNearestValidStrikeTick, z as swappers } from "./optionUtils-CUg_L5bP.js";
6
- import { n as uniswapV3PoolAbi, t as singleOwnerVaultAbi } from "./singleOwnerVault-BeJChjfJ.js";
4
+ import { r as lensAbi, t as optionsMarketAbi } from "./optionsMarket-B2IsvbeA.js";
5
+ import { A as token0ToToken1AtTick, B as timelockLenses, D as roundTickDown, F as getErc20, I as getTimelockLens, L as getTimelockMarket, M as token1ToToken0AtTick, P as getPriceHistory, R as getUniswapMathLens, V as uniswapMathLenses, b as getPriceAtSqrtPriceX96, f as wrapAmount, j as token1ToToken0, k as token0ToToken1, m as wrapPrice, r as EMPTY_ARRAY, t as getPayoutAtPrice, v as getAmountsFromLiquidity, x as getPriceAtTick, y as getNearestValidStrikeTick, z as swappers } from "./optionUtils-CQzUsKpO.js";
6
+ import { n as uniswapV3PoolAbi, t as singleOwnerVaultAbi } from "./singleOwnerVault-p81IjmWe.js";
7
7
  import { encodeAbiParameters, encodeFunctionData, erc20Abi, maxUint256, zeroAddress } from "viem";
8
8
  import React, { createContext, useContext, useEffect, useMemo } from "react";
9
9
  import { useAccount, useBalance, useChainId, useClient, useReadContract, useSignMessage, useWaitForTransactionReceipt, useWriteContract } from "wagmi";
@@ -526,42 +526,25 @@ const useExerciseOption = (marketAddr) => {
526
526
 
527
527
  //#endregion
528
528
  //#region src/hooks/options/useMaxPositionSize.ts
529
- const useMaxPositionSize = (marketAddr, strikeTick, maxBorrowableRange = 100) => {
529
+ const useMaxPositionSize = (marketAddr, maxBorrowableRange = 100) => {
530
530
  const { timelockLens } = useLens();
531
531
  const { optionAssetDecimals } = useMarketData(marketAddr);
532
- const { data: data0, refetch: refetch0 } = useReadContract({
532
+ const { data, ...rest } = useReadContract({
533
533
  address: timelockLens === null || timelockLens === void 0 ? void 0 : timelockLens.address,
534
534
  abi: lensAbi,
535
- functionName: "getMaxPositionSizeAtCurrentTick",
535
+ functionName: "getMaxATMSizes",
536
536
  args: [marketAddr, maxBorrowableRange],
537
537
  query: { enabled: !!marketAddr && !!timelockLens },
538
538
  gas: 100000000n
539
539
  });
540
- const { data: data1, refetch: refetch1 } = useReadContract({
541
- address: timelockLens === null || timelockLens === void 0 ? void 0 : timelockLens.address,
542
- abi: lensAbi,
543
- functionName: "getMaxPositionSize",
544
- args: [
545
- marketAddr,
546
- strikeTick,
547
- maxBorrowableRange
548
- ],
549
- query: { enabled: !!marketAddr && !!timelockLens && strikeTick !== void 0 },
550
- gas: 100000000n
551
- });
552
- const data = strikeTick !== void 0 ? data1 : data0;
553
540
  const { maxCallSize, maxPutSize } = useMemo(() => data && optionAssetDecimals ? {
554
541
  maxCallSize: wrapAmount(data[0], optionAssetDecimals),
555
542
  maxPutSize: wrapAmount(data[1], optionAssetDecimals)
556
543
  } : {}, [data, optionAssetDecimals]);
557
- const refetch = () => {
558
- refetch0();
559
- refetch1();
560
- };
561
544
  return {
562
545
  maxCallSize,
563
546
  maxPutSize,
564
- refetch
547
+ ...rest
565
548
  };
566
549
  };
567
550
 
@@ -569,7 +552,7 @@ const useMaxPositionSize = (marketAddr, strikeTick, maxBorrowableRange = 100) =>
569
552
  //#region src/hooks/pool/useCurrentTick.ts
570
553
  const useCurrentTick = (poolAddr) => {
571
554
  const { tickSpacing } = usePoolData(poolAddr);
572
- const { data,...rest } = useReadContract({
555
+ const { data, ...rest } = useReadContract({
573
556
  address: poolAddr,
574
557
  abi: uniswapV3PoolAbi,
575
558
  functionName: "slot0",
@@ -797,7 +780,7 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
797
780
  const { graphqlClient } = useTimelockConfig();
798
781
  userAddr = userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase();
799
782
  marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
800
- const { data,...rest } = useQuery({
783
+ const { data, ...rest } = useQuery({
801
784
  queryKey: [
802
785
  "userOptions",
803
786
  userAddr || "--",
@@ -833,7 +816,7 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
833
816
  enabled: !!userAddr && !!marketAddr && !!graphqlClient
834
817
  });
835
818
  return {
836
- data: data || EMPTY_ARRAY$1,
819
+ data: data || EMPTY_ARRAY,
837
820
  ...rest
838
821
  };
839
822
  };
@@ -891,7 +874,7 @@ const useExtendOption = (marketAddr) => {
891
874
  const useOptionTimeline = (marketAddr, optionId) => {
892
875
  const { graphqlClient } = useTimelockConfig();
893
876
  marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
894
- const { data,...rest } = useQuery({
877
+ const { data, ...rest } = useQuery({
895
878
  queryKey: [
896
879
  "optionTimeline",
897
880
  marketAddr || "--",
@@ -953,7 +936,7 @@ const useOptionTimeline = (marketAddr, optionId) => {
953
936
  enabled: !!marketAddr && optionId !== void 0 && !!graphqlClient
954
937
  });
955
938
  return {
956
- data: data || EMPTY_ARRAY$1,
939
+ data: data || EMPTY_ARRAY,
957
940
  ...rest
958
941
  };
959
942
  };
@@ -1031,66 +1014,6 @@ const usePerpsOperator = () => {
1031
1014
  };
1032
1015
  };
1033
1016
 
1034
- //#endregion
1035
- //#region src/hooks/operators/useUserOperators.ts
1036
- const useUserOperators = (userAddr, marketAddr) => {
1037
- const { graphqlClient } = useTimelockConfig();
1038
- const { data,...rest } = useQuery({
1039
- queryKey: [
1040
- "userOperators",
1041
- (userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase()) || "--",
1042
- (marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase()) || "--"
1043
- ],
1044
- queryFn: async () => {
1045
- if (!userAddr || !marketAddr) return void 0;
1046
- return (await graphqlClient.GetUserMarketOperators({
1047
- userAddr: userAddr.toLowerCase(),
1048
- marketAddr: marketAddr.toLowerCase()
1049
- })).UserMarketOperator.map((operator) => ({
1050
- ...operator,
1051
- spendingApproval: BigInt(operator.spendingApproval),
1052
- operatorAddr: operator.operator.address.toLowerCase()
1053
- }));
1054
- },
1055
- enabled: !!userAddr && !!marketAddr && !!graphqlClient
1056
- });
1057
- return {
1058
- ...rest,
1059
- data: data || EMPTY_ARRAY$1
1060
- };
1061
- };
1062
-
1063
- //#endregion
1064
- //#region src/hooks/operators/useSetOperatorPerms.ts
1065
- const useSetOperatorPerms = (marketAddr) => {
1066
- const queryClient = useQueryClient();
1067
- const client = useClient();
1068
- const { address } = useAccount();
1069
- const { writeContractAsync } = useWriteContract();
1070
- const setOperatorPerms = async ({ operator, canExtend, canExercise, canTransfer, canMint, spendingApproval }) => {
1071
- if (!client || !address) throw new Error("Wallet not connected");
1072
- if (!marketAddr) throw new Error("Market address not available");
1073
- const hash = await writeContractAsync({
1074
- address: marketAddr,
1075
- abi: optionsMarketAbi,
1076
- functionName: "setOperatorPerms",
1077
- args: [
1078
- operator,
1079
- canExtend,
1080
- canExercise,
1081
- canTransfer,
1082
- canMint,
1083
- spendingApproval
1084
- ]
1085
- });
1086
- await waitForTransactionReceipt(client, { hash });
1087
- queryClient.invalidateQueries({ queryKey: ["userOperators"] });
1088
- queryClient.invalidateQueries({ queryKey: ["readContract"] });
1089
- return hash;
1090
- };
1091
- return useMutation({ mutationFn: setOperatorPerms });
1092
- };
1093
-
1094
1017
  //#endregion
1095
1018
  //#region src/hooks/perps/useMintPerp.ts
1096
1019
  const useMintPerp = (marketAddr) => {
@@ -1099,13 +1022,9 @@ const useMintPerp = (marketAddr) => {
1099
1022
  const { address } = useAccount();
1100
1023
  const { operator, address: operatorAddr, signMessage: { mutateAsync: signMessage } } = usePerpsOperator();
1101
1024
  const { askForApproval } = useApproval();
1102
- const { data: operators } = useUserOperators(address, marketAddr);
1103
- const { mutateAsync: setOperatorPerms } = useSetOperatorPerms(marketAddr);
1104
1025
  const { pool, optionAssetIsToken0, payoutAsset } = useMarketData(marketAddr);
1105
1026
  const { tickSpacing } = usePoolData(pool);
1106
1027
  const { refetch: refetchCurrentTick } = useCurrentTick(pool);
1107
- const userPerms = operatorAddr ? operators.find((o) => o.operatorAddr.toLowerCase() === operatorAddr.toLowerCase()) : void 0;
1108
- const hasEnoughPerms = userPerms && userPerms.canMint && userPerms.canExtend && userPerms.canExercise;
1109
1028
  const mintPerp = async (data) => {
1110
1029
  const { optionType, amount, duration, strikeTick } = data;
1111
1030
  if (!client || !address) throw new Error("Wallet not connected");
@@ -1125,16 +1044,7 @@ const useMintPerp = (marketAddr) => {
1125
1044
  duration,
1126
1045
  0
1127
1046
  ]);
1128
- const maxPremium = (premium + protocolFee) * 11n / 10n;
1129
- if (!hasEnoughPerms) await setOperatorPerms({
1130
- operator: operatorAddr,
1131
- canMint: true,
1132
- canExtend: true,
1133
- canExercise: true,
1134
- canTransfer: (userPerms === null || userPerms === void 0 ? void 0 : userPerms.canTransfer) || false,
1135
- spendingApproval: maxPremium
1136
- });
1137
- await askForApproval(payoutAsset, marketAddr, maxPremium);
1047
+ await askForApproval(payoutAsset, marketAddr, (premium + protocolFee) * 11n / 10n);
1138
1048
  await operator.mintPerp({
1139
1049
  marketAddr,
1140
1050
  amount,
@@ -1168,12 +1078,12 @@ const useClosePerp = () => {
1168
1078
 
1169
1079
  //#endregion
1170
1080
  //#region src/hooks/perps/useUserPerps.ts
1171
- const EMPTY_ARRAY = [];
1081
+ const EMPTY_ARRAY$1 = [];
1172
1082
  const useUserPerps = (marketAddr, userAddr, type) => {
1173
1083
  const { operator } = usePerpsOperator();
1174
1084
  userAddr = userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase();
1175
1085
  marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
1176
- const { data,...rest } = useQuery({
1086
+ const { data, ...rest } = useQuery({
1177
1087
  queryKey: [
1178
1088
  "userPerps",
1179
1089
  type,
@@ -1186,7 +1096,7 @@ const useUserPerps = (marketAddr, userAddr, type) => {
1186
1096
  refetchInterval: 1e4
1187
1097
  });
1188
1098
  return {
1189
- data: data || EMPTY_ARRAY,
1099
+ data: data || EMPTY_ARRAY$1,
1190
1100
  ...rest
1191
1101
  };
1192
1102
  };
@@ -1205,7 +1115,7 @@ const useOperatorPerms = (marketAddr, userAddr, operatorAddr) => {
1205
1115
  address: userAddr,
1206
1116
  token: payoutAsset
1207
1117
  });
1208
- const { data,...rest } = useReadContract({
1118
+ const { data, ...rest } = useReadContract({
1209
1119
  abi: optionsMarketAbi,
1210
1120
  address: marketAddr,
1211
1121
  functionName: "operatorPerms",
@@ -1238,6 +1148,66 @@ const useOperatorPerms = (marketAddr, userAddr, operatorAddr) => {
1238
1148
  };
1239
1149
  };
1240
1150
 
1151
+ //#endregion
1152
+ //#region src/hooks/operators/useUserOperators.ts
1153
+ const useUserOperators = (userAddr, marketAddr) => {
1154
+ const { graphqlClient } = useTimelockConfig();
1155
+ const { data, ...rest } = useQuery({
1156
+ queryKey: [
1157
+ "userOperators",
1158
+ (userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase()) || "--",
1159
+ (marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase()) || "--"
1160
+ ],
1161
+ queryFn: async () => {
1162
+ if (!userAddr || !marketAddr) return void 0;
1163
+ return (await graphqlClient.GetUserMarketOperators({
1164
+ userAddr: userAddr.toLowerCase(),
1165
+ marketAddr: marketAddr.toLowerCase()
1166
+ })).UserMarketOperator.map((operator) => ({
1167
+ ...operator,
1168
+ spendingApproval: BigInt(operator.spendingApproval),
1169
+ operatorAddr: operator.operator.address.toLowerCase()
1170
+ }));
1171
+ },
1172
+ enabled: !!userAddr && !!marketAddr && !!graphqlClient
1173
+ });
1174
+ return {
1175
+ ...rest,
1176
+ data: data || EMPTY_ARRAY
1177
+ };
1178
+ };
1179
+
1180
+ //#endregion
1181
+ //#region src/hooks/operators/useSetOperatorPerms.ts
1182
+ const useSetOperatorPerms = (marketAddr) => {
1183
+ const queryClient = useQueryClient();
1184
+ const client = useClient();
1185
+ const { address } = useAccount();
1186
+ const { writeContractAsync } = useWriteContract();
1187
+ const setOperatorPerms = async ({ operator, canExtend, canExercise, canTransfer, canMint, spendingApproval }) => {
1188
+ if (!client || !address) throw new Error("Wallet not connected");
1189
+ if (!marketAddr) throw new Error("Market address not available");
1190
+ const hash = await writeContractAsync({
1191
+ address: marketAddr,
1192
+ abi: optionsMarketAbi,
1193
+ functionName: "setOperatorPerms",
1194
+ args: [
1195
+ operator,
1196
+ canExtend,
1197
+ canExercise,
1198
+ canTransfer,
1199
+ canMint,
1200
+ spendingApproval
1201
+ ]
1202
+ });
1203
+ await waitForTransactionReceipt(client, { hash });
1204
+ queryClient.invalidateQueries({ queryKey: ["userOperators"] });
1205
+ queryClient.invalidateQueries({ queryKey: ["readContract"] });
1206
+ return hash;
1207
+ };
1208
+ return useMutation({ mutationFn: setOperatorPerms });
1209
+ };
1210
+
1241
1211
  //#endregion
1242
1212
  //#region src/hooks/pool/usePriceHistory.ts
1243
1213
  const usePriceHistory = (pool, token, resolution, startTimestamp, endTimestamp) => {
@@ -1341,7 +1311,7 @@ const useBurnLiquidity = (vaultAddr) => {
1341
1311
  //#region src/hooks/vault/useLiquidityBlocks.ts
1342
1312
  const useLiquidityBlocks = (vaultAddr) => {
1343
1313
  const { timelockLens } = useLens();
1344
- const { data: blocks = [],...rest } = useReadContract({
1314
+ const { data: blocks = [], ...rest } = useReadContract({
1345
1315
  address: timelockLens === null || timelockLens === void 0 ? void 0 : timelockLens.address,
1346
1316
  abi: lensAbi,
1347
1317
  functionName: "getAllBlocks",