timelock-sdk 0.0.81 → 0.0.82

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-CK8C7WOt.cjs";
2
- import { B as useOptionTimeline, F as useUserOperators, G as useMaxPositionSize, H as useOptionPremium, I as usePerpsOperator, L as useClosePerp, P as useSetOperatorPerms, R as useMintPerp, U as useOptionPnl, V as useExtendOption, W as useMintOption, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, ct as useExerciseOption, d as usePriceAtTick, dt as useClosedUserOptions, f as UniswapPoolData, ft as TimelockProvider, h as useCurrentPrice, i as useVaultData, l as useBurnLiquidity, lt as OptionData, m as useCurrentTick, mt as useTimelockConfig, n as useLens, o as useMintLiquidity, p as usePoolData, pt as useCurrentMarket, r as useVaultTVL, s as LiquidityBlockData, st as useMarketData, t as useApproval, u as usePriceHistory, ut as useActiveUserOptions, z as OptionTimelineData } from "./client-CPNANzx8.cjs";
2
+ import { B as useOptionTimeline, F as useUserOperators, G as useMaxPositionSize, H as useOptionPremium, I as usePerpsOperator, L as useClosePerp, P as useSetOperatorPerms, R as useMintPerp, U as useOptionPnl, V as useExtendOption, W as useMintOption, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, ct as useExerciseOption, d as usePriceAtTick, dt as useClosedUserOptions, f as UniswapPoolData, ft as TimelockProvider, h as useCurrentPrice, i as useVaultData, l as useBurnLiquidity, lt as OptionData, m as useCurrentTick, mt as useTimelockConfig, n as useLens, o as useMintLiquidity, p as usePoolData, pt as useCurrentMarket, r as useVaultTVL, s as LiquidityBlockData, st as useMarketData, t as useApproval, u as usePriceHistory, ut as useActiveUserOptions, z as OptionTimelineData } from "./client-GoHd57RL.cjs";
3
3
  export { LiquidityBlockData, OptionData, OptionTimelineData, TimelockProvider, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtTick, usePriceHistory, useSetOperatorPerms, useTimelockConfig, useUserOperators, useVaultData, useVaultTVL };
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import "./uniswapMathLens-C54iWXpi.js";
2
- import { B as useOptionTimeline, F as useUserOperators, G as useMaxPositionSize, H as useOptionPremium, I as usePerpsOperator, L as useClosePerp, P as useSetOperatorPerms, R as useMintPerp, U as useOptionPnl, V as useExtendOption, W as useMintOption, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, ct as useExerciseOption, d as usePriceAtTick, dt as useClosedUserOptions, f as UniswapPoolData, ft as TimelockProvider, h as useCurrentPrice, i as useVaultData, l as useBurnLiquidity, lt as OptionData, m as useCurrentTick, mt as useTimelockConfig, n as useLens, o as useMintLiquidity, p as usePoolData, pt as useCurrentMarket, r as useVaultTVL, s as LiquidityBlockData, st as useMarketData, t as useApproval, u as usePriceHistory, ut as useActiveUserOptions, z as OptionTimelineData } from "./client-DSnOWcqf.js";
2
+ import { B as useOptionTimeline, F as useUserOperators, G as useMaxPositionSize, H as useOptionPremium, I as usePerpsOperator, L as useClosePerp, P as useSetOperatorPerms, R as useMintPerp, U as useOptionPnl, V as useExtendOption, W as useMintOption, a as batchGetAmountsFromLiquidity, c as useLiquidityBlocks, ct as useExerciseOption, d as usePriceAtTick, dt as useClosedUserOptions, f as UniswapPoolData, ft as TimelockProvider, h as useCurrentPrice, i as useVaultData, l as useBurnLiquidity, lt as OptionData, m as useCurrentTick, mt as useTimelockConfig, n as useLens, o as useMintLiquidity, p as usePoolData, pt as useCurrentMarket, r as useVaultTVL, s as LiquidityBlockData, st as useMarketData, t as useApproval, u as usePriceHistory, ut as useActiveUserOptions, z as OptionTimelineData } from "./client-BjjoSITU.js";
3
3
  export { LiquidityBlockData, OptionData, OptionTimelineData, TimelockProvider, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtTick, usePriceHistory, useSetOperatorPerms, useTimelockConfig, useUserOperators, useVaultData, useVaultTVL };
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  import { r as lensAbi, t as optionsMarketAbi } from "./optionsMarket-6PlyceXp.js";
5
- import { A as getErc20, D as token1ToToken0, E as token0ToToken1, F as uniswapMathLenses, M as getTimelockMarket$1, N as getUniswapMathLens, P as timelockLenses, d as wrapAmount, j as getTimelockLens, k as getPriceHistory, n as EMPTY_ARRAY, p as wrapPrice, t as getPayoutAtTick, v as getNearestValidStrikeTick$1, w as roundTickDown, y as getPriceAtTick } from "./optionUtils-CoIk8zAr.js";
5
+ import { A as getErc20, D as token1ToToken0, E as token0ToToken1, F as uniswapMathLenses, M as getTimelockMarket$1, N as getUniswapMathLens, P as timelockLenses, _ as getAmountsFromLiquidity, d as wrapAmount, j as getTimelockLens, k as getPriceHistory, n as EMPTY_ARRAY, p as wrapPrice, t as getPayoutAtTick, v as getNearestValidStrikeTick$1, w as roundTickDown, y as getPriceAtTick } from "./optionUtils-CoIk8zAr.js";
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, useMemo } from "react";
@@ -1142,25 +1142,17 @@ const useLiquidityBlocks = (vaultAddr) => {
1142
1142
 
1143
1143
  //#endregion
1144
1144
  //#region src/hooks/vault/useMintLiquidity.ts
1145
- const batchGetAmountsFromLiquidity = async (lens, tickLower, tickUpper, liquidity, currentTick) => {
1146
- const currentTicksArray = new Array(tickLower.length).fill(currentTick);
1147
- const amounts = await lens.read.batchGetAmountsForLiquidityTicks([
1148
- currentTicksArray,
1149
- tickLower,
1150
- tickUpper,
1151
- liquidity
1152
- ]);
1145
+ const batchGetAmountsFromLiquidity = (tickLowers, tickUppers, liquidities, currentTick) => {
1153
1146
  let totalAmount0 = 0n;
1154
1147
  let totalAmount1 = 0n;
1155
1148
  const amounts0 = [];
1156
1149
  const amounts1 = [];
1157
- for (const scaled of amounts[0]) {
1158
- totalAmount0 += scaled;
1159
- amounts0.push(scaled);
1160
- }
1161
- for (const scaled of amounts[1]) {
1162
- totalAmount1 += scaled;
1163
- amounts1.push(scaled);
1150
+ for (const [i, tickLower] of tickLowers.entries()) {
1151
+ const [amount0, amount1] = getAmountsFromLiquidity(tickLower, tickUppers[i], liquidities[i], currentTick);
1152
+ totalAmount0 += amount0;
1153
+ totalAmount1 += amount1;
1154
+ amounts0.push(amount0);
1155
+ amounts1.push(amount1);
1164
1156
  }
1165
1157
  return {
1166
1158
  totalAmount0,
@@ -1171,97 +1163,42 @@ const batchGetAmountsFromLiquidity = async (lens, tickLower, tickUpper, liquidit
1171
1163
  };
1172
1164
  const useMintLiquidity = (vaultAddr) => {
1173
1165
  const client = useClient();
1174
- const { address } = useAccount();
1175
1166
  const { pool } = useVaultData(vaultAddr);
1176
- const { timelockLens, uniswapLens } = useLens();
1177
- const currentTick = useCurrentTick(pool);
1167
+ const { timelockLens } = useLens();
1168
+ const { exact: currentTick } = useCurrentTick(pool);
1178
1169
  const { token0, token1 } = usePoolData(pool);
1179
- const { writeContractAsync, data: hash, isPending, error } = useWriteContract();
1180
- const { isLoading: isConfirming, isSuccess } = useWaitForTransactionReceipt({ hash });
1181
- const askForApproval = async (params) => {
1182
- if (!address || !client) throw new Error("Wallet not connected");
1183
- if (currentTick.exact === void 0 || !token0 || !token1 || !vaultAddr || !uniswapLens) throw new Error("Current tick not available");
1184
- const { totalAmount0, totalAmount1 } = await batchGetAmountsFromLiquidity(uniswapLens, params.map((p) => p.tickLower), params.map((p) => p.tickUpper), params.map((p) => p.liquidity), currentTick.exact);
1185
- const [allowance0, allowance1] = await Promise.all([getErc20(token0, client).read.allowance([address, vaultAddr]), getErc20(token1, client).read.allowance([address, vaultAddr])]);
1186
- const approvalPromises = [];
1187
- if (allowance0 <= totalAmount0) {
1188
- const approvalHash = await writeContractAsync({
1189
- address: token0,
1190
- abi: erc20Abi,
1191
- functionName: "approve",
1192
- args: [vaultAddr, maxUint256]
1193
- });
1194
- approvalPromises.push(waitForTransactionReceipt(client, { hash: approvalHash }));
1195
- }
1196
- if (allowance1 <= totalAmount1) {
1197
- const approvalHash1 = await writeContractAsync({
1198
- address: token1,
1199
- abi: erc20Abi,
1200
- functionName: "approve",
1201
- args: [vaultAddr, maxUint256]
1202
- });
1203
- approvalPromises.push(waitForTransactionReceipt(client, { hash: approvalHash1 }));
1204
- }
1205
- if (approvalPromises.length > 0) await Promise.all(approvalPromises);
1170
+ const { askForApproval } = useApproval();
1171
+ const { writeContractAsync } = useWriteContract();
1172
+ const processApproval = async (params) => {
1173
+ if (currentTick === void 0 || !token0 || !token1 || !vaultAddr) throw new Error("Current tick not available");
1174
+ const { totalAmount0, totalAmount1 } = batchGetAmountsFromLiquidity(params.map((p) => p.tickLower), params.map((p) => p.tickUpper), params.map((p) => p.liquidity), currentTick);
1175
+ await askForApproval(token0, vaultAddr, totalAmount0);
1176
+ await askForApproval(token1, vaultAddr, totalAmount1);
1206
1177
  };
1207
- const mint = async (tickLower, tickUpper, liquidity) => {
1178
+ return useMutation({ mutationFn: async (params) => {
1208
1179
  if (!client) throw new Error("Wallet not connected");
1209
- if (!vaultAddr || !timelockLens) throw new Error("Vault/lens not available");
1210
- await askForApproval([{
1211
- tickLower,
1212
- tickUpper,
1213
- liquidity
1214
- }]);
1215
- const hash$1 = await writeContractAsync({
1180
+ if (currentTick === void 0) throw new Error("Current tick not available");
1181
+ if (!timelockLens || !vaultAddr) throw new Error("Vault/lens not available");
1182
+ if (!Array.isArray(params)) params = [params];
1183
+ if (params.length === 0) throw new Error("No positions to mint");
1184
+ await processApproval(params);
1185
+ const refTicks = await timelockLens.read.batchGetRefTick([vaultAddr, params.map((position) => position.tickLower)]);
1186
+ await waitForTransactionReceipt(client, { hash: await writeContractAsync({
1216
1187
  address: vaultAddr,
1217
1188
  abi: singleOwnerVaultAbi,
1218
- functionName: "mint",
1219
- args: [
1220
- tickLower,
1221
- tickUpper,
1222
- liquidity,
1223
- await timelockLens.read.getRefTick([vaultAddr, tickLower])
1224
- ]
1225
- });
1226
- await waitForTransactionReceipt(client, { hash: hash$1 });
1227
- return hash$1;
1228
- };
1229
- const mintMultiple = async (positions) => {
1230
- if (!client) throw new Error("Wallet not connected");
1231
- if (!currentTick.exact) throw new Error("Current tick not available");
1232
- if (positions.length === 0) throw new Error("No positions to mint");
1233
- if (!timelockLens || !vaultAddr) throw new Error("Vault/lens not available");
1234
- if (positions.length === 1) await mint(positions[0].tickLower, positions[0].tickUpper, positions[0].liquidity);
1235
- else {
1236
- await askForApproval(positions);
1237
- const refTicks = await timelockLens.read.batchGetRefTick([vaultAddr, positions.map((position) => position.tickLower)]);
1238
- await waitForTransactionReceipt(client, { hash: await writeContractAsync({
1239
- address: vaultAddr,
1189
+ functionName: "multicall",
1190
+ args: [params.map((p, i) => encodeFunctionData({
1240
1191
  abi: singleOwnerVaultAbi,
1241
- functionName: "multicall",
1242
- args: [positions.map((p, i) => encodeFunctionData({
1243
- abi: singleOwnerVaultAbi,
1244
- functionName: "mint",
1245
- args: [
1246
- p.tickLower,
1247
- p.tickUpper,
1248
- p.liquidity,
1249
- refTicks[i]
1250
- ]
1251
- }))]
1252
- }) });
1253
- }
1254
- };
1255
- return {
1256
- mintMultiple,
1257
- mint,
1258
- hash,
1259
- isPending,
1260
- isConfirming,
1261
- isSuccess,
1262
- error,
1263
- isLoading: isPending || isConfirming
1264
- };
1192
+ functionName: "mint",
1193
+ args: [
1194
+ p.tickLower,
1195
+ p.tickUpper,
1196
+ p.liquidity,
1197
+ refTicks[i]
1198
+ ]
1199
+ }))]
1200
+ }) });
1201
+ } });
1265
1202
  };
1266
1203
 
1267
1204
  //#endregion