@paraswap/dex-lib 3.9.7-fluid-dex.3 → 3.10.1

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 (209) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/{integral/pool.json → inception/inception-ineth-pool.json} +558 -537
  5. package/build/abi/inception/inception-ratio-feed.json +329 -0
  6. package/build/abi/inception/inception-vault.json +991 -0
  7. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  8. package/build/abi/{integral/relayer.json → wombat/pool.json} +474 -721
  9. package/build/config.js +28 -0
  10. package/build/config.js.map +1 -1
  11. package/build/constants.d.ts +2 -1
  12. package/build/constants.js +1 -0
  13. package/build/constants.js.map +1 -1
  14. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  15. package/build/dex/aave-v1/aave-v1.js +23 -0
  16. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  17. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  18. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  19. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  20. package/build/dex/aave-v3/aave-v3.js +1 -1
  21. package/build/dex/aave-v3/aave-v3.js.map +1 -1
  22. package/build/dex/aave-v3/config.js +6 -0
  23. package/build/dex/aave-v3/config.js.map +1 -1
  24. package/build/dex/aave-v3-stata/config.js +3 -3
  25. package/build/dex/aave-v3-stata/config.js.map +1 -1
  26. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.js +1 -1
  27. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.js.map +1 -1
  28. package/build/dex/algebra/config.js +20 -0
  29. package/build/dex/algebra/config.js.map +1 -1
  30. package/build/dex/balancer-v2/balancer-v2.js +1 -1
  31. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  32. package/build/dex/balancer-v2/config.js +4 -0
  33. package/build/dex/balancer-v2/config.js.map +1 -1
  34. package/build/dex/curve-v1/config.js +36 -0
  35. package/build/dex/curve-v1/config.js.map +1 -1
  36. package/build/dex/curve-v1/curve-v1.js +1 -1
  37. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  38. package/build/dex/curve-v1-factory/constants.js +1 -0
  39. package/build/dex/curve-v1-factory/constants.js.map +1 -1
  40. package/build/dex/curve-v1-factory/curve-v1-factory.js +1 -1
  41. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  42. package/build/dex/curve-v1-stable-ng/config.js +28 -0
  43. package/build/dex/curve-v1-stable-ng/config.js.map +1 -1
  44. package/build/dex/fluid-dex/fluid-dex.d.ts +1 -0
  45. package/build/dex/fluid-dex/fluid-dex.js +19 -17
  46. package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
  47. package/build/dex/fluid-dex/utils.d.ts +2 -0
  48. package/build/dex/fluid-dex/utils.js +18 -0
  49. package/build/dex/fluid-dex/utils.js.map +1 -0
  50. package/build/dex/inception/config.d.ts +4 -0
  51. package/build/dex/inception/config.js +109 -0
  52. package/build/dex/inception/config.js.map +1 -0
  53. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  54. package/build/dex/inception/inception-event-pool.js +49 -0
  55. package/build/dex/inception/inception-event-pool.js.map +1 -0
  56. package/build/dex/inception/inception.d.ts +43 -0
  57. package/build/dex/inception/inception.js +180 -0
  58. package/build/dex/inception/inception.js.map +1 -0
  59. package/build/dex/inception/tokens.d.ts +9 -0
  60. package/build/dex/inception/tokens.js +28 -0
  61. package/build/dex/inception/tokens.js.map +1 -0
  62. package/build/dex/inception/types.d.ts +22 -0
  63. package/build/dex/inception/types.js +3 -0
  64. package/build/dex/inception/types.js.map +1 -0
  65. package/build/dex/inception/utils.d.ts +7 -0
  66. package/build/dex/inception/utils.js +58 -0
  67. package/build/dex/inception/utils.js.map +1 -0
  68. package/build/dex/jarvis.d.ts +2 -1
  69. package/build/dex/jarvis.js +58 -0
  70. package/build/dex/jarvis.js.map +1 -1
  71. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  72. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  73. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  74. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  75. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  76. package/build/dex/platypus/platypus.d.ts +2 -1
  77. package/build/dex/platypus/platypus.js +45 -0
  78. package/build/dex/platypus/platypus.js.map +1 -1
  79. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  80. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  81. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  82. package/build/dex/stable-pool.js +1 -8
  83. package/build/dex/stable-pool.js.map +1 -1
  84. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  85. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  86. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  87. package/build/dex/uniswap-v2/config.js +14 -0
  88. package/build/dex/uniswap-v2/config.js.map +1 -1
  89. package/build/dex/uniswap-v2/nomiswap-v2.js +10 -0
  90. package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -1
  91. package/build/dex/uniswap-v2/uniswap-v2.js +1 -1
  92. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  93. package/build/dex/uniswap-v3/config.js +14 -0
  94. package/build/dex/uniswap-v3/config.js.map +1 -1
  95. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  96. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  97. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  98. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  99. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  100. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  101. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  102. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  103. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  104. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  105. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  106. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  107. package/build/dex/uniswap-v3/uniswap-v3.js +1 -0
  108. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  109. package/build/dex/weth/config.js +5 -0
  110. package/build/dex/weth/config.js.map +1 -1
  111. package/build/dex/wusdm/config.js +8 -0
  112. package/build/dex/wusdm/config.js.map +1 -1
  113. package/build/dex/wusdm/wusdm.d.ts +1 -0
  114. package/build/dex/wusdm/wusdm.js +9 -4
  115. package/build/dex/wusdm/wusdm.js.map +1 -1
  116. package/build/dex/zerox/index.d.ts +4 -26
  117. package/build/dex/zerox/index.js +50 -42
  118. package/build/dex/zerox/index.js.map +1 -1
  119. package/build/dex/zerox/types.d.ts +29 -0
  120. package/build/dex/zerox/types.js +8 -1
  121. package/build/dex/zerox/types.js.map +1 -1
  122. package/build/executor/WETHBytecodeBuilder.js +1 -0
  123. package/build/executor/WETHBytecodeBuilder.js.map +1 -1
  124. package/package.json +1 -1
  125. package/src/config.ts +29 -1
  126. package/src/constants.ts +1 -0
  127. package/src/dex/aave-v3/aave-v3-e2e.test.ts +69 -0
  128. package/src/dex/aave-v3/aave-v3.ts +1 -1
  129. package/src/dex/aave-v3/config.ts +7 -0
  130. package/src/dex/aave-v3-stata/config.ts +4 -4
  131. package/src/dex/algebra/algebra-e2e.test.ts +22 -0
  132. package/src/dex/algebra/algebra-pool-v1_9_bidirectional_fee.ts +1 -1
  133. package/src/dex/algebra/config.ts +21 -0
  134. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +22 -250
  135. package/src/dex/balancer-v2/balancer-v2.ts +1 -1
  136. package/src/dex/balancer-v2/config.ts +4 -0
  137. package/src/dex/curve-v1/config.ts +36 -0
  138. package/src/dex/curve-v1/curve-v1-e2e.test.ts +69 -0
  139. package/src/dex/curve-v1/curve-v1.ts +1 -1
  140. package/src/dex/curve-v1-factory/constants.ts +1 -0
  141. package/src/dex/curve-v1-factory/curve-v1-factory.ts +2 -1
  142. package/src/dex/curve-v1-stable-ng/config.ts +28 -0
  143. package/src/dex/curve-v1-stable-ng/curve-v1-stable-ng-e2e.test.ts +20 -0
  144. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +0 -1
  145. package/src/dex/fluid-dex/fluid-dex-integration.test.ts +62 -23
  146. package/src/dex/fluid-dex/fluid-dex.ts +26 -18
  147. package/src/dex/fluid-dex/utils.ts +15 -0
  148. package/src/dex/uniswap-v2/config.ts +16 -0
  149. package/src/dex/uniswap-v2/nomiswap-v2.ts +11 -0
  150. package/src/dex/uniswap-v2/uniswap-v2-e2e-gnosis.test.ts +283 -0
  151. package/src/dex/uniswap-v2/uniswap-v2.ts +1 -1
  152. package/src/dex/uniswap-v3/config.ts +14 -0
  153. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +24 -0
  154. package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
  155. package/src/dex/weth/config.ts +5 -0
  156. package/src/dex/wusdm/config.ts +8 -0
  157. package/src/dex/wusdm/wusdm-e2e.test.ts +38 -0
  158. package/src/dex/wusdm/wusdm.ts +11 -4
  159. package/src/executor/WETHBytecodeBuilder.ts +3 -2
  160. package/tests/constants-e2e.ts +75 -0
  161. package/.idea/aws.xml +0 -17
  162. package/.idea/codeStyles/Project.xml +0 -19
  163. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  164. package/.idea/misc.xml +0 -6
  165. package/.idea/modules.xml +0 -8
  166. package/.idea/paraswap-dex-lib.iml +0 -9
  167. package/.idea/prettier.xml +0 -7
  168. package/.idea/vcs.xml +0 -6
  169. package/build/abi/integral/factory.json +0 -333
  170. package/build/abi/integral/oracle.json +0 -501
  171. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
  172. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
  173. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
  174. package/build/dex/integral/config.d.ts +0 -4
  175. package/build/dex/integral/config.js +0 -20
  176. package/build/dex/integral/config.js.map +0 -1
  177. package/build/dex/integral/context.d.ts +0 -40
  178. package/build/dex/integral/context.js +0 -158
  179. package/build/dex/integral/context.js.map +0 -1
  180. package/build/dex/integral/integral-factory.d.ts +0 -24
  181. package/build/dex/integral/integral-factory.js +0 -95
  182. package/build/dex/integral/integral-factory.js.map +0 -1
  183. package/build/dex/integral/integral-pool.d.ts +0 -50
  184. package/build/dex/integral/integral-pool.js +0 -149
  185. package/build/dex/integral/integral-pool.js.map +0 -1
  186. package/build/dex/integral/integral-pricing.d.ts +0 -18
  187. package/build/dex/integral/integral-pricing.js +0 -114
  188. package/build/dex/integral/integral-pricing.js.map +0 -1
  189. package/build/dex/integral/integral-relayer.d.ts +0 -42
  190. package/build/dex/integral/integral-relayer.js +0 -192
  191. package/build/dex/integral/integral-relayer.js.map +0 -1
  192. package/build/dex/integral/integral-token.d.ts +0 -27
  193. package/build/dex/integral/integral-token.js +0 -59
  194. package/build/dex/integral/integral-token.js.map +0 -1
  195. package/build/dex/integral/integral.d.ts +0 -41
  196. package/build/dex/integral/integral.js +0 -376
  197. package/build/dex/integral/integral.js.map +0 -1
  198. package/build/dex/integral/types.d.ts +0 -85
  199. package/build/dex/integral/types.js +0 -9
  200. package/build/dex/integral/types.js.map +0 -1
  201. package/build/dex/integral/utils-e2e.d.ts +0 -9
  202. package/build/dex/integral/utils-e2e.js +0 -131
  203. package/build/dex/integral/utils-e2e.js.map +0 -1
  204. package/build/dex/integral/utils.d.ts +0 -17
  205. package/build/dex/integral/utils.js +0 -94
  206. package/build/dex/integral/utils.js.map +0 -1
  207. package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
  208. package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
  209. package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
@@ -1444,256 +1444,28 @@ describe('BalancerV2 E2E', () => {
1444
1444
  );
1445
1445
  });
1446
1446
 
1447
- // describe('BeetsFi OPTIMISM', () => {
1448
- // const dexKey = 'BeetsFi';
1449
- // const network = Network.OPTIMISM;
1450
- // const tokens = Tokens[network];
1451
- // const holders = Holders[network];
1452
- // const provider = new StaticJsonRpcProvider(
1453
- // generateConfig(network).privateHttpProvider,
1454
- // network,
1455
- // );
1456
- // const BBAUSD_OP = '0x6222ae1d2a9f6894da50aa25cb7b303497f9bebd';
1457
- // const BBAUSDMAI_OP = '0x1f131ec1175f023ee1534b16fa8ab237c00e2381';
1458
- // const LIDO_SHUFFLE = '0xde45f101250f2ca1c0f8adfc172576d10c12072d';
1459
- // const YELLOW_SUBMARINE = '0x981fb05b738e981ac532a99e77170ecb4bc27aef';
1447
+ describe('BalancerV2_GNOSIS', () => {
1448
+ const dexKey = 'BalancerV2';
1449
+ const network = Network.GNOSIS;
1460
1450
 
1461
- // describe('Simpleswap', () => {
1462
- // it('ETH -> TOKEN', async () => {
1463
- // await testE2E(
1464
- // tokens['ETH'],
1465
- // tokens['USDC'],
1466
- // holders['ETH'],
1467
- // '7000000000000000000',
1468
- // SwapSide.SELL,
1469
- // dexKey,
1470
- // ContractMethod.simpleSwap,
1471
- // network,
1472
- // provider,
1473
- // );
1474
- // });
1475
- // it('TOKEN -> ETH', async () => {
1476
- // await testE2E(
1477
- // tokens['USDC'],
1478
- // tokens['ETH'],
1479
- // holders['USDC'],
1480
- // '2000000000',
1481
- // SwapSide.SELL,
1482
- // dexKey,
1483
- // ContractMethod.simpleSwap,
1484
- // network,
1485
- // provider,
1486
- // );
1487
- // });
1488
- // it('TOKEN -> TOKEN', async () => {
1489
- // await testE2E(
1490
- // tokens['USDC'],
1491
- // tokens['WETH'],
1492
- // holders['USDC'],
1493
- // '20000000',
1494
- // SwapSide.SELL,
1495
- // dexKey,
1496
- // ContractMethod.simpleSwap,
1497
- // network,
1498
- // provider,
1499
- // );
1500
- // });
1501
- // it('USDC -> DAI using bbaUSD', async () => {
1502
- // await testE2E(
1503
- // tokens['USDC'],
1504
- // tokens['DAI'],
1505
- // holders['USDC'],
1506
- // '20000000',
1507
- // SwapSide.SELL,
1508
- // dexKey,
1509
- // ContractMethod.simpleSwap,
1510
- // network,
1511
- // provider,
1512
- // [`${dexKey}_${BBAUSD_OP}`],
1513
- // );
1514
- // });
1515
- // it('DAI -> USDT using bbaUSD', async () => {
1516
- // await testE2E(
1517
- // tokens['DAI'],
1518
- // tokens['USDT'],
1519
- // holders['DAI'],
1520
- // '1000000000000000000',
1521
- // SwapSide.SELL,
1522
- // dexKey,
1523
- // ContractMethod.simpleSwap,
1524
- // network,
1525
- // provider,
1526
- // [`${dexKey}_${BBAUSD_OP}`],
1527
- // );
1528
- // });
1529
- // it('USDC -> MAI through bbaUSD-MAI', async () => {
1530
- // await testE2E(
1531
- // tokens['USDC'],
1532
- // tokens['MAI'],
1533
- // holders['USDC'],
1534
- // '20000000',
1535
- // SwapSide.SELL,
1536
- // dexKey,
1537
- // ContractMethod.simpleSwap,
1538
- // network,
1539
- // provider,
1540
- // [`${dexKey}_${BBAUSDMAI_OP}`],
1541
- // );
1542
- // });
1543
- // it('wstETH -> WETH through composable stable', async () => {
1544
- // await testE2E(
1545
- // tokens['wstETH'],
1546
- // tokens['WETH'],
1547
- // holders['wstETH'],
1548
- // '10000000000000000',
1549
- // SwapSide.SELL,
1550
- // dexKey,
1551
- // ContractMethod.simpleSwap,
1552
- // network,
1553
- // provider,
1554
- // [`${dexKey}_${LIDO_SHUFFLE}`],
1555
- // );
1556
- // });
1557
- // it('wstETH -> ETH through composable stable', async () => {
1558
- // await testE2E(
1559
- // tokens['wstETH'],
1560
- // tokens['ETH'],
1561
- // holders['wstETH'],
1562
- // '10000000000000000',
1563
- // SwapSide.SELL,
1564
- // dexKey,
1565
- // ContractMethod.simpleSwap,
1566
- // network,
1567
- // provider,
1568
- // [`${dexKey}_${LIDO_SHUFFLE}`],
1569
- // );
1570
- // });
1571
- // it('ETH -> wstETH through composable stable', async () => {
1572
- // await testE2E(
1573
- // tokens['ETH'],
1574
- // tokens['wstETH'],
1575
- // holders['ETH'],
1576
- // '10000000000000000',
1577
- // SwapSide.SELL,
1578
- // dexKey,
1579
- // ContractMethod.simpleSwap,
1580
- // network,
1581
- // provider,
1582
- // [`${dexKey}_${LIDO_SHUFFLE}`],
1583
- // );
1584
- // });
1585
- // it('wstETH -> WBTC through boosted weighted', async () => {
1586
- // await testE2E(
1587
- // tokens['wstETH'],
1588
- // tokens['WBTC'],
1589
- // holders['wstETH'],
1590
- // '25000000000000000', //1e18
1591
- // SwapSide.SELL,
1592
- // dexKey,
1593
- // ContractMethod.simpleSwap,
1594
- // network,
1595
- // provider,
1596
- // [`${dexKey}_${YELLOW_SUBMARINE}`],
1597
- // );
1598
- // });
1599
- // it('USDC -> WBTC through boosted weighted', async () => {
1600
- // await testE2E(
1601
- // tokens['USDC'],
1602
- // tokens['WBTC'],
1603
- // holders['USDC'],
1604
- // '1000000', //1e6
1605
- // SwapSide.SELL,
1606
- // dexKey,
1607
- // ContractMethod.simpleSwap,
1608
- // network,
1609
- // provider,
1610
- // [`${dexKey}_${YELLOW_SUBMARINE}`],
1611
- // );
1612
- // });
1613
- // it('wstETH -> USDC through boosted weighted', async () => {
1614
- // await testE2E(
1615
- // tokens['wstETH'],
1616
- // tokens['USDC'],
1617
- // holders['wstETH'],
1618
- // '1000000000000000000', //1e18
1619
- // SwapSide.SELL,
1620
- // dexKey,
1621
- // ContractMethod.simpleSwap,
1622
- // network,
1623
- // provider,
1624
- // [`${dexKey}_${YELLOW_SUBMARINE}`],
1625
- // );
1626
- // });
1627
- // });
1451
+ testForNetwork(
1452
+ network,
1453
+ dexKey,
1454
+ 'USDC',
1455
+ 'USDT',
1456
+ '11110010',
1457
+ '21000000',
1458
+ '100000000000000000',
1459
+ );
1628
1460
 
1629
- // describe('Multiswap', () => {
1630
- // it('ETH -> TOKEN', async () => {
1631
- // await testE2E(
1632
- // tokens['ETH'],
1633
- // tokens['USDC'],
1634
- // holders['ETH'],
1635
- // '7000000000000000000',
1636
- // SwapSide.SELL,
1637
- // dexKey,
1638
- // ContractMethod.multiSwap,
1639
- // network,
1640
- // provider,
1641
- // );
1642
- // });
1643
- // it('TOKEN -> ETH', async () => {
1644
- // await testE2E(
1645
- // tokens['USDC'],
1646
- // tokens['ETH'],
1647
- // holders['USDC'],
1648
- // '2000000000',
1649
- // SwapSide.SELL,
1650
- // dexKey,
1651
- // ContractMethod.multiSwap,
1652
- // network,
1653
- // provider,
1654
- // );
1655
- // });
1656
- // it('TOKEN -> TOKEN', async () => {
1657
- // await testE2E(
1658
- // tokens['USDC'],
1659
- // tokens['WETH'],
1660
- // holders['USDC'],
1661
- // '20000000',
1662
- // SwapSide.SELL,
1663
- // dexKey,
1664
- // ContractMethod.multiSwap,
1665
- // network,
1666
- // provider,
1667
- // );
1668
- // });
1669
- // it('USDC -> DAI using bbaUSD', async () => {
1670
- // await testE2E(
1671
- // tokens['USDC'],
1672
- // tokens['DAI'],
1673
- // holders['USDC'],
1674
- // '20000000',
1675
- // SwapSide.SELL,
1676
- // dexKey,
1677
- // ContractMethod.multiSwap,
1678
- // network,
1679
- // provider,
1680
- // [`${dexKey}_${BBAUSD_OP}`],
1681
- // );
1682
- // });
1683
- // it('wstETH -> USDC through boosted weighted', async () => {
1684
- // await testE2E(
1685
- // tokens['wstETH'],
1686
- // tokens['USDC'],
1687
- // holders['wstETH'],
1688
- // '1000000000000000000', //1e18
1689
- // SwapSide.SELL,
1690
- // dexKey,
1691
- // ContractMethod.multiSwap,
1692
- // network,
1693
- // provider,
1694
- // [`${dexKey}_${YELLOW_SUBMARINE}`],
1695
- // );
1696
- // });
1697
- // });
1698
- // });
1461
+ testForNetwork(
1462
+ network,
1463
+ dexKey,
1464
+ 'WETH',
1465
+ 'WXDAI',
1466
+ '1000000000000000000',
1467
+ '1000000000000000000',
1468
+ '1000000000000000000',
1469
+ );
1470
+ });
1699
1471
  });
@@ -789,7 +789,7 @@ export class BalancerV2
789
789
  }
790
790
 
791
791
  getAdapters(side: SwapSide): { name: string; index: number }[] | null {
792
- return this.adapters[side] ? this.adapters[side] : null;
792
+ return this.adapters?.[side] ? this.adapters[side] : null;
793
793
  }
794
794
 
795
795
  async getPoolIdentifiers(
@@ -25,6 +25,10 @@ export const BalancerConfig: DexConfigMap<DexParams> = {
25
25
  'https://api.studio.thegraph.com/query/24660/balancer-base-v2/version/latest',
26
26
  vaultAddress: '0xBA12222222228d8Ba445958a75a0704d566BF2C8',
27
27
  },
28
+ [Network.GNOSIS]: {
29
+ subgraphURL: 'EJezH1Cp31QkKPaBDerhVPRWsKVZLrDfzjrLqpmv6cGg',
30
+ vaultAddress: '0xBA12222222228d8Ba445958a75a0704d566BF2C8',
31
+ },
28
32
  },
29
33
  BeetsFi: {
30
34
  [Network.FANTOM]: {
@@ -1115,6 +1115,42 @@ export const CurveV1Config: DexConfigMap<DexParams> = {
1115
1115
  },
1116
1116
  },
1117
1117
  },
1118
+ [Network.GNOSIS]: {
1119
+ baseTokens: {
1120
+ '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d': {
1121
+ address: '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d',
1122
+ decimals: 18,
1123
+ reasonableVolume: 1000000000000000000000n,
1124
+ },
1125
+ '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83': {
1126
+ address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83',
1127
+ decimals: 6,
1128
+ reasonableVolume: 1000000000n,
1129
+ },
1130
+ '0x4ecaba5870353805a9f068101a40e0f32ed605c6': {
1131
+ address: '0x4ecaba5870353805a9f068101a40e0f32ed605c6',
1132
+ decimals: 6,
1133
+ reasonableVolume: 1000000000n,
1134
+ },
1135
+ },
1136
+ eventSupportedPools: [],
1137
+ pools: {
1138
+ '3pool': {
1139
+ underlying: [],
1140
+ coins: [
1141
+ '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d',
1142
+ '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83',
1143
+ '0x4ECaBa5870353805a9F068101A40E0f32ed605C6',
1144
+ ],
1145
+ address: '0x7f90122BF0700F9E7e1F688fe926940E8839F353',
1146
+ name: '3pool (x3CRV)',
1147
+ type: 1,
1148
+ version: 3,
1149
+ isLending: false,
1150
+ isMetapool: false,
1151
+ },
1152
+ },
1153
+ },
1118
1154
  },
1119
1155
  };
1120
1156
 
@@ -338,6 +338,75 @@ describe('CurveV1 E2E', () => {
338
338
  );
339
339
  });
340
340
  });
341
+
342
+ describe('GNOSIS', () => {
343
+ const network = Network.GNOSIS;
344
+ const tokens = Tokens[network];
345
+ const holders = Holders[network];
346
+ const provider = new StaticJsonRpcProvider(
347
+ generateConfig(network).privateHttpProvider,
348
+ network,
349
+ );
350
+
351
+ const tokensToTest = [
352
+ [
353
+ {
354
+ symbol: 'WXDAI',
355
+ amount: (10 ** 18).toString(),
356
+ },
357
+ {
358
+ symbol: 'USDC',
359
+ amount: (10 ** 6).toString(),
360
+ },
361
+ ],
362
+ [
363
+ {
364
+ symbol: 'WXDAI',
365
+ amount: (10 ** 18).toString(),
366
+ },
367
+ {
368
+ symbol: 'USDT',
369
+ amount: (10 ** 6).toString(),
370
+ },
371
+ ],
372
+ [
373
+ {
374
+ symbol: 'USDC',
375
+ amount: (10 ** 6).toString(),
376
+ },
377
+ {
378
+ symbol: 'USDT',
379
+ amount: (10 ** 6).toString(),
380
+ },
381
+ ],
382
+ ];
383
+
384
+ const sideToContractMethods = new Map([
385
+ [SwapSide.SELL, [ContractMethod.swapExactAmountIn]],
386
+ ]);
387
+
388
+ sideToContractMethods.forEach((contractMethods, side) =>
389
+ contractMethods.forEach((contractMethod: ContractMethod) => {
390
+ tokensToTest.forEach(pair => {
391
+ describe(`${contractMethod}`, () => {
392
+ it(`${pair[0].symbol} -> ${pair[1].symbol}`, async () => {
393
+ await testE2E(
394
+ tokens[pair[0].symbol],
395
+ tokens[pair[1].symbol],
396
+ holders[pair[0].symbol],
397
+ side === SwapSide.SELL ? pair[0].amount : pair[1].amount,
398
+ side,
399
+ dexKey,
400
+ contractMethod,
401
+ network,
402
+ provider,
403
+ );
404
+ });
405
+ });
406
+ });
407
+ }),
408
+ );
409
+ });
341
410
  });
342
411
 
343
412
  describe('Acryptos E2E', () => {
@@ -861,7 +861,7 @@ export class CurveV1
861
861
  }
862
862
 
863
863
  getAdapters(side: SwapSide): { name: string; index: number }[] | null {
864
- return this.adapters[side];
864
+ return this.adapters?.[side] ?? null;
865
865
  }
866
866
 
867
867
  static getDirectFunctionName(): string[] {
@@ -29,6 +29,7 @@ export const NETWORK_ID_TO_NAME: Record<number, string> = {
29
29
  [Network.ARBITRUM]: 'arbitrum',
30
30
  [Network.OPTIMISM]: 'optimism',
31
31
  [Network.BASE]: 'base',
32
+ [Network.GNOSIS]: 'xdai',
32
33
  };
33
34
 
34
35
  // They are hardcoded in factory contract. If factory is changing, must be
@@ -605,7 +605,8 @@ export class CurveV1Factory
605
605
  const allResultsFromFactory = (
606
606
  await this.dexHelper.multiWrapper.tryAggregate<
607
607
  string[] | number[] | string
608
- >(true, callDataFromFactoryPools)
608
+ // decrease batch size to 450 to avoid 'out-of-limit' error on gnosis
609
+ >(true, callDataFromFactoryPools, undefined, 450)
609
610
  ).map(r => r.returnData);
610
611
 
611
612
  const resultsFromFactory = allResultsFromFactory.slice(
@@ -192,6 +192,34 @@ const CurveV1StableNgConfig: DexConfigMap<DexParams> = {
192
192
  },
193
193
  customPools: {},
194
194
  },
195
+ [Network.GNOSIS]: {
196
+ factories: [
197
+ {
198
+ address: '0xbc0797015fcfc47d9c1856639cae50d0e69fbee8',
199
+ isStableNg: true,
200
+ },
201
+ ],
202
+ router: '0x0dcded3545d565ba3b19e683431381007245d983', // https://github.com/curvefi/curve-router-ng
203
+ stateUpdatePeriodMs: 5 * 1000,
204
+ disabledPools: new Set([]),
205
+ disabledImplementations: new Set([]),
206
+ factoryPoolImplementations: {
207
+ // TODO-gnosis: check if there's no missing implementations
208
+ '0x3d6cb2f6dcf47cdd9c13e4e3beae9af041d8796a': {
209
+ name: ImplementationNames.FACTORY_STABLE_NG,
210
+ address: '0x3d6cb2f6dcf47cdd9c13e4e3beae9af041d8796a',
211
+ liquidityApiSlug: '/factory-stable-ng',
212
+ isStoreRateSupported: true,
213
+ },
214
+ '0xc1b393efef38140662b91441c6710aa704973228': {
215
+ name: ImplementationNames.FACTORY_STABLE_NG,
216
+ address: '0xc1b393efef38140662b91441c6710aa704973228',
217
+ liquidityApiSlug: '/factory-stable-ng',
218
+ isStoreRateSupported: true,
219
+ },
220
+ },
221
+ customPools: {},
222
+ },
195
223
  },
196
224
  };
197
225
 
@@ -196,4 +196,24 @@ describe('CurveV1StableNG E2E', () => {
196
196
  sidesToContractMethods,
197
197
  );
198
198
  });
199
+
200
+ describe('Gnosis', () => {
201
+ const network = Network.GNOSIS;
202
+
203
+ const tokenASymbol: string = 'sDAI';
204
+ const tokenBSymbol: string = 'crvUSD';
205
+
206
+ const tokenAAmount: string = '1000000000000000000';
207
+ const tokenBAmount: string = '1000000000000000000';
208
+
209
+ testForNetwork(
210
+ network,
211
+ dexKey,
212
+ tokenASymbol,
213
+ tokenBSymbol,
214
+ tokenAAmount,
215
+ tokenBAmount,
216
+ sidesToContractMethods,
217
+ );
218
+ });
199
219
  });
@@ -12,7 +12,6 @@ import {
12
12
  } from '../../../tests/constants-e2e';
13
13
  import { Network, ContractMethod, SwapSide } from '../../constants';
14
14
  import { generateConfig } from '../../config';
15
- import { DummyDexHelper } from '../../dex-helper';
16
15
 
17
16
  /*
18
17
  README