@paraswap/dex-lib 4.0.17 → 4.0.18

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 (47) hide show
  1. package/build/abi/aavev3statav2/Factory.json +131 -0
  2. package/build/abi/aavev3statav2/Pool.json +1459 -0
  3. package/build/abi/aavev3statav2/Token.json +997 -0
  4. package/build/dex/aave-gsm/config.js +2 -2
  5. package/build/dex/aave-gsm/config.js.map +1 -1
  6. package/build/dex/aave-v2/tokenlist.json +904 -0
  7. package/build/dex/aave-v2/tokens.js +6 -4
  8. package/build/dex/aave-v2/tokens.js.map +1 -1
  9. package/build/dex/aave-v3/config.js +6 -6
  10. package/build/dex/aave-v3/config.js.map +1 -1
  11. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.d.ts +49 -0
  12. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.js +377 -0
  13. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.js.map +1 -0
  14. package/build/dex/aave-v3-stata-v2/config.d.ts +3 -0
  15. package/build/dex/aave-v3-stata-v2/config.js +21 -0
  16. package/build/dex/aave-v3-stata-v2/config.js.map +1 -0
  17. package/build/dex/aave-v3-stata-v2/tokens.d.ts +10 -0
  18. package/build/dex/aave-v3-stata-v2/tokens.js +43 -0
  19. package/build/dex/aave-v3-stata-v2/tokens.js.map +1 -0
  20. package/build/dex/aave-v3-stata-v2/types.d.ts +35 -0
  21. package/build/dex/aave-v3-stata-v2/types.js +25 -0
  22. package/build/dex/aave-v3-stata-v2/types.js.map +1 -0
  23. package/build/dex/aave-v3-stata-v2/utils.d.ts +4 -0
  24. package/build/dex/aave-v3-stata-v2/utils.js +67 -0
  25. package/build/dex/aave-v3-stata-v2/utils.js.map +1 -0
  26. package/build/dex/index.js +2 -0
  27. package/build/dex/index.js.map +1 -1
  28. package/build/dex/stkgho/config.js +2 -2
  29. package/build/dex/stkgho/config.js.map +1 -1
  30. package/package.json +2 -2
  31. package/src/abi/aavev3statav2/Factory.json +131 -0
  32. package/src/abi/aavev3statav2/Pool.json +1459 -0
  33. package/src/abi/aavev3statav2/Token.json +997 -0
  34. package/src/dex/aave-gsm/config.ts +3 -3
  35. package/src/dex/aave-v2/tokenlist.json +904 -0
  36. package/src/dex/aave-v2/tokens.ts +3 -4
  37. package/src/dex/aave-v3/config.ts +6 -7
  38. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-e2e.test.ts +397 -0
  39. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-integration.test.ts +600 -0
  40. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2.ts +477 -0
  41. package/src/dex/aave-v3-stata-v2/config.ts +24 -0
  42. package/src/dex/aave-v3-stata-v2/tokens.ts +48 -0
  43. package/src/dex/aave-v3-stata-v2/types.ts +41 -0
  44. package/src/dex/aave-v3-stata-v2/utils.ts +88 -0
  45. package/src/dex/index.ts +2 -0
  46. package/src/dex/stkgho/config.ts +3 -3
  47. package/tests/constants-e2e.ts +11 -1
@@ -1,15 +1,14 @@
1
1
  import { aToken, Token } from '../../types';
2
2
  import { Network } from '../../constants';
3
- import { tokenlist } from '@bgd-labs/aave-address-book';
3
+ import tokens from './tokenlist.json';
4
4
  import { aaveLendingPool } from './config';
5
5
 
6
6
  function getTokensForPool(pool: string): aToken[] {
7
- return tokenlist.tokens
7
+ return tokens
8
8
  .filter(
9
9
  token =>
10
10
  token.extensions?.pool &&
11
- token.extensions?.pool.toLowerCase() === pool.toLowerCase() &&
12
- token.tags.includes('aTokenV2'),
11
+ token.extensions?.pool.toLowerCase() === pool.toLowerCase(),
13
12
  )
14
13
  .map(token => ({
15
14
  aSymbol: token.symbol,
@@ -10,7 +10,6 @@ import {
10
10
  AaveV3Fantom,
11
11
  AaveV3Optimism,
12
12
  AaveV3Polygon,
13
- AaveV3PolygonZkEvm,
14
13
  AaveV3Gnosis,
15
14
  } from '@bgd-labs/aave-address-book';
16
15
 
@@ -65,12 +64,12 @@ export const Config: DexConfigMap<DexParam> = {
65
64
  poolAddress: AaveV3BNB.POOL,
66
65
  wethGatewayAddress: AaveV3BNB.WETH_GATEWAY,
67
66
  },
68
- [Network.ZKEVM]: {
69
- ethGasCost: 246 * 100,
70
- lendingGasCost: 328 * 1000,
71
- poolAddress: AaveV3PolygonZkEvm.POOL,
72
- wethGatewayAddress: AaveV3PolygonZkEvm.WETH_GATEWAY,
73
- },
67
+ // [Network.ZKEVM]: {
68
+ // ethGasCost: 246 * 100,
69
+ // lendingGasCost: 328 * 1000,
70
+ // poolAddress: AaveV3PolygonZkEvm.POOL,
71
+ // wethGatewayAddress: AaveV3PolygonZkEvm.WETH_GATEWAY,
72
+ // },
74
73
  [Network.GNOSIS]: {
75
74
  ethGasCost: 246 * 100,
76
75
  lendingGasCost: 328 * 1000,
@@ -0,0 +1,397 @@
1
+ /* eslint-disable no-console */
2
+ import dotenv from 'dotenv';
3
+ dotenv.config();
4
+
5
+ import { testE2E } from '../../../tests/utils-e2e';
6
+ import { Tokens, Holders } from '../../../tests/constants-e2e';
7
+ import { Network, ContractMethod, SwapSide } from '../../constants';
8
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
9
+ import { generateConfig } from '../../config';
10
+
11
+ function testForNetwork(
12
+ network: Network,
13
+ dexKey: string,
14
+ tokenASymbol: string,
15
+ tokenBSymbol: string,
16
+ tokenAAmount: string,
17
+ tokenBAmount: string,
18
+ skipBuy: boolean = false, // BUY is not supported for aToken <-> stataToken
19
+ ) {
20
+ const provider = new StaticJsonRpcProvider(
21
+ generateConfig(network).privateHttpProvider,
22
+ network,
23
+ );
24
+ const tokens = Tokens[network];
25
+ const holders = Holders[network];
26
+
27
+ const sideToContractMethods = new Map([
28
+ [SwapSide.SELL, [ContractMethod.swapExactAmountIn]],
29
+ [SwapSide.BUY, [ContractMethod.swapExactAmountOut]],
30
+ ]);
31
+
32
+ sideToContractMethods.forEach((contractMethods, side) =>
33
+ describe(`${side}`, () => {
34
+ contractMethods.forEach((contractMethod: ContractMethod) => {
35
+ if (contractMethod === ContractMethod.swapExactAmountOut && skipBuy) {
36
+ return;
37
+ }
38
+ describe(`${contractMethod}`, () => {
39
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
40
+ await testE2E(
41
+ tokens[tokenASymbol],
42
+ tokens[tokenBSymbol],
43
+ holders[tokenASymbol],
44
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
45
+ side,
46
+ dexKey,
47
+ contractMethod,
48
+ network,
49
+ provider,
50
+ );
51
+ });
52
+ it(`${tokenBSymbol} -> ${tokenASymbol}`, async () => {
53
+ await testE2E(
54
+ tokens[tokenBSymbol],
55
+ tokens[tokenASymbol],
56
+ holders[tokenBSymbol],
57
+ side === SwapSide.SELL ? tokenBAmount : tokenAAmount,
58
+ side,
59
+ dexKey,
60
+ contractMethod,
61
+ network,
62
+ provider,
63
+ );
64
+ });
65
+ });
66
+ });
67
+ }),
68
+ );
69
+ }
70
+
71
+ describe('AaveV3Stata E2E', () => {
72
+ const dexKey = 'AaveV3StataV2';
73
+
74
+ describe('Mainnet', () => {
75
+ const network = Network.MAINNET;
76
+
77
+ const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
78
+ [
79
+ {
80
+ name: 'USDT',
81
+ amount: '100000',
82
+ },
83
+ {
84
+ name: 'waEthUSDT',
85
+ amount: '100000',
86
+ },
87
+ ],
88
+ [
89
+ {
90
+ name: 'aaveUSDT',
91
+ amount: '100000',
92
+ skipBuy: true,
93
+ },
94
+ {
95
+ name: 'waEthUSDT',
96
+ amount: '100000',
97
+ },
98
+ ],
99
+ ];
100
+
101
+ pairs.forEach(pair => {
102
+ testForNetwork(
103
+ network,
104
+ dexKey,
105
+ pair[0].name,
106
+ pair[1].name,
107
+ pair[0].amount,
108
+ pair[1].amount,
109
+ pair[0].skipBuy,
110
+ );
111
+ });
112
+ });
113
+
114
+ describe('Gnosis', () => {
115
+ const network = Network.GNOSIS;
116
+
117
+ const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
118
+ [
119
+ {
120
+ name: 'waGnowstETH',
121
+ amount: '100000',
122
+ skipBuy: true,
123
+ },
124
+ {
125
+ name: 'wstETH',
126
+ amount: '100000',
127
+ },
128
+ ],
129
+ [
130
+ {
131
+ name: 'waGnoWETH',
132
+ amount: '100000',
133
+ skipBuy: true,
134
+ },
135
+ {
136
+ name: 'WETH',
137
+ amount: '100000',
138
+ },
139
+ ],
140
+ ];
141
+
142
+ pairs.forEach(pair => {
143
+ testForNetwork(
144
+ network,
145
+ dexKey,
146
+ pair[0].name,
147
+ pair[1].name,
148
+ pair[0].amount,
149
+ pair[1].amount,
150
+ pair[0].skipBuy,
151
+ );
152
+ });
153
+ });
154
+
155
+ // polygon is not yet live
156
+ describe.skip('Polygon', () => {
157
+ const network = Network.POLYGON;
158
+
159
+ const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
160
+ [
161
+ {
162
+ name: 'USDCn',
163
+ amount: '100000',
164
+ },
165
+ {
166
+ name: 'stataUSDCn',
167
+ amount: '100000',
168
+ },
169
+ ],
170
+ [
171
+ {
172
+ name: 'aaveUSDCn',
173
+ amount: '100000',
174
+ skipBuy: true,
175
+ },
176
+ {
177
+ name: 'stataUSDCn',
178
+ amount: '100000',
179
+ },
180
+ ],
181
+ ];
182
+
183
+ pairs.forEach(pair => {
184
+ testForNetwork(
185
+ network,
186
+ dexKey,
187
+ pair[0].name,
188
+ pair[1].name,
189
+ pair[0].amount,
190
+ pair[1].amount,
191
+ pair[0].skipBuy,
192
+ );
193
+ });
194
+ });
195
+
196
+ // TODO: No holders yet
197
+ // describe('Avalanche', () => {
198
+ // const network = Network.AVALANCHE;
199
+
200
+ // const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
201
+ // [
202
+ // {
203
+ // name: 'USDT',
204
+ // amount: '100000',
205
+ // },
206
+ // {
207
+ // name: 'stataUSDT',
208
+ // amount: '100000',
209
+ // },
210
+ // ],
211
+ // [
212
+ // {
213
+ // name: 'aaveUSDT',
214
+ // amount: '100000',
215
+ // skipBuy: true,
216
+ // },
217
+ // {
218
+ // name: 'stataUSDT',
219
+ // amount: '100000',
220
+ // },
221
+ // ],
222
+ // ];
223
+
224
+ // pairs.forEach(pair => {
225
+ // testForNetwork(
226
+ // network,
227
+ // dexKey,
228
+ // pair[0].name,
229
+ // pair[1].name,
230
+ // pair[0].amount,
231
+ // pair[1].amount,
232
+ // pair[0].skipBuy,
233
+ // );
234
+ // });
235
+ // });
236
+
237
+ describe.skip('Arbitrum', () => {
238
+ const network = Network.ARBITRUM;
239
+
240
+ const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
241
+ [
242
+ {
243
+ name: 'USDT',
244
+ amount: '100000',
245
+ },
246
+ {
247
+ name: 'stataUSDT',
248
+ amount: '100000',
249
+ },
250
+ ],
251
+ [
252
+ {
253
+ name: 'aaveUSDT',
254
+ amount: '100000',
255
+ skipBuy: true,
256
+ },
257
+ {
258
+ name: 'stataUSDT',
259
+ amount: '100000',
260
+ },
261
+ ],
262
+ ];
263
+
264
+ pairs.forEach(pair => {
265
+ testForNetwork(
266
+ network,
267
+ dexKey,
268
+ pair[0].name,
269
+ pair[1].name,
270
+ pair[0].amount,
271
+ pair[1].amount,
272
+ pair[0].skipBuy,
273
+ );
274
+ });
275
+ });
276
+
277
+ describe.skip('Optimism', () => {
278
+ const network = Network.OPTIMISM;
279
+
280
+ const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
281
+ [
282
+ {
283
+ name: 'USDT',
284
+ amount: '100000',
285
+ },
286
+ {
287
+ name: 'stataUSDT',
288
+ amount: '100000',
289
+ },
290
+ ],
291
+ [
292
+ {
293
+ name: 'aaveUSDT',
294
+ amount: '100000',
295
+ skipBuy: true,
296
+ },
297
+ {
298
+ name: 'stataUSDT',
299
+ amount: '100000',
300
+ },
301
+ ],
302
+ ];
303
+
304
+ pairs.forEach(pair => {
305
+ testForNetwork(
306
+ network,
307
+ dexKey,
308
+ pair[0].name,
309
+ pair[1].name,
310
+ pair[0].amount,
311
+ pair[1].amount,
312
+ pair[0].skipBuy,
313
+ );
314
+ });
315
+ });
316
+
317
+ describe.skip('Base', () => {
318
+ const network = Network.BASE;
319
+
320
+ const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
321
+ [
322
+ {
323
+ name: 'USDC',
324
+ amount: '100000',
325
+ },
326
+ {
327
+ name: 'stataUSDC',
328
+ amount: '100000',
329
+ },
330
+ ],
331
+ [
332
+ {
333
+ name: 'aaveUSDC',
334
+ amount: '100000',
335
+ skipBuy: true,
336
+ },
337
+ {
338
+ name: 'stataUSDC',
339
+ amount: '100000',
340
+ },
341
+ ],
342
+ ];
343
+
344
+ pairs.forEach(pair => {
345
+ testForNetwork(
346
+ network,
347
+ dexKey,
348
+ pair[0].name,
349
+ pair[1].name,
350
+ pair[0].amount,
351
+ pair[1].amount,
352
+ pair[0].skipBuy,
353
+ );
354
+ });
355
+ });
356
+
357
+ // TODO: No holders yet
358
+ // describe('Bsc', () => {
359
+ // const network = Network.BSC;
360
+
361
+ // const pairs: { name: string; amount: string; skipBuy?: boolean }[][] = [
362
+ // [
363
+ // {
364
+ // name: 'USDT',
365
+ // amount: '100000',
366
+ // },
367
+ // {
368
+ // name: 'stataUSDT',
369
+ // amount: '100000',
370
+ // },
371
+ // ],
372
+ // [
373
+ // {
374
+ // name: 'aaveUSDT',
375
+ // amount: '100000',
376
+ // skipBuy: true,
377
+ // },
378
+ // {
379
+ // name: 'stataUSDT',
380
+ // amount: '100000',
381
+ // },
382
+ // ],
383
+ // ];
384
+
385
+ // pairs.forEach(pair => {
386
+ // testForNetwork(
387
+ // network,
388
+ // dexKey,
389
+ // pair[0].name,
390
+ // pair[1].name,
391
+ // pair[0].amount,
392
+ // pair[1].amount,
393
+ // pair[0].skipBuy,
394
+ // );
395
+ // });
396
+ // });
397
+ });