timelock-sdk 0.0.111 → 0.0.113

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 "./uniswapMathLens-B_cHjOOB.cjs";
2
- import { B as usePerpsOperator, F as useUserOperators, G as useExtendOption, H as useMintPerp, I as useOperatorPerms, J as useMintOption, K as useOptionPremium, L as useActiveUserPerps, P as useSetOperatorPerms, R as useClosedUserPerps, U as OptionTimelineData, V as useClosePerp, W as useOptionTimeline, Y as useMaxPositionSize, _t as useCurrentMarket, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, d as usePriceAtTick, dt as useMarketData, f as UniswapPoolData, ft as useExerciseOption, gt as TimelockProvider, h as useCurrentPrice, ht as useClosedUserOptions, i as useVaultData, l as useBurnLiquidity, m as useCurrentTick, mt as useActiveUserOptions, n as useLens, o as useMintLiquidity, p as usePoolData, pt as OptionData, q as useOptionPnl, r as useVaultTVL, s as LiquidityBlockData, t as useApproval, u as usePriceHistory, vt as useTimelockConfig, z as useUserPerps } from "./client-BioBT1mO.cjs";
2
+ import { B as usePerpsOperator, F as useUserOperators, G as useExtendOption, H as useMintPerp, I as useOperatorPerms, J as useMintOption, K as useOptionPremium, L as useActiveUserPerps, P as useSetOperatorPerms, R as useClosedUserPerps, U as OptionTimelineData, V as useClosePerp, W as useOptionTimeline, Y as useMaxPositionSize, _t as useCurrentMarket, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, d as usePriceAtTick, dt as useMarketData, f as UniswapPoolData, ft as useExerciseOption, gt as TimelockProvider, h as useCurrentPrice, ht as useClosedUserOptions, i as useVaultData, l as useBurnLiquidity, m as useCurrentTick, mt as useActiveUserOptions, n as useLens, o as useMintLiquidity, p as usePoolData, pt as OptionData, q as useOptionPnl, r as useVaultTVL, s as LiquidityBlockData, t as useApproval, u as usePriceHistory, vt as useTimelockConfig, z as useUserPerps } from "./client-C3f1XPh8.cjs";
3
3
  export { LiquidityBlockData, OptionData, OptionTimelineData, TimelockProvider, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtTick, usePriceHistory, useSetOperatorPerms, useTimelockConfig, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import "./uniswapMathLens-ChJFZ6hc.js";
2
- import { B as usePerpsOperator, F as useUserOperators, G as useExtendOption, H as useMintPerp, I as useOperatorPerms, J as useMintOption, K as useOptionPremium, L as useActiveUserPerps, P as useSetOperatorPerms, R as useClosedUserPerps, U as OptionTimelineData, V as useClosePerp, W as useOptionTimeline, Y as useMaxPositionSize, _t as useCurrentMarket, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, d as usePriceAtTick, dt as useMarketData, f as UniswapPoolData, ft as useExerciseOption, gt as TimelockProvider, h as useCurrentPrice, ht as useClosedUserOptions, i as useVaultData, l as useBurnLiquidity, m as useCurrentTick, mt as useActiveUserOptions, n as useLens, o as useMintLiquidity, p as usePoolData, pt as OptionData, q as useOptionPnl, r as useVaultTVL, s as LiquidityBlockData, t as useApproval, u as usePriceHistory, vt as useTimelockConfig, z as useUserPerps } from "./client-Di3SarC6.js";
2
+ import { B as usePerpsOperator, F as useUserOperators, G as useExtendOption, H as useMintPerp, I as useOperatorPerms, J as useMintOption, K as useOptionPremium, L as useActiveUserPerps, P as useSetOperatorPerms, R as useClosedUserPerps, U as OptionTimelineData, V as useClosePerp, W as useOptionTimeline, Y as useMaxPositionSize, _t as useCurrentMarket, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, d as usePriceAtTick, dt as useMarketData, f as UniswapPoolData, ft as useExerciseOption, gt as TimelockProvider, h as useCurrentPrice, ht as useClosedUserOptions, i as useVaultData, l as useBurnLiquidity, m as useCurrentTick, mt as useActiveUserOptions, n as useLens, o as useMintLiquidity, p as usePoolData, pt as OptionData, q as useOptionPnl, r as useVaultTVL, s as LiquidityBlockData, t as useApproval, u as usePriceHistory, vt as useTimelockConfig, z as useUserPerps } from "./client-Bcn8F-k3.js";
3
3
  export { LiquidityBlockData, OptionData, OptionTimelineData, TimelockProvider, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtTick, usePriceHistory, useSetOperatorPerms, useTimelockConfig, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.js CHANGED
@@ -6,7 +6,7 @@ import { A as getErc20, D as token1ToToken0, E as token0ToToken1, F as uniswapMa
6
6
  import { n as uniswapV3PoolAbi, t as singleOwnerVaultAbi } from "./singleOwnerVault-BeJChjfJ.js";
7
7
  import { encodeAbiParameters, encodeFunctionData, erc20Abi, maxUint256, zeroAddress } from "viem";
8
8
  import React, { createContext, useContext, useEffect, useMemo } from "react";
9
- import { useAccount, useChainId, useClient, useReadContract, useSignMessage, useWaitForTransactionReceipt, useWriteContract } from "wagmi";
9
+ import { useAccount, useBalance, useChainId, useClient, useReadContract, useSignMessage, useWaitForTransactionReceipt, useWriteContract } from "wagmi";
10
10
  import { GraphQLClient, RequestOptions } from "graphql-request";
11
11
  import gql from "graphql-tag";
12
12
  import { waitForTransactionReceipt } from "viem/actions";
@@ -1072,14 +1072,6 @@ const useMintPerp = (marketAddr) => {
1072
1072
  if (!tickSpacing || currentTick === void 0) throw new Error("Pool data not found");
1073
1073
  if (optionAssetIsToken0 === void 0 || !payoutAsset) throw new Error("Market data not found");
1074
1074
  if (!operator.auth) await signMessage();
1075
- if (!hasEnoughPerms) await setOperatorPerms({
1076
- operator: operatorAddr,
1077
- canMint: true,
1078
- canExtend: true,
1079
- canExercise: true,
1080
- canTransfer: (userPerms === null || userPerms === void 0 ? void 0 : userPerms.canTransfer) || false,
1081
- spendingApproval: maxUint256
1082
- });
1083
1075
  const market = getTimelockMarket(marketAddr, client);
1084
1076
  const validStrikeTick = getNearestValidStrikeTick(optionType, optionAssetIsToken0, tickSpacing, currentTick, strikeTick);
1085
1077
  const [premium, protocolFee] = await market.read.calculatePremium([
@@ -1089,7 +1081,16 @@ const useMintPerp = (marketAddr) => {
1089
1081
  duration,
1090
1082
  0
1091
1083
  ]);
1092
- await askForApproval(payoutAsset, marketAddr, (premium + protocolFee) * 11n / 10n);
1084
+ const maxPremium = (premium + protocolFee) * 11n / 10n;
1085
+ if (!hasEnoughPerms) await setOperatorPerms({
1086
+ operator: operatorAddr,
1087
+ canMint: true,
1088
+ canExtend: true,
1089
+ canExercise: true,
1090
+ canTransfer: (userPerms === null || userPerms === void 0 ? void 0 : userPerms.canTransfer) || false,
1091
+ spendingApproval: maxPremium
1092
+ });
1093
+ await askForApproval(payoutAsset, marketAddr, maxPremium);
1093
1094
  await operator.mintPerp({
1094
1095
  marketAddr,
1095
1096
  amount,
@@ -1170,6 +1171,11 @@ const useClosedUserPerps = (marketAddr, userAddr) => {
1170
1171
  //#endregion
1171
1172
  //#region src/hooks/operators/useOperatorPerms.ts
1172
1173
  const useOperatorPerms = (marketAddr, userAddr, operatorAddr) => {
1174
+ const { payoutAsset } = useMarketData(marketAddr);
1175
+ const { data: payoutAssetBalance } = useBalance({
1176
+ address: userAddr,
1177
+ token: payoutAsset
1178
+ });
1173
1179
  const { data,...rest } = useReadContract({
1174
1180
  abi: optionsMarketAbi,
1175
1181
  address: marketAddr,
@@ -1177,14 +1183,25 @@ const useOperatorPerms = (marketAddr, userAddr, operatorAddr) => {
1177
1183
  args: [userAddr, operatorAddr],
1178
1184
  query: { enabled: !!userAddr && !!operatorAddr }
1179
1185
  });
1186
+ const [canExtend, canExercise, canTransfer, canMint, spendingApproval] = data || [];
1187
+ const min = (a, b) => a < b ? a : b;
1188
+ const effectiveApproval = spendingApproval && payoutAssetBalance ? min(spendingApproval, payoutAssetBalance.value) : 0n;
1180
1189
  return {
1181
- data: data ? {
1182
- canExtend: data[0],
1183
- canExercise: data[1],
1184
- canTransfer: data[2],
1185
- canMint: data[3],
1186
- spendingApproval: data[4]
1187
- } : void 0,
1190
+ data: useMemo(() => ({
1191
+ canExtend,
1192
+ canExercise,
1193
+ canTransfer,
1194
+ canMint,
1195
+ spendingApproval,
1196
+ effectiveApproval
1197
+ }), [
1198
+ canExtend,
1199
+ canExercise,
1200
+ canTransfer,
1201
+ canMint,
1202
+ spendingApproval,
1203
+ effectiveApproval
1204
+ ]),
1188
1205
  ...rest
1189
1206
  };
1190
1207
  };