@paraswap/dex-lib 4.0.18 → 4.0.19

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 (269) 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-v1/aave-v1.js +1 -0
  9. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  10. package/build/dex/aave-v2/tokens-avalanche.json +44 -0
  11. package/build/dex/aave-v2/tokens-mainnet.json +188 -0
  12. package/build/dex/aave-v2/tokens-polygon.json +44 -0
  13. package/build/dex/bProtocol.d.ts +18 -0
  14. package/build/dex/bProtocol.js +39 -0
  15. package/build/dex/bProtocol.js.map +1 -0
  16. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +729 -0
  17. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +732 -0
  18. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +1 -0
  19. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +1406 -0
  20. package/build/dex/balancer-v3/abi/balancerRouter.js +1175 -0
  21. package/build/dex/balancer-v3/abi/balancerRouter.js.map +1 -0
  22. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +2081 -0
  23. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +1851 -0
  24. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +1 -0
  25. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +34 -0
  26. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +406 -0
  27. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +1 -0
  28. package/build/dex/bancor.d.ts +26 -0
  29. package/build/dex/bancor.js +58 -0
  30. package/build/dex/bancor.js.map +1 -0
  31. package/build/dex/compound.d.ts +18 -0
  32. package/build/dex/compound.js +46 -0
  33. package/build/dex/compound.js.map +1 -0
  34. package/build/dex/curve-v2.d.ts +58 -0
  35. package/build/dex/curve-v2.js +180 -0
  36. package/build/dex/curve-v2.js.map +1 -0
  37. package/build/dex/dodo-v1.d.ts +33 -0
  38. package/build/dex/dodo-v1.js +63 -0
  39. package/build/dex/dodo-v1.js.map +1 -0
  40. package/build/dex/inception/inception-event-pool.d.ts +4 -4
  41. package/build/dex/inception/inception-event-pool.js +7 -9
  42. package/build/dex/inception/inception-event-pool.js.map +1 -1
  43. package/build/dex/inception/inception.d.ts +6 -6
  44. package/build/dex/inception/inception.js +16 -40
  45. package/build/dex/inception/inception.js.map +1 -1
  46. package/build/dex/inception/utils.d.ts +1 -0
  47. package/build/dex/inception/utils.js +22 -1
  48. package/build/dex/inception/utils.js.map +1 -1
  49. package/build/dex/index.js +2 -0
  50. package/build/dex/index.js.map +1 -1
  51. package/build/dex/lido.d.ts +19 -0
  52. package/build/dex/lido.js +42 -0
  53. package/build/dex/lido.js.map +1 -0
  54. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  55. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  56. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  57. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  58. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  59. package/build/dex/onebit.d.ts +25 -0
  60. package/build/dex/onebit.js +42 -0
  61. package/build/dex/onebit.js.map +1 -0
  62. package/build/dex/platypus/platypus.js +17 -3
  63. package/build/dex/platypus/platypus.js.map +1 -1
  64. package/build/dex/smoothy.d.ts +26 -0
  65. package/build/dex/smoothy.js +48 -0
  66. package/build/dex/smoothy.js.map +1 -0
  67. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  68. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  69. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  70. package/build/dex/stable-pool.d.ts +28 -0
  71. package/build/dex/stable-pool.js +55 -0
  72. package/build/dex/stable-pool.js.map +1 -0
  73. package/build/dex/swaap-v1/swaap-v1.js +4 -0
  74. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  75. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.d.ts +7 -0
  76. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js +20 -0
  77. package/build/dex/trader-joe-v2.1/trader-joe-v2.1-new.js.map +1 -0
  78. package/build/dex/trader-joe-v2.1.d.ts +43 -0
  79. package/build/dex/trader-joe-v2.1.js +79 -0
  80. package/build/dex/trader-joe-v2.1.js.map +1 -0
  81. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  82. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  83. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  84. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  85. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  86. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  87. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +4 -0
  88. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +43 -0
  89. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +1 -0
  90. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +1 -0
  91. package/build/dex/uniswap-v3/uniswap-v3-worker.js +10 -0
  92. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +1 -0
  93. package/build/dex/usual/usual-m-smart-m.d.ts +17 -0
  94. package/build/dex/usual/usual-m-smart-m.js +50 -0
  95. package/build/dex/usual/usual-m-smart-m.js.map +1 -0
  96. package/build/dex/usual/usual.js +1 -1
  97. package/build/dex/usual/usual.js.map +1 -1
  98. package/build/dex/usual-m-smart-m/config.d.ts +3 -0
  99. package/build/dex/usual-m-smart-m/config.js +13 -0
  100. package/build/dex/usual-m-smart-m/config.js.map +1 -0
  101. package/build/dex/usual-m-smart-m/types.d.ts +7 -0
  102. package/build/dex/usual-m-smart-m/types.js +3 -0
  103. package/build/dex/usual-m-smart-m/types.js.map +1 -0
  104. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +35 -0
  105. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +161 -0
  106. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +1 -0
  107. package/build/dex/usual-m-usd0/config.d.ts +3 -0
  108. package/build/dex/usual-m-usd0/config.js +14 -0
  109. package/build/dex/usual-m-usd0/config.js.map +1 -0
  110. package/build/dex/usual-m-usd0/types.d.ts +8 -0
  111. package/build/dex/usual-m-usd0/types.js +3 -0
  112. package/build/dex/usual-m-usd0/types.js.map +1 -0
  113. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +35 -0
  114. package/build/dex/usual-m-usd0/usual-m-usd0.js +159 -0
  115. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +1 -0
  116. package/build/dex/usual-pp/config.d.ts +3 -0
  117. package/build/dex/usual-pp/config.js +19 -0
  118. package/build/dex/usual-pp/config.js.map +1 -0
  119. package/build/dex/usual-pp/pool.d.ts +17 -0
  120. package/build/dex/usual-pp/pool.js +57 -0
  121. package/build/dex/usual-pp/pool.js.map +1 -0
  122. package/build/dex/usual-pp/types.d.ts +15 -0
  123. package/build/dex/usual-pp/types.js +3 -0
  124. package/build/dex/usual-pp/types.js.map +1 -0
  125. package/build/dex/usual-pp/usual-pp.d.ts +35 -0
  126. package/build/dex/usual-pp/usual-pp.js +167 -0
  127. package/build/dex/usual-pp/usual-pp.js.map +1 -0
  128. package/build/dex/usual-pp/utils.d.ts +4 -0
  129. package/build/dex/usual-pp/utils.js +18 -0
  130. package/build/dex/usual-pp/utils.js.map +1 -0
  131. package/package.json +1 -1
  132. package/src/abi/usual-pp/abi.json +750 -0
  133. package/src/dex/fluid-dex/fluid-dex-e2e.test.ts +0 -10
  134. package/src/dex/index.ts +2 -0
  135. package/src/dex/usual/usual.ts +1 -1
  136. package/src/dex/usual-pp/config.ts +18 -0
  137. package/src/dex/usual-pp/pool.ts +77 -0
  138. package/src/dex/usual-pp/types.ts +12 -0
  139. package/src/dex/usual-pp/usual-events.test.ts +70 -0
  140. package/src/dex/usual-pp/usual-integration.test.ts +143 -0
  141. package/src/dex/usual-pp/usual-pp.e2e.test.ts +76 -0
  142. package/src/dex/usual-pp/usual-pp.ts +207 -0
  143. package/src/dex/usual-pp/utils.ts +27 -0
  144. package/build/abi/Aave_GSM.json +0 -751
  145. package/build/abi/Balancer.json +0 -257
  146. package/build/abi/BalancerV2.json +0 -1179
  147. package/build/abi/RamsesV2Pool.abi.json +0 -1554
  148. package/build/abi/RamsesV2Quoter.abi.json +0 -274
  149. package/build/abi/UniswapV2Router.json +0 -397
  150. package/build/abi/angle-transmuter/ChainlinkEACAggregatorProxy.json +0 -509
  151. package/build/abi/curve-v1/CurveBUSDv2.abi.json +0 -1356
  152. package/build/abi/curve-v1/CurveTokenV1.json +0 -305
  153. package/build/abi/curve-v1/CurveTokenV2.json +0 -318
  154. package/build/abi/curve-v1/CurveV1StableNg.json +0 -1452
  155. package/build/abi/curve-v1/CurveV2Swap.json +0 -700
  156. package/build/abi/curve-v1/FactoryCryptoRegistry.json +0 -316
  157. package/build/abi/curve-v1/FactoryRegistry.json +0 -508
  158. package/build/abi/curve-v1/StableSwapAave.json +0 -1152
  159. package/build/abi/curve-v1/StableSwapBUSD.json +0 -814
  160. package/build/abi/curve-v1/StableSwapCompound.json +0 -814
  161. package/build/abi/curve-v1/StableSwapIDLE.json +0 -1253
  162. package/build/abi/curve-v1/StableSwapPax.json +0 -865
  163. package/build/abi/curve-v1/StableSwapSnow.json +0 -900
  164. package/build/abi/curve-v1/StableSwapUSDN.json +0 -1004
  165. package/build/abi/curve-v1/StableSwapUSDT.json +0 -814
  166. package/build/abi/curve-v1/StableSwapY.json +0 -814
  167. package/build/abi/inception/inception-ineth.json +0 -609
  168. package/build/abi/kyberdmm/kyber-storage.abi.json +0 -824
  169. package/build/abi/kyberdmm.abi.json +0 -1148
  170. package/build/abi/maverick-v2/MaverickV2Quoter.json +0 -278
  171. package/build/abi/nerve/nerve-metapool.json +0 -790
  172. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  173. package/build/abi/velodrome-slipstream/VelodromeSlipstreamQuoterV2.abi.json +0 -267
  174. package/build/dex/balancer-v1/balancer-pools.json +0 -33333
  175. package/build/dex/bebop/websocket-fetcher.d.ts +0 -35
  176. package/build/dex/bebop/websocket-fetcher.js +0 -87
  177. package/build/dex/bebop/websocket-fetcher.js.map +0 -1
  178. package/build/dex/idle-dao/idle-dao-pool.d.ts +0 -56
  179. package/build/dex/idle-dao/idle-dao-pool.js +0 -176
  180. package/build/dex/idle-dao/idle-dao-pool.js.map +0 -1
  181. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +0 -16
  182. package/build/dex/idle-dao/idle-dao-pooling-pool.js +0 -57
  183. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +0 -1
  184. package/build/dex/idle-dao/scripts.d.ts +0 -9
  185. package/build/dex/idle-dao/scripts.js +0 -552
  186. package/build/dex/idle-dao/scripts.js.map +0 -1
  187. package/build/dex/inception/inception-native.d.ts +0 -43
  188. package/build/dex/inception/inception-native.js +0 -131
  189. package/build/dex/inception/inception-native.js.map +0 -1
  190. package/build/dex/inception/inception-pool.d.ts +0 -18
  191. package/build/dex/inception/inception-pool.js +0 -32
  192. package/build/dex/inception/inception-pool.js.map +0 -1
  193. package/build/dex/inception/inception-price-feed.d.ts +0 -19
  194. package/build/dex/inception/inception-price-feed.js +0 -51
  195. package/build/dex/inception/inception-price-feed.js.map +0 -1
  196. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +0 -16
  197. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -16
  198. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -16
  199. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -16
  200. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -16
  201. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -16
  202. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -16
  203. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdt-usdc-dai.json +0 -16
  204. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-eth-usdc.json +0 -9
  205. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-eth.json +0 -9
  206. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-wbtc.json +0 -9
  207. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-eth-steth.json +0 -9
  208. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-steth-eth.json +0 -9
  209. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-usdc-usdt.json +0 -9
  210. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-eth-usdc.json +0 -9
  211. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-eth.json +0 -9
  212. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-usdt.json +0 -9
  213. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -12
  214. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -7
  215. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -7
  216. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -7
  217. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -7
  218. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -12
  219. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-eth-usdc.json +0 -7
  220. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-usdc-eth.json +0 -7
  221. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +0 -78
  222. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +0 -81
  223. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +0 -78
  224. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +0 -78
  225. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-dai-usdc-eth.json +0 -81
  226. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-eth-usdc-dai.json +0 -81
  227. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +0 -81
  228. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdt-usdc-dai.json +0 -81
  229. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-eth-usdc.json +0 -64
  230. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-eth.json +0 -85
  231. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-wbtc.json +0 -64
  232. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-eth-steth.json +0 -52
  233. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-steth-eth.json +0 -52
  234. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-usdc-usdt.json +0 -52
  235. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-eth-usdc.json +0 -55
  236. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-eth.json +0 -55
  237. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-usdt.json +0 -55
  238. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -23
  239. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -37
  240. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -23
  241. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -23
  242. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -51
  243. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-univ3-usdt-dai-eth.json +0 -58
  244. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -23
  245. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -23
  246. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -9
  247. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -16
  248. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +0 -23
  249. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -12
  250. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -7
  251. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -12
  252. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -12
  253. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -7
  254. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-univ3-usdt-dai-eth.json +0 -7
  255. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -7
  256. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -7
  257. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -7
  258. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -7
  259. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +0 -130
  260. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +0 -136
  261. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +0 -100
  262. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +0 -100
  263. package/build/executor/fixtures/executor02/routes/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +0 -166
  264. package/build/executor/fixtures/executor02/routes/price-route-multiswap-univ3-usdt-dai-eth.json +0 -190
  265. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +0 -114
  266. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +0 -114
  267. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +0 -55
  268. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +0 -73
  269. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +0 -82
@@ -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
package/src/dex/index.ts CHANGED
@@ -101,6 +101,7 @@ import { Stader } from './stader/stader';
101
101
  import { UsualBond } from './usual/usual-bond';
102
102
  import { UsualMWrappedM } from './usual/usual-m-wrapped-m';
103
103
  import { UsualMUsd0 } from './usual/usual-m-usd0';
104
+ import { UsualPP } from './usual-pp/usual-pp';
104
105
 
105
106
  const LegacyDexes = [
106
107
  CurveV2,
@@ -196,6 +197,7 @@ const Dexes = [
196
197
  FluidDex,
197
198
  UsualMWrappedM,
198
199
  UsualMUsd0,
200
+ UsualPP,
199
201
  ];
200
202
 
201
203
  export type LegacyDexConstructor = new (dexHelper: IDexHelper) => IDexTxBuilder<
@@ -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
+ });
@@ -0,0 +1,76 @@
1
+ /* eslint-disable no-console */
2
+ import dotenv from 'dotenv';
3
+ dotenv.config();
4
+
5
+ import { testE2E } from '../../../tests/utils-e2e';
6
+ import { Tokens, Holders } from '../../../tests/constants-e2e';
7
+ import { Network, ContractMethod, SwapSide } from '../../constants';
8
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
9
+ import { generateConfig } from '../../config';
10
+
11
+ function testForNetwork(
12
+ network: Network,
13
+ dexKey: string,
14
+ tokenASymbol: string,
15
+ tokenBSymbol: string,
16
+ tokenAAmount: string,
17
+ tokenBAmount: string,
18
+ ) {
19
+ const provider = new StaticJsonRpcProvider(
20
+ generateConfig(network).privateHttpProvider,
21
+ network,
22
+ );
23
+ const tokens = Tokens[network];
24
+ const holders = Holders[network];
25
+
26
+ const sideToContractMethods = new Map([
27
+ [SwapSide.SELL, [ContractMethod.swapExactAmountIn]],
28
+ ]);
29
+
30
+ describe(`${network}`, () => {
31
+ sideToContractMethods.forEach((contractMethods, side) =>
32
+ describe(`${side}`, () => {
33
+ contractMethods.forEach((contractMethod: ContractMethod) => {
34
+ describe(`${contractMethod}`, () => {
35
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
36
+ await testE2E(
37
+ tokens[tokenASymbol],
38
+ tokens[tokenBSymbol],
39
+ holders[tokenASymbol],
40
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
41
+ side,
42
+ dexKey,
43
+ contractMethod,
44
+ network,
45
+ provider,
46
+ );
47
+ });
48
+ });
49
+ });
50
+ }),
51
+ );
52
+ });
53
+ }
54
+
55
+ describe('UsualPP E2E', () => {
56
+ const dexKey = 'UsualPP';
57
+
58
+ describe('Mainnet', () => {
59
+ const network = Network.MAINNET;
60
+
61
+ const tokenASymbol: string = 'USD0++';
62
+ const tokenBSymbol: string = 'USD0';
63
+
64
+ const tokenAAmount: string = '1000000000000000000';
65
+ const tokenBAmount: string = '1000000000000000000';
66
+
67
+ testForNetwork(
68
+ network,
69
+ dexKey,
70
+ tokenASymbol,
71
+ tokenBSymbol,
72
+ tokenAAmount,
73
+ tokenBAmount,
74
+ );
75
+ });
76
+ });
@@ -0,0 +1,207 @@
1
+ import {
2
+ Token,
3
+ Address,
4
+ ExchangePrices,
5
+ PoolPrices,
6
+ AdapterExchangeParam,
7
+ Logger,
8
+ PoolLiquidity,
9
+ DexExchangeParam,
10
+ NumberAsString,
11
+ } from '../../types';
12
+ import { SwapSide, Network } from '../../constants';
13
+ import * as CALLDATA_GAS_COST from '../../calldata-gas-cost';
14
+ import { IDex } from '../idex';
15
+ import { IDexHelper } from '../../dex-helper/idex-helper';
16
+ import { SimpleExchange } from '../simple-exchange';
17
+ import { BI_POWS } from '../../bigint-constants';
18
+ import { DexParams, UsualPPData } from './types';
19
+ import { UsualPool } from './pool';
20
+ import { Interface } from '@ethersproject/abi';
21
+ import UsualPoolAbi from '../../abi/usual-pp/abi.json';
22
+ import { Config } from './config';
23
+ import { getDexKeysWithNetwork } from '../../utils';
24
+
25
+ export class UsualPP extends SimpleExchange implements IDex<UsualPPData> {
26
+ readonly hasConstantPriceLargeAmounts = false;
27
+ readonly needWrapNative = false;
28
+ readonly isFeeOnTransferSupported = false;
29
+
30
+ private usualPool: UsualPool;
31
+ private usualPoolIface: Interface;
32
+ private config: DexParams;
33
+
34
+ logger: Logger;
35
+
36
+ public static dexKeysWithNetwork: { key: string; networks: Network[] }[] =
37
+ getDexKeysWithNetwork(Config);
38
+
39
+ constructor(
40
+ readonly network: Network,
41
+ readonly dexKey: string,
42
+ readonly dexHelper: IDexHelper,
43
+ protected adapters = {},
44
+ ) {
45
+ super(dexHelper, dexKey);
46
+ this.config = Config[dexKey][network];
47
+ this.logger = dexHelper.getLogger(dexKey);
48
+ this.usualPoolIface = new Interface(UsualPoolAbi);
49
+ this.usualPool = new UsualPool(
50
+ this.dexKey,
51
+ dexHelper,
52
+ this.config.USD0PP.address,
53
+ this.usualPoolIface,
54
+ this.logger,
55
+ );
56
+ }
57
+
58
+ async initializePricing(blockNumber: number) {
59
+ await this.usualPool.initialize(blockNumber);
60
+ }
61
+
62
+ isUsd0PP(token: string) {
63
+ return token.toLowerCase() === this.config.USD0PP.address.toLowerCase();
64
+ }
65
+
66
+ isUsd0(token: string) {
67
+ return token.toLowerCase() === this.config.USD0.address.toLowerCase();
68
+ }
69
+
70
+ isValidTokens(srcToken: string, destToken: string) {
71
+ return this.isUsd0PP(srcToken) && this.isUsd0(destToken);
72
+ }
73
+
74
+ getAdapters() {
75
+ return null;
76
+ }
77
+
78
+ async getPoolIdentifiers(
79
+ srcToken: Token,
80
+ destToken: Token,
81
+ side: SwapSide,
82
+ blockNumber: number,
83
+ ): Promise<string[]> {
84
+ if (!srcToken || !destToken) {
85
+ this.logger.error('Source or destination token is undefined');
86
+ return [];
87
+ }
88
+
89
+ const srcTokenAddress = srcToken.address?.toLowerCase();
90
+ const destTokenAddress = destToken.address?.toLowerCase();
91
+
92
+ if (!srcTokenAddress || !destTokenAddress) {
93
+ this.logger.error('Source or destination token address is undefined');
94
+ return [];
95
+ }
96
+
97
+ if (this.isValidTokens(srcTokenAddress, destTokenAddress)) {
98
+ return [`${this.dexKey}_${this.config.USD0.address}`];
99
+ }
100
+
101
+ return [];
102
+ }
103
+
104
+ async getPricesVolume(
105
+ srcToken: Token,
106
+ destToken: Token,
107
+ amounts: bigint[],
108
+ side: SwapSide,
109
+ blockNumber: number,
110
+ limitPools?: string[],
111
+ ): Promise<null | ExchangePrices<UsualPPData>> {
112
+ if (side === SwapSide.BUY) {
113
+ return null;
114
+ }
115
+
116
+ const isValidSwap = this.isValidTokens(srcToken.address, destToken.address);
117
+
118
+ if (!isValidSwap) {
119
+ return null;
120
+ }
121
+
122
+ const price = await this.usualPool.getPrice(blockNumber);
123
+ const unitOut = price;
124
+
125
+ const amountsOut = amounts.map(
126
+ amount => (amount * price) / BI_POWS[this.config.USD0PP.decimals],
127
+ );
128
+
129
+ return [
130
+ {
131
+ unit: unitOut,
132
+ prices: amountsOut,
133
+ data: {},
134
+ poolAddresses: [this.config.USD0.address],
135
+ exchange: this.dexKey,
136
+ gasCost: 70000,
137
+ poolIdentifier: this.dexKey,
138
+ },
139
+ ];
140
+ }
141
+
142
+ getCalldataGasCost(poolPrices: PoolPrices<UsualPPData>): number | number[] {
143
+ return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
144
+ }
145
+
146
+ getAdapterParam(
147
+ srcToken: string,
148
+ destToken: string,
149
+ srcAmount: string,
150
+ destAmount: string,
151
+ data: UsualPPData,
152
+ side: SwapSide,
153
+ ): AdapterExchangeParam {
154
+ const payload = '0x';
155
+
156
+ return {
157
+ targetExchange: this.config.USD0.address,
158
+ payload,
159
+ networkFee: '0',
160
+ };
161
+ }
162
+
163
+ async getTopPoolsForToken(
164
+ tokenAddress: Address,
165
+ limit: number,
166
+ ): Promise<PoolLiquidity[]> {
167
+ const isUsd0PP = this.isUsd0PP(tokenAddress);
168
+ const isUsd0 = this.isUsd0(tokenAddress);
169
+
170
+ if (!(isUsd0PP || isUsd0)) return [];
171
+
172
+ return [
173
+ {
174
+ exchange: this.dexKey,
175
+ address: this.config.USD0PP.address,
176
+ connectorTokens: [isUsd0PP ? this.config.USD0 : this.config.USD0PP],
177
+ liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
178
+ },
179
+ ];
180
+ }
181
+
182
+ async getDexParam(
183
+ srcToken: Address,
184
+ destToken: Address,
185
+ srcAmount: NumberAsString,
186
+ destAmount: NumberAsString,
187
+ recipient: Address,
188
+ data: UsualPPData,
189
+ side: SwapSide,
190
+ ): Promise<DexExchangeParam> {
191
+ if (this.isUsd0PP(srcToken) && this.isUsd0(destToken)) {
192
+ const exchangeData = this.usualPoolIface.encodeFunctionData(
193
+ 'unlockUsd0ppFloorPrice',
194
+ [srcAmount],
195
+ );
196
+
197
+ return {
198
+ needWrapNative: false,
199
+ dexFuncHasRecipient: false,
200
+ exchangeData,
201
+ targetExchange: this.config.USD0PP.address,
202
+ returnAmountPos: undefined,
203
+ };
204
+ }
205
+ throw new Error('LOGIC ERROR');
206
+ }
207
+ }
@@ -0,0 +1,27 @@
1
+ import { Contract } from 'web3-eth-contract';
2
+ import { Interface } from '@ethersproject/abi';
3
+ import { PoolState } from './types';
4
+
5
+ export async function getOnChainState(
6
+ multiContract: Contract,
7
+ poolAddress: string,
8
+ poolInterface: Interface,
9
+ blockNumber: number | 'latest',
10
+ ): Promise<PoolState> {
11
+ const data: { returnData: any[] } = await multiContract.methods
12
+ .aggregate([
13
+ {
14
+ target: poolAddress,
15
+ callData: poolInterface.encodeFunctionData('getFloorPrice', []),
16
+ },
17
+ ])
18
+ .call({}, blockNumber);
19
+
20
+ const price = BigInt(
21
+ poolInterface.decodeFunctionResult('getFloorPrice', data.returnData[0])[0],
22
+ );
23
+
24
+ return {
25
+ price,
26
+ };
27
+ }