@paraswap/dex-lib 3.9.7-fluid-dex.2 → 3.10.0

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 (234) 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/inception/config.d.ts +4 -0
  45. package/build/dex/inception/config.js +109 -0
  46. package/build/dex/inception/config.js.map +1 -0
  47. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  48. package/build/dex/inception/inception-event-pool.js +49 -0
  49. package/build/dex/inception/inception-event-pool.js.map +1 -0
  50. package/build/dex/inception/inception.d.ts +43 -0
  51. package/build/dex/inception/inception.js +180 -0
  52. package/build/dex/inception/inception.js.map +1 -0
  53. package/build/dex/inception/tokens.d.ts +9 -0
  54. package/build/dex/inception/tokens.js +28 -0
  55. package/build/dex/inception/tokens.js.map +1 -0
  56. package/build/dex/inception/types.d.ts +22 -0
  57. package/build/dex/{fluid-dex → inception}/types.js.map +1 -1
  58. package/build/dex/inception/utils.d.ts +7 -0
  59. package/build/dex/inception/utils.js +58 -0
  60. package/build/dex/inception/utils.js.map +1 -0
  61. package/build/dex/index.js +0 -2
  62. package/build/dex/index.js.map +1 -1
  63. package/build/dex/jarvis.d.ts +2 -1
  64. package/build/dex/jarvis.js +58 -0
  65. package/build/dex/jarvis.js.map +1 -1
  66. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  67. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  68. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  69. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  70. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  71. package/build/dex/platypus/platypus.d.ts +2 -1
  72. package/build/dex/platypus/platypus.js +45 -0
  73. package/build/dex/platypus/platypus.js.map +1 -1
  74. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  75. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  76. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  77. package/build/dex/stable-pool.js +1 -8
  78. package/build/dex/stable-pool.js.map +1 -1
  79. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  80. package/build/dex/swaap-v1/swaap-v1.js +14 -0
  81. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  82. package/build/dex/uniswap-v2/config.js +14 -0
  83. package/build/dex/uniswap-v2/config.js.map +1 -1
  84. package/build/dex/uniswap-v2/nomiswap-v2.js +10 -0
  85. package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -1
  86. package/build/dex/uniswap-v2/uniswap-v2.js +1 -1
  87. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  88. package/build/dex/uniswap-v3/config.js +14 -0
  89. package/build/dex/uniswap-v3/config.js.map +1 -1
  90. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  91. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  92. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  93. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  94. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  95. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  96. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  97. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  98. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  99. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  100. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  101. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  102. package/build/dex/uniswap-v3/uniswap-v3.js +1 -0
  103. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  104. package/build/dex/weth/config.js +5 -0
  105. package/build/dex/weth/config.js.map +1 -1
  106. package/build/dex/wusdm/config.js +8 -0
  107. package/build/dex/wusdm/config.js.map +1 -1
  108. package/build/dex/wusdm/wusdm.d.ts +1 -0
  109. package/build/dex/wusdm/wusdm.js +9 -4
  110. package/build/dex/wusdm/wusdm.js.map +1 -1
  111. package/build/dex/zerox/index.d.ts +4 -26
  112. package/build/dex/zerox/index.js +50 -42
  113. package/build/dex/zerox/index.js.map +1 -1
  114. package/build/dex/zerox/types.d.ts +29 -0
  115. package/build/dex/zerox/types.js +8 -1
  116. package/build/dex/zerox/types.js.map +1 -1
  117. package/build/executor/WETHBytecodeBuilder.js +1 -0
  118. package/build/executor/WETHBytecodeBuilder.js.map +1 -1
  119. package/package.json +1 -1
  120. package/src/config.ts +29 -1
  121. package/src/constants.ts +1 -0
  122. package/src/dex/aave-v3/aave-v3-e2e.test.ts +69 -0
  123. package/src/dex/aave-v3/aave-v3.ts +1 -1
  124. package/src/dex/aave-v3/config.ts +7 -0
  125. package/src/dex/aave-v3-stata/config.ts +4 -4
  126. package/src/dex/algebra/algebra-e2e.test.ts +22 -0
  127. package/src/dex/algebra/algebra-pool-v1_9_bidirectional_fee.ts +1 -1
  128. package/src/dex/algebra/config.ts +21 -0
  129. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +22 -250
  130. package/src/dex/balancer-v2/balancer-v2.ts +1 -1
  131. package/src/dex/balancer-v2/config.ts +4 -0
  132. package/src/dex/curve-v1/config.ts +36 -0
  133. package/src/dex/curve-v1/curve-v1-e2e.test.ts +69 -0
  134. package/src/dex/curve-v1/curve-v1.ts +1 -1
  135. package/src/dex/curve-v1-factory/constants.ts +1 -0
  136. package/src/dex/curve-v1-factory/curve-v1-factory.ts +2 -1
  137. package/src/dex/curve-v1-stable-ng/config.ts +28 -0
  138. package/src/dex/curve-v1-stable-ng/curve-v1-stable-ng-e2e.test.ts +20 -0
  139. package/src/dex/index.ts +0 -2
  140. package/src/dex/uniswap-v2/config.ts +16 -0
  141. package/src/dex/uniswap-v2/nomiswap-v2.ts +11 -0
  142. package/src/dex/uniswap-v2/uniswap-v2-e2e-gnosis.test.ts +283 -0
  143. package/src/dex/uniswap-v2/uniswap-v2.ts +1 -1
  144. package/src/dex/uniswap-v3/config.ts +14 -0
  145. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +24 -0
  146. package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
  147. package/src/dex/weth/config.ts +5 -0
  148. package/src/dex/wusdm/config.ts +8 -0
  149. package/src/dex/wusdm/wusdm-e2e.test.ts +38 -0
  150. package/src/dex/wusdm/wusdm.ts +11 -4
  151. package/src/executor/WETHBytecodeBuilder.ts +3 -2
  152. package/tests/constants-e2e.ts +77 -2
  153. package/.idea/aws.xml +0 -17
  154. package/.idea/codeStyles/Project.xml +0 -19
  155. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  156. package/.idea/misc.xml +0 -6
  157. package/.idea/modules.xml +0 -8
  158. package/.idea/paraswap-dex-lib.iml +0 -9
  159. package/.idea/prettier.xml +0 -7
  160. package/.idea/vcs.xml +0 -6
  161. package/build/abi/fluid-dex/dexFactory.abi.json +0 -506
  162. package/build/abi/fluid-dex/fluid-dex.abi.json +0 -922
  163. package/build/abi/fluid-dex/liquidityUserModule.abi.json +0 -145
  164. package/build/abi/fluid-dex/resolver.abi.json +0 -999
  165. package/build/abi/integral/factory.json +0 -333
  166. package/build/abi/integral/oracle.json +0 -501
  167. package/build/dex/fluid-dex/config.d.ts +0 -4
  168. package/build/dex/fluid-dex/config.js +0 -20
  169. package/build/dex/fluid-dex/config.js.map +0 -1
  170. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +0 -49
  171. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +0 -104
  172. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +0 -1
  173. package/build/dex/fluid-dex/fluid-dex-pool.d.ts +0 -47
  174. package/build/dex/fluid-dex/fluid-dex-pool.js +0 -119
  175. package/build/dex/fluid-dex/fluid-dex-pool.js.map +0 -1
  176. package/build/dex/fluid-dex/fluid-dex.d.ts +0 -127
  177. package/build/dex/fluid-dex/fluid-dex.js +0 -502
  178. package/build/dex/fluid-dex/fluid-dex.js.map +0 -1
  179. package/build/dex/fluid-dex/types.d.ts +0 -52
  180. package/build/dex/integral/config.d.ts +0 -4
  181. package/build/dex/integral/config.js +0 -20
  182. package/build/dex/integral/config.js.map +0 -1
  183. package/build/dex/integral/context.d.ts +0 -40
  184. package/build/dex/integral/context.js +0 -158
  185. package/build/dex/integral/context.js.map +0 -1
  186. package/build/dex/integral/integral-factory.d.ts +0 -24
  187. package/build/dex/integral/integral-factory.js +0 -95
  188. package/build/dex/integral/integral-factory.js.map +0 -1
  189. package/build/dex/integral/integral-pool.d.ts +0 -50
  190. package/build/dex/integral/integral-pool.js +0 -149
  191. package/build/dex/integral/integral-pool.js.map +0 -1
  192. package/build/dex/integral/integral-pricing.d.ts +0 -18
  193. package/build/dex/integral/integral-pricing.js +0 -114
  194. package/build/dex/integral/integral-pricing.js.map +0 -1
  195. package/build/dex/integral/integral-relayer.d.ts +0 -42
  196. package/build/dex/integral/integral-relayer.js +0 -192
  197. package/build/dex/integral/integral-relayer.js.map +0 -1
  198. package/build/dex/integral/integral-token.d.ts +0 -27
  199. package/build/dex/integral/integral-token.js +0 -59
  200. package/build/dex/integral/integral-token.js.map +0 -1
  201. package/build/dex/integral/integral.d.ts +0 -41
  202. package/build/dex/integral/integral.js +0 -376
  203. package/build/dex/integral/integral.js.map +0 -1
  204. package/build/dex/integral/types.d.ts +0 -85
  205. package/build/dex/integral/types.js +0 -9
  206. package/build/dex/integral/types.js.map +0 -1
  207. package/build/dex/integral/utils-e2e.d.ts +0 -9
  208. package/build/dex/integral/utils-e2e.js +0 -131
  209. package/build/dex/integral/utils-e2e.js.map +0 -1
  210. package/build/dex/integral/utils.d.ts +0 -17
  211. package/build/dex/integral/utils.js +0 -94
  212. package/build/dex/integral/utils.js.map +0 -1
  213. package/build/dex/trader-joe-v2.1/optimizer.d.ts +0 -2
  214. package/build/dex/trader-joe-v2.1/optimizer.js +0 -47
  215. package/build/dex/trader-joe-v2.1/optimizer.js.map +0 -1
  216. package/src/abi/fluid-dex/dexFactory.abi.json +0 -506
  217. package/src/abi/fluid-dex/fluid-dex.abi.json +0 -922
  218. package/src/abi/fluid-dex/liquidityUserModule.abi.json +0 -145
  219. package/src/abi/fluid-dex/resolver.abi.json +0 -999
  220. package/src/dex/fluid-dex/config.ts +0 -20
  221. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +0 -154
  222. package/src/dex/fluid-dex/fluid-dex-events.test.ts +0 -294
  223. package/src/dex/fluid-dex/fluid-dex-generate-pool.ts +0 -143
  224. package/src/dex/fluid-dex/fluid-dex-integration.test.ts +0 -304
  225. package/src/dex/fluid-dex/fluid-dex-pool.ts +0 -178
  226. package/src/dex/fluid-dex/fluid-dex.ts +0 -780
  227. package/src/dex/fluid-dex/types.ts +0 -62
  228. package/tests/constants-e2e.d.ts +0 -22
  229. package/tests/constants-e2e.js +0 -1942
  230. package/tests/constants-e2e.js.map +0 -1
  231. package/tests/smart-tokens.d.ts +0 -36
  232. package/tests/smart-tokens.js +0 -64
  233. package/tests/smart-tokens.js.map +0 -1
  234. /package/build/dex/{fluid-dex → inception}/types.js +0 -0
package/src/config.ts CHANGED
@@ -375,7 +375,6 @@ const baseConfigs: { [network: number]: BaseConfig } = {
375
375
  PolygonZkEvmAdapter01: '0xd63B7691dD98fa89A2ea5e1604700489c585aa7B',
376
376
  PolygonZkEvmBuyAdapter: '0xe2137168CdA486a2555E16c597905854C84F9127',
377
377
  },
378
-
379
378
  rpcPollingMaxAllowedStateDelayInBlocks: 0,
380
379
  rpcPollingBlocksBackToTriggerUpdate: 0,
381
380
  hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
@@ -387,6 +386,35 @@ const baseConfigs: { [network: number]: BaseConfig } = {
387
386
  // FIXME: Not set properly
388
387
  uniswapV2ExchangeRouterAddress: '',
389
388
  },
389
+ [Network.GNOSIS]: {
390
+ network: Network.GNOSIS,
391
+ networkName: 'Gnosis',
392
+ isTestnet: false,
393
+ nativeTokenName: 'xDAI',
394
+ nativeTokenSymbol: 'XDAI',
395
+ wrappedNativeTokenAddress: '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d',
396
+ hasEIP1559: false,
397
+ augustusAddress: '0x0000000000000000000000000000000000000000',
398
+ tokenTransferProxyAddress: '0x0000000000000000000000000000000000000000',
399
+ multicallV2Address: '0xca11bde05977b3631167028862be2a173976ca11',
400
+ privateHttpProvider: process.env.HTTP_PROVIDER_100,
401
+ adapterAddresses: {},
402
+ augustusRFQAddress: '0x92EaD5bACf6F0E995FA46Ad8215A9b11f67ca241',
403
+ augustusV6Address: '0x6a000f20005980200259b80c5102003040001068',
404
+ executorsAddresses: {
405
+ Executor01: '0x000010036c0190e009a000d0fc3541100a07380a',
406
+ Executor02: '0x00c600b30fb0400701010f4b080409018b9006e0',
407
+ Executor03: '0xe009f00e200a090090fc70e02d70b232000c0802',
408
+ },
409
+ rpcPollingMaxAllowedStateDelayInBlocks: 0,
410
+ rpcPollingBlocksBackToTriggerUpdate: 0,
411
+ hashFlowDisabledMMs: [],
412
+ uniswapV3EventLoggingSampleRate: 0,
413
+ rfqConfigs: {},
414
+ forceRpcFallbackDexs: [],
415
+ uniswapV2ExchangeRouterAddress:
416
+ '0xfa39c1c670b48956eeF9fd0BbD0E81A290326330',
417
+ },
390
418
  [Network.BASE]: {
391
419
  network: Network.BASE,
392
420
  networkName: 'Base',
package/src/constants.ts CHANGED
@@ -41,6 +41,7 @@ export enum Network {
41
41
  ARBITRUM = 42161,
42
42
  OPTIMISM = 10,
43
43
  BASE = 8453,
44
+ GNOSIS = 100,
44
45
  }
45
46
  export const SUBGRAPH_TIMEOUT = 20 * 1000;
46
47
 
@@ -506,4 +506,73 @@ describe('AaveV3 E2E', () => {
506
506
  );
507
507
  });
508
508
  });
509
+
510
+ describe('AaveV3 GNOSIS', () => {
511
+ const network = Network.GNOSIS;
512
+ const tokens = Tokens[network];
513
+ const holders = Holders[network];
514
+ const provider = new StaticJsonRpcProvider(
515
+ generateConfig(network).privateHttpProvider,
516
+ network,
517
+ );
518
+
519
+ const pairs = [
520
+ {
521
+ tokenSymbol: 'XDAI',
522
+ aTokenSymbol: 'aGnoWXDAI',
523
+ amount: '1000000000000000000',
524
+ },
525
+ {
526
+ tokenSymbol: 'USDC',
527
+ aTokenSymbol: 'aGnoUSDC',
528
+ amount: '10000000',
529
+ },
530
+ {
531
+ tokenSymbol: 'wstETH',
532
+ aTokenSymbol: 'aGnowstETH',
533
+ amount: '1000000000000000000',
534
+ },
535
+ ];
536
+
537
+ const sideToContractMethods = new Map([
538
+ [SwapSide.SELL, [ContractMethod.swapExactAmountIn]],
539
+ [SwapSide.BUY, [ContractMethod.swapExactAmountOut]],
540
+ ]);
541
+
542
+ pairs.forEach(pair => {
543
+ sideToContractMethods.forEach((contractMethods, side) =>
544
+ contractMethods.forEach((contractMethod: ContractMethod) => {
545
+ describe(`${contractMethod}`, () => {
546
+ it(pair.aTokenSymbol + ' -> ' + pair.tokenSymbol, async () => {
547
+ await testE2E(
548
+ tokens[pair.aTokenSymbol],
549
+ tokens[pair.tokenSymbol],
550
+ holders[pair.aTokenSymbol],
551
+ pair.amount,
552
+ side,
553
+ dexKey,
554
+ contractMethod,
555
+ network,
556
+ provider,
557
+ );
558
+ });
559
+
560
+ it(pair.tokenSymbol + ' -> ' + pair.aTokenSymbol, async () => {
561
+ await testE2E(
562
+ tokens[pair.tokenSymbol],
563
+ tokens[pair.aTokenSymbol],
564
+ holders[pair.tokenSymbol],
565
+ pair.amount,
566
+ side,
567
+ dexKey,
568
+ contractMethod,
569
+ network,
570
+ provider,
571
+ );
572
+ });
573
+ });
574
+ }),
575
+ );
576
+ });
577
+ });
509
578
  });
@@ -60,7 +60,7 @@ export class AaveV3 extends SimpleExchange implements IDex<Data, Param> {
60
60
  }
61
61
 
62
62
  getAdapters(side: SwapSide): { name: string; index: number }[] | null {
63
- return this.adapters[side];
63
+ return this.adapters?.[side] ?? null;
64
64
  }
65
65
 
66
66
  async initializePricing(blockNumber: number): Promise<void> {
@@ -11,6 +11,7 @@ import {
11
11
  AaveV3Optimism,
12
12
  AaveV3Polygon,
13
13
  AaveV3PolygonZkEvm,
14
+ AaveV3Gnosis,
14
15
  } from '@bgd-labs/aave-address-book';
15
16
 
16
17
  // TODO: find vals for V3
@@ -70,6 +71,12 @@ export const Config: DexConfigMap<DexParam> = {
70
71
  poolAddress: AaveV3PolygonZkEvm.POOL,
71
72
  wethGatewayAddress: AaveV3PolygonZkEvm.WETH_GATEWAY,
72
73
  },
74
+ [Network.GNOSIS]: {
75
+ ethGasCost: 246 * 100,
76
+ lendingGasCost: 328 * 1000,
77
+ poolAddress: AaveV3Gnosis.POOL,
78
+ wethGatewayAddress: AaveV3Gnosis.WETH_GATEWAY,
79
+ },
73
80
  },
74
81
  };
75
82
 
@@ -7,7 +7,7 @@ import {
7
7
  AaveV3BNB,
8
8
  AaveV3Base,
9
9
  AaveV3Ethereum,
10
- // AaveV3Gnosis,
10
+ AaveV3Gnosis,
11
11
  // AaveV3Metis,
12
12
  AaveV3Optimism,
13
13
  AaveV3Polygon,
@@ -37,9 +37,9 @@ export const AaveV3StataConfig: DexConfigMap<DexParams> = {
37
37
  [Network.BSC]: {
38
38
  factoryAddress: AaveV3BNB.STATIC_A_TOKEN_FACTORY,
39
39
  },
40
- // [Network.Gnosis]: {
41
- // factoryAddress: AaveV3Gnosis.STATIC_A_TOKEN_FACTORY,
42
- // },
40
+ [Network.GNOSIS]: {
41
+ factoryAddress: AaveV3Gnosis.STATIC_A_TOKEN_FACTORY,
42
+ },
43
43
  // [Network.Scroll]: {
44
44
  // factoryAddress: AaveV3Scroll.STATIC_A_TOKEN_FACTORY,
45
45
  // },
@@ -288,4 +288,26 @@ describe('Algebra', () => {
288
288
  nativeTokenAmount,
289
289
  );
290
290
  });
291
+
292
+ describe('SwaprV3', () => {
293
+ const dexKey = 'SwaprV3';
294
+ const network = Network.GNOSIS;
295
+
296
+ const tokenASymbol: string = 'WXDAI';
297
+ const tokenBSymbol: string = 'USDC';
298
+
299
+ const tokenAAmount: string = '1000000000000000000';
300
+ const tokenBAmount: string = '100000000';
301
+ const nativeTokenAmount = '1000000000000000000';
302
+
303
+ testForNetwork(
304
+ network,
305
+ dexKey,
306
+ tokenASymbol,
307
+ tokenBSymbol,
308
+ tokenAAmount,
309
+ tokenBAmount,
310
+ nativeTokenAmount,
311
+ );
312
+ });
291
313
  });
@@ -32,7 +32,7 @@ export class AlgebraEventPoolV1_9_bidirectional_fee extends AlgebraEventPoolV1_1
32
32
  mapKey,
33
33
  poolInitCodeHash,
34
34
  poolDeployer,
35
- false, // forceManualStateGeneration; mainly for zkEVM
35
+ true, // forceManualStateGeneration; mainly used for xLayer
36
36
  false, // areTicksCompressed
37
37
  );
38
38
 
@@ -62,6 +62,8 @@ export const AlgebraConfig: DexConfigMap<DexParams> = {
62
62
  subgraphURL: '3CA9ffebLkS3N2otXaSj8XaDDdspty75upBjKTUS79qY',
63
63
  uniswapMulticall: '0x1F98415757620B543A52E61c46B32eB19261F984',
64
64
  deployer: '0xc0d4323426c709e8d04b5b130e7f059523464a91',
65
+ // optimism fork uses v1.9-bidirectional-fee (with TickSpacing event and simple `fee` in globalState),
66
+ // not sure why v1.1 is used here
65
67
  version: 'v1.1',
66
68
  },
67
69
  },
@@ -79,6 +81,25 @@ export const AlgebraConfig: DexConfigMap<DexParams> = {
79
81
  uniswapMulticall: '0x1F98415757620B543A52E61c46B32eB19261F984',
80
82
  deployer: '0x6dd3fb9653b10e806650f107c3b5a0a6ff974f65',
81
83
  version: 'v1.9',
84
+ // looks like it isn't used as we override it with dexHelper.config.data.forceRpcFallbackDexs in constructor
85
+ forceRPC: true,
86
+ },
87
+ },
88
+ SwaprV3: {
89
+ [Network.GNOSIS]: {
90
+ factory: '0xA0864cCA6E114013AB0e27cbd5B6f4c8947da766',
91
+ router: '0xfFB643E73f280B97809A8b41f7232AB401a04ee1',
92
+ quoter: '0xcBaD9FDf0D2814659Eb26f600EFDeAF005Eda0F7',
93
+ initHash:
94
+ '0xbce37a54eab2fcd71913a0d40723e04238970e7fc1159bfd58ad5b79531697e7',
95
+ chunksCount: 10,
96
+ initRetryFrequency: 10,
97
+ // AlgebraStateMulticall
98
+ algebraStateMulticall: '0x49C46f7f88110ccA234ef27Cd664510f7bbF5998',
99
+ subgraphURL: 'AAA1vYjxwFHzbt6qKwLHNcDSASyr1J1xVViDH8gTMFMR',
100
+ uniswapMulticall: '0x4dfa9a980efE4802E969AC33968E3d6E59B8a19e',
101
+ deployer: '0xC1b576AC6Ec749d5Ace1787bF9Ec6340908ddB47',
102
+ version: 'v1.9-bidirectional-fee',
82
103
  forceRPC: true,
83
104
  },
84
105
  },
@@ -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[] {