timelock-sdk 0.0.177 → 0.0.179

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.d.cts CHANGED
@@ -1,3 +1,3 @@
1
1
  import "./optionsMarket-c4hgszY_.cjs";
2
- import { A as useCurrentPrice, Bt as useMarketVolume, C as useLiquidityBlocks, Ct as useMintOption, D as usePriceAtSqrtPriceX96, E as usePriceHistory, Gt as useTimelockConfig, Ht as useMarketData, M as UniswapPoolData, N as usePoolData, O as usePriceAtTick, S as LiquidityBlockData, St as useClosedUserOptions, T as useMarketPriceHistory, Ut as TimelockProvider, Vt as useMarketState, Wt as useCurrentMarket, _ as useTokenData, _t as useOptionPremium, a as OptionPricingParams, at as useActiveUserPerps, b as batchGetAmountsFromLiquidity, bt as OptionData, c as usePricingParams, ct as usePerpsOperator, d as usePauseMarketTrading, dt as ExerciseOptionEvent, f as usePauseGlobalTrading, ft as ExtendEvent, g as TokenData, gt as useExtendOption, h as useTokenBalance, ht as useOptionTimeline, i as useOptionPricingParams, it as useOperatorPerms, j as PoolKey, k as useCurrentTick, l as useUpdateMarketFees, lt as useClosePerp, m as useApproval, mt as OptionEvent, n as useUpdateMarketPricing, nt as useSetOperatorPerms, o as PricingParams, ot as useClosedUserPerps, p as useGuardianGlobalState, pt as MintOptionEvent, r as useStaticPricingParams, rt as useUserOperators, s as StaticPricingParams, st as useUserPerps, t as useLens, u as useFeeRates, ut as useMintPerp, v as useVaultTVL, vt as useOptionPnl, w as useBurnLiquidity, wt as useMaxPositionSize, x as useMintLiquidity, xt as useActiveUserOptions, y as useVaultData, yt as useExerciseOption } from "./client-BFfw9ee6.cjs";
2
+ import { A as useCurrentPrice, Bt as useMarketState, C as useLiquidityBlocks, Ct as useMintOption, D as usePriceAtSqrtPriceX96, E as usePriceHistory, Ht as TimelockProvider, M as UniswapPoolData, N as usePoolData, O as usePriceAtTick, S as LiquidityBlockData, St as useClosedUserOptions, T as useMarketPriceHistory, Ut as useCurrentMarket, Vt as useMarketData, Wt as useTimelockConfig, _ as useTokenData, _t as useOptionPremium, a as OptionPricingParams, at as useActiveUserPerps, b as batchGetAmountsFromLiquidity, bt as OptionData, c as usePricingParams, ct as usePerpsOperator, d as usePauseMarketTrading, dt as ExerciseOptionEvent, f as usePauseGlobalTrading, ft as ExtendEvent, g as TokenData, gt as useExtendOption, h as useTokenBalance, ht as useOptionTimeline, i as useOptionPricingParams, it as useOperatorPerms, j as PoolKey, k as useCurrentTick, l as useUpdateMarketFees, lt as useClosePerp, m as useApproval, mt as OptionEvent, n as useUpdateMarketPricing, nt as useSetOperatorPerms, o as PricingParams, ot as useClosedUserPerps, p as useGuardianGlobalState, pt as MintOptionEvent, r as useStaticPricingParams, rt as useUserOperators, s as StaticPricingParams, st as useUserPerps, t as useLens, u as useFeeRates, ut as useMintPerp, v as useVaultTVL, vt as useOptionPnl, w as useBurnLiquidity, wt as useMaxPositionSize, x as useMintLiquidity, xt as useActiveUserOptions, y as useVaultData, yt as useExerciseOption, zt as useMarketVolume } from "./client-8sps6WQZ.cjs";
3
3
  export { ExerciseOptionEvent, ExtendEvent, LiquidityBlockData, MintOptionEvent, OptionData, OptionEvent, OptionPricingParams, PoolKey, PricingParams, StaticPricingParams, TimelockProvider, TokenData, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useFeeRates, useGuardianGlobalState, useLens, useLiquidityBlocks, useMarketData, useMarketPriceHistory, useMarketState, useMarketVolume, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionPricingParams, useOptionTimeline, usePauseGlobalTrading, usePauseMarketTrading, usePerpsOperator, usePoolData, usePriceAtSqrtPriceX96, usePriceAtTick, usePriceHistory, usePricingParams, useSetOperatorPerms, useStaticPricingParams, useTimelockConfig, useTokenBalance, useTokenData, useUpdateMarketFees, useUpdateMarketPricing, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import "./optionsMarket-2HZ-p_dl.js";
2
- import { A as useCurrentPrice, Bt as useMarketVolume, C as useLiquidityBlocks, Ct as useMintOption, D as usePriceAtSqrtPriceX96, E as usePriceHistory, Gt as useTimelockConfig, Ht as useMarketData, M as UniswapPoolData, N as usePoolData, O as usePriceAtTick, S as LiquidityBlockData, St as useClosedUserOptions, T as useMarketPriceHistory, Ut as TimelockProvider, Vt as useMarketState, Wt as useCurrentMarket, _ as useTokenData, _t as useOptionPremium, a as OptionPricingParams, at as useActiveUserPerps, b as batchGetAmountsFromLiquidity, bt as OptionData, c as usePricingParams, ct as usePerpsOperator, d as usePauseMarketTrading, dt as ExerciseOptionEvent, f as usePauseGlobalTrading, ft as ExtendEvent, g as TokenData, gt as useExtendOption, h as useTokenBalance, ht as useOptionTimeline, i as useOptionPricingParams, it as useOperatorPerms, j as PoolKey, k as useCurrentTick, l as useUpdateMarketFees, lt as useClosePerp, m as useApproval, mt as OptionEvent, n as useUpdateMarketPricing, nt as useSetOperatorPerms, o as PricingParams, ot as useClosedUserPerps, p as useGuardianGlobalState, pt as MintOptionEvent, r as useStaticPricingParams, rt as useUserOperators, s as StaticPricingParams, st as useUserPerps, t as useLens, u as useFeeRates, ut as useMintPerp, v as useVaultTVL, vt as useOptionPnl, w as useBurnLiquidity, wt as useMaxPositionSize, x as useMintLiquidity, xt as useActiveUserOptions, y as useVaultData, yt as useExerciseOption } from "./client-BiwrAgwX.js";
2
+ import { A as useCurrentPrice, Bt as useMarketState, C as useLiquidityBlocks, Ct as useMintOption, D as usePriceAtSqrtPriceX96, E as usePriceHistory, Ht as TimelockProvider, M as UniswapPoolData, N as usePoolData, O as usePriceAtTick, S as LiquidityBlockData, St as useClosedUserOptions, T as useMarketPriceHistory, Ut as useCurrentMarket, Vt as useMarketData, Wt as useTimelockConfig, _ as useTokenData, _t as useOptionPremium, a as OptionPricingParams, at as useActiveUserPerps, b as batchGetAmountsFromLiquidity, bt as OptionData, c as usePricingParams, ct as usePerpsOperator, d as usePauseMarketTrading, dt as ExerciseOptionEvent, f as usePauseGlobalTrading, ft as ExtendEvent, g as TokenData, gt as useExtendOption, h as useTokenBalance, ht as useOptionTimeline, i as useOptionPricingParams, it as useOperatorPerms, j as PoolKey, k as useCurrentTick, l as useUpdateMarketFees, lt as useClosePerp, m as useApproval, mt as OptionEvent, n as useUpdateMarketPricing, nt as useSetOperatorPerms, o as PricingParams, ot as useClosedUserPerps, p as useGuardianGlobalState, pt as MintOptionEvent, r as useStaticPricingParams, rt as useUserOperators, s as StaticPricingParams, st as useUserPerps, t as useLens, u as useFeeRates, ut as useMintPerp, v as useVaultTVL, vt as useOptionPnl, w as useBurnLiquidity, wt as useMaxPositionSize, x as useMintLiquidity, xt as useActiveUserOptions, y as useVaultData, yt as useExerciseOption, zt as useMarketVolume } from "./client-CMpyJqb-.js";
3
3
  export { ExerciseOptionEvent, ExtendEvent, LiquidityBlockData, MintOptionEvent, OptionData, OptionEvent, OptionPricingParams, PoolKey, PricingParams, StaticPricingParams, TimelockProvider, TokenData, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useFeeRates, useGuardianGlobalState, useLens, useLiquidityBlocks, useMarketData, useMarketPriceHistory, useMarketState, useMarketVolume, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionPricingParams, useOptionTimeline, usePauseGlobalTrading, usePauseMarketTrading, usePerpsOperator, usePoolData, usePriceAtSqrtPriceX96, usePriceAtTick, usePriceHistory, usePricingParams, useSetOperatorPerms, useStaticPricingParams, useTimelockConfig, useTokenBalance, useTokenData, useUpdateMarketFees, useUpdateMarketPricing, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  import { i as erc20Abi$1, n as optionsMarketAbi, r as lensAbi, t as statelessStateViewAbi } from "./statelessStateView-MGdfMvC4.js";
5
- import { A as token1ToToken0, B as swappers, D as roundTick, F as getStateView, I as getTimelockLens, L as getTimelockMarket, N as getPriceHistory, O as token0ToToken1, P as getErc20, V as timelockFactories, b as getPriceAtSqrtPriceX96, f as wrapAmount, j as token1ToToken0AtTick, k as token0ToToken1AtTick, m as wrapPrice, r as EMPTY_ARRAY, t as getPayoutAtPrice, v as getAmountsFromLiquidity, x as getPriceAtTick, y as getNearestValidStrikeTick } from "./optionUtils-DV3VdMvm.js";
5
+ import { A as token1ToToken0AtTick, B as timelockFactories, D as token0ToToken1, E as roundTick, F as getTimelockLens, I as getTimelockMarket, M as getPriceHistory, N as getErc20, O as token0ToToken1AtTick, P as getStateView, _ as getAmountsFromLiquidity, b as getPriceAtTick, d as wrapAmount, k as token1ToToken0, p as wrapPrice, t as getPayoutAtPrice, v as getNearestValidStrikeTick, y as getPriceAtSqrtPriceX96, z as swappers } from "./optionUtils-BOHupq5Q.js";
6
6
  import { n as guardianAbi, r as singleOwnerVaultAbi, t as factoryAbi } from "./factory-y-iVl_er.js";
7
7
  import { decodeAbiParameters, decodeEventLog, encodeAbiParameters, encodeFunctionData, erc20Abi, maxUint256, zeroAddress } from "viem";
8
8
  import React, { createContext, useContext, useEffect, useMemo } from "react";
@@ -846,7 +846,7 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
846
846
  const { graphqlClient } = useTimelockConfig();
847
847
  userAddr = userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase();
848
848
  marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
849
- const { data, ...rest } = useQuery({
849
+ return useQuery({
850
850
  queryKey: [
851
851
  "userOptions",
852
852
  userAddr || "--",
@@ -881,10 +881,6 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
881
881
  },
882
882
  enabled: !!userAddr && !!marketAddr && !!graphqlClient
883
883
  });
884
- return {
885
- data: data || EMPTY_ARRAY,
886
- ...rest
887
- };
888
884
  };
889
885
  const useActiveUserOptions = (userAddr, marketAddr) => {
890
886
  return useUserOptions(userAddr, marketAddr, true);
@@ -940,7 +936,7 @@ const useExtendOption = (marketAddr) => {
940
936
  const useOptionTimeline = (marketAddr, optionId) => {
941
937
  const { graphqlClient } = useTimelockConfig();
942
938
  marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
943
- const { data, ...rest } = useQuery({
939
+ return useQuery({
944
940
  queryKey: [
945
941
  "optionTimeline",
946
942
  marketAddr || "--",
@@ -985,26 +981,22 @@ const useOptionTimeline = (marketAddr, optionId) => {
985
981
  transactionHash: event.transactionHash
986
982
  }));
987
983
  return [
988
- ...mintEvents.map((data$1) => ({
984
+ ...mintEvents.map((data) => ({
989
985
  type: "mint",
990
- data: data$1
986
+ data
991
987
  })),
992
- ...exerciseEvents.map((data$1) => ({
988
+ ...exerciseEvents.map((data) => ({
993
989
  type: "exercise",
994
- data: data$1
990
+ data
995
991
  })),
996
- ...extendEvents.map((data$1) => ({
992
+ ...extendEvents.map((data) => ({
997
993
  type: "extend",
998
- data: data$1
994
+ data
999
995
  }))
1000
996
  ].sort((a, b) => a.data.timestamp.getTime() - b.data.timestamp.getTime());
1001
997
  },
1002
998
  enabled: !!marketAddr && optionId !== void 0 && !!graphqlClient
1003
999
  });
1004
- return {
1005
- data: data || EMPTY_ARRAY,
1006
- ...rest
1007
- };
1008
1000
  };
1009
1001
 
1010
1002
  //#endregion
@@ -1080,6 +1072,62 @@ const usePerpsOperator = () => {
1080
1072
  };
1081
1073
  };
1082
1074
 
1075
+ //#endregion
1076
+ //#region src/hooks/operators/useUserOperators.ts
1077
+ const useUserOperators = (userAddr, marketAddr) => {
1078
+ const { graphqlClient } = useTimelockConfig();
1079
+ return useQuery({
1080
+ queryKey: [
1081
+ "userOperators",
1082
+ (userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase()) || "--",
1083
+ (marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase()) || "--"
1084
+ ],
1085
+ queryFn: async () => {
1086
+ if (!userAddr || !marketAddr) return void 0;
1087
+ return (await graphqlClient.GetUserMarketOperators({
1088
+ userAddr: userAddr.toLowerCase(),
1089
+ marketAddr: marketAddr.toLowerCase()
1090
+ })).UserMarketOperator.map((operator) => ({
1091
+ ...operator,
1092
+ spendingApproval: BigInt(operator.spendingApproval),
1093
+ operatorAddr: operator.operator.address.toLowerCase()
1094
+ }));
1095
+ },
1096
+ enabled: !!userAddr && !!marketAddr && !!graphqlClient
1097
+ });
1098
+ };
1099
+
1100
+ //#endregion
1101
+ //#region src/hooks/operators/useSetOperatorPerms.ts
1102
+ const useSetOperatorPerms = (marketAddr) => {
1103
+ const queryClient = useQueryClient();
1104
+ const client = useClient();
1105
+ const { address } = useConnection();
1106
+ const { writeContractAsync } = useWriteContract();
1107
+ const setOperatorPerms = async ({ operator, canExtend, canExercise, canTransfer, canMint, spendingApproval }) => {
1108
+ if (!client || !address) throw new Error("Wallet not connected");
1109
+ if (!marketAddr) throw new Error("Market address not available");
1110
+ const hash = await writeContractAsync({
1111
+ address: marketAddr,
1112
+ abi: optionsMarketAbi,
1113
+ functionName: "setOperatorPerms",
1114
+ args: [
1115
+ operator,
1116
+ canExtend,
1117
+ canExercise,
1118
+ canTransfer,
1119
+ canMint,
1120
+ spendingApproval
1121
+ ]
1122
+ });
1123
+ await waitForTransactionReceipt(client, { hash });
1124
+ queryClient.invalidateQueries({ queryKey: ["userOperators"] });
1125
+ queryClient.invalidateQueries({ queryKey: ["readContract"] });
1126
+ return hash;
1127
+ };
1128
+ return useMutation({ mutationFn: setOperatorPerms });
1129
+ };
1130
+
1083
1131
  //#endregion
1084
1132
  //#region src/hooks/perps/useMintPerp.ts
1085
1133
  const useMintPerp = (marketAddr) => {
@@ -1087,9 +1135,11 @@ const useMintPerp = (marketAddr) => {
1087
1135
  const client = useClient();
1088
1136
  const { address } = useConnection();
1089
1137
  const { operator, address: operatorAddr, signMessage: { mutateAsync: signMessage } } = usePerpsOperator();
1090
- const { askForApproval } = useApproval();
1091
1138
  const { poolManager, poolKey, optionAssetIsToken0, payoutAsset } = useMarketData(marketAddr);
1092
1139
  const { tickSpacing } = usePoolData(poolManager, poolKey);
1140
+ const { askForApproval } = useApproval();
1141
+ const { mutateAsync: setOperatorPerms } = useSetOperatorPerms(marketAddr);
1142
+ const { refetch: refetchOperators } = useUserOperators(address, marketAddr);
1093
1143
  const { refetch: refetchCurrentTick } = useCurrentTick(poolManager, poolKey);
1094
1144
  const mintPerp = async (data) => {
1095
1145
  const { optionType, amount, duration, strikeTick } = data;
@@ -1102,6 +1152,9 @@ const useMintPerp = (marketAddr) => {
1102
1152
  const market = getTimelockMarket(marketAddr, client);
1103
1153
  const { data: { currentTick } = {} } = await refetchCurrentTick();
1104
1154
  if (currentTick === void 0) throw new Error("Could not fetch current tick");
1155
+ const { data: operators = [] } = await refetchOperators();
1156
+ const userPerms = operatorAddr ? operators.find((o) => o.operatorAddr.toLowerCase() === operatorAddr.toLowerCase()) : void 0;
1157
+ const hasEnoughPerms = userPerms && userPerms.canMint && userPerms.canExtend && userPerms.canExercise;
1105
1158
  const validStrikeTick = getNearestValidStrikeTick(optionType, optionAssetIsToken0, tickSpacing, currentTick, strikeTick);
1106
1159
  const [premium, protocolFee] = await market.read.calculatePremium([
1107
1160
  optionType === "CALL" ? 0 : 1,
@@ -1110,7 +1163,16 @@ const useMintPerp = (marketAddr) => {
1110
1163
  duration,
1111
1164
  0
1112
1165
  ]);
1113
- await askForApproval(payoutAsset, marketAddr, (premium + protocolFee) * 11n / 10n);
1166
+ const maxPremium = (premium + protocolFee) * 11n / 10n;
1167
+ if (!hasEnoughPerms) await setOperatorPerms({
1168
+ operator: operatorAddr,
1169
+ canMint: true,
1170
+ canExtend: true,
1171
+ canExercise: true,
1172
+ canTransfer: (userPerms === null || userPerms === void 0 ? void 0 : userPerms.canTransfer) || false,
1173
+ spendingApproval: maxPremium
1174
+ });
1175
+ await askForApproval(payoutAsset, marketAddr, maxPremium);
1114
1176
  await operator.mintPerp({
1115
1177
  marketAddr,
1116
1178
  amount,
@@ -1144,12 +1206,11 @@ const useClosePerp = () => {
1144
1206
 
1145
1207
  //#endregion
1146
1208
  //#region src/hooks/perps/useUserPerps.ts
1147
- const EMPTY_ARRAY$1 = [];
1148
1209
  const useUserPerps = (marketAddr, userAddr, type) => {
1149
1210
  const { operator } = usePerpsOperator();
1150
1211
  userAddr = userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase();
1151
1212
  marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
1152
- const { data, ...rest } = useQuery({
1213
+ return useQuery({
1153
1214
  queryKey: [
1154
1215
  "userPerps",
1155
1216
  type,
@@ -1161,10 +1222,6 @@ const useUserPerps = (marketAddr, userAddr, type) => {
1161
1222
  staleTime: 1e4,
1162
1223
  refetchInterval: 1e4
1163
1224
  });
1164
- return {
1165
- data: data || EMPTY_ARRAY$1,
1166
- ...rest
1167
- };
1168
1225
  };
1169
1226
  const useActiveUserPerps = (marketAddr, userAddr) => {
1170
1227
  return useUserPerps(marketAddr, userAddr, "active");
@@ -1243,66 +1300,6 @@ const useOperatorPerms = (marketAddr, userAddr, operatorAddr) => {
1243
1300
  };
1244
1301
  };
1245
1302
 
1246
- //#endregion
1247
- //#region src/hooks/operators/useUserOperators.ts
1248
- const useUserOperators = (userAddr, marketAddr) => {
1249
- const { graphqlClient } = useTimelockConfig();
1250
- const { data, ...rest } = useQuery({
1251
- queryKey: [
1252
- "userOperators",
1253
- (userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase()) || "--",
1254
- (marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase()) || "--"
1255
- ],
1256
- queryFn: async () => {
1257
- if (!userAddr || !marketAddr) return void 0;
1258
- return (await graphqlClient.GetUserMarketOperators({
1259
- userAddr: userAddr.toLowerCase(),
1260
- marketAddr: marketAddr.toLowerCase()
1261
- })).UserMarketOperator.map((operator) => ({
1262
- ...operator,
1263
- spendingApproval: BigInt(operator.spendingApproval),
1264
- operatorAddr: operator.operator.address.toLowerCase()
1265
- }));
1266
- },
1267
- enabled: !!userAddr && !!marketAddr && !!graphqlClient
1268
- });
1269
- return {
1270
- ...rest,
1271
- data: data || EMPTY_ARRAY
1272
- };
1273
- };
1274
-
1275
- //#endregion
1276
- //#region src/hooks/operators/useSetOperatorPerms.ts
1277
- const useSetOperatorPerms = (marketAddr) => {
1278
- const queryClient = useQueryClient();
1279
- const client = useClient();
1280
- const { address } = useConnection();
1281
- const { writeContractAsync } = useWriteContract();
1282
- const setOperatorPerms = async ({ operator, canExtend, canExercise, canTransfer, canMint, spendingApproval }) => {
1283
- if (!client || !address) throw new Error("Wallet not connected");
1284
- if (!marketAddr) throw new Error("Market address not available");
1285
- const hash = await writeContractAsync({
1286
- address: marketAddr,
1287
- abi: optionsMarketAbi,
1288
- functionName: "setOperatorPerms",
1289
- args: [
1290
- operator,
1291
- canExtend,
1292
- canExercise,
1293
- canTransfer,
1294
- canMint,
1295
- spendingApproval
1296
- ]
1297
- });
1298
- await waitForTransactionReceipt(client, { hash });
1299
- queryClient.invalidateQueries({ queryKey: ["userOperators"] });
1300
- queryClient.invalidateQueries({ queryKey: ["readContract"] });
1301
- return hash;
1302
- };
1303
- return useMutation({ mutationFn: setOperatorPerms });
1304
- };
1305
-
1306
1303
  //#endregion
1307
1304
  //#region src/hooks/pool/usePriceHistory.ts
1308
1305
  const usePriceHistory = (pool, token, resolution, startTimestamp, endTimestamp) => {