@ichidao/ichi-vaults-sdk 0.0.21 → 0.0.22

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/README.md CHANGED
@@ -11,19 +11,24 @@ This sdk contains collection of functions to interact with IchiVault's smart con
11
11
  * [__Vault Functions__](#Vault)
12
12
  * [`approveDepositToken()`](#1-approveDepositToken)
13
13
  * [`deposit()`](#2-depositLP)
14
- * [`withdraw()`](#3-withdraw)
15
- * [`isDepositTokenApproved()`](#4-isDepositTokenApproved)
16
- * [`isTokenAllowed()`](#5-isTokenAllowed)
17
- * [`getMaxDepositAmount()`](#6-getMaxDepositAmount)
18
- * [`getUserBalance()`](#7-getUserBalance)
19
- * [`getUserAmounts()`](#8-getUserAmounts)
20
- * [`getTotalSupply()`](#9-getTotalSupply)
21
- * [`getTotalAmounts()`](#10-getTotalAmounts)
22
- * [`getFeesCollected()`](#11-getFeesCollected)
23
- * [`getFeesCollectedInfo()`](#12-getFeesCollectedInfo)
24
- * [`getAverageDepositTokenRatios()`](#13-getAverageDepositTokenRatios)
25
- * [`getIchiVaultInfo()`](#14-getIchiVaultInfo)
26
- * [`getVaultsByTokens()`](#15-getVaultsByTokens)
14
+ * [`depositNativeToken()`](#3-depositLP)
15
+ * [`approveVaultToken()`](#4-approveDepositToken)
16
+ * [`isVaultTokenApproved()`](#5-approveDepositToken)
17
+ * [`withdraw()`](#6-withdraw)
18
+ * [`withdrawWithSlippage()`](#7-withdraw)
19
+ * [`withdrawNativeToken()`](#8-withdraw)
20
+ * [`isDepositTokenApproved()`](#9-isDepositTokenApproved)
21
+ * [`isTokenAllowed()`](#10-isTokenAllowed)
22
+ * [`getMaxDepositAmount()`](#11-getMaxDepositAmount)
23
+ * [`getUserBalance()`](#12-getUserBalance)
24
+ * [`getUserAmounts()`](#13-getUserAmounts)
25
+ * [`getTotalSupply()`](#14-getTotalSupply)
26
+ * [`getTotalAmounts()`](#15-getTotalAmounts)
27
+ * [`getFeesCollected()`](#16-getFeesCollected)
28
+ * [`getFeesCollectedInfo()`](#17-getFeesCollectedInfo)
29
+ * [`getAverageDepositTokenRatios()`](#18-getAverageDepositTokenRatios)
30
+ * [`getIchiVaultInfo()`](#19-getIchiVaultInfo)
31
+ * [`getVaultsByTokens()`](#20-getVaultsByTokens)
27
32
 
28
33
  ## Installation
29
34
  Install with
@@ -115,7 +120,113 @@ const txnDetails = await deposit(
115
120
  )
116
121
  ```
117
122
 
118
- #### 3. `withdraw()`
123
+ #### 3. `depositNativeToken()`
124
+
125
+ | param | type | default | required
126
+ | -------- | -------- | -------- | --------
127
+ | accountAddress | string | - | true
128
+ | amount0 | string \| number | - | true
129
+ | amount1 | string \| number | - | true
130
+ | vaultAddress | string | - | true
131
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
132
+ | dex | SupportedDex | - | true
133
+ | percentSlippage | number | 1 | false
134
+ | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
135
+
136
+ <br/>
137
+
138
+ ```typescript
139
+ import { Web3Provider } from '@ethersproject/providers';
140
+ import { deposit, SupportedDex } from '@ichidao/ichi-vaults-sdk';
141
+
142
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
143
+ const vaultAddress = "0x3ac9...a5f132"
144
+ const dex = SupportedDex.UniswapV3
145
+ const accountAddress = "0xaaaa...aaaaaa"
146
+
147
+ const amount0 = 100
148
+ const amount1 = 0
149
+
150
+ const txnDetails = await depositNativeToken(
151
+ accountAddress,
152
+ amount0, // can be 0 when only depositing amount1
153
+ amount1, // can be 0 when only depositing amount0
154
+ vaultAddress,
155
+ web3Provider,
156
+ dex,
157
+ 1 // acceptable slippage (percents)
158
+ )
159
+ ```
160
+
161
+ #### 4. `approveVaultToken()`
162
+
163
+ | param | type | default | required
164
+ | -------- | -------- | -------- | --------
165
+ | accountAddress | string | - | true
166
+ | vaultAddress | string | - | true |
167
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
168
+ | dex | SupportedDex | - | true |
169
+ | shares | string \| number | undefined | false |
170
+ | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
171
+
172
+ <br/>
173
+
174
+ ```typescript
175
+ import { Web3Provider } from '@ethersproject/providers';
176
+ import { approveDepositToken, SupportedDex } from '@ichidao/ichi-vaults-sdk';
177
+
178
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
179
+ const vaultAddress = "0x3ac9...a5f132"
180
+ const accountAddress = "0xaaaa...aaaaaa"
181
+ const amount = 100
182
+ const dex = SupportedDex.UniswapV3
183
+
184
+ const txnDetails = await approveVaultToken(
185
+ accountAddress,
186
+ vaultAddress,
187
+ web3Provider,
188
+ dex,
189
+ amount // (optional)
190
+ );
191
+
192
+ await txnDetails.wait();
193
+
194
+ // can now deposit token0
195
+ // ...
196
+ ```
197
+
198
+ #### 5. `isVaultTokenApproved()`
199
+
200
+ | param | type | default | required
201
+ | -------- | -------- | -------- | --------
202
+ | accountAddress | string | - | true
203
+ | shares | string \| number, | - | true |
204
+ | vaultAddress | string | - | true |
205
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
206
+ | dex | SupportedDex | - | true |
207
+
208
+ <br/>
209
+
210
+ ```typescript
211
+ import { Web3Provider } from '@ethersproject/providers';
212
+ import { isDepositTokenApproved, SupportedDex } from '@ichidao/ichi-vaults-sdk';
213
+
214
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
215
+ const vaultAddress = "0x3ac9...a5f132"
216
+ const accountAddress = "0xaaaa...aaaaaa"
217
+ const amount = 100
218
+ const dex = SupportedDex.UniswapV3
219
+
220
+ const isToken0Approved: boolean = await isDepositTokenApproved(
221
+ accountAddress,
222
+ amount,
223
+ vaultAddress,
224
+ web3Provider,
225
+ dex
226
+ )
227
+ ```
228
+
229
+ #### 6. `withdraw()`
119
230
 
120
231
  | param | type | default | required
121
232
  | -------- | -------- | -------- | --------
@@ -155,7 +266,89 @@ const txnDetails = await withdraw(
155
266
  )
156
267
  ```
157
268
 
158
- #### 4. `isDepositTokenApproved()`
269
+ #### 7. `withdrawWithSlippage()`
270
+
271
+ | param | type | default | required
272
+ | -------- | -------- | -------- | --------
273
+ | accountAddress | string | - | true
274
+ | shares | string \| number | - | true
275
+ | vaultAddress | string | - | true
276
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
277
+ | dex | SupportedDex | - | true
278
+ | percentSlippage | number | 1 | false
279
+ | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
280
+
281
+ <br/>
282
+
283
+ ```typescript
284
+ import { Web3Provider } from '@ethersproject/providers';
285
+ import { getUserBalance, withdraw, SupportedDex } from '@ichidao/ichi-vaults-sdk';
286
+
287
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
288
+ const vaultAddress = "0x3ac9...a5f132"
289
+ const dex = SupportedDex.UniswapV3
290
+ const accountAddress = "0xaaaa...aaaaaa"
291
+
292
+ const totalUserShares: string = await getUserBalance(
293
+ accountAddress,
294
+ vaultAddress,
295
+ web3Provider
296
+ dex,
297
+ )
298
+
299
+ let shares = Number(totalUserShare) * 0.5 // 50% of user deshare balance
300
+
301
+ const txnDetails = await withdraw(
302
+ accountAddress,
303
+ shares,
304
+ vaultAddress,
305
+ web3Provider,
306
+ dex
307
+ )
308
+ ```
309
+
310
+ #### 8. `withdrawNativeToken()`
311
+
312
+ | param | type | default | required
313
+ | -------- | -------- | -------- | --------
314
+ | accountAddress | string | - | true
315
+ | shares | string \| number | - | true
316
+ | vaultAddress | string | - | true
317
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
318
+ | dex | SupportedDex | - | true
319
+ | percentSlippage | number | 1 | false
320
+ | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
321
+
322
+ <br/>
323
+
324
+ ```typescript
325
+ import { Web3Provider } from '@ethersproject/providers';
326
+ import { getUserBalance, withdraw, SupportedDex } from '@ichidao/ichi-vaults-sdk';
327
+
328
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
329
+ const vaultAddress = "0x3ac9...a5f132"
330
+ const dex = SupportedDex.UniswapV3
331
+ const accountAddress = "0xaaaa...aaaaaa"
332
+
333
+ const totalUserShares: string = await getUserBalance(
334
+ accountAddress,
335
+ vaultAddress,
336
+ web3Provider
337
+ dex,
338
+ )
339
+
340
+ let shares = Number(totalUserShare) * 0.5 // 50% of user deshare balance
341
+
342
+ const txnDetails = await withdraw(
343
+ accountAddress,
344
+ shares,
345
+ vaultAddress,
346
+ web3Provider,
347
+ dex
348
+ )
349
+ ```
350
+
351
+ #### 9. `isDepositTokenApproved()`
159
352
 
160
353
  | param | type | default | required
161
354
  | -------- | -------- | -------- | --------
@@ -188,7 +381,7 @@ const isToken0Approved: boolean = await isDepositTokenApproved(
188
381
  )
189
382
  ```
190
383
 
191
- #### 5. `isTokenAllowed()`
384
+ #### 10. `isTokenAllowed()`
192
385
 
193
386
  | param | type | default | required
194
387
  | -------- | -------- | -------- | --------
@@ -216,7 +409,7 @@ const isAllowed = await isTokenAllowed(
216
409
 
217
410
  ```
218
411
 
219
- #### 6. `getMaxDepositAmount()`
412
+ #### 11. `getMaxDepositAmount()`
220
413
 
221
414
  | param | type | default | required
222
415
  | -------- | -------- | -------- | --------
@@ -244,7 +437,7 @@ const maxAmount = await getMaxDepositAmount(
244
437
 
245
438
  ```
246
439
 
247
- #### 7. `getUserBalance()`
440
+ #### 12. `getUserBalance()`
248
441
 
249
442
  | param | type | default | required
250
443
  | -------- | -------- | -------- | --------
@@ -283,7 +476,7 @@ const sharesBN: BigNumber = await getUserBalance(
283
476
  )
284
477
  ```
285
478
 
286
- #### 8. `getUserAmounts()`
479
+ #### 13. `getUserAmounts()`
287
480
 
288
481
  | param | type | default | required
289
482
  | -------- | -------- | -------- | --------
@@ -322,7 +515,7 @@ const amountsBN: [BigNumber, BigNumber] & {amount0: BigNumber, amount1: BigNumbe
322
515
  )
323
516
  ```
324
517
 
325
- #### 9. `getTotalSupply()`
518
+ #### 14. `getTotalSupply()`
326
519
 
327
520
  | param | type | default | required
328
521
  | -------- | -------- | -------- | --------
@@ -359,7 +552,7 @@ const sharesBN: BigNumber = await getTotalSupply(
359
552
  )
360
553
  ```
361
554
 
362
- #### 10. `getTotalAmounts()`
555
+ #### 15. `getTotalAmounts()`
363
556
 
364
557
  | param | type | default | required
365
558
  | -------- | -------- | -------- | --------
@@ -397,7 +590,7 @@ const amountsBN: [BigNumber, BigNumber] & {total0: BigNumber, total1: BigNumber}
397
590
  )
398
591
  ```
399
592
 
400
- #### 11. `getFeesCollected()`
593
+ #### 16. `getFeesCollected()`
401
594
 
402
595
  | param | type | default | required
403
596
  | -------- | -------- | -------- | --------
@@ -453,7 +646,7 @@ const amountsBN: [BigNumber, BigNumber] & {total0: BigNumber, total1: BigNumber}
453
646
  )
454
647
  ```
455
648
 
456
- #### 12. `getFeesCollectedInfo()`
649
+ #### 17. `getFeesCollectedInfo()`
457
650
 
458
651
  | param | type | default | required
459
652
  | -------- | -------- | -------- | --------
@@ -491,7 +684,7 @@ const feesInfo: FeesInfo[] = await getFeesCollectedInfo(
491
684
  )
492
685
  ```
493
686
 
494
- #### 13. `getAverageDepositTokenRatios()`
687
+ #### 18. `getAverageDepositTokenRatios()`
495
688
 
496
689
  | param | type | default | required
497
690
  | -------- | -------- | -------- | --------
@@ -527,7 +720,7 @@ const averageDtr: AverageDepositTokenRatio[] = await getAverageDepositTokenRatio
527
720
  )
528
721
  ```
529
722
 
530
- #### 14. `getIchiVaultInfo()`
723
+ #### 19. `getIchiVaultInfo()`
531
724
 
532
725
  | param | type | default | required
533
726
  | -------- | -------- | -------- | --------
@@ -552,7 +745,7 @@ if (vaultInfo) {
552
745
  }
553
746
  ```
554
747
 
555
- #### 15. `getVaultsByTokens()`
748
+ #### 20. `getVaultsByTokens()`
556
749
 
557
750
  | param | type | default | required
558
751
  | -------- | -------- | -------- | --------
@@ -7,3 +7,4 @@ export declare function isDepositTokenApproved(accountAddress: string, tokenIdx:
7
7
  export declare function approveDepositToken(accountAddress: string, tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, amount?: string | number | BigNumber, overrides?: Overrides): Promise<ContractTransaction>;
8
8
  export declare function getMaxDepositAmount(tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex): Promise<BigNumber>;
9
9
  export declare function deposit(accountAddress: string, amount0: string | number | BigNumber, amount1: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
10
+ export declare function depositNativeToken(accountAddress: string, amount0: string | number | BigNumber, amount1: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
@@ -50,7 +50,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.deposit = exports.getMaxDepositAmount = exports.approveDepositToken = exports.isDepositTokenApproved = exports.isTokenAllowed = void 0;
53
+ exports.depositNativeToken = exports.deposit = exports.getMaxDepositAmount = exports.approveDepositToken = exports.isDepositTokenApproved = exports.isTokenAllowed = void 0;
54
54
  var constants_1 = require("@ethersproject/constants");
55
55
  var ethers_1 = require("ethers");
56
56
  var contracts_1 = require("../contracts");
@@ -61,6 +61,7 @@ var formatBigInt_1 = __importDefault(require("../utils/formatBigInt"));
61
61
  // eslint-disable-next-line import/no-cycle
62
62
  var vault_1 = require("./vault");
63
63
  var addresses_1 = __importDefault(require("../utils/config/addresses"));
64
+ var amountWithSlippage_1 = __importDefault(require("../utils/amountWithSlippage"));
64
65
  function isTokenAllowed(tokenIdx, vaultAddress, jsonProvider, dex) {
65
66
  return __awaiter(this, void 0, void 0, function () {
66
67
  var chainId, vault, tokenAllowed;
@@ -189,25 +190,28 @@ function getMaxDepositAmount(tokenIdx, vaultAddress, jsonProvider, dex) {
189
190
  }
190
191
  exports.getMaxDepositAmount = getMaxDepositAmount;
191
192
  function deposit(accountAddress, amount0, amount1, vaultAddress, jsonProvider, dex, percentSlippage, overrides) {
192
- var _a, _b, _c, _d, _e;
193
+ var _a, _b, _c, _d;
193
194
  if (percentSlippage === void 0) { percentSlippage = 1; }
194
195
  return __awaiter(this, void 0, void 0, function () {
195
- var chainId, signer, vault, vaultDeployerAddress, token0, token1, isToken0Allowed, isToken1Allowed, token0Contract, token1Contract, token0Decimals, token1Decimals, amount0BN, amount1BN, depositAmount, depositToken, depositGuardAddress, depositGuardContract, lpAmount, gasLimit, _f, _g, tx;
196
- return __generator(this, function (_h) {
197
- switch (_h.label) {
196
+ var chainId, signer, vault, vaultDeployerAddress, token0, token1, isToken0Allowed, isToken1Allowed, token0Contract, token1Contract, token0Decimals, token1Decimals, amount0BN, amount1BN, depositAmount, depositToken, depositGuardAddress, depositGuardContract, lpAmount, gasLimit, _e, _f, tx;
197
+ return __generator(this, function (_g) {
198
+ switch (_g.label) {
198
199
  case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
199
200
  case 1:
200
- chainId = (_h.sent()).chainId;
201
+ chainId = (_g.sent()).chainId;
201
202
  if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
202
203
  throw new Error("Unsupported chainId: ".concat(chainId));
203
204
  }
204
205
  signer = jsonProvider.getSigner(accountAddress);
205
206
  return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
206
207
  case 2:
207
- vault = _h.sent();
208
+ vault = _g.sent();
208
209
  if (!vault)
209
210
  throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
210
- vaultDeployerAddress = (_b = (_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.vaultDeployerAddress) !== null && _b !== void 0 ? _b : '';
211
+ vaultDeployerAddress = (_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.vaultDeployerAddress;
212
+ if (!vaultDeployerAddress) {
213
+ throw new Error("Vault deployer not found for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
214
+ }
211
215
  token0 = vault.tokenA;
212
216
  token1 = vault.tokenB;
213
217
  isToken0Allowed = vault.allowTokenA;
@@ -216,10 +220,10 @@ function deposit(accountAddress, amount0, amount1, vaultAddress, jsonProvider, d
216
220
  token1Contract = (0, contracts_1.getERC20Contract)(token1, signer);
217
221
  return [4 /*yield*/, token0Contract.decimals()];
218
222
  case 3:
219
- token0Decimals = _h.sent();
223
+ token0Decimals = _g.sent();
220
224
  return [4 /*yield*/, token1Contract.decimals()];
221
225
  case 4:
222
- token1Decimals = _h.sent();
226
+ token1Decimals = _g.sent();
223
227
  amount0BN = amount0 instanceof ethers_1.BigNumber ? amount0 : (0, parseBigInt_1.default)(amount0, +token0Decimals);
224
228
  amount1BN = amount1 instanceof ethers_1.BigNumber ? amount1 : (0, parseBigInt_1.default)(amount1, +token1Decimals);
225
229
  if (!isToken0Allowed && amount0BN > ethers_1.BigNumber.from(0)) {
@@ -234,37 +238,134 @@ function deposit(accountAddress, amount0, amount1, vaultAddress, jsonProvider, d
234
238
  depositAmount = amount1BN;
235
239
  depositToken = token1;
236
240
  }
237
- depositGuardAddress = (_d = (_c = addresses_1.default[chainId][dex]) === null || _c === void 0 ? void 0 : _c.depositGuard.address) !== null && _d !== void 0 ? _d : '';
241
+ depositGuardAddress = (_c = (_b = addresses_1.default[chainId][dex]) === null || _b === void 0 ? void 0 : _b.depositGuard.address) !== null && _c !== void 0 ? _c : '';
238
242
  depositGuardContract = (0, contracts_1.getDepositGuardContract)(depositGuardAddress, signer);
239
243
  return [4 /*yield*/, depositGuardContract.callStatic.forwardDepositToICHIVault(vaultAddress, vaultDeployerAddress, depositToken, depositAmount, ethers_1.BigNumber.from(0), accountAddress, {
240
244
  gasLimit: 5e6, // the deposit via guard tx should never exceed 5e6
241
245
  })];
242
246
  case 5:
243
- lpAmount = _h.sent();
247
+ lpAmount = _g.sent();
244
248
  // reduce the estimated LP amount by an acceptable slippage %, for example 1%
245
249
  if (percentSlippage < 0.01)
246
250
  throw new Error('Slippage parameter is less than 0.01%.');
247
251
  if (percentSlippage > 100)
248
252
  throw new Error('Slippage parameter is more than 100%.');
249
253
  lpAmount = lpAmount.mul(Math.floor((100 - percentSlippage) * 1000)).div(100000);
250
- if (!((_e = overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) !== null && _e !== void 0)) return [3 /*break*/, 6];
251
- _f = _e;
254
+ if (!((_d = overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) !== null && _d !== void 0)) return [3 /*break*/, 6];
255
+ _e = _d;
252
256
  return [3 /*break*/, 8];
253
257
  case 6:
254
- _g = calculateGasMargin_1.default;
258
+ _f = calculateGasMargin_1.default;
255
259
  return [4 /*yield*/, depositGuardContract.estimateGas.forwardDepositToICHIVault(vaultAddress, vaultDeployerAddress, depositToken, depositAmount, lpAmount, accountAddress)];
256
260
  case 7:
257
- _f = _g.apply(void 0, [_h.sent()]);
258
- _h.label = 8;
261
+ _e = _f.apply(void 0, [_g.sent()]);
262
+ _g.label = 8;
259
263
  case 8:
260
- gasLimit = _f;
264
+ gasLimit = _e;
261
265
  return [4 /*yield*/, depositGuardContract.forwardDepositToICHIVault(vaultAddress, vaultDeployerAddress, depositToken, depositAmount, lpAmount, accountAddress, __assign(__assign({}, overrides), { gasLimit: gasLimit }))];
262
266
  case 9:
263
- tx = _h.sent();
267
+ tx = _g.sent();
264
268
  return [2 /*return*/, tx];
265
269
  }
266
270
  });
267
271
  });
268
272
  }
269
273
  exports.deposit = deposit;
274
+ function depositNativeToken(accountAddress, amount0, amount1, vaultAddress, jsonProvider, dex, percentSlippage, overrides) {
275
+ var _a, _b, _c, _d;
276
+ if (percentSlippage === void 0) { percentSlippage = 1; }
277
+ return __awaiter(this, void 0, void 0, function () {
278
+ var chainId, signer, vault, vaultDeployerAddress, token0, token1, isToken0Allowed, isToken1Allowed, token0Contract, token1Contract, token0Decimals, token1Decimals, amount0BN, amount1BN, depositAmount, depositToken, depositGuardAddress, depositGuardContract, wrappedNative, lpAmount, gasLimit, _e, _f, tx;
279
+ return __generator(this, function (_g) {
280
+ switch (_g.label) {
281
+ case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
282
+ case 1:
283
+ chainId = (_g.sent()).chainId;
284
+ if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
285
+ throw new Error("Unsupported chainId: ".concat(chainId));
286
+ }
287
+ if (((_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.depositGuard.version) !== 2) {
288
+ throw new Error("Unsupported function for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
289
+ }
290
+ signer = jsonProvider.getSigner(accountAddress);
291
+ return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
292
+ case 2:
293
+ vault = _g.sent();
294
+ if (!vault)
295
+ throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
296
+ vaultDeployerAddress = (_b = addresses_1.default[chainId][dex]) === null || _b === void 0 ? void 0 : _b.vaultDeployerAddress;
297
+ if (!vaultDeployerAddress) {
298
+ throw new Error("Vault deployer not found for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
299
+ }
300
+ token0 = vault.tokenA;
301
+ token1 = vault.tokenB;
302
+ isToken0Allowed = vault.allowTokenA;
303
+ isToken1Allowed = vault.allowTokenB;
304
+ token0Contract = (0, contracts_1.getERC20Contract)(token0, signer);
305
+ token1Contract = (0, contracts_1.getERC20Contract)(token1, signer);
306
+ return [4 /*yield*/, token0Contract.decimals()];
307
+ case 3:
308
+ token0Decimals = _g.sent();
309
+ return [4 /*yield*/, token1Contract.decimals()];
310
+ case 4:
311
+ token1Decimals = _g.sent();
312
+ amount0BN = amount0 instanceof ethers_1.BigNumber ? amount0 : (0, parseBigInt_1.default)(amount0, +token0Decimals);
313
+ amount1BN = amount1 instanceof ethers_1.BigNumber ? amount1 : (0, parseBigInt_1.default)(amount1, +token1Decimals);
314
+ if (!isToken0Allowed && amount0BN > ethers_1.BigNumber.from(0)) {
315
+ throw new Error("Deposit of token0 is not allowed: ".concat(chainId, ", ").concat(vaultAddress));
316
+ }
317
+ if (!isToken1Allowed && amount1BN > ethers_1.BigNumber.from(0)) {
318
+ throw new Error("Deposit of token1 is not allowed: ".concat(chainId, ", ").concat(vaultAddress));
319
+ }
320
+ depositAmount = amount0BN;
321
+ depositToken = token0;
322
+ if (amount1BN > ethers_1.BigNumber.from(0)) {
323
+ depositAmount = amount1BN;
324
+ depositToken = token1;
325
+ }
326
+ depositGuardAddress = (_c = addresses_1.default[chainId][dex]) === null || _c === void 0 ? void 0 : _c.depositGuard.address;
327
+ if (!depositGuardAddress) {
328
+ throw new Error("Deposit Guard not found for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
329
+ }
330
+ depositGuardContract = (0, contracts_1.getDepositGuardContract)(depositGuardAddress, signer);
331
+ return [4 /*yield*/, depositGuardContract.WRAPPED_NATIVE()];
332
+ case 5:
333
+ wrappedNative = _g.sent();
334
+ if (wrappedNative !== depositToken) {
335
+ throw new Error('Deposit token is not wrapped native token');
336
+ }
337
+ return [4 /*yield*/, depositGuardContract.callStatic.forwardNativeDepositToICHIVault(vaultAddress, vaultDeployerAddress, ethers_1.BigNumber.from(0), accountAddress, {
338
+ value: depositAmount,
339
+ gasLimit: 5e6, // the deposit via guard tx should never exceed 5e6
340
+ })];
341
+ case 6:
342
+ lpAmount = _g.sent();
343
+ // reduce the estimated LP amount by an acceptable slippage %, for example 1%
344
+ if (percentSlippage < 0.01)
345
+ throw new Error('Slippage parameter is less than 0.01%.');
346
+ if (percentSlippage > 100)
347
+ throw new Error('Slippage parameter is more than 100%.');
348
+ lpAmount = (0, amountWithSlippage_1.default)(lpAmount, percentSlippage);
349
+ if (!((_d = overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) !== null && _d !== void 0)) return [3 /*break*/, 7];
350
+ _e = _d;
351
+ return [3 /*break*/, 9];
352
+ case 7:
353
+ _f = calculateGasMargin_1.default;
354
+ return [4 /*yield*/, depositGuardContract.estimateGas.forwardNativeDepositToICHIVault(vaultAddress, vaultDeployerAddress, lpAmount, accountAddress, {
355
+ value: depositAmount,
356
+ })];
357
+ case 8:
358
+ _e = _f.apply(void 0, [_g.sent()]);
359
+ _g.label = 9;
360
+ case 9:
361
+ gasLimit = _e;
362
+ return [4 /*yield*/, depositGuardContract.forwardNativeDepositToICHIVault(vaultAddress, vaultDeployerAddress, lpAmount, accountAddress, __assign(__assign({ value: depositAmount }, overrides), { gasLimit: gasLimit }))];
363
+ case 10:
364
+ tx = _g.sent();
365
+ return [2 /*return*/, tx];
366
+ }
367
+ });
368
+ });
369
+ }
370
+ exports.depositNativeToken = depositNativeToken;
270
371
  //# sourceMappingURL=deposit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/functions/deposit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/functions/deposit.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,8 @@ import { ContractTransaction, Overrides } from '@ethersproject/contracts';
2
2
  import { JsonRpcProvider } from '@ethersproject/providers';
3
3
  import { BigNumber } from 'ethers';
4
4
  import { SupportedDex } from '../types';
5
+ export declare function approveVaultToken(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, shares?: string | number | BigNumber, overrides?: Overrides): Promise<ContractTransaction>;
6
+ export declare function isVaultTokenApproved(accountAddress: string, shares: string | number, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex): Promise<boolean>;
5
7
  export declare function withdraw(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, overrides?: Overrides): Promise<ContractTransaction>;
8
+ export declare function withdrawWithSlippage(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
9
+ export declare function withdrawNativeToken(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
@@ -51,14 +51,98 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  return (mod && mod.__esModule) ? mod : { "default": mod };
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.withdraw = void 0;
54
+ exports.withdrawNativeToken = exports.withdrawWithSlippage = exports.withdraw = exports.isVaultTokenApproved = exports.approveVaultToken = void 0;
55
55
  var ethers_1 = require("ethers");
56
+ var constants_1 = require("@ethersproject/constants");
56
57
  var contracts_1 = require("../contracts");
57
58
  var parseBigInt_1 = __importDefault(require("../utils/parseBigInt"));
58
59
  var types_1 = require("../types");
59
60
  var calculateGasMargin_1 = __importDefault(require("../types/calculateGasMargin"));
60
61
  // eslint-disable-next-line import/no-cycle
61
62
  var vault_1 = require("./vault");
63
+ var addresses_1 = __importDefault(require("../utils/config/addresses"));
64
+ var amountWithSlippage_1 = __importDefault(require("../utils/amountWithSlippage"));
65
+ var formatBigInt_1 = __importDefault(require("../utils/formatBigInt"));
66
+ function approveVaultToken(accountAddress, vaultAddress, jsonProvider, dex, shares, overrides) {
67
+ var _a, _b;
68
+ return __awaiter(this, void 0, void 0, function () {
69
+ var chainId, signer, vault, vaultTokenContract, vaultTokenDecimals, sharesBN, depositGuardAddress, gasLimit, _c, _d;
70
+ return __generator(this, function (_e) {
71
+ switch (_e.label) {
72
+ case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
73
+ case 1:
74
+ chainId = (_e.sent()).chainId;
75
+ if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
76
+ throw new Error("Unsupported chainId: ".concat(chainId));
77
+ }
78
+ signer = jsonProvider.getSigner(accountAddress);
79
+ return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
80
+ case 2:
81
+ vault = _e.sent();
82
+ if (!vault)
83
+ throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
84
+ vaultTokenContract = (0, contracts_1.getERC20Contract)(vaultAddress, signer);
85
+ vaultTokenDecimals = types_1.ichiVaultDecimals;
86
+ sharesBN = shares
87
+ ? shares instanceof ethers_1.BigNumber
88
+ ? shares
89
+ : (0, parseBigInt_1.default)(shares, +vaultTokenDecimals || 18)
90
+ : constants_1.MaxUint256;
91
+ depositGuardAddress = (_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.depositGuard.address;
92
+ if (!depositGuardAddress) {
93
+ throw new Error("Deposit Guard for vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
94
+ }
95
+ if (!((_b = overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) !== null && _b !== void 0)) return [3 /*break*/, 3];
96
+ _c = _b;
97
+ return [3 /*break*/, 5];
98
+ case 3:
99
+ _d = calculateGasMargin_1.default;
100
+ return [4 /*yield*/, vaultTokenContract.estimateGas.approve(depositGuardAddress, sharesBN)];
101
+ case 4:
102
+ _c = _d.apply(void 0, [_e.sent()]);
103
+ _e.label = 5;
104
+ case 5:
105
+ gasLimit = _c;
106
+ return [2 /*return*/, vaultTokenContract.approve(depositGuardAddress, sharesBN, { gasLimit: gasLimit })];
107
+ }
108
+ });
109
+ });
110
+ }
111
+ exports.approveVaultToken = approveVaultToken;
112
+ function isVaultTokenApproved(accountAddress, shares, vaultAddress, jsonProvider, dex) {
113
+ var _a;
114
+ return __awaiter(this, void 0, void 0, function () {
115
+ var chainId, signer, vault, vaultTokenContract, depositGuardAddress, currentAllowanceBN, vaultTokenDecimals, currentAllowance;
116
+ return __generator(this, function (_b) {
117
+ switch (_b.label) {
118
+ case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
119
+ case 1:
120
+ chainId = (_b.sent()).chainId;
121
+ if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
122
+ throw new Error("Unsupported chainId: ".concat(chainId));
123
+ }
124
+ signer = jsonProvider.getSigner(accountAddress);
125
+ return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
126
+ case 2:
127
+ vault = _b.sent();
128
+ if (!vault)
129
+ throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
130
+ vaultTokenContract = (0, contracts_1.getERC20Contract)(vaultAddress, signer);
131
+ depositGuardAddress = (_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.depositGuard.address;
132
+ if (!depositGuardAddress) {
133
+ throw new Error("Deposit Guard for vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
134
+ }
135
+ return [4 /*yield*/, vaultTokenContract.allowance(accountAddress, depositGuardAddress)];
136
+ case 3:
137
+ currentAllowanceBN = _b.sent();
138
+ vaultTokenDecimals = types_1.ichiVaultDecimals;
139
+ currentAllowance = +(0, formatBigInt_1.default)(currentAllowanceBN, vaultTokenDecimals);
140
+ return [2 /*return*/, currentAllowance !== 0 && currentAllowance >= +(shares !== null && shares !== void 0 ? shares : 0)];
141
+ }
142
+ });
143
+ });
144
+ }
145
+ exports.isVaultTokenApproved = isVaultTokenApproved;
62
146
  function withdraw(accountAddress, shares, vaultAddress, jsonProvider, dex, overrides) {
63
147
  var _a;
64
148
  return __awaiter(this, void 0, void 0, function () {
@@ -101,4 +185,146 @@ function withdraw(accountAddress, shares, vaultAddress, jsonProvider, dex, overr
101
185
  });
102
186
  }
103
187
  exports.withdraw = withdraw;
188
+ function withdrawWithSlippage(accountAddress, shares, vaultAddress, jsonProvider, dex, percentSlippage, overrides) {
189
+ var _a, _b, _c, _d;
190
+ if (percentSlippage === void 0) { percentSlippage = 1; }
191
+ return __awaiter(this, void 0, void 0, function () {
192
+ var chainId, signer, vault, vaultDeployerAddress, withdrawShares, depositGuardAddress, depositGuardContract, amounts, gasLimit, _e, _f, tx;
193
+ return __generator(this, function (_g) {
194
+ switch (_g.label) {
195
+ case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
196
+ case 1:
197
+ chainId = (_g.sent()).chainId;
198
+ if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
199
+ throw new Error("Unsupported chainId: ".concat(chainId !== null && chainId !== void 0 ? chainId : 'undefined'));
200
+ }
201
+ if (((_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.depositGuard.version) !== 2) {
202
+ throw new Error("Unsupported function for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
203
+ }
204
+ signer = jsonProvider.getSigner(accountAddress);
205
+ return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
206
+ case 2:
207
+ vault = _g.sent();
208
+ if (!vault)
209
+ throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
210
+ vaultDeployerAddress = (_b = addresses_1.default[chainId][dex]) === null || _b === void 0 ? void 0 : _b.vaultDeployerAddress;
211
+ if (!vaultDeployerAddress) {
212
+ throw new Error("Vault deployer not found for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
213
+ }
214
+ withdrawShares = shares instanceof ethers_1.BigNumber ? shares : (0, parseBigInt_1.default)(shares, 18);
215
+ depositGuardAddress = (_c = addresses_1.default[chainId][dex]) === null || _c === void 0 ? void 0 : _c.depositGuard.address;
216
+ if (!depositGuardAddress) {
217
+ throw new Error("Deposit Guard for vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
218
+ }
219
+ depositGuardContract = (0, contracts_1.getDepositGuardContract)(depositGuardAddress, signer);
220
+ return [4 /*yield*/, depositGuardContract.callStatic.forwardWithdrawFromICHIVault(vaultAddress, vaultDeployerAddress, withdrawShares, accountAddress, ethers_1.BigNumber.from(0), ethers_1.BigNumber.from(0), {
221
+ gasLimit: 5e6, // the deposit via guard tx should never exceed 5e6
222
+ })];
223
+ case 3:
224
+ amounts = _g.sent();
225
+ // reduce the estimated LP amount by an acceptable slippage %, default - 1%
226
+ if (percentSlippage < 0.01)
227
+ throw new Error('Slippage parameter is less than 0.01%.');
228
+ if (percentSlippage > 100)
229
+ throw new Error('Slippage parameter is more than 100%.');
230
+ amounts = {
231
+ 0: (0, amountWithSlippage_1.default)(amounts[0], percentSlippage),
232
+ 1: (0, amountWithSlippage_1.default)(amounts[1], percentSlippage),
233
+ amount0: (0, amountWithSlippage_1.default)(amounts[0], percentSlippage),
234
+ amount1: (0, amountWithSlippage_1.default)(amounts[1], percentSlippage),
235
+ };
236
+ if (!((_d = overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) !== null && _d !== void 0)) return [3 /*break*/, 4];
237
+ _e = _d;
238
+ return [3 /*break*/, 6];
239
+ case 4:
240
+ _f = calculateGasMargin_1.default;
241
+ return [4 /*yield*/, depositGuardContract.estimateGas.forwardWithdrawFromICHIVault(vaultAddress, vaultDeployerAddress, withdrawShares, accountAddress, amounts[0], amounts[1])];
242
+ case 5:
243
+ _e = _f.apply(void 0, [_g.sent()]);
244
+ _g.label = 6;
245
+ case 6:
246
+ gasLimit = _e;
247
+ return [4 /*yield*/, depositGuardContract.forwardWithdrawFromICHIVault(vaultAddress, vaultDeployerAddress, withdrawShares, accountAddress, amounts[0], amounts[1], __assign(__assign({}, overrides), { gasLimit: gasLimit }))];
248
+ case 7:
249
+ tx = _g.sent();
250
+ return [2 /*return*/, tx];
251
+ }
252
+ });
253
+ });
254
+ }
255
+ exports.withdrawWithSlippage = withdrawWithSlippage;
256
+ function withdrawNativeToken(accountAddress, shares, vaultAddress, jsonProvider, dex, percentSlippage, overrides) {
257
+ var _a, _b, _c, _d;
258
+ if (percentSlippage === void 0) { percentSlippage = 1; }
259
+ return __awaiter(this, void 0, void 0, function () {
260
+ var chainId, signer, vault, vaultDeployerAddress, withdrawShares, depositGuardAddress, depositGuardContract, wrappedNative, amounts, gasLimit, _e, _f, tx;
261
+ return __generator(this, function (_g) {
262
+ switch (_g.label) {
263
+ case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
264
+ case 1:
265
+ chainId = (_g.sent()).chainId;
266
+ if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
267
+ throw new Error("Unsupported chainId: ".concat(chainId !== null && chainId !== void 0 ? chainId : 'undefined'));
268
+ }
269
+ if (((_a = addresses_1.default[chainId][dex]) === null || _a === void 0 ? void 0 : _a.depositGuard.version) !== 2) {
270
+ throw new Error("Unsupported function for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
271
+ }
272
+ signer = jsonProvider.getSigner(accountAddress);
273
+ return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
274
+ case 2:
275
+ vault = _g.sent();
276
+ if (!vault)
277
+ throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
278
+ vaultDeployerAddress = (_b = addresses_1.default[chainId][dex]) === null || _b === void 0 ? void 0 : _b.vaultDeployerAddress;
279
+ if (!vaultDeployerAddress) {
280
+ throw new Error("Vault deployer not found for vault ".concat(vaultAddress, " on chain ").concat(chainId, " and dex ").concat(dex));
281
+ }
282
+ withdrawShares = shares instanceof ethers_1.BigNumber ? shares : (0, parseBigInt_1.default)(shares, 18);
283
+ depositGuardAddress = (_c = addresses_1.default[chainId][dex]) === null || _c === void 0 ? void 0 : _c.depositGuard.address;
284
+ if (!depositGuardAddress) {
285
+ throw new Error("Deposit Guard for vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
286
+ }
287
+ depositGuardContract = (0, contracts_1.getDepositGuardContract)(depositGuardAddress, signer);
288
+ return [4 /*yield*/, depositGuardContract.WRAPPED_NATIVE()];
289
+ case 3:
290
+ wrappedNative = _g.sent();
291
+ if (wrappedNative !== vault.tokenA && wrappedNative !== vault.tokenB) {
292
+ throw new Error('None of vault tokens is wrapped native token');
293
+ }
294
+ return [4 /*yield*/, depositGuardContract.callStatic.forwardNativeWithdrawFromICHIVault(vaultAddress, vaultDeployerAddress, withdrawShares, accountAddress, ethers_1.BigNumber.from(0), ethers_1.BigNumber.from(0), {
295
+ gasLimit: 5e6, // the deposit via guard tx should never exceed 5e6
296
+ })];
297
+ case 4:
298
+ amounts = _g.sent();
299
+ // reduce the estimated LP amount by an acceptable slippage %, default - 1%
300
+ if (percentSlippage < 0.01)
301
+ throw new Error('Slippage parameter is less than 0.01%.');
302
+ if (percentSlippage > 100)
303
+ throw new Error('Slippage parameter is more than 100%.');
304
+ amounts = {
305
+ 0: (0, amountWithSlippage_1.default)(amounts[0], percentSlippage),
306
+ 1: (0, amountWithSlippage_1.default)(amounts[1], percentSlippage),
307
+ amount0: (0, amountWithSlippage_1.default)(amounts[0], percentSlippage),
308
+ amount1: (0, amountWithSlippage_1.default)(amounts[1], percentSlippage),
309
+ };
310
+ if (!((_d = overrides === null || overrides === void 0 ? void 0 : overrides.gasLimit) !== null && _d !== void 0)) return [3 /*break*/, 5];
311
+ _e = _d;
312
+ return [3 /*break*/, 7];
313
+ case 5:
314
+ _f = calculateGasMargin_1.default;
315
+ return [4 /*yield*/, depositGuardContract.estimateGas.forwardNativeWithdrawFromICHIVault(vaultAddress, vaultDeployerAddress, withdrawShares, accountAddress, amounts[0], amounts[1])];
316
+ case 6:
317
+ _e = _f.apply(void 0, [_g.sent()]);
318
+ _g.label = 7;
319
+ case 7:
320
+ gasLimit = _e;
321
+ return [4 /*yield*/, depositGuardContract.forwardNativeWithdrawFromICHIVault(vaultAddress, vaultDeployerAddress, withdrawShares, accountAddress, amounts[0], amounts[1], __assign(__assign({}, overrides), { gasLimit: gasLimit }))];
322
+ case 8:
323
+ tx = _g.sent();
324
+ return [2 /*return*/, tx];
325
+ }
326
+ });
327
+ });
328
+ }
329
+ exports.withdrawNativeToken = withdrawNativeToken;
104
330
  //# sourceMappingURL=withdraw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../../src/functions/withdraw.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIjD,iCAAmC;AACnC,0CAAoD;AACpD,qEAA+C;AAC/C,kCAA0D;AAC1D,mFAA6D;AAC7D,2CAA2C;AAC3C,iCAA2C;AAE3C,SAAsB,QAAQ,CAC5B,cAAsB,EACtB,MAAmC,EACnC,YAAoB,EACpB,YAA6B,EAC7B,GAAiB,EACjB,SAAqB;;;;;;;wBAED,qBAAM,YAAY,CAAC,UAAU,EAAE,EAAA;;oBAA3C,OAAO,GAAK,CAAA,SAA+B,CAAA,QAApC;oBAEf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBACtD,MAAM,IAAI,KAAK,CAAC,+BAAwB,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,WAAW,CAAE,CAAC,CAAC;qBACnE;oBAEK,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAEhD,aAAa,GAAG,IAAA,gCAAoB,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC;oBACnD,qBAAM,IAAA,wBAAgB,EAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,YAAY,CAAC,EAAA;;oBAAxE,KAAK,GAAG,SAAgE;oBAC9E,IAAI,CAAC,KAAK;wBAAE,MAAM,IAAI,KAAK,CAAC,gBAAS,YAAY,iCAAuB,OAAO,sBAAY,GAAG,CAAE,CAAC,CAAC;oBAE5F,MAAM,GAA8C;wBACxD,MAAM,YAAY,kBAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,qBAAW,EAAC,MAAM,EAAE,EAAE,CAAC;wBAC9D,cAAc;qBACf,CAAC;gCAEe,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ;;;;oBAAI,KAAA,4BAAkB,CAAA;oBAAC,qBAAM,CAAA,KAAA,aAAa,CAAC,WAAW,CAAA,CAAC,QAAQ,WAAI,MAAM,GAAC;;oBAAtE,KAAA,kBAAmB,SAAmD,EAAC,CAAA;;;oBAAzG,QAAQ,KAAiG;oBAE/G,MAAM,CAAC,CAAC,CAAC,yBAAQ,SAAS,KAAE,QAAQ,UAAA,GAAE,CAAC;oBAEvC,sBAAO,aAAa,CAAC,QAAQ,OAAtB,aAAa,EAAa,MAAM,GAAE;;;;CAC1C;AA9BD,4BA8BC"}
1
+ {"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../../src/functions/withdraw.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @license
4
4
  * author: ICHI DAO <core@ichi.org>
5
- * ichi-vaults-sdk.js v0.0.21
5
+ * ichi-vaults-sdk.js v0.0.22
6
6
  * Released under the MIT license.
7
7
  */
8
8
 
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @license
4
4
  * author: ICHI DAO <core@ichi.org>
5
- * ichi-vaults-sdk.js v0.0.21
5
+ * ichi-vaults-sdk.js v0.0.22
6
6
  * Released under the MIT license.
7
7
  */
8
8
 
@@ -7,3 +7,4 @@ export declare function isDepositTokenApproved(accountAddress: string, tokenIdx:
7
7
  export declare function approveDepositToken(accountAddress: string, tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, amount?: string | number | BigNumber, overrides?: Overrides): Promise<ContractTransaction>;
8
8
  export declare function getMaxDepositAmount(tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex): Promise<BigNumber>;
9
9
  export declare function deposit(accountAddress: string, amount0: string | number | BigNumber, amount1: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
10
+ export declare function depositNativeToken(accountAddress: string, amount0: string | number | BigNumber, amount1: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
@@ -2,4 +2,8 @@ import { ContractTransaction, Overrides } from '@ethersproject/contracts';
2
2
  import { JsonRpcProvider } from '@ethersproject/providers';
3
3
  import { BigNumber } from 'ethers';
4
4
  import { SupportedDex } from '../types';
5
+ export declare function approveVaultToken(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, shares?: string | number | BigNumber, overrides?: Overrides): Promise<ContractTransaction>;
6
+ export declare function isVaultTokenApproved(accountAddress: string, shares: string | number, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex): Promise<boolean>;
5
7
  export declare function withdraw(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, overrides?: Overrides): Promise<ContractTransaction>;
8
+ export declare function withdrawWithSlippage(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
9
+ export declare function withdrawNativeToken(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
@@ -0,0 +1,2 @@
1
+ import { BigNumber } from 'ethers';
2
+ export default function amountWithSlippage(amount: BigNumber, percentSlippage: number): BigNumber;
@@ -0,0 +1,2 @@
1
+ import { BigNumber } from 'ethers';
2
+ export default function amountWithSlippage(amount: BigNumber, percentSlippage: number): BigNumber;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function amountWithSlippage(amount, percentSlippage) {
4
+ return amount.mul(Math.floor((100 - percentSlippage) * 1000)).div(100000);
5
+ }
6
+ exports.default = amountWithSlippage;
7
+ //# sourceMappingURL=amountWithSlippage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amountWithSlippage.js","sourceRoot":"","sources":["../../../src/utils/amountWithSlippage.ts"],"names":[],"mappings":";;AAEA,SAAwB,kBAAkB,CAAC,MAAiB,EAAE,eAAuB;IACnF,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC;AAFD,qCAEC"}
@@ -152,12 +152,12 @@ var addressConfig = (_a = {},
152
152
  _g),
153
153
  _a[types_1.SupportedChainId.hedera_testnet] = (_h = {},
154
154
  _h[types_1.SupportedDex.SaucerSwap] = {
155
- factoryAddress: '0x1F91CE23502473C501EA498DbC7CA1Eef9Bbc4B6',
155
+ factoryAddress: '0x1B0ef045830466171D617dD0F1142aD699A4Cd63',
156
156
  depositGuard: {
157
- address: '0x16Dd62dB239DF67786F0AB7596C445aCDe81a16F',
157
+ address: '0x967768f830d44Cd14695D27de3B7D8826023bD7b',
158
158
  version: 2,
159
159
  },
160
- vaultDeployerAddress: '0xEc7428cB95cD92e7556172FfBe735c6D48f6DEB7',
160
+ vaultDeployerAddress: '0xAAC397840fC57F6bE1e3d40496E0823Ff15e1C6D',
161
161
  isAlgebra: false,
162
162
  },
163
163
  _h),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ichidao/ichi-vaults-sdk",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "The ICHI Vaults SDK",
5
5
  "main": "dist/src/index.cjs.js",
6
6
  "module": "dist/src/index.esm.js",