@ichidao/ichi-vaults-sdk 0.0.20 → 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.
Files changed (48) hide show
  1. package/README.md +254 -24
  2. package/dist/src/functions/calculateDtr.d.ts +3 -0
  3. package/dist/src/functions/calculateDtr.js +220 -0
  4. package/dist/src/functions/calculateDtr.js.map +1 -0
  5. package/dist/src/functions/calculateFees.d.ts +2 -1
  6. package/dist/src/functions/calculateFees.js +20 -121
  7. package/dist/src/functions/calculateFees.js.map +1 -1
  8. package/dist/src/functions/deposit.d.ts +1 -0
  9. package/dist/src/functions/deposit.js +120 -19
  10. package/dist/src/functions/deposit.js.map +1 -1
  11. package/dist/src/functions/priceFromPool.d.ts +7 -0
  12. package/dist/src/functions/priceFromPool.js +199 -0
  13. package/dist/src/functions/priceFromPool.js.map +1 -0
  14. package/dist/src/functions/vaultEvents.d.ts +6 -0
  15. package/dist/src/functions/{fees.js → vaultEvents.js} +132 -4
  16. package/dist/src/functions/vaultEvents.js.map +1 -0
  17. package/dist/src/functions/withdraw.d.ts +4 -0
  18. package/dist/src/functions/withdraw.js +227 -1
  19. package/dist/src/functions/withdraw.js.map +1 -1
  20. package/dist/src/graphql/queries.d.ts +2 -0
  21. package/dist/src/graphql/queries.js +8 -4
  22. package/dist/src/graphql/queries.js.map +1 -1
  23. package/dist/src/index.cjs.js +2 -1
  24. package/dist/src/index.d.ts +1 -0
  25. package/dist/src/index.esm.js +2 -1
  26. package/dist/src/index.js +1 -0
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/src/functions/calculateDtr.d.ts +3 -0
  29. package/dist/src/src/functions/calculateFees.d.ts +2 -1
  30. package/dist/src/src/functions/deposit.d.ts +1 -0
  31. package/dist/src/src/functions/priceFromPool.d.ts +7 -0
  32. package/dist/src/src/functions/vaultEvents.d.ts +6 -0
  33. package/dist/src/src/functions/withdraw.d.ts +4 -0
  34. package/dist/src/src/graphql/queries.d.ts +2 -0
  35. package/dist/src/src/index.d.ts +1 -0
  36. package/dist/src/src/types/index.d.ts +19 -0
  37. package/dist/src/src/types/vaultQueryData.d.ts +7 -1
  38. package/dist/src/src/utils/amountWithSlippage.d.ts +2 -0
  39. package/dist/src/types/index.d.ts +19 -0
  40. package/dist/src/types/vaultQueryData.d.ts +7 -1
  41. package/dist/src/utils/amountWithSlippage.d.ts +2 -0
  42. package/dist/src/utils/amountWithSlippage.js +7 -0
  43. package/dist/src/utils/amountWithSlippage.js.map +1 -0
  44. package/dist/src/utils/config/addresses.js +3 -3
  45. package/package.json +1 -1
  46. package/dist/src/functions/fees.d.ts +0 -4
  47. package/dist/src/functions/fees.js.map +0 -1
  48. package/dist/src/src/functions/fees.d.ts +0 -4
package/README.md CHANGED
@@ -11,18 +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
- * [`getIchiVaultInfo()`](#13-getIchiVaultInfo)
25
- * [`getVaultsByTokens()`](#14-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)
26
32
 
27
33
  ## Installation
28
34
  Install with
@@ -114,7 +120,113 @@ const txnDetails = await deposit(
114
120
  )
115
121
  ```
116
122
 
117
- #### 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()`
118
230
 
119
231
  | param | type | default | required
120
232
  | -------- | -------- | -------- | --------
@@ -154,7 +266,89 @@ const txnDetails = await withdraw(
154
266
  )
155
267
  ```
156
268
 
157
- #### 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()`
158
352
 
159
353
  | param | type | default | required
160
354
  | -------- | -------- | -------- | --------
@@ -187,7 +381,7 @@ const isToken0Approved: boolean = await isDepositTokenApproved(
187
381
  )
188
382
  ```
189
383
 
190
- #### 5. `isTokenAllowed()`
384
+ #### 10. `isTokenAllowed()`
191
385
 
192
386
  | param | type | default | required
193
387
  | -------- | -------- | -------- | --------
@@ -215,7 +409,7 @@ const isAllowed = await isTokenAllowed(
215
409
 
216
410
  ```
217
411
 
218
- #### 6. `getMaxDepositAmount()`
412
+ #### 11. `getMaxDepositAmount()`
219
413
 
220
414
  | param | type | default | required
221
415
  | -------- | -------- | -------- | --------
@@ -243,7 +437,7 @@ const maxAmount = await getMaxDepositAmount(
243
437
 
244
438
  ```
245
439
 
246
- #### 7. `getUserBalance()`
440
+ #### 12. `getUserBalance()`
247
441
 
248
442
  | param | type | default | required
249
443
  | -------- | -------- | -------- | --------
@@ -282,7 +476,7 @@ const sharesBN: BigNumber = await getUserBalance(
282
476
  )
283
477
  ```
284
478
 
285
- #### 8. `getUserAmounts()`
479
+ #### 13. `getUserAmounts()`
286
480
 
287
481
  | param | type | default | required
288
482
  | -------- | -------- | -------- | --------
@@ -321,7 +515,7 @@ const amountsBN: [BigNumber, BigNumber] & {amount0: BigNumber, amount1: BigNumbe
321
515
  )
322
516
  ```
323
517
 
324
- #### 9. `getTotalSupply()`
518
+ #### 14. `getTotalSupply()`
325
519
 
326
520
  | param | type | default | required
327
521
  | -------- | -------- | -------- | --------
@@ -358,7 +552,7 @@ const sharesBN: BigNumber = await getTotalSupply(
358
552
  )
359
553
  ```
360
554
 
361
- #### 10. `getTotalAmounts()`
555
+ #### 15. `getTotalAmounts()`
362
556
 
363
557
  | param | type | default | required
364
558
  | -------- | -------- | -------- | --------
@@ -396,7 +590,7 @@ const amountsBN: [BigNumber, BigNumber] & {total0: BigNumber, total1: BigNumber}
396
590
  )
397
591
  ```
398
592
 
399
- #### 11. `getFeesCollected()`
593
+ #### 16. `getFeesCollected()`
400
594
 
401
595
  | param | type | default | required
402
596
  | -------- | -------- | -------- | --------
@@ -452,7 +646,7 @@ const amountsBN: [BigNumber, BigNumber] & {total0: BigNumber, total1: BigNumber}
452
646
  )
453
647
  ```
454
648
 
455
- #### 12. `getFeesCollectedInfo()`
649
+ #### 17. `getFeesCollectedInfo()`
456
650
 
457
651
  | param | type | default | required
458
652
  | -------- | -------- | -------- | --------
@@ -490,7 +684,43 @@ const feesInfo: FeesInfo[] = await getFeesCollectedInfo(
490
684
  )
491
685
  ```
492
686
 
493
- #### 13. `getIchiVaultInfo()`
687
+ #### 18. `getAverageDepositTokenRatios()`
688
+
689
+ | param | type | default | required
690
+ | -------- | -------- | -------- | --------
691
+ | vaultAddress | string | - | true |
692
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
693
+ | dex | SupportedDex | - | true
694
+ | timeIntervals | number[] | [1, 7, 30] | false |
695
+
696
+ <br/>
697
+
698
+ ```typescript
699
+ import { Web3Provider } from '@ethersproject/providers';
700
+ import { getFeesCollectedInfo, SupportedDex } from '@ichidao/ichi-vaults-sdk';
701
+
702
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
703
+ const vaultAddress = "0x3ac9...a5f132";
704
+ const dex = SupportedDex.UniswapV3;
705
+ const days = [2, 5, 14, 60];
706
+
707
+ const averageDtr: AverageDepositTokenRatio[] = await getAverageDepositTokenRatios(
708
+ vaultAddress,
709
+ web3Provider
710
+ dex,
711
+ )
712
+
713
+ // - or -
714
+
715
+ const averageDtr: AverageDepositTokenRatio[] = await getAverageDepositTokenRatios(
716
+ vaultAddress,
717
+ web3Provider
718
+ dex,
719
+ days,
720
+ )
721
+ ```
722
+
723
+ #### 19. `getIchiVaultInfo()`
494
724
 
495
725
  | param | type | default | required
496
726
  | -------- | -------- | -------- | --------
@@ -515,7 +745,7 @@ if (vaultInfo) {
515
745
  }
516
746
  ```
517
747
 
518
- #### 14. `getVaultsByTokens()`
748
+ #### 20. `getVaultsByTokens()`
519
749
 
520
750
  | param | type | default | required
521
751
  | -------- | -------- | -------- | --------
@@ -0,0 +1,3 @@
1
+ import { JsonRpcProvider } from '@ethersproject/providers';
2
+ import { AverageDepositTokenRatio, SupportedDex } from '../types';
3
+ export declare function getAverageDepositTokenRatios(vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, timeIntervals?: number[]): Promise<AverageDepositTokenRatio[]>;
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ /* eslint-disable no-redeclare */
3
+ /* eslint-disable import/prefer-default-export */
4
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
+ return new (P || (P = Promise))(function (resolve, reject) {
7
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11
+ });
12
+ };
13
+ var __generator = (this && this.__generator) || function (thisArg, body) {
14
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
15
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
16
+ function verb(n) { return function (v) { return step([n, v]); }; }
17
+ function step(op) {
18
+ if (f) throw new TypeError("Generator is already executing.");
19
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
20
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
21
+ if (y = 0, t) op = [op[0] & 2, t.value];
22
+ switch (op[0]) {
23
+ case 0: case 1: t = op; break;
24
+ case 4: _.label++; return { value: op[1], done: false };
25
+ case 5: _.label++; y = op[1]; op = [0]; continue;
26
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
27
+ default:
28
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
29
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
30
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
31
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
32
+ if (t[2]) _.ops.pop();
33
+ _.trys.pop(); continue;
34
+ }
35
+ op = body.call(thisArg, _);
36
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
37
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
38
+ }
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.getAverageDepositTokenRatios = void 0;
54
+ var bignumber_1 = require("@ethersproject/bignumber");
55
+ var types_1 = require("../types");
56
+ // eslint-disable-next-line import/no-cycle
57
+ var vault_1 = require("./vault");
58
+ var vaultEvents_1 = require("./vaultEvents");
59
+ var balances_1 = require("./balances");
60
+ var formatBigInt_1 = __importDefault(require("../utils/formatBigInt"));
61
+ var timestamps_1 = __importDefault(require("../utils/timestamps"));
62
+ var deposit_1 = require("./deposit");
63
+ var getPrice_1 = __importDefault(require("../utils/getPrice"));
64
+ var calculateFees_1 = require("./calculateFees");
65
+ var priceFromPool_1 = require("./priceFromPool");
66
+ // total amounts at deposit or withdrawal in deposit tokens
67
+ function getTotalAmountsAtTransactionEvent(objTransactionEvent, isVaultInverted, token0Decimals, token1Decimals, beforeEvent) {
68
+ var price0 = !isVaultInverted
69
+ ? 1
70
+ : (0, getPrice_1.default)(isVaultInverted, bignumber_1.BigNumber.from(objTransactionEvent.sqrtPrice), token0Decimals, token1Decimals);
71
+ var price1 = isVaultInverted
72
+ ? 1
73
+ : (0, getPrice_1.default)(isVaultInverted, bignumber_1.BigNumber.from(objTransactionEvent.sqrtPrice), token0Decimals, token1Decimals);
74
+ var amount0 = beforeEvent
75
+ ? Number((0, formatBigInt_1.default)(bignumber_1.BigNumber.from(objTransactionEvent.totalAmount0BeforeEvent), token0Decimals)) * price0
76
+ : Number((0, formatBigInt_1.default)(bignumber_1.BigNumber.from(objTransactionEvent.totalAmount0), token0Decimals)) * price0;
77
+ var amount1 = beforeEvent
78
+ ? Number((0, formatBigInt_1.default)(bignumber_1.BigNumber.from(objTransactionEvent.totalAmount1BeforeEvent), token1Decimals)) * price1
79
+ : Number((0, formatBigInt_1.default)(bignumber_1.BigNumber.from(objTransactionEvent.totalAmount1), token1Decimals)) * price1;
80
+ return [amount0, amount1];
81
+ }
82
+ function getDtrAtTransactionEvent(objTransactionEvent, isVaultInverted, token0Decimals, token1Decimals, beforeEvent) {
83
+ if (beforeEvent === void 0) { beforeEvent = false; }
84
+ var timestamp = objTransactionEvent.createdAtTimestamp;
85
+ var totalAmounts = getTotalAmountsAtTransactionEvent(objTransactionEvent, isVaultInverted, token0Decimals, token1Decimals, beforeEvent);
86
+ var dtr = isVaultInverted
87
+ ? (totalAmounts[1] / (totalAmounts[0] + totalAmounts[1])) * 100
88
+ : (totalAmounts[0] / (totalAmounts[0] + totalAmounts[1])) * 100;
89
+ return { atTimestamp: timestamp, percent: dtr };
90
+ }
91
+ function getDtrAtFeeCollectionEvent(objFeeCollectionEvent, isVaultInverted, token0Decimals, token1Decimals) {
92
+ var timestamp = objFeeCollectionEvent.createdAtTimestamp;
93
+ var totalAmounts = (0, calculateFees_1.getTotalAmountsAtFeeCollectionEvent)(objFeeCollectionEvent, isVaultInverted, token0Decimals, token1Decimals);
94
+ var dtr = isVaultInverted
95
+ ? (totalAmounts[1] / (totalAmounts[0] + totalAmounts[1])) * 100
96
+ : (totalAmounts[0] / (totalAmounts[0] + totalAmounts[1])) * 100;
97
+ return { atTimestamp: timestamp, percent: dtr };
98
+ }
99
+ // time Interval in days
100
+ function getAllDtrsForTimeInterval(vaultAddress, jsonProvider, dex, timeInterval) {
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ var chainId, vault, token0Decimals, token1Decimals, isVaultInverted, rebalances, collectedFees, deposits, withdraws, arrRebalances, arrOtherFees, arrDeposits, arrWithdraws, currentDtr, result;
103
+ var _a;
104
+ return __generator(this, function (_b) {
105
+ switch (_b.label) {
106
+ case 0: return [4 /*yield*/, jsonProvider.getNetwork()];
107
+ case 1:
108
+ chainId = (_b.sent()).chainId;
109
+ if (!Object.values(types_1.SupportedChainId).includes(chainId)) {
110
+ throw new Error("Unsupported chainId: ".concat(chainId !== null && chainId !== void 0 ? chainId : 'undefined'));
111
+ }
112
+ return [4 /*yield*/, (0, vault_1.getIchiVaultInfo)(chainId, dex, vaultAddress, jsonProvider)];
113
+ case 2:
114
+ vault = _b.sent();
115
+ if (!vault)
116
+ throw new Error("Vault ".concat(vaultAddress, " not found on chain ").concat(chainId, " and dex ").concat(dex));
117
+ return [4 /*yield*/, (0, balances_1.getTokenDecimals)(vault.tokenA, jsonProvider)];
118
+ case 3:
119
+ token0Decimals = _b.sent();
120
+ return [4 /*yield*/, (0, balances_1.getTokenDecimals)(vault.tokenB, jsonProvider)];
121
+ case 4:
122
+ token1Decimals = _b.sent();
123
+ return [4 /*yield*/, (0, deposit_1.isTokenAllowed)(1, vaultAddress, jsonProvider, dex)];
124
+ case 5:
125
+ isVaultInverted = _b.sent();
126
+ return [4 /*yield*/, (0, vaultEvents_1.getRebalances)(vaultAddress, jsonProvider, dex, timeInterval)];
127
+ case 6:
128
+ rebalances = _b.sent();
129
+ if (!rebalances)
130
+ throw new Error("Error getting vault rebalances on ".concat(chainId, " for ").concat(vaultAddress));
131
+ return [4 /*yield*/, (0, vaultEvents_1.getFeesCollectedEvents)(vaultAddress, jsonProvider, dex, timeInterval)];
132
+ case 7:
133
+ collectedFees = _b.sent();
134
+ if (!collectedFees)
135
+ throw new Error("Error getting vault collected fees on ".concat(chainId, " for ").concat(vaultAddress));
136
+ return [4 /*yield*/, (0, vaultEvents_1.getDeposits)(vaultAddress, jsonProvider, dex, timeInterval)];
137
+ case 8:
138
+ deposits = _b.sent();
139
+ if (!deposits)
140
+ throw new Error("Error getting vault deposits on ".concat(chainId, " for ").concat(vaultAddress));
141
+ return [4 /*yield*/, (0, vaultEvents_1.getWithdraws)(vaultAddress, jsonProvider, dex, timeInterval)];
142
+ case 9:
143
+ withdraws = _b.sent();
144
+ if (!withdraws)
145
+ throw new Error("Error getting vault withdraws on ".concat(chainId, " for ").concat(vaultAddress));
146
+ arrRebalances = rebalances
147
+ .slice()
148
+ .filter(function (r) { return Number(r.createdAtTimestamp) * 1000 > Date.now() - (0, timestamps_1.default)(timeInterval); })
149
+ .map(function (e) { return getDtrAtFeeCollectionEvent(e, isVaultInverted, token0Decimals, token1Decimals); });
150
+ arrOtherFees = collectedFees
151
+ .slice()
152
+ .filter(function (r) { return Number(r.createdAtTimestamp) * 1000 > Date.now() - (0, timestamps_1.default)(timeInterval); })
153
+ .map(function (e) { return getDtrAtFeeCollectionEvent(e, isVaultInverted, token0Decimals, token1Decimals); });
154
+ arrDeposits = deposits
155
+ .slice()
156
+ .filter(function (r) { return Number(r.createdAtTimestamp) * 1000 > Date.now() - (0, timestamps_1.default)(timeInterval); })
157
+ .map(function (e) { return getDtrAtTransactionEvent(e, isVaultInverted, token0Decimals, token1Decimals); });
158
+ arrWithdraws = withdraws
159
+ .slice()
160
+ .filter(function (r) { return Number(r.createdAtTimestamp) * 1000 > Date.now() - (0, timestamps_1.default)(timeInterval); })
161
+ .map(function (e) { return getDtrAtTransactionEvent(e, isVaultInverted, token0Decimals, token1Decimals); });
162
+ _a = {
163
+ atTimestamp: Math.floor(Date.now() / 1000).toString()
164
+ };
165
+ return [4 /*yield*/, (0, priceFromPool_1.getCurrentDtr)(vaultAddress, jsonProvider, dex, isVaultInverted, token0Decimals, token1Decimals)];
166
+ case 10:
167
+ currentDtr = (_a.percent = _b.sent(),
168
+ _a);
169
+ result = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], arrDeposits, true), arrWithdraws, true), arrRebalances, true), arrOtherFees, true), [currentDtr], false).sort(function (a, b) { return Number(b.atTimestamp) - Number(a.atTimestamp); });
170
+ return [2 /*return*/, result];
171
+ }
172
+ });
173
+ });
174
+ }
175
+ function getAverageDtr(allDtrs) {
176
+ if (allDtrs.length === 0) {
177
+ return 0;
178
+ }
179
+ if (allDtrs.length === 1) {
180
+ return allDtrs[0].percent; // current value
181
+ }
182
+ var dtrsSum = 0;
183
+ for (var i = 0; i < allDtrs.length - 1; i += 1) {
184
+ dtrsSum +=
185
+ ((allDtrs[i].percent + allDtrs[i + 1].percent) / 2) *
186
+ (Number(allDtrs[i + 1].atTimestamp) - Number(allDtrs[i].atTimestamp));
187
+ }
188
+ return dtrsSum / (Number(allDtrs[allDtrs.length - 1].atTimestamp) - Number(allDtrs[0].atTimestamp));
189
+ }
190
+ // timeInterval in days
191
+ function getAverageDepositTokenRatios(vaultAddress, jsonProvider, dex, timeIntervals) {
192
+ if (timeIntervals === void 0) { timeIntervals = [1, 7, 30]; }
193
+ return __awaiter(this, void 0, void 0, function () {
194
+ var forTimeIntervals, maxTimeInterval, allDtrs, result;
195
+ return __generator(this, function (_a) {
196
+ switch (_a.label) {
197
+ case 0:
198
+ forTimeIntervals = timeIntervals;
199
+ if (timeIntervals.length === 0) {
200
+ forTimeIntervals = [0];
201
+ }
202
+ maxTimeInterval = Math.max.apply(Math, forTimeIntervals);
203
+ return [4 /*yield*/, getAllDtrsForTimeInterval(vaultAddress, jsonProvider, dex, maxTimeInterval)];
204
+ case 1:
205
+ allDtrs = _a.sent();
206
+ result = [];
207
+ forTimeIntervals.forEach(function (interval) {
208
+ var dtrsForTimeInterval = interval === 0
209
+ ? [allDtrs[0]]
210
+ : allDtrs.filter(function (elem) { return Number(elem.atTimestamp) * 1000 >= Date.now() - (0, timestamps_1.default)(interval); });
211
+ var averageDtr = getAverageDtr(dtrsForTimeInterval);
212
+ result.push({ timePeriod: interval, percent: averageDtr });
213
+ });
214
+ return [2 /*return*/, result];
215
+ }
216
+ });
217
+ });
218
+ }
219
+ exports.getAverageDepositTokenRatios = getAverageDepositTokenRatios;
220
+ //# sourceMappingURL=calculateDtr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateDtr.js","sourceRoot":"","sources":["../../../src/functions/calculateDtr.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { JsonRpcProvider } from '@ethersproject/providers';
2
- import { FeesInfo, SupportedDex, TotalAmounts, TotalAmountsBN } from '../types';
2
+ import { Fees, FeesInfo, SupportedDex, TotalAmounts, TotalAmountsBN } from '../types';
3
+ export declare function getTotalAmountsAtFeeCollectionEvent(objFees: Fees, isVaultInverted: boolean, token0Decimals: number, token1Decimals: number): [number, number];
3
4
  export declare function getFeesCollected(vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, days?: number): Promise<TotalAmounts>;
4
5
  export declare function getFeesCollected(vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, raw: true, days?: number): Promise<TotalAmountsBN>;
5
6
  export declare function getFeesCollectedInfo(vaultAddress: string, jsonProvider: JsonRpcProvider, dex: SupportedDex, forDays?: number[]): Promise<FeesInfo[]>;