@paraswap/dex-lib 4.0.17-statav2 → 4.0.17-usual-pp.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 (309) 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/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  5. package/build/abi/usual-m-smart-m/usualM.abi.json +483 -0
  6. package/build/abi/{USDM.json → usual-pp/abi.json} +269 -326
  7. package/build/abi/{angle-transmuter/ChainlinkAccessControlledOffchainAggregator.json → wombat/pool.json} +637 -594
  8. package/build/dex/aave-gsm/config.js +2 -2
  9. package/build/dex/aave-gsm/config.js.map +1 -1
  10. package/build/dex/aave-v1/aave-v1.js +1 -0
  11. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  12. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  13. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  14. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  15. package/build/dex/aave-v2/tokens.js +4 -6
  16. package/build/dex/aave-v2/tokens.js.map +1 -1
  17. package/build/dex/aave-v3/config.js +6 -6
  18. package/build/dex/aave-v3/config.js.map +1 -1
  19. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.js +18 -11
  20. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.js.map +1 -1
  21. package/build/dex/aave-v3-stata-v2/types.d.ts +18 -4
  22. package/build/dex/aave-v3-stata-v2/types.js.map +1 -1
  23. package/build/dex/bProtocol.d.ts +18 -0
  24. package/build/dex/bProtocol.js +39 -0
  25. package/build/dex/bProtocol.js.map +1 -0
  26. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
  27. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
  28. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
  29. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
  30. package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
  31. package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
  32. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
  33. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
  34. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
  35. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
  36. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
  37. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
  38. package/build/dex/bancor.d.ts +26 -0
  39. package/build/dex/bancor.js +58 -0
  40. package/build/dex/bancor.js.map +1 -0
  41. package/build/dex/compound.d.ts +18 -0
  42. package/build/dex/compound.js +46 -0
  43. package/build/dex/compound.js.map +1 -0
  44. package/build/dex/curve-v2.d.ts +58 -0
  45. package/build/dex/curve-v2.js +180 -0
  46. package/build/dex/curve-v2.js.map +1 -0
  47. package/build/dex/dodo-v1.d.ts +33 -0
  48. package/build/dex/dodo-v1.js +63 -0
  49. package/build/dex/dodo-v1.js.map +1 -0
  50. package/build/dex/fluid-dex/fluid-dex.d.ts +0 -1
  51. package/build/dex/fluid-dex/fluid-dex.js +4 -7
  52. package/build/dex/fluid-dex/fluid-dex.js.map +1 -1
  53. package/build/dex/inception/inception-event-pool.d.ts +4 -4
  54. package/build/dex/inception/inception-event-pool.js +7 -9
  55. package/build/dex/inception/inception-event-pool.js.map +1 -1
  56. package/build/dex/inception/inception.d.ts +6 -6
  57. package/build/dex/inception/inception.js +16 -40
  58. package/build/dex/inception/inception.js.map +1 -1
  59. package/build/dex/inception/utils.d.ts +1 -0
  60. package/build/dex/inception/utils.js +22 -1
  61. package/build/dex/inception/utils.js.map +1 -1
  62. package/build/dex/index.js +2 -2
  63. package/build/dex/index.js.map +1 -1
  64. package/build/dex/lido.d.ts +19 -0
  65. package/build/dex/lido.js +42 -0
  66. package/build/dex/lido.js.map +1 -0
  67. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  68. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  69. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  70. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  71. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  72. package/build/dex/onebit.d.ts +25 -0
  73. package/build/dex/onebit.js +42 -0
  74. package/build/dex/onebit.js.map +1 -0
  75. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +3 -9
  76. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +1 -1
  77. package/build/dex/platypus/platypus.js +17 -3
  78. package/build/dex/platypus/platypus.js.map +1 -1
  79. package/build/dex/smoothy.d.ts +26 -0
  80. package/build/dex/smoothy.js +48 -0
  81. package/build/dex/smoothy.js.map +1 -0
  82. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  83. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  84. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  85. package/build/dex/stable-pool.d.ts +28 -0
  86. package/build/dex/stable-pool.js +55 -0
  87. package/build/dex/stable-pool.js.map +1 -0
  88. package/build/dex/stkgho/config.js +2 -2
  89. package/build/dex/stkgho/config.js.map +1 -1
  90. package/build/dex/swaap-v1/swaap-v1.js +4 -0
  91. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  92. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.d.ts +7 -0
  93. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js +20 -0
  94. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js.map +1 -0
  95. package/build/dex/trader-joe-v2.1.d.ts +43 -0
  96. package/build/dex/trader-joe-v2.1.js +79 -0
  97. package/build/dex/trader-joe-v2.1.js.map +1 -0
  98. package/build/dex/uniswap-v3/config.js +25 -0
  99. package/build/dex/uniswap-v3/config.js.map +1 -1
  100. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  101. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  102. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  103. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  104. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  105. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  106. package/build/dex/uniswap-v3/uniswap-v3-pool.js +3 -9
  107. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  108. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  109. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  110. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  111. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  112. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  113. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  114. package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
  115. package/build/dex/usual/usual-m-smart-m.js +50 -0
  116. package/build/dex/usual/usual-m-smart-m.js.map +1 -0
  117. package/build/dex/usual/usual.js +1 -1
  118. package/build/dex/usual/usual.js.map +1 -1
  119. package/build/dex/usual-m-smart-m/config.d.ts +3 -0
  120. package/build/dex/usual-m-smart-m/config.js +13 -0
  121. package/build/dex/usual-m-smart-m/config.js.map +1 -0
  122. package/build/dex/usual-m-smart-m/types.d.ts +7 -0
  123. package/build/dex/usual-m-smart-m/types.js +3 -0
  124. package/build/dex/usual-m-smart-m/types.js.map +1 -0
  125. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
  126. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
  127. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
  128. package/build/dex/usual-m-usd0/config.d.ts +3 -0
  129. package/build/dex/usual-m-usd0/config.js +14 -0
  130. package/build/dex/usual-m-usd0/config.js.map +1 -0
  131. package/build/dex/usual-m-usd0/types.d.ts +8 -0
  132. package/build/dex/usual-m-usd0/types.js +3 -0
  133. package/build/dex/usual-m-usd0/types.js.map +1 -0
  134. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
  135. package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
  136. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
  137. package/build/dex/usual-pp/config.d.ts +3 -0
  138. package/build/dex/usual-pp/config.js +19 -0
  139. package/build/dex/usual-pp/config.js.map +1 -0
  140. package/build/dex/usual-pp/pool.d.ts +17 -0
  141. package/build/dex/usual-pp/pool.js +57 -0
  142. package/build/dex/usual-pp/pool.js.map +1 -0
  143. package/build/dex/usual-pp/types.d.ts +15 -0
  144. package/build/dex/usual-pp/types.js +3 -0
  145. package/build/dex/usual-pp/types.js.map +1 -0
  146. package/build/dex/usual-pp/usual-pp.d.ts +36 -0
  147. package/build/dex/usual-pp/usual-pp.js +167 -0
  148. package/build/dex/usual-pp/usual-pp.js.map +1 -0
  149. package/build/dex/usual-pp/utils.d.ts +4 -0
  150. package/build/dex/usual-pp/utils.js +18 -0
  151. package/build/dex/usual-pp/utils.js.map +1 -0
  152. package/package.json +2 -2
  153. package/src/abi/{aavev3statav2/Token.json → usual-pp/abi.json} +223 -470
  154. package/src/dex/aave-gsm/config.ts +3 -3
  155. package/src/dex/aave-v2/tokens.ts +4 -3
  156. package/src/dex/aave-v3/config.ts +7 -6
  157. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +0 -28
  158. package/src/dex/fluid-dex/fluid-dex.ts +9 -14
  159. package/src/dex/index.ts +2 -2
  160. package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +9 -9
  161. package/src/dex/stkgho/config.ts +3 -3
  162. package/src/dex/uniswap-v3/config.ts +26 -0
  163. package/src/dex/uniswap-v3/uniswap-v3-pool.ts +9 -9
  164. package/src/dex/usual/usual.ts +1 -1
  165. package/src/dex/usual-pp/config.ts +18 -0
  166. package/src/dex/usual-pp/pool.ts +77 -0
  167. package/src/dex/usual-pp/types.ts +12 -0
  168. package/src/dex/usual-pp/usual-events.test.ts +70 -0
  169. package/src/dex/usual-pp/usual-integration.test.ts +143 -0
  170. package/src/dex/usual-pp/usual-pp.e2e.test.ts +76 -0
  171. package/src/dex/usual-pp/usual-pp.ts +208 -0
  172. package/src/dex/usual-pp/utils.ts +27 -0
  173. package/tests/constants-e2e.ts +1 -16
  174. package/build/abi/Aave_GSM.json +0 -751
  175. package/build/abi/Balancer.json +0 -257
  176. package/build/abi/BalancerV2.json +0 -1179
  177. package/build/abi/RamsesV2Pool.abi.json +0 -1554
  178. package/build/abi/RamsesV2Quoter.abi.json +0 -274
  179. package/build/abi/UniswapV2Router.json +0 -397
  180. package/build/abi/angle-transmuter/ChainlinkEACAggregatorProxy.json +0 -509
  181. package/build/abi/curve-v1/CurveBUSDv2.abi.json +0 -1356
  182. package/build/abi/curve-v1/CurveTokenV1.json +0 -305
  183. package/build/abi/curve-v1/CurveTokenV2.json +0 -318
  184. package/build/abi/curve-v1/CurveV1StableNg.json +0 -1452
  185. package/build/abi/curve-v1/CurveV2Swap.json +0 -700
  186. package/build/abi/curve-v1/FactoryCryptoRegistry.json +0 -316
  187. package/build/abi/curve-v1/FactoryRegistry.json +0 -508
  188. package/build/abi/curve-v1/StableSwapAave.json +0 -1152
  189. package/build/abi/curve-v1/StableSwapBUSD.json +0 -814
  190. package/build/abi/curve-v1/StableSwapCompound.json +0 -814
  191. package/build/abi/curve-v1/StableSwapIDLE.json +0 -1253
  192. package/build/abi/curve-v1/StableSwapPax.json +0 -865
  193. package/build/abi/curve-v1/StableSwapSnow.json +0 -900
  194. package/build/abi/curve-v1/StableSwapUSDN.json +0 -1004
  195. package/build/abi/curve-v1/StableSwapUSDT.json +0 -814
  196. package/build/abi/curve-v1/StableSwapY.json +0 -814
  197. package/build/abi/inception/inception-ineth.json +0 -609
  198. package/build/abi/kyberdmm/kyber-storage.abi.json +0 -824
  199. package/build/abi/kyberdmm.abi.json +0 -1148
  200. package/build/abi/maverick-v2/MaverickV2Quoter.json +0 -278
  201. package/build/abi/nerve/nerve-metapool.json +0 -790
  202. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  203. package/build/abi/velodrome-slipstream/VelodromeSlipstreamQuoterV2.abi.json +0 -267
  204. package/build/dex/balancer-v1/balancer-pools.json +0 -33333
  205. package/build/dex/bebop/websocket-fetcher.d.ts +0 -35
  206. package/build/dex/bebop/websocket-fetcher.js +0 -87
  207. package/build/dex/bebop/websocket-fetcher.js.map +0 -1
  208. package/build/dex/idle-dao/idle-dao-pool.d.ts +0 -56
  209. package/build/dex/idle-dao/idle-dao-pool.js +0 -176
  210. package/build/dex/idle-dao/idle-dao-pool.js.map +0 -1
  211. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +0 -16
  212. package/build/dex/idle-dao/idle-dao-pooling-pool.js +0 -57
  213. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +0 -1
  214. package/build/dex/idle-dao/scripts.d.ts +0 -9
  215. package/build/dex/idle-dao/scripts.js +0 -552
  216. package/build/dex/idle-dao/scripts.js.map +0 -1
  217. package/build/dex/inception/inception-native.d.ts +0 -43
  218. package/build/dex/inception/inception-native.js +0 -131
  219. package/build/dex/inception/inception-native.js.map +0 -1
  220. package/build/dex/inception/inception-pool.d.ts +0 -18
  221. package/build/dex/inception/inception-pool.js +0 -32
  222. package/build/dex/inception/inception-pool.js.map +0 -1
  223. package/build/dex/inception/inception-price-feed.d.ts +0 -19
  224. package/build/dex/inception/inception-price-feed.js +0 -51
  225. package/build/dex/inception/inception-price-feed.js.map +0 -1
  226. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +0 -16
  227. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -16
  228. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -16
  229. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -16
  230. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -16
  231. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -16
  232. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -16
  233. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdt-usdc-dai.json +0 -16
  234. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-eth-usdc.json +0 -9
  235. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-eth.json +0 -9
  236. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-wbtc.json +0 -9
  237. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-eth-steth.json +0 -9
  238. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-steth-eth.json +0 -9
  239. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-usdc-usdt.json +0 -9
  240. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-eth-usdc.json +0 -9
  241. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-eth.json +0 -9
  242. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-usdt.json +0 -9
  243. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -12
  244. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -7
  245. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -7
  246. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -7
  247. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -7
  248. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -12
  249. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-eth-usdc.json +0 -7
  250. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-usdc-eth.json +0 -7
  251. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +0 -78
  252. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -81
  253. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -78
  254. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -78
  255. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -81
  256. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -81
  257. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -81
  258. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdt-usdc-dai.json +0 -81
  259. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-eth-usdc.json +0 -64
  260. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-eth.json +0 -85
  261. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-wbtc.json +0 -64
  262. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-eth-steth.json +0 -52
  263. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-steth-eth.json +0 -52
  264. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-usdc-usdt.json +0 -52
  265. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-eth-usdc.json +0 -55
  266. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-eth.json +0 -55
  267. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-usdt.json +0 -55
  268. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -23
  269. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -37
  270. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -23
  271. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -23
  272. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -51
  273. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-univ3-usdt-dai-eth.json +0 -58
  274. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -23
  275. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -23
  276. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -9
  277. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -16
  278. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +0 -23
  279. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -12
  280. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -7
  281. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -12
  282. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -12
  283. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -7
  284. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-univ3-usdt-dai-eth.json +0 -7
  285. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -7
  286. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -7
  287. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -7
  288. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -7
  289. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -130
  290. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -136
  291. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -100
  292. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -100
  293. package/build/executor/fixtures/executor02/routes/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -166
  294. package/build/executor/fixtures/executor02/routes/price-route-multiswap-univ3-usdt-dai-eth.json +0 -190
  295. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -114
  296. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -114
  297. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -55
  298. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -73
  299. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +0 -82
  300. package/src/abi/aavev3statav2/Factory.json +0 -131
  301. package/src/abi/aavev3statav2/Pool.json +0 -1459
  302. package/src/dex/aave-v2/tokenlist.json +0 -904
  303. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-e2e.test.ts +0 -397
  304. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-integration.test.ts +0 -600
  305. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2.ts +0 -477
  306. package/src/dex/aave-v3-stata-v2/config.ts +0 -24
  307. package/src/dex/aave-v3-stata-v2/tokens.ts +0 -48
  308. package/src/dex/aave-v3-stata-v2/types.ts +0 -41
  309. package/src/dex/aave-v3-stata-v2/utils.ts +0 -88
@@ -1,13 +1,13 @@
1
1
  import { DexParams } from './types';
2
2
  import { DexConfigMap } from '../../types';
3
3
  import { Network } from '../../constants';
4
- import { AaveV3Ethereum, GhoEthereum } from '@bgd-labs/aave-address-book';
4
+ import { AaveV3Ethereum, MiscEthereum } from '@bgd-labs/aave-address-book';
5
5
 
6
6
  export const AaveGsmConfig: DexConfigMap<DexParams> = {
7
7
  AaveGsm: {
8
8
  [Network.MAINNET]: {
9
- GSM_USDT: GhoEthereum.GSM_USDT,
10
- GSM_USDC: GhoEthereum.GSM_USDC,
9
+ GSM_USDT: MiscEthereum.GSM_USDT,
10
+ GSM_USDC: MiscEthereum.GSM_USDC,
11
11
  USDT: AaveV3Ethereum.ASSETS.USDT.UNDERLYING,
12
12
  USDC: AaveV3Ethereum.ASSETS.USDC.UNDERLYING,
13
13
  GHO: AaveV3Ethereum.ASSETS.GHO.UNDERLYING,
@@ -1,14 +1,15 @@
1
1
  import { aToken, Token } from '../../types';
2
2
  import { Network } from '../../constants';
3
- import tokens from './tokenlist.json';
3
+ import { tokenlist } from '@bgd-labs/aave-address-book';
4
4
  import { aaveLendingPool } from './config';
5
5
 
6
6
  function getTokensForPool(pool: string): aToken[] {
7
- return tokens
7
+ return tokenlist.tokens
8
8
  .filter(
9
9
  token =>
10
10
  token.extensions?.pool &&
11
- token.extensions?.pool.toLowerCase() === pool.toLowerCase(),
11
+ token.extensions?.pool.toLowerCase() === pool.toLowerCase() &&
12
+ token.tags.includes('aTokenV2'),
12
13
  )
13
14
  .map(token => ({
14
15
  aSymbol: token.symbol,
@@ -10,6 +10,7 @@ import {
10
10
  AaveV3Fantom,
11
11
  AaveV3Optimism,
12
12
  AaveV3Polygon,
13
+ AaveV3PolygonZkEvm,
13
14
  AaveV3Gnosis,
14
15
  } from '@bgd-labs/aave-address-book';
15
16
 
@@ -64,12 +65,12 @@ export const Config: DexConfigMap<DexParam> = {
64
65
  poolAddress: AaveV3BNB.POOL,
65
66
  wethGatewayAddress: AaveV3BNB.WETH_GATEWAY,
66
67
  },
67
- // [Network.ZKEVM]: {
68
- // ethGasCost: 246 * 100,
69
- // lendingGasCost: 328 * 1000,
70
- // poolAddress: AaveV3PolygonZkEvm.POOL,
71
- // wethGatewayAddress: AaveV3PolygonZkEvm.WETH_GATEWAY,
72
- // },
68
+ [Network.ZKEVM]: {
69
+ ethGasCost: 246 * 100,
70
+ lendingGasCost: 328 * 1000,
71
+ poolAddress: AaveV3PolygonZkEvm.POOL,
72
+ wethGatewayAddress: AaveV3PolygonZkEvm.WETH_GATEWAY,
73
+ },
73
74
  [Network.GNOSIS]: {
74
75
  ethGasCost: 246 * 100,
75
76
  lendingGasCost: 328 * 1000,
@@ -19,16 +19,6 @@ import { FluidDex } from './fluid-dex';
19
19
  README
20
20
  ======
21
21
 
22
- This test script should add e2e tests for FluidDex. The tests
23
- should cover as many cases as possible. Most of the DEXes follow
24
- the following test structure:
25
- - DexName
26
- - ForkName + Network
27
- - ContractMethod
28
- - ETH -> Token swap
29
- - Token -> ETH swap
30
- - Token -> Token swap
31
-
32
22
  The template already enumerates the basic structure which involves
33
23
  testing simpleSwap, multiSwap, megaSwap contract methods for
34
24
  ETH <> TOKEN and TOKEN <> TOKEN swaps. You should replace tokenA and
@@ -118,24 +108,6 @@ describe('FluidDex E2E', () => {
118
108
  describe('Mainnet', () => {
119
109
  const network = Network.MAINNET;
120
110
 
121
- // TODO: Uncomment & test when the issue is resolved. Currently no price as expected.
122
- // describe.only('FLUID -> ETH', () => {
123
- // const tokenASymbol: string = 'FLUID';
124
- // const tokenBSymbol: string = 'ETH';
125
- //
126
- // const tokenAAmount: string = '160097047322810379';
127
- // const tokenBAmount: string = '79923068733005505624';
128
- //
129
- // testForNetwork(
130
- // network,
131
- // dexKey,
132
- // tokenASymbol,
133
- // tokenBSymbol,
134
- // tokenAAmount,
135
- // tokenBAmount,
136
- // );
137
- // });
138
-
139
111
  describe('ETH -> INST', () => {
140
112
  const tokenASymbol: string = 'ETH';
141
113
  const tokenBSymbol: string = 'INST';
@@ -48,11 +48,6 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
48
48
 
49
49
  pools: FluidDexPool[] = [];
50
50
 
51
- // temporarily limit FLUID-ETH Dex Pool.
52
- restrictedIds: string[] = [
53
- 'FluidDex_0xc800b0e15c40a1ff0539218100c86f4c1bac8d9c',
54
- ];
55
-
56
51
  eventPools: FluidDexEventPool[] = [];
57
52
 
58
53
  readonly factory: FluidDexFactory;
@@ -115,9 +110,8 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
115
110
  // implement this function
116
111
  async initializePricing(blockNumber: number) {
117
112
  await this.factory.initialize(blockNumber);
118
- this.pools = (await this.fetchFluidDexPools(blockNumber)).filter(
119
- pool => !this.restrictedIds.includes(pool.id),
120
- );
113
+ this.pools = await this.fetchFluidDexPools(blockNumber);
114
+
121
115
  this.eventPools = await Promise.all(
122
116
  this.pools.map(async pool => {
123
117
  const eventPool = new FluidDexEventPool(
@@ -140,9 +134,7 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
140
134
  }
141
135
 
142
136
  protected onPoolCreatedUpdatePools(poolsFromFactory: readonly Pool[]) {
143
- this.pools = this.generateFluidDexPoolsFromPoolsFactory(
144
- poolsFromFactory,
145
- ).filter(pool => !this.restrictedIds.includes(pool.id));
137
+ this.pools = this.generateFluidDexPoolsFromPoolsFactory(poolsFromFactory);
146
138
  this.logger.info(`${this.dexKey}: pools list was updated ...`);
147
139
  }
148
140
 
@@ -182,9 +174,6 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
182
174
  // A pair must have 2 different tokens.
183
175
  if (srcAddress === destAddress) return [];
184
176
 
185
- this.pools = this.pools.filter(
186
- pool => !this.restrictedIds.includes(pool.id),
187
- );
188
177
  const pools = this.pools.filter(
189
178
  pool =>
190
179
  (srcAddress === pool.token0 && destAddress === pool.token1) ||
@@ -217,6 +206,12 @@ export class FluidDex extends SimpleExchange implements IDex<FluidDexData> {
217
206
  pools = pools.filter(pool => limitPools.includes(pool.id));
218
207
  }
219
208
 
209
+ // temporarily limit FLUID-ETH Dex Pool.
210
+ pools = pools.filter(
211
+ pool =>
212
+ pool.id != 'FluidDex_0xc800b0e15c40a1ff0539218100c86f4c1bac8d9c',
213
+ );
214
+
220
215
  if (!pools.length) return null;
221
216
 
222
217
  const liquidityProxyState = await this.liquidityProxy.getStateOrGenerate(
package/src/dex/index.ts CHANGED
@@ -85,7 +85,6 @@ import { EtherFi } from './etherfi';
85
85
  import { Spark } from './spark/spark';
86
86
  import { VelodromeSlipstream } from './uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream';
87
87
  import { AaveV3Stata } from './aave-v3-stata/aave-v3-stata';
88
- import { AaveV3StataV2 } from './aave-v3-stata-v2/aave-v3-stata-v2';
89
88
  import { OSwap } from './oswap/oswap';
90
89
  import { FluidDex } from './fluid-dex/fluid-dex';
91
90
  import { ConcentratorArusd } from './concentrator-arusd/concentrator-arusd';
@@ -101,6 +100,7 @@ import { Stader } from './stader/stader';
101
100
  import { UsualBond } from './usual/usual-bond';
102
101
  import { UsualMWrappedM } from './usual/usual-m-wrapped-m';
103
102
  import { UsualMUsd0 } from './usual/usual-m-usd0';
103
+ import { UsualPP } from './usual-pp/usual-pp';
104
104
 
105
105
  const LegacyDexes = [
106
106
  CurveV2,
@@ -183,7 +183,6 @@ const Dexes = [
183
183
  PharaohV1,
184
184
  Spark,
185
185
  AaveV3Stata,
186
- AaveV3StataV2,
187
186
  OSwap,
188
187
  ConcentratorArusd,
189
188
  FxProtocolRusd,
@@ -196,6 +195,7 @@ const Dexes = [
196
195
  FluidDex,
197
196
  UsualMWrappedM,
198
197
  UsualMUsd0,
198
+ UsualPP,
199
199
  ];
200
200
 
201
201
  export type LegacyDexConstructor = new (dexHelper: IDexHelper) => IDexTxBuilder<
@@ -265,15 +265,15 @@ export class PancakeSwapV3EventPool extends StatefulEventSubscriber<PoolState> {
265
265
  }
266
266
 
267
267
  _setState(state: any, blockNumber: number, reason?: string): void {
268
- // if (this.parentName === 'PancakeswapV3') {
269
- // this.logger.info(
270
- // `PancakeV3: Setting state: ${!!state ? 'non-empty' : 'empty'} for '${
271
- // this.name
272
- // }' for bn: '${blockNumber}' due to reason: '${
273
- // reason ?? 'outside_of_event_subscriber'
274
- // }'`,
275
- // );
276
- // }
268
+ if (this.parentName === 'PancakeswapV3') {
269
+ this.logger.info(
270
+ `PancakeV3: Setting state: ${!!state ? 'non-empty' : 'empty'} for '${
271
+ this.name
272
+ }' for bn: '${blockNumber}' due to reason: '${
273
+ reason ?? 'outside_of_event_subscriber'
274
+ }'`,
275
+ );
276
+ }
277
277
  super._setState(state, blockNumber);
278
278
  }
279
279
 
@@ -2,13 +2,13 @@ import { DexParams } from './types';
2
2
  import { DexConfigMap } from '../../types';
3
3
  import { Network } from '../../constants';
4
4
 
5
- import { GhoEthereum, AaveSafetyModule } from '@bgd-labs/aave-address-book';
5
+ import { MiscEthereum } from '@bgd-labs/aave-address-book';
6
6
 
7
7
  export const StkGHOConfig: DexConfigMap<DexParams> = {
8
8
  StkGHO: {
9
9
  [Network.MAINNET]: {
10
- stkGHO: AaveSafetyModule.STK_GHO,
11
- GHO: GhoEthereum.GHO_TOKEN,
10
+ stkGHO: '0x1a88Df1cFe15Af22B3c4c783D4e6F7F9e0C1885d',
11
+ GHO: MiscEthereum.GHO_TOKEN,
12
12
  },
13
13
  },
14
14
  };
@@ -359,6 +359,32 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
359
359
  subgraphURL: 'Dimv1udMsJu1DqirVM4G2vNRvH8CWzWTn7GffQQCGAaq',
360
360
  },
361
361
  },
362
+ VelodromeSlipstream: {
363
+ [Network.OPTIMISM]: {
364
+ factory: '0x548118C7E0B865C2CfA94D15EC86B666468ac758',
365
+ quoter: '0xA2DEcF05c16537C702779083Fe067e308463CE45',
366
+ router: '0x93A3b44C38A8557E935B3e2549B2809a582c28EE',
367
+ supportedFees: SUPPORTED_FEES,
368
+ tickSpacings: [1n, 50n, 100n, 200n, 2000n],
369
+ tickSpacingsToFees: {
370
+ '1': 100n,
371
+ '50': 500n,
372
+ '100': 500n,
373
+ '200': 3000n,
374
+ '2000': 10000n,
375
+ },
376
+ stateMulticall: '0xc055b23319b3a140D4De2d0001bd0A885B3d7DbB',
377
+ stateMultiCallAbi: VelodromeSlipstreamMulticallABi as AbiItem[],
378
+ eventPoolImplementation: VelodromeSlipstreamEventPool,
379
+ factoryImplementation: VelodromeSlipstreamFactory,
380
+ decodeStateMultiCallResultWithRelativeBitmaps:
381
+ decodeStateMultiCallResultWithRelativeBitmapsForVelodromeSlipstream,
382
+ uniswapMulticall: '0x1F98415757620B543A52E61c46B32eB19261F984',
383
+ chunksCount: 10,
384
+ initRetryFrequency: 10,
385
+ initHash: '0xE0A596c403E854FFb9C828aB4f07eEae04A05D37', // pool implementation address from factory contract is used instead of initHash here
386
+ },
387
+ },
362
388
  VelodromeSlipstreamNewFactory: {
363
389
  [Network.OPTIMISM]: {
364
390
  factory: '0xCc0bDDB707055e04e497aB22a59c2aF4391cd12F',
@@ -269,15 +269,15 @@ export class UniswapV3EventPool extends StatefulEventSubscriber<PoolState> {
269
269
  }
270
270
 
271
271
  _setState(state: any, blockNumber: number, reason?: string): void {
272
- // if (this.parentName === 'UniswapV3') {
273
- // this.logger.info(
274
- // `UniV3: Setting state: '${!!state ? 'non-empty' : 'empty'}' for '${
275
- // this.name
276
- // }' for bn: '${blockNumber}' due to reason: '${
277
- // reason ?? 'outside_of_event_subscriber'
278
- // }'`,
279
- // );
280
- // }
272
+ if (this.parentName === 'UniswapV3') {
273
+ this.logger.info(
274
+ `UniV3: Setting state: '${!!state ? 'non-empty' : 'empty'}' for '${
275
+ this.name
276
+ }' for bn: '${blockNumber}' due to reason: '${
277
+ reason ?? 'outside_of_event_subscriber'
278
+ }'`,
279
+ );
280
+ }
281
281
  super._setState(state, blockNumber);
282
282
  }
283
283
 
@@ -72,7 +72,7 @@ export class Usual extends SimpleExchange implements IDex<UsualBondData> {
72
72
  }
73
73
 
74
74
  if (this.isValidTokens(srcTokenAddress, destTokenAddress)) {
75
- return [`${this.dexKey}_${this.config.toToken}`];
75
+ return [`${this.dexKey}_${this.config.toToken.address}`];
76
76
  }
77
77
 
78
78
  return [];
@@ -0,0 +1,18 @@
1
+ import { Network } from '../../constants';
2
+ import { DexConfigMap } from '../../types';
3
+ import { DexParams } from './types';
4
+
5
+ export const Config: DexConfigMap<DexParams> = {
6
+ UsualPP: {
7
+ [Network.MAINNET]: {
8
+ USD0: {
9
+ address: '0x73a15fed60bf67631dc6cd7bc5b6e8da8190acf5',
10
+ decimals: 18,
11
+ },
12
+ USD0PP: {
13
+ address: '0x35d8949372d46b7a3d5a56006ae77b215fc69bc0',
14
+ decimals: 18,
15
+ },
16
+ },
17
+ },
18
+ };
@@ -0,0 +1,77 @@
1
+ import _ from 'lodash';
2
+ import { Interface } from '@ethersproject/abi';
3
+ import { IDexHelper } from '../../dex-helper';
4
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
+ import { Address, Log, Logger } from '../../types';
6
+ import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
7
+ import { PoolState } from './types';
8
+ import { getOnChainState } from './utils';
9
+
10
+ export class UsualPool extends StatefulEventSubscriber<PoolState> {
11
+ decoder = (log: Log) => this.poolInterface.parseLog(log);
12
+
13
+ constructor(
14
+ parentName: string,
15
+ protected dexHelper: IDexHelper,
16
+ private poolAddress: Address,
17
+ private poolInterface: Interface,
18
+ logger: Logger,
19
+ ) {
20
+ super(parentName, 'UsualPool', dexHelper, logger);
21
+ this.addressesSubscribed = [poolAddress];
22
+ }
23
+
24
+ protected processLog(
25
+ state: DeepReadonly<PoolState>,
26
+ log: Readonly<Log>,
27
+ ): AsyncOrSync<DeepReadonly<PoolState> | null> {
28
+ const event = this.decoder(log);
29
+ const _state: PoolState = _.cloneDeep(state);
30
+ if (event.name === 'FloorPriceUpdated') {
31
+ _state.price = BigInt(event.args.newFloorPrice);
32
+ return _state;
33
+ }
34
+ return null;
35
+ }
36
+
37
+ async generateState(
38
+ blockNumber: number | 'latest' = 'latest',
39
+ ): Promise<DeepReadonly<PoolState>> {
40
+ const state = await getOnChainState(
41
+ this.dexHelper.multiContract,
42
+ this.poolAddress,
43
+ this.poolInterface,
44
+ blockNumber,
45
+ );
46
+ return state;
47
+ }
48
+
49
+ async getPrice(blockNumber: number): Promise<bigint> {
50
+ const state = await this.getOrGenerateState(blockNumber);
51
+ if (!state) throw new Error('Cannot compute state');
52
+ return state.price;
53
+ }
54
+
55
+ async getOrGenerateState(
56
+ blockNumber: number,
57
+ ): Promise<DeepReadonly<PoolState> | null> {
58
+ const state = this.getState(blockNumber);
59
+ if (state) {
60
+ return state;
61
+ }
62
+
63
+ this.logger.debug(
64
+ `No state found for ${this.addressesSubscribed[0]}, generating new one`,
65
+ );
66
+ const newState = await this.generateState(blockNumber);
67
+
68
+ if (!newState) {
69
+ this.logger.debug(
70
+ `Could not regenerate state for ${this.addressesSubscribed[0]}`,
71
+ );
72
+ return null;
73
+ }
74
+ this.setState(newState, blockNumber);
75
+ return newState;
76
+ }
77
+ }
@@ -0,0 +1,12 @@
1
+ import { Address } from '../../types';
2
+
3
+ export type PoolState = {
4
+ price: bigint;
5
+ };
6
+
7
+ export type UsualPPData = {};
8
+
9
+ export type DexParams = {
10
+ USD0: { address: Address; decimals: number };
11
+ USD0PP: { address: Address; decimals: number };
12
+ };
@@ -0,0 +1,70 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+
4
+ import { Network } from '../../constants';
5
+ import { DummyDexHelper } from '../../dex-helper/index';
6
+ import { testEventSubscriber } from '../../../tests/utils-events';
7
+ import { PoolState } from './types';
8
+ import { Config } from './config';
9
+ import { UsualPool } from './pool';
10
+ import { PoolConfig } from '../curve-v1/types';
11
+ import UsualPoolAbi from '../../abi/usual-pp/abi.json';
12
+ import { Interface } from '@ethersproject/abi';
13
+
14
+ jest.setTimeout(50 * 1000);
15
+ const dexKey = 'UsualPP';
16
+ const network = Network.MAINNET;
17
+ const config = Config[dexKey][network];
18
+ const dexHelper = new DummyDexHelper(network);
19
+ const logger = dexHelper.getLogger(dexKey);
20
+
21
+ async function fetchPoolState(
22
+ usualPool: UsualPool,
23
+ blockNumber: number,
24
+ ): Promise<PoolState> {
25
+ return usualPool.generateState(blockNumber);
26
+ }
27
+
28
+ function compareState(state: PoolState, expectedState: PoolState) {
29
+ expect(state).toEqual(expectedState);
30
+ }
31
+
32
+ describe('UsualPP Event', function () {
33
+ const blockNumbers: { [eventName: string]: number[] } = {
34
+ FloorPriceUpdated: [21589702],
35
+ };
36
+
37
+ describe('UsualPool', function () {
38
+ let usualPool: UsualPool;
39
+ let blockNumber: number;
40
+
41
+ const usualPoolIface = new Interface(UsualPoolAbi);
42
+
43
+ beforeAll(async function () {
44
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
45
+ });
46
+
47
+ Object.keys(blockNumbers).forEach((event: string) => {
48
+ blockNumbers[event].forEach((blockNumber: number) => {
49
+ it(`Should return the correct state after the ${blockNumber}:${event}`, async function () {
50
+ usualPool = new UsualPool(
51
+ dexKey,
52
+ dexHelper,
53
+ config.USD0PP.address,
54
+ usualPoolIface,
55
+ logger,
56
+ );
57
+ await testEventSubscriber(
58
+ usualPool,
59
+ usualPool.addressesSubscribed,
60
+ (_blockNumber: number) => fetchPoolState(usualPool, _blockNumber),
61
+ blockNumber,
62
+ `${dexKey}_${config.USD0PP.address}`,
63
+ dexHelper.provider,
64
+ compareState,
65
+ );
66
+ });
67
+ });
68
+ });
69
+ });
70
+ });
@@ -0,0 +1,143 @@
1
+ /* eslint-disable no-console */
2
+ import dotenv from 'dotenv';
3
+ dotenv.config();
4
+
5
+ import { Interface } from '@ethersproject/abi';
6
+ import { DummyDexHelper } from '../../dex-helper/index';
7
+ import { Network, SwapSide } from '../../constants';
8
+ import { BI_POWS } from '../../bigint-constants';
9
+ import {
10
+ checkPoolPrices,
11
+ checkConstantPoolPrices,
12
+ checkPoolsLiquidity,
13
+ } from '../../../tests/utils';
14
+ import { Tokens } from '../../../tests/constants-e2e';
15
+ import { UsualPP } from './usual-pp';
16
+
17
+ async function testPricingOnNetwork(
18
+ usual: UsualPP,
19
+ network: Network,
20
+ dexKey: string,
21
+ blockNumber: number,
22
+ srcTokenSymbol: string,
23
+ destTokenSymbol: string,
24
+ side: SwapSide,
25
+ amounts: bigint[],
26
+ funcNameToCheck: string,
27
+ ) {
28
+ const networkTokens = Tokens[network];
29
+
30
+ console.log(amounts);
31
+
32
+ const pools = await usual.getPoolIdentifiers(
33
+ networkTokens[srcTokenSymbol],
34
+ networkTokens[destTokenSymbol],
35
+ side,
36
+ blockNumber,
37
+ );
38
+ console.log(
39
+ `${srcTokenSymbol} <> ${destTokenSymbol} Pool Identifiers: `,
40
+ pools,
41
+ );
42
+
43
+ expect(pools.length).toBeGreaterThan(0);
44
+
45
+ const poolPrices = await usual.getPricesVolume(
46
+ networkTokens[srcTokenSymbol],
47
+ networkTokens[destTokenSymbol],
48
+ amounts,
49
+ side,
50
+ blockNumber,
51
+ pools,
52
+ );
53
+ console.log(
54
+ `${srcTokenSymbol} <> ${destTokenSymbol} Pool Prices: `,
55
+ poolPrices,
56
+ );
57
+
58
+ expect(poolPrices).not.toBeNull();
59
+ // Check if onchain pricing equals to calculated ones
60
+ }
61
+
62
+ describe('UsualPP', function () {
63
+ const dexKey = 'UsualPP';
64
+ let blockNumber: number;
65
+ let usualPP: UsualPP;
66
+
67
+ describe('Mainnet', () => {
68
+ const network = Network.MAINNET;
69
+ const dexHelper = new DummyDexHelper(network);
70
+
71
+ // Don't forget to update relevant tokens in constant-e2e.ts
72
+
73
+ const amountsForSell = [
74
+ 0n,
75
+ 1n * BI_POWS[18],
76
+ 2n * BI_POWS[18],
77
+ 3n * BI_POWS[18],
78
+ 4n * BI_POWS[18],
79
+ 5n * BI_POWS[18],
80
+ 6n * BI_POWS[18],
81
+ 7n * BI_POWS[18],
82
+ 8n * BI_POWS[18],
83
+ 9n * BI_POWS[18],
84
+ 10n * BI_POWS[18],
85
+ ];
86
+
87
+ beforeAll(async () => {
88
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
89
+ usualPP = new UsualPP(network, dexKey, dexHelper);
90
+ if (usualPP.initializePricing) {
91
+ await usualPP.initializePricing(blockNumber);
92
+ }
93
+ });
94
+
95
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
96
+ await testPricingOnNetwork(
97
+ usualPP,
98
+ network,
99
+ dexKey,
100
+ blockNumber,
101
+ 'USD0++',
102
+ 'USD0',
103
+ SwapSide.SELL,
104
+ amountsForSell,
105
+ '',
106
+ );
107
+ });
108
+
109
+ it('getTopPoolsForToken: USD0', async function () {
110
+ const tokenA = Tokens[network]['USD0'];
111
+ const dexHelper = new DummyDexHelper(network);
112
+ const usualPP = new UsualPP(network, dexKey, dexHelper);
113
+
114
+ const poolLiquidity = await usualPP.getTopPoolsForToken(
115
+ tokenA.address,
116
+ 10,
117
+ );
118
+ console.log(
119
+ `${tokenA.symbol} Top Pools:`,
120
+ JSON.stringify(poolLiquidity, null, 2),
121
+ );
122
+
123
+ checkPoolsLiquidity(poolLiquidity, tokenA.address, dexKey);
124
+ });
125
+
126
+ it('getTopPoolsForToken: USD0++', async function () {
127
+ const tokenA = Tokens[network]['USD0++'];
128
+ const dexHelper = new DummyDexHelper(network);
129
+ const usualPP = new UsualPP(network, dexKey, dexHelper);
130
+
131
+ const poolLiquidity = await usualPP.getTopPoolsForToken(
132
+ tokenA.address,
133
+ 10,
134
+ );
135
+ console.log(
136
+ `${tokenA.symbol} Top Pools:`,
137
+ JSON.stringify(poolLiquidity, null, 2),
138
+ );
139
+
140
+ checkPoolsLiquidity(poolLiquidity, tokenA.address, dexKey);
141
+ });
142
+ });
143
+ });