@paraswap/dex-lib 3.7.3 → 3.7.4-stata

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 (36) hide show
  1. package/build/dex/aave-v3-stata/aave-v3-stata.d.ts +0 -2
  2. package/build/dex/aave-v3-stata/aave-v3-stata.js +84 -41
  3. package/build/dex/aave-v3-stata/aave-v3-stata.js.map +1 -1
  4. package/build/dex/aave-v3-stata/tokens.d.ts +1 -0
  5. package/build/dex/aave-v3-stata/tokens.js +11 -5
  6. package/build/dex/aave-v3-stata/tokens.js.map +1 -1
  7. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  8. package/build/dex/idle-dao/idle-dao.js +10 -8
  9. package/build/dex/idle-dao/idle-dao.js.map +1 -1
  10. package/build/dex/index.js +2 -0
  11. package/build/dex/index.js.map +1 -1
  12. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +1 -0
  13. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  14. package/build/dex/solidly-v3/solidly-v3.js +1 -0
  15. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  16. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +1 -0
  17. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
  18. package/build/dex/uniswap-v3/uniswap-v3.js +1 -0
  19. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/abi/aavev3stata/Factory.json +128 -0
  22. package/src/abi/aavev3stata/Token.json +735 -0
  23. package/src/dex/aave-v3-stata/aave-v3-stata-e2e.test.ts +355 -0
  24. package/src/dex/aave-v3-stata/aave-v3-stata-integration.test.ts +282 -0
  25. package/src/dex/aave-v3-stata/aave-v3-stata.ts +517 -0
  26. package/src/dex/aave-v3-stata/config.ts +61 -0
  27. package/src/dex/aave-v3-stata/tokens.ts +48 -0
  28. package/src/dex/aave-v3-stata/types.ts +69 -0
  29. package/src/dex/aave-v3-stata/utils.ts +84 -0
  30. package/src/dex/balancer-v2/balancer-v2.ts +0 -1
  31. package/src/dex/index.ts +2 -0
  32. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +2 -0
  33. package/src/dex/solidly-v3/solidly-v3.ts +2 -0
  34. package/src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.ts +2 -0
  35. package/src/dex/uniswap-v3/uniswap-v3.ts +2 -0
  36. package/tests/constants-e2e.ts +78 -0
@@ -0,0 +1,84 @@
1
+ // import {
2
+ // IStaticATokenFactory_ABI,
3
+ // IStaticATokenLM_ABI,
4
+ // } from '@bgd-labs/aave-address-book';
5
+ import { Interface } from '@ethersproject/abi';
6
+ import Web3 from 'web3';
7
+ import { MultiCallParams, MultiWrapper } from '../../lib/multi-wrapper';
8
+ import { stringDecode, uint8ToNumber, addressDecode } from '../../lib/decoders';
9
+ import { StataToken } from './types';
10
+ import FactoryABI from '../../abi/aavev3stata/Factory.json';
11
+ import TokenABI from '../../abi/aavev3stata/Token.json';
12
+ import { AbiItem } from 'web3-utils';
13
+
14
+ // const stataInterface = new Interface(IStaticATokenLM_ABI);
15
+ const stataInterface = new Interface(TokenABI);
16
+
17
+ async function getTokenMetaData(
18
+ blockNumber: number,
19
+ stataTokens: string[],
20
+ multiWrapper: MultiWrapper,
21
+ ): Promise<StataToken[]> {
22
+ const calls: MultiCallParams<any>[] = stataTokens
23
+ .map(token => {
24
+ return [
25
+ {
26
+ target: token,
27
+ callData: stataInterface.encodeFunctionData('symbol'),
28
+ decodeFunction: stringDecode,
29
+ },
30
+ {
31
+ target: token,
32
+ callData: stataInterface.encodeFunctionData('decimals'),
33
+ decodeFunction: uint8ToNumber,
34
+ },
35
+ {
36
+ target: token,
37
+ callData: stataInterface.encodeFunctionData('asset'),
38
+ decodeFunction: addressDecode,
39
+ },
40
+ {
41
+ target: token,
42
+ callData: stataInterface.encodeFunctionData('aToken'),
43
+ decodeFunction: addressDecode,
44
+ },
45
+ ];
46
+ })
47
+ .flat();
48
+
49
+ const results = await multiWrapper.aggregate<string | number>(
50
+ calls,
51
+ blockNumber,
52
+ );
53
+
54
+ let tokenList: StataToken[] = [];
55
+ for (let i = 0, x = 0; i < stataTokens.length; ++i, x += 4) {
56
+ tokenList.push({
57
+ address: stataTokens[i].toLowerCase(),
58
+ stataSymbol: results[x] as string,
59
+ decimals: results[x + 1] as number,
60
+ underlying: (results[x + 2] as string).toLowerCase(),
61
+ underlyingAToken: (results[x + 3] as string).toLowerCase(),
62
+ });
63
+ }
64
+ return tokenList;
65
+ }
66
+
67
+ export const fetchTokenList = async (
68
+ web3Provider: Web3,
69
+ blockNumber: number,
70
+ factoryAddress: string,
71
+ multiWrapper: MultiWrapper,
72
+ ): Promise<StataToken[]> => {
73
+ let factoryContract = new web3Provider.eth.Contract(
74
+ FactoryABI as AbiItem[],
75
+ // IStaticATokenFactory_ABI as any,
76
+ factoryAddress,
77
+ );
78
+
79
+ let stataList: string[] = await factoryContract.methods
80
+ .getStaticATokens()
81
+ .call();
82
+
83
+ return getTokenMetaData(blockNumber, stataList, multiWrapper);
84
+ };
@@ -82,7 +82,6 @@ import { hexConcat, hexlify, hexZeroPad, solidityPack } from 'ethers/lib/utils';
82
82
  import BalancerVaultABI from '../../abi/balancer-v2/vault.json';
83
83
  import { BigNumber } from 'ethers';
84
84
  import { SpecialDex } from '../../executor/types';
85
- import { S } from '@bgd-labs/aave-address-book/dist/AaveV2Ethereum-timF4kft';
86
85
  import { extractReturnAmountPosition } from '../../executor/utils';
87
86
 
88
87
  // If you disable some pool, don't forget to clear the cache, otherwise changes won't be applied immediately
package/src/dex/index.ts CHANGED
@@ -86,6 +86,7 @@ import { PharaohV1 } from './solidly/forks-override/pharaohV1';
86
86
  import { EtherFi } from './etherfi';
87
87
  import { Spark } from './spark/spark';
88
88
  import { VelodromeSlipstream } from './uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream';
89
+ import { AaveV3Stata } from './aave-v3-stata/aave-v3-stata';
89
90
 
90
91
  const LegacyDexes = [
91
92
  CurveV2,
@@ -168,6 +169,7 @@ const Dexes = [
168
169
  Swell,
169
170
  PharaohV1,
170
171
  Spark,
172
+ AaveV3Stata,
171
173
  ];
172
174
 
173
175
  export type LegacyDexConstructor = new (dexHelper: IDexHelper) => IDexTxBuilder<
@@ -170,6 +170,8 @@ export class PancakeswapV3
170
170
  );
171
171
  };
172
172
 
173
+ void cleanExpiredNotExistingPoolsKeys();
174
+
173
175
  this.intervalTask = setInterval(
174
176
  cleanExpiredNotExistingPoolsKeys.bind(this),
175
177
  PANCAKESWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS,
@@ -166,6 +166,8 @@ export class SolidlyV3
166
166
  );
167
167
  };
168
168
 
169
+ void cleanExpiredNotExistingPoolsKeys();
170
+
169
171
  this.intervalTask = setInterval(
170
172
  cleanExpiredNotExistingPoolsKeys.bind(this),
171
173
  UNISWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS,
@@ -81,6 +81,8 @@ export class VelodromeSlipstream extends UniswapV3 {
81
81
  );
82
82
  };
83
83
 
84
+ void cleanExpiredNotExistingPoolsKeys();
85
+
84
86
  this.intervalTask = setInterval(
85
87
  cleanExpiredNotExistingPoolsKeys.bind(this),
86
88
  UNISWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS,
@@ -210,6 +210,8 @@ export class UniswapV3
210
210
  );
211
211
  };
212
212
 
213
+ void cleanExpiredNotExistingPoolsKeys();
214
+
213
215
  this.intervalTask = setInterval(
214
216
  cleanExpiredNotExistingPoolsKeys.bind(this),
215
217
  UNISWAPV3_CLEAN_NOT_EXISTING_POOL_INTERVAL_MS,
@@ -439,6 +439,14 @@ export const Tokens: {
439
439
  address: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee',
440
440
  decimals: 18,
441
441
  },
442
+ stataUSDT: {
443
+ address: '0x862c57d48becb45583aeba3f489696d22466ca1b',
444
+ decimals: 6,
445
+ },
446
+ aaveUSDT: {
447
+ address: '0x23878914efe38d27c4d67ab83ed1b93a74d4086a',
448
+ decimals: 6,
449
+ },
442
450
  },
443
451
  [Network.POLYGON]: {
444
452
  jGBP: {
@@ -449,6 +457,7 @@ export const Tokens: {
449
457
  address: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063',
450
458
  decimals: 18,
451
459
  },
460
+ // native bridged wormhole
452
461
  USDCe: {
453
462
  address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
454
463
  decimals: 6,
@@ -459,10 +468,24 @@ export const Tokens: {
459
468
  address: '0xdf7837de1f2fa4631d716cf2502f8b230f1dcc32',
460
469
  decimals: 2,
461
470
  },
471
+ // wormhole
462
472
  USDC: {
463
473
  address: '0x576Cf361711cd940CD9C397BB98C4C896cBd38De',
464
474
  decimals: 6,
465
475
  },
476
+ // circle issued usdc
477
+ USDCn: {
478
+ address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',
479
+ decimals: 6,
480
+ },
481
+ stataUSDCn: {
482
+ address: '0x2dCa80061632f3F87c9cA28364d1d0c30cD79a19',
483
+ decimals: 6,
484
+ },
485
+ aaveUSDCn: {
486
+ address: '0xa4d94019934d8333ef880abffbf2fdd611c762bd',
487
+ decimals: 6,
488
+ },
466
489
  POPS: {
467
490
  address: '0xa92A1576D11dB45c53be71d59245ac97ce0d8147',
468
491
  decimals: 18,
@@ -832,6 +855,14 @@ export const Tokens: {
832
855
  address: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
833
856
  decimals: 18,
834
857
  },
858
+ stataUSDT: {
859
+ address: '0x0471d185cc7be61e154277cab2396cd397663da6',
860
+ decimals: 18,
861
+ },
862
+ aaveUSDT: {
863
+ address: '0xa9251ca9de909cb71783723713b21e4233fbf1b1',
864
+ decimals: 18,
865
+ },
835
866
  },
836
867
  [Network.AVALANCHE]: {
837
868
  LINKe: {
@@ -995,6 +1026,14 @@ export const Tokens: {
995
1026
  address: '0x027dbcA046ca156De9622cD1e2D907d375e53aa7',
996
1027
  decimals: 9,
997
1028
  },
1029
+ stataUSDT: {
1030
+ address: '0x5525ee69bc1e354b356864187de486fab5ad67d7',
1031
+ decimals: 6,
1032
+ },
1033
+ aaveUSDT: {
1034
+ address: '0x6ab707aca953edaefbc4fd23ba73294241490620',
1035
+ decimals: 6,
1036
+ },
998
1037
  },
999
1038
  [Network.ARBITRUM]: {
1000
1039
  SEN: {
@@ -1141,6 +1180,14 @@ export const Tokens: {
1141
1180
  address: '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8',
1142
1181
  decimals: 18,
1143
1182
  },
1183
+ stataUSDT: {
1184
+ address: '0xb165a74407fe1e519d6bcbdec1ed3202b35a4140',
1185
+ decimals: 6,
1186
+ },
1187
+ aaveUSDT: {
1188
+ address: '0x6ab707aca953edaefbc4fd23ba73294241490620',
1189
+ decimals: 6,
1190
+ },
1144
1191
  },
1145
1192
  [Network.OPTIMISM]: {
1146
1193
  DAI: {
@@ -1242,6 +1289,14 @@ export const Tokens: {
1242
1289
  address: '0x6806411765Af15Bddd26f8f544A34cC40cb9838B',
1243
1290
  decimals: 18,
1244
1291
  },
1292
+ stataUSDT: {
1293
+ address: '0x035c93db04e5aaea54e6cd0261c492a3e0638b37',
1294
+ decimals: 6,
1295
+ },
1296
+ aaveUSDT: {
1297
+ address: '0x6ab707aca953edaefbc4fd23ba73294241490620',
1298
+ decimals: 6,
1299
+ },
1245
1300
  },
1246
1301
  [Network.ZKEVM]: {
1247
1302
  ETH: {
@@ -1346,6 +1401,14 @@ export const Tokens: {
1346
1401
  address: '0x940181a94A35A4569E4529A3CDfB74e38FD98631',
1347
1402
  decimals: 18,
1348
1403
  },
1404
+ stataUSDC: {
1405
+ address: '0x4ea71a20e655794051d1ee8b6e4a3269b13ccacc',
1406
+ decimals: 6,
1407
+ },
1408
+ aaveUSDC: {
1409
+ address: '0x4e65fe4dba92790696d040ac24aa414708f5c0ab',
1410
+ decimals: 6,
1411
+ },
1349
1412
  },
1350
1413
  };
1351
1414
 
@@ -1437,6 +1500,8 @@ export const Holders: {
1437
1500
  BNT: '0xf727e20e081aAE428E7c6bE07b156bB21ab587a7',
1438
1501
  USDe: '0x74e6c48e667d698a4cf90665b6960a5bae39e603',
1439
1502
  eETH: '0x0f1DfeF1a40557d279d0de6E49aB306891A638b8',
1503
+ stataUSDT: '0x6803364AceD5181877abC11E865FB27cB654a426',
1504
+ aaveUSDT: '0x32c98a981Fe7C333Bd4e8E7630E8e0CF5ce20987',
1440
1505
  weETH: '0x267ed5f71EE47D3E45Bb1569Aa37889a2d10f91e',
1441
1506
  },
1442
1507
  [Network.POLYGON]: {
@@ -1478,8 +1543,11 @@ export const Holders: {
1478
1543
  stEUR: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1479
1544
  USDA: '0x741383AbD73891b40822A069f14d6fc5b5685020',
1480
1545
  stUSD: '0xA9DdD91249DFdd450E81E1c56Ab60E1A62651701',
1546
+ stataUSDCn: '0xFAB1420c84fF5E058B8AD12604D24247e268f362',
1547
+ aaveUSDCn: '0xEBA9C3C1B41A846431F970aCA5Eee10f55969B76',
1481
1548
  crvUSD: '0xB498de532C68dc3cd93D54187E082E5D789a9e47',
1482
1549
  USDCe: '0xA67EFB69A4f58F568aAB1b9d51110102985835b0',
1550
+ USDCn: '0x4B6f17856215eab57c29ebfA18B0a0F74A3627bb',
1483
1551
  },
1484
1552
  [Network.FANTOM]: {
1485
1553
  DAI: '0x370f4b2dcf75c94d8d4450b493661a9c6170d0b5',
@@ -1532,6 +1600,8 @@ export const Holders: {
1532
1600
  EURA: '0x4A5362ef534FFB27510E4E4C9A215BB5436377C2',
1533
1601
  USDA: '0x230c1f68aBE6033Cba3Fe0D2C0D7097e9923C3bC',
1534
1602
  stUSD: '0x0022228a2cc5E7eF0274A7Baa600d44da5aB5776',
1603
+ stataUSDT: '', // no holders yet
1604
+ aaveUSDT: '0x5DE3c5BE52D7aDbdC3aEFe2eA061A2ECE0C7d766',
1535
1605
  },
1536
1606
  [Network.AVALANCHE]: {
1537
1607
  LINKe: '0x9efa0A617C0552F1558c95993aA8b8A68b3e709C',
@@ -1568,6 +1638,8 @@ export const Holders: {
1568
1638
  BTCb: '0x2446bEb3905CfFbd2c5eB18F1f9c2996B05257c4',
1569
1639
  AMPL: '0xfcaA5ea7F8eb0631BcA72C345025C0A5a6D93f0E',
1570
1640
  PHAR: '0x654296D56532f62B7d91d335791d3c364a9385b5',
1641
+ stataUSDT: '', // no holders yet
1642
+ aaveUSDT: '0xB2d3ad6e99D2A043EF77e3812461Ad2D4Ae3da8B',
1571
1643
  },
1572
1644
  [Network.ARBITRUM]: {
1573
1645
  SEN: '0x76d39045d856caf9bfae12ba611ca4a94449a4f1',
@@ -1604,6 +1676,8 @@ export const Holders: {
1604
1676
  stEUR: '0xE588611e7A2392507879E3be80531654b85C16aA',
1605
1677
  USDA: '0xa86ff337db9107b54862d30d1a598f8be847b05e',
1606
1678
  stUSD: '0xa9ddd91249dfdd450e81e1c56ab60e1a62651701',
1679
+ stataUSDT: '0x403D37c861fb54b8F37a3A1870aBce335954840B',
1680
+ aaveUSDT: '0xAfa788fab589fe61C23DF76905558f4734444D67',
1607
1681
  crvUSD: '0x9755e99bdb99495d3d31d953785d993c6df8552e',
1608
1682
  },
1609
1683
  [Network.OPTIMISM]: {
@@ -1631,6 +1705,8 @@ export const Holders: {
1631
1705
  crvUSD: '0x528e7aF33043Da06ca3DD407626a71DbBD3173D6',
1632
1706
  LUSD: '0xf0a9abb11958a071e168f2ee5bcbacf1abbde9cf',
1633
1707
  GRAI: '0x92b051204816DC4fbA7AC1A68a2cf319A9a387CB',
1708
+ stataUSDT: '0xd55263b84685Ced7e10a77607C7fFD763D495B6e',
1709
+ aaveUSDT: '0x1Fd458C52fEb7Bb35097ebd9566DB6C269341FDD',
1634
1710
  tBTC: '0xf7b4531e52211CC44379102F719cad29411dB053',
1635
1711
  PSTAKE: '0xc45398444B83183b2018e0224B3D332b42D492Af',
1636
1712
  },
@@ -1660,6 +1736,8 @@ export const Holders: {
1660
1736
  AERO: '0x807877258b55bfefabdd469da1c72731c5070839',
1661
1737
  tBTC: '0x9f1920d0cbb63ed03376a1e09fd2851d601234c8',
1662
1738
  DOG: '0xbe3ab8a87730684ef1e476064c2e43c3e982f8e8',
1739
+ stataUSDC: '0x88Cac91ADDE2208039A227B373C2A692C0700547',
1740
+ aaveUSDC: '0x5DE3c5BE52D7aDbdC3aEFe2eA061A2ECE0C7d766',
1663
1741
  USDM: '0x492EC4591c55962C5739A8dC98F0B401897Db038',
1664
1742
  crvUSD: '0xBbAbDB1385deA5285113581A7024d6DC04131101',
1665
1743
  cbETH: '0x50e011dD1e2b4906F1534623cD134B30422bb11E',