@ichidao/ichi-vaults-sdk 0.0.1 → 0.0.3

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
@@ -9,18 +9,18 @@ This sdk contains collection of functions to interact with IchiVault's smart con
9
9
  * [__Installation__](#Installation)
10
10
  * [__Usage__](#Usage)
11
11
  * [__Vault Functions__](#Vault)
12
- * [`isDepositTokenApproved()`](#1-isDepositTokenApproved)
13
- * [`approveDepositToken()`](#2-approveDepositToken)
14
- * [`isTokenAllowed()`](#3-isTokenAllowed)
15
- * [`getMaxDepositAmount()`](#4-getMaxDepositAmount)
16
- * [`deposit()`](#5-depositLP)
17
- * [`getUserBalance()`](#6-getUserBalance)
18
- * [`getUserAmounts()`](#7-getUserAmounts)
19
- * [`getTotalSupply()`](#8-getTotalSupply)
20
- * [`getTotalAmounts()`](#9-getTotalAmounts)
21
- * [`withdraw()`](#10-withdraw)
22
-
23
-
12
+ * [`approveDepositToken()`](#1-approveDepositToken)
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
+ * [`getIchiVaultInfo()`](#11-getIchiVaultInfo)
23
+ * [`getVaultsByTokens()`](#12-getVaultsByTokens)
24
24
 
25
25
  ## Installation
26
26
  Install with
@@ -35,22 +35,23 @@ npm install @ichidao/ichi-vaults-sdk
35
35
  ## Usage
36
36
  ### Vault
37
37
 
38
- #### 1. `isDepositTokenApproved()`
38
+ #### 1. `approveDepositToken()`
39
39
 
40
40
  | param | type | default | required
41
41
  | -------- | -------- | -------- | --------
42
42
  | accountAddress | string | - | true
43
43
  | tokenIdx | 0 \| 1 | - | true
44
- | amount | string \| number, | - | true |
45
44
  | vaultAddress | string | - | true |
46
45
  | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
47
- | dex | SupportedDex | - | true |
46
+ | dex | SupportedDex | - | true |
47
+ | amount | string \| number | undefined | false |
48
+ | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
48
49
 
49
50
  <br/>
50
51
 
51
52
  ```typescript
52
53
  import { Web3Provider } from '@ethersproject/providers';
53
- import { isDepositTokenApproved, SupportedDex } from '@ichidao/ichi-vaults-sdk';
54
+ import { approveDepositToken, SupportedDex } from '@ichidao/ichi-vaults-sdk';
54
55
 
55
56
  const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
56
57
  const vaultAddress = "0x3ac9...a5f132"
@@ -58,84 +59,133 @@ const accountAddress = "0xaaaa...aaaaaa"
58
59
  const amount = 100
59
60
  const dex = SupportedDex.UniswapV3
60
61
 
61
- const isToken0Approved: boolean = await isDepositTokenApproved(
62
- accountAddress,
62
+ const txnDetails = await approveDepositToken(
63
+ accountAddress,
63
64
  0, // token idx can be 0 or 1
64
- amount,
65
65
  vaultAddress,
66
66
  web3Provider,
67
- dex
68
- )
67
+ dex,
68
+ amount // (optional)
69
+ );
70
+
71
+ await txnDetails.wait();
72
+
73
+ // can now deposit token0
74
+ // ...
69
75
  ```
70
76
 
71
- #### 2. `approveDepositToken()`
77
+ #### 2. `deposit()`
72
78
 
73
79
  | param | type | default | required
74
80
  | -------- | -------- | -------- | --------
75
81
  | accountAddress | string | - | true
76
- | tokenIdx | 0 \| 1 | - | true
77
- | vaultAddress | string | - | true |
82
+ | amount0 | string \| number | - | true
83
+ | amount1 | string \| number | - | true
84
+ | vaultAddress | string | - | true
78
85
  | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
79
- | dex | SupportedDex | - | true |
80
- | amount | string \| number | undefined | false |
86
+ | dex | SupportedDex | - | true
87
+ | percentSlippage | number | 1 | false
81
88
  | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
82
89
 
83
90
  <br/>
84
91
 
85
92
  ```typescript
86
93
  import { Web3Provider } from '@ethersproject/providers';
87
- import { approveDepositToken, SupportedDex } from '@ichidao/ichi-vaults-sdk';
94
+ import { deposit, SupportedDex } from '@ichidao/ichi-vaults-sdk';
88
95
 
89
96
  const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
90
97
  const vaultAddress = "0x3ac9...a5f132"
91
- const accountAddress = "0xaaaa...aaaaaa"
92
- const amount = 100
93
98
  const dex = SupportedDex.UniswapV3
99
+ const accountAddress = "0xaaaa...aaaaaa"
94
100
 
95
- const txnDetails = await approveDepositToken(
96
- accountAddress,
97
- 0, // token idx can be 0 or 1
101
+ const amount0 = 100
102
+ const amount1 = 0
103
+
104
+ const txnDetails = await deposit(
105
+ accountAddress,
106
+ amount0, // can be 0 when only depositing amount1
107
+ amount1, // can be 0 when only depositing amount0
98
108
  vaultAddress,
99
109
  web3Provider,
100
110
  dex,
101
- amount // (optional)
102
- );
111
+ 1 // acceptable slippage (percents)
112
+ )
113
+ ```
103
114
 
104
- await txnDetails.wait();
115
+ #### 3. `withdraw()`
105
116
 
106
- // can now deposit token0
107
- // ...
117
+ | param | type | default | required
118
+ | -------- | -------- | -------- | --------
119
+ | accountAddress | string | - | true
120
+ | shares | string \| number | - | true
121
+ | vaultAddress | string | - | true
122
+ | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
123
+ | dex | SupportedDex | - | true
124
+ | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
125
+
126
+ <br/>
127
+
128
+ ```typescript
129
+ import { Web3Provider } from '@ethersproject/providers';
130
+ import { getUserBalance, withdraw, SupportedDex } from '@ichidao/ichi-vaults-sdk';
131
+
132
+ const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
133
+ const vaultAddress = "0x3ac9...a5f132"
134
+ const dex = SupportedDex.UniswapV3
135
+ const accountAddress = "0xaaaa...aaaaaa"
136
+
137
+ const totalUserShares: string = await getUserBalance(
138
+ accountAddress,
139
+ vaultAddress,
140
+ web3Provider
141
+ dex,
142
+ )
143
+
144
+ let shares = Number(totalUserShare) * 0.5 // 50% of user deshare balance
145
+
146
+ const txnDetails = await withdraw(
147
+ accountAddress,
148
+ shares,
149
+ vaultAddress,
150
+ web3Provider,
151
+ dex
152
+ )
108
153
  ```
109
154
 
110
- #### 3. `isTokenAllowed()`
155
+ #### 4. `isDepositTokenApproved()`
111
156
 
112
157
  | param | type | default | required
113
158
  | -------- | -------- | -------- | --------
159
+ | accountAddress | string | - | true
114
160
  | tokenIdx | 0 \| 1 | - | true
161
+ | amount | string \| number, | - | true |
115
162
  | vaultAddress | string | - | true |
116
163
  | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
117
- | dex | SupportedDex | - | true |
164
+ | dex | SupportedDex | - | true |
118
165
 
119
166
  <br/>
120
167
 
121
168
  ```typescript
122
169
  import { Web3Provider } from '@ethersproject/providers';
123
- import { isTokenAllowed, SupportedDex } from '@ichidao/ichi-vaults-sdk';
170
+ import { isDepositTokenApproved, SupportedDex } from '@ichidao/ichi-vaults-sdk';
124
171
 
125
172
  const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
126
173
  const vaultAddress = "0x3ac9...a5f132"
174
+ const accountAddress = "0xaaaa...aaaaaa"
175
+ const amount = 100
127
176
  const dex = SupportedDex.UniswapV3
128
177
 
129
- const isAllowed = await isTokenAllowed(
178
+ const isToken0Approved: boolean = await isDepositTokenApproved(
179
+ accountAddress,
130
180
  0, // token idx can be 0 or 1
181
+ amount,
131
182
  vaultAddress,
132
183
  web3Provider,
133
184
  dex
134
185
  )
135
-
136
186
  ```
137
187
 
138
- #### 4. `getMaxDepositAmount()`
188
+ #### 5. `isTokenAllowed()`
139
189
 
140
190
  | param | type | default | required
141
191
  | -------- | -------- | -------- | --------
@@ -148,13 +198,13 @@ const isAllowed = await isTokenAllowed(
148
198
 
149
199
  ```typescript
150
200
  import { Web3Provider } from '@ethersproject/providers';
151
- import { getMaxDepositAmount, SupportedDex } from '@ichidao/ichi-vaults-sdk';
201
+ import { isTokenAllowed, SupportedDex } from '@ichidao/ichi-vaults-sdk';
152
202
 
153
203
  const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
154
204
  const vaultAddress = "0x3ac9...a5f132"
155
205
  const dex = SupportedDex.UniswapV3
156
206
 
157
- const maxAmount = await getMaxDepositAmount(
207
+ const isAllowed = await isTokenAllowed(
158
208
  0, // token idx can be 0 or 1
159
209
  vaultAddress,
160
210
  web3Provider,
@@ -163,45 +213,35 @@ const maxAmount = await getMaxDepositAmount(
163
213
 
164
214
  ```
165
215
 
166
- #### 5. `deposit()`
216
+ #### 6. `getMaxDepositAmount()`
167
217
 
168
218
  | param | type | default | required
169
219
  | -------- | -------- | -------- | --------
170
- | accountAddress | string | - | true
171
- | amount0 | string \| number | - | true
172
- | amount1 | string \| number | - | true
173
- | vaultAddress | string | - | true
220
+ | tokenIdx | 0 \| 1 | - | true
221
+ | vaultAddress | string | - | true |
174
222
  | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
175
- | dex | SupportedDex | - | true
176
- | percentSlippage | number | 1 | false
177
- | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
223
+ | dex | SupportedDex | - | true |
178
224
 
179
225
  <br/>
180
226
 
181
227
  ```typescript
182
228
  import { Web3Provider } from '@ethersproject/providers';
183
- import { deposit, SupportedDex } from '@ichidao/ichi-vaults-sdk';
229
+ import { getMaxDepositAmount, SupportedDex } from '@ichidao/ichi-vaults-sdk';
184
230
 
185
231
  const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
186
232
  const vaultAddress = "0x3ac9...a5f132"
187
233
  const dex = SupportedDex.UniswapV3
188
- const accountAddress = "0xaaaa...aaaaaa"
189
234
 
190
- const amount0 = 100
191
- const amount1 = 0
192
-
193
- const txnDetails = await deposit(
194
- accountAddress,
195
- amount0, // can be 0 when only depositing amount1
196
- amount1, // can be 0 when only depositing amount0
235
+ const maxAmount = await getMaxDepositAmount(
236
+ 0, // token idx can be 0 or 1
197
237
  vaultAddress,
198
238
  web3Provider,
199
- dex,
200
- 1 // acceptable slippage (percents)
239
+ dex
201
240
  )
241
+
202
242
  ```
203
243
 
204
- #### 6. `getUserBalance()`
244
+ #### 7. `getUserBalance()`
205
245
 
206
246
  | param | type | default | required
207
247
  | -------- | -------- | -------- | --------
@@ -240,7 +280,7 @@ const sharesBN: BigNumber = await getUserBalance(
240
280
  )
241
281
  ```
242
282
 
243
- #### 7. `getUserAmounts()`
283
+ #### 8. `getUserAmounts()`
244
284
 
245
285
  | param | type | default | required
246
286
  | -------- | -------- | -------- | --------
@@ -279,7 +319,7 @@ const amountsBN: [BigNumber, BigNumber] & {amount0: BigNumber, amount1: BigNumbe
279
319
  )
280
320
  ```
281
321
 
282
- #### 8. `getTotalSupply()`
322
+ #### 9. `getTotalSupply()`
283
323
 
284
324
  | param | type | default | required
285
325
  | -------- | -------- | -------- | --------
@@ -316,7 +356,7 @@ const sharesBN: BigNumber = await getTotalSupply(
316
356
  )
317
357
  ```
318
358
 
319
- #### 9. `getTotalAmounts()`
359
+ #### 10. `getTotalAmounts()`
320
360
 
321
361
  | param | type | default | required
322
362
  | -------- | -------- | -------- | --------
@@ -354,48 +394,58 @@ const amountsBN: [BigNumber, BigNumber] & {total0: BigNumber, total1: BigNumber}
354
394
  )
355
395
  ```
356
396
 
357
- #### 10. `withdraw()`
397
+ #### 11. `getIchiVaultInfo()`
358
398
 
359
399
  | param | type | default | required
360
400
  | -------- | -------- | -------- | --------
361
- | accountAddress | string | - | true
362
- | shares | string \| number | - | true
363
- | vaultAddress | string | - | true
364
- | jsonProvider | [JsonRpcProvider](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/providers/src.ts/json-rpc-provider.ts#L393) | - | true
401
+ | chain | SupportedChain | - | true
365
402
  | dex | SupportedDex | - | true
366
- | overrides | [Overrides](https://github.com/ethers-io/ethers.js/blob/f97b92bbb1bde22fcc44100af78d7f31602863ab/packages/contracts/lib/index.d.ts#L7) | undefined | false
403
+ | vaultAddress | string | - | true |
367
404
 
368
405
  <br/>
369
406
 
370
407
  ```typescript
371
408
  import { Web3Provider } from '@ethersproject/providers';
372
- import { getUserBalance, withdraw, SupportedDex } from '@ichidao/ichi-vaults-sdk';
409
+ import { getIchiVaultInfo, SupportedDex, SupportedChain, IchiVault } from '@ichidao/ichi-vaults-sdk';
373
410
 
374
- const web3Provider = new Web3Provider(YOUR_WEB3_PROVIDER);
375
411
  const vaultAddress = "0x3ac9...a5f132"
376
- const dex = SupportedDex.UniswapV3
377
- const accountAddress = "0xaaaa...aaaaaa"
412
+ const dex = SupportedDex.UniswapV3;
413
+ const chain = SupportedChain.Polygon;
378
414
 
379
- const totalUserShares: string = await getUserBalance(
380
- accountAddress,
381
- vaultAddress,
382
- web3Provider
383
- dex,
384
- )
415
+ const vaultInfo = await getIchiVaultInfo(chain, dex, vaultAddress);
416
+ if (vaultInfo) {
417
+ const addressTokenA = vaultInfo.tokenA;
418
+ }
419
+ ```
385
420
 
386
- let shares = Number(totalUserShare) * 0.5 // 50% of user deshare balance
421
+ #### 12. `getVaultsByTokens()`
387
422
 
388
- const txnDetails = await withdraw(
389
- accountAddress,
390
- shares,
391
- vaultAddress,
392
- web3Provider,
393
- dex
394
- )
395
- ```
423
+ | param | type | default | required
424
+ | -------- | -------- | -------- | --------
425
+ | chain | SupportedChain | - | true
426
+ | dex | SupportedDex | - | true
427
+ | depositTokenAddress | string | - | true |
428
+ | pairedTokenAddress | string | - | true |
396
429
 
430
+ <br/>
397
431
 
432
+ ```typescript
433
+ import { Web3Provider } from '@ethersproject/providers';
434
+ import { getVaultsByTokens, SupportedDex, SupportedChain, IchiVault } from '@ichidao/ichi-vaults-sdk';
435
+
436
+ const depositToken = "0x1b...bfd6"
437
+ const pairedToken = "0x11...c4d6"
438
+ const dex = SupportedDex.UniswapV3;
439
+ const chain = SupportedChain.Polygon;
440
+
441
+ const vault = await getVaultsByTokens(chain, dex, depositToken, pairedToken)
442
+ if (!vault) {
443
+ console.log("Couldn't find vaults with these parameters")
444
+ } else {
445
+ const vaultAddress = vault.id;
446
+ }
398
447
 
448
+ ```
399
449
  ## Types
400
450
 
401
451
  ### SupportedChainId
@@ -418,3 +468,15 @@ enum SupportedDex {
418
468
  Pancakeswap,
419
469
  }
420
470
  ```
471
+
472
+ ### IchiVault
473
+
474
+ ```typescript
475
+ interface IchiVault {
476
+ id: string; // vault address
477
+ tokenA: string; // token0 address
478
+ tokenB: string; // token1 address
479
+ allowTokenA: boolean;
480
+ allowTokenB: boolean;
481
+ }
482
+ ```
@@ -51,12 +51,23 @@ var index_1 = require("../index");
51
51
  var formatBigInt_1 = __importDefault(require("../utils/formatBigInt"));
52
52
  var parseBigInt_1 = __importDefault(require("../utils/parseBigInt"));
53
53
  var hdWalletProvider = new hdwallet_provider_1.default([process.env.PRIVATE_KEY], process.env.PROVIDER_URL, 0, 1);
54
- var provider = new providers_1.Web3Provider(hdWalletProvider, { chainId: types_1.SupportedChainId.polygon, name: 'polygon' });
54
+ // const jsonRpcProvider = new ethers.providers.JsonRpcProvider(process.env.PROVIDER_URL);
55
+ // const provider = new Web3Provider(hdWalletProvider, { chainId: SupportedChainId.polygon, name: 'polygon' });
56
+ var provider = new providers_1.Web3Provider(hdWalletProvider, { chainId: types_1.SupportedChainId.arbitrum, name: 'arbitrum' });
55
57
  var account = process.env.ACCOUNT;
58
+ // const vault = {
59
+ // address: '0x3ac9b3db3350a515c702ba19a001d099d4a5f132', // USDC-wETH vault (not inverted)
60
+ // chainId: SupportedChainId.polygon,
61
+ // dex: SupportedDex.UniswapV3,
62
+ // };
56
63
  var vault = {
57
- address: '0x3ac9b3db3350a515c702ba19a001d099d4a5f132',
58
- chainId: types_1.SupportedChainId.polygon,
59
- dex: types_1.SupportedDex.UniswapV3,
64
+ address: '0x39d1c25ff266b3a725adca21119042072a7060d1',
65
+ chainId: types_1.SupportedChainId.arbitrum,
66
+ dex: types_1.SupportedDex.Ramses,
67
+ };
68
+ var tokens = {
69
+ pairedToken: '0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6',
70
+ depositToken: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6',
60
71
  };
61
72
  var iface = new ethers_1.ethers.utils.Interface(IchiVault_json_1.default);
62
73
  var amount0 = '0.01';
@@ -68,7 +79,7 @@ describe('Vault', function () {
68
79
  var totalSupply;
69
80
  return __generator(this, function (_a) {
70
81
  switch (_a.label) {
71
- case 0: return [4 /*yield*/, (0, index_1.getTotalSupply)(vault.address, provider, types_1.SupportedDex.UniswapV3)];
82
+ case 0: return [4 /*yield*/, (0, index_1.getTotalSupply)(vault.address, provider, vault.dex)];
72
83
  case 1:
73
84
  totalSupply = _a.sent();
74
85
  expect(Number(totalSupply)).toBeGreaterThan(0);
@@ -234,5 +245,17 @@ describe('GraphQL', function () {
234
245
  }
235
246
  });
236
247
  }); });
248
+ it('Get vaults by tokens', function () { return __awaiter(void 0, void 0, void 0, function () {
249
+ var a;
250
+ return __generator(this, function (_a) {
251
+ switch (_a.label) {
252
+ case 0: return [4 /*yield*/, (0, index_1.getVaultsByTokens)(vault.chainId, vault.dex, tokens.depositToken, tokens.pairedToken)];
253
+ case 1:
254
+ a = _a.sent();
255
+ expect(a).toBeTruthy();
256
+ return [2 /*return*/];
257
+ }
258
+ });
259
+ }); });
237
260
  });
238
261
  //# sourceMappingURL=index.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/__tests__/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/__tests__/index.test.ts"],"names":[],"mappings":"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"}