@paraswap/dex-lib 3.0.6 → 3.2.5-return-amount-pos.4

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 (548) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +55 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. package/.idea/misc.xml +6 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/paraswap-dex-lib-private.iml +9 -0
  8. package/.idea/prettier.xml +7 -0
  9. package/.idea/vcs.xml +6 -0
  10. package/README.md +327 -10
  11. package/build/abi/AugustusV6.abi.json +1454 -0
  12. package/build/abi/angle/stagToken.json +963 -0
  13. package/build/abi/augustus-v6/ABI.json +1084 -587
  14. package/build/abi/balancer-v2/gyro-e.abi.json +1595 -0
  15. package/build/abi/etherfi/eETHPool.json +9 -0
  16. package/build/abi/etherfi/weETH.json +20 -0
  17. package/build/abi/maker-psm/pot.json +322 -0
  18. package/build/abi/rswETH.json +1142 -0
  19. package/build/abi/sdai/SavingsDai.abi.json +877 -0
  20. package/build/abi/velodrome-slipstream/VelodromeSlipstreamFactory.abi.json +579 -0
  21. package/build/abi/velodrome-slipstream/VelodromeSlipstreamPool.abi.json +1275 -0
  22. package/build/abi/velodrome-slipstream/VelodromeSlipstreamStateMulticall.abi.json +766 -0
  23. package/build/config.js +51 -46
  24. package/build/config.js.map +1 -1
  25. package/build/dex/aave-v1/aave-v1.js +1 -0
  26. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  27. package/build/dex/aave-v2/aave-v2.js +1 -0
  28. package/build/dex/aave-v2/aave-v2.js.map +1 -1
  29. package/build/dex/aave-v3/aave-v3.js +1 -0
  30. package/build/dex/aave-v3/aave-v3.js.map +1 -1
  31. package/build/dex/algebra/algebra-factory.js +1 -1
  32. package/build/dex/algebra/algebra-factory.js.map +1 -1
  33. package/build/dex/algebra/algebra-pool-v1_1.d.ts +7 -2
  34. package/build/dex/algebra/algebra-pool-v1_1.js +9 -2
  35. package/build/dex/algebra/algebra-pool-v1_1.js.map +1 -1
  36. package/build/dex/algebra/algebra-pool-v1_9.d.ts +4 -0
  37. package/build/dex/algebra/algebra-pool-v1_9.js +6 -0
  38. package/build/dex/algebra/algebra-pool-v1_9.js.map +1 -1
  39. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.d.ts +16 -0
  40. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.js +26 -0
  41. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.js.map +1 -0
  42. package/build/dex/algebra/algebra.d.ts +2 -1
  43. package/build/dex/algebra/algebra.js +13 -7
  44. package/build/dex/algebra/algebra.js.map +1 -1
  45. package/build/dex/algebra/config.js +4 -0
  46. package/build/dex/algebra/config.js.map +1 -1
  47. package/build/dex/algebra/types.d.ts +1 -1
  48. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +56 -0
  49. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +197 -0
  50. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +1 -0
  51. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +49 -0
  52. package/build/dex/angle-staked-stable/angle-staked-stable.js +239 -0
  53. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -0
  54. package/build/dex/angle-staked-stable/config.d.ts +4 -0
  55. package/build/dex/angle-staked-stable/config.js +139 -0
  56. package/build/dex/angle-staked-stable/config.js.map +1 -0
  57. package/build/dex/angle-staked-stable/types.d.ts +15 -0
  58. package/build/dex/angle-staked-stable/types.js +3 -0
  59. package/build/dex/angle-staked-stable/types.js.map +1 -0
  60. package/build/dex/bProtocol/bProtocol.js +5 -0
  61. package/build/dex/bProtocol/bProtocol.js.map +1 -1
  62. package/build/dex/balancer-v1/balancer-v1.js +4 -0
  63. package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
  64. package/build/dex/balancer-v2/balancer-v2.d.ts +9 -4
  65. package/build/dex/balancer-v2/balancer-v2.js +111 -84
  66. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  67. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +32 -0
  68. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +149 -0
  69. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -0
  70. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +37 -0
  71. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +222 -0
  72. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -0
  73. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.d.ts +2 -0
  74. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js +19 -0
  75. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js.map +1 -0
  76. package/build/dex/balancer-v2/queryOnChain.d.ts +1 -0
  77. package/build/dex/balancer-v2/queryOnChain.js +40 -0
  78. package/build/dex/balancer-v2/queryOnChain.js.map +1 -0
  79. package/build/dex/balancer-v2/types.d.ts +41 -2
  80. package/build/dex/balancer-v2/types.js +2 -0
  81. package/build/dex/balancer-v2/types.js.map +1 -1
  82. package/build/dex/balancer-v2/utils.d.ts +8 -0
  83. package/build/dex/balancer-v2/utils.js +17 -1
  84. package/build/dex/balancer-v2/utils.js.map +1 -1
  85. package/build/dex/bancor/bancor.js +4 -0
  86. package/build/dex/bancor/bancor.js.map +1 -1
  87. package/build/dex/camelot/camelot.js +1 -0
  88. package/build/dex/camelot/camelot.js.map +1 -1
  89. package/build/dex/compound/compound.js +1 -0
  90. package/build/dex/compound/compound.js.map +1 -1
  91. package/build/dex/curve-v1/curve-v1.js +1 -0
  92. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  93. package/build/dex/curve-v1-factory/config.js +128 -11
  94. package/build/dex/curve-v1-factory/config.js.map +1 -1
  95. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +1 -0
  96. package/build/dex/curve-v1-factory/curve-v1-factory.js +30 -17
  97. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  98. package/build/dex/curve-v1-factory/curve-v1-pool-manager.js +1 -0
  99. package/build/dex/curve-v1-factory/curve-v1-pool-manager.js.map +1 -1
  100. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js +1 -0
  101. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js.map +1 -1
  102. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js +4 -1
  103. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js.map +1 -1
  104. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js +1 -0
  105. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js.map +1 -1
  106. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js +1 -0
  107. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js.map +1 -1
  108. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js +1 -0
  109. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js.map +1 -1
  110. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js +1 -0
  111. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js.map +1 -1
  112. package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js +1 -0
  113. package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js.map +1 -1
  114. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js +10 -0
  115. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
  116. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js +40 -0
  117. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js.map +1 -1
  118. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js +1 -0
  119. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js.map +1 -1
  120. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js +1 -0
  121. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js.map +1 -1
  122. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js +24 -0
  123. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js.map +1 -1
  124. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js +1 -0
  125. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js.map +1 -1
  126. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js +53 -0
  127. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js.map +1 -1
  128. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js +1 -0
  129. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js.map +1 -1
  130. package/build/dex/curve-v1-factory/price-handlers/functions/utils.d.ts +1 -0
  131. package/build/dex/curve-v1-factory/price-handlers/functions/utils.js +5 -1
  132. package/build/dex/curve-v1-factory/price-handlers/functions/utils.js.map +1 -1
  133. package/build/dex/curve-v1-factory/price-handlers/types.d.ts +2 -2
  134. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.d.ts +3 -2
  135. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +38 -6
  136. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
  137. package/build/dex/curve-v1-factory/state-polling-pools/pool-polling-base.js.map +1 -1
  138. package/build/dex/curve-v1-factory/types.d.ts +11 -2
  139. package/build/dex/curve-v1-factory/types.js +3 -0
  140. package/build/dex/curve-v1-factory/types.js.map +1 -1
  141. package/build/dex/curve-v2/curve-v2.js +1 -0
  142. package/build/dex/curve-v2/curve-v2.js.map +1 -1
  143. package/build/dex/dexalot/config.js +7 -0
  144. package/build/dex/dexalot/config.js.map +1 -1
  145. package/build/dex/dexalot/dexalot.js +2 -0
  146. package/build/dex/dexalot/dexalot.js.map +1 -1
  147. package/build/dex/dodo-v1/dodo-v1.js +4 -0
  148. package/build/dex/dodo-v1/dodo-v1.js.map +1 -1
  149. package/build/dex/dodo-v2.js +4 -0
  150. package/build/dex/dodo-v2.js.map +1 -1
  151. package/build/dex/etherfi.d.ts +27 -0
  152. package/build/dex/etherfi.js +146 -0
  153. package/build/dex/etherfi.js.map +1 -0
  154. package/build/dex/generic-rfq/generic-rfq.js +4 -3
  155. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  156. package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -1
  157. package/build/dex/generic-rfq/rate-fetcher.js +2 -1
  158. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  159. package/build/dex/generic-rfq/types.d.ts +1 -0
  160. package/build/dex/generic-rfq/types.js.map +1 -1
  161. package/build/dex/gmx/gmx.js +4 -0
  162. package/build/dex/gmx/gmx.js.map +1 -1
  163. package/build/dex/hashflow/constants.d.ts +27 -0
  164. package/build/dex/hashflow/constants.js +29 -1
  165. package/build/dex/hashflow/constants.js.map +1 -1
  166. package/build/dex/hashflow/hashflow.d.ts +3 -2
  167. package/build/dex/hashflow/hashflow.js +72 -13
  168. package/build/dex/hashflow/hashflow.js.map +1 -1
  169. package/build/dex/hashflow/types.d.ts +11 -0
  170. package/build/dex/hashflow/types.js +9 -0
  171. package/build/dex/hashflow/types.js.map +1 -1
  172. package/build/dex/idex.d.ts +2 -2
  173. package/build/dex/index.d.ts +2 -2
  174. package/build/dex/index.js +10 -0
  175. package/build/dex/index.js.map +1 -1
  176. package/build/dex/jarvis-v6/jarvis-v6.js +1 -0
  177. package/build/dex/jarvis-v6/jarvis-v6.js.map +1 -1
  178. package/build/dex/jarvis.js +8 -0
  179. package/build/dex/jarvis.js.map +1 -1
  180. package/build/dex/kyberdmm/kyberdmm.js +4 -0
  181. package/build/dex/kyberdmm/kyberdmm.js.map +1 -1
  182. package/build/dex/lido/lido.d.ts +4 -1
  183. package/build/dex/lido/lido.js +18 -1
  184. package/build/dex/lido/lido.js.map +1 -1
  185. package/build/dex/maker-psm/maker-psm.js +1 -0
  186. package/build/dex/maker-psm/maker-psm.js.map +1 -1
  187. package/build/dex/maverick-v1/maverick-v1.js +4 -0
  188. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  189. package/build/dex/nerve/nerve.js +4 -0
  190. package/build/dex/nerve/nerve.js.map +1 -1
  191. package/build/dex/onebit/onebit.js +5 -0
  192. package/build/dex/onebit/onebit.js.map +1 -1
  193. package/build/dex/pancakeswap-v3/config.js +30 -0
  194. package/build/dex/pancakeswap-v3/config.js.map +1 -1
  195. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js +1 -1
  196. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js.map +1 -1
  197. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.d.ts +5 -0
  198. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js +7 -0
  199. package/build/dex/pancakeswap-v3/pancakeswap-v3-pool.js.map +1 -1
  200. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +16 -8
  201. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  202. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +1 -0
  203. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  204. package/build/dex/platypus/platypus.js +17 -3
  205. package/build/dex/platypus/platypus.js.map +1 -1
  206. package/build/dex/polygon-migrator/polygon-migrator.js +1 -0
  207. package/build/dex/polygon-migrator/polygon-migrator.js.map +1 -1
  208. package/build/dex/quick-perps/quick-perps.js +7 -1
  209. package/build/dex/quick-perps/quick-perps.js.map +1 -1
  210. package/build/dex/simple-exchange.d.ts +0 -1
  211. package/build/dex/simple-exchange.js +0 -2
  212. package/build/dex/simple-exchange.js.map +1 -1
  213. package/build/dex/smoothy/smoothy.js +1 -0
  214. package/build/dex/smoothy/smoothy.js.map +1 -1
  215. package/build/dex/smoothy.d.ts +1 -1
  216. package/build/dex/smoothy.js +2 -3
  217. package/build/dex/smoothy.js.map +1 -1
  218. package/build/dex/solidly/config.js +12 -0
  219. package/build/dex/solidly/config.js.map +1 -1
  220. package/build/dex/solidly/forks-override/pharaohV1.d.ts +8 -0
  221. package/build/dex/solidly/forks-override/pharaohV1.js +15 -0
  222. package/build/dex/solidly/forks-override/pharaohV1.js.map +1 -0
  223. package/build/dex/solidly/solidly.js +2 -0
  224. package/build/dex/solidly/solidly.js.map +1 -1
  225. package/build/dex/solidly-v3/config.js +13 -1
  226. package/build/dex/solidly-v3/config.js.map +1 -1
  227. package/build/dex/solidly-v3/solidly-v3-factory.js +1 -1
  228. package/build/dex/solidly-v3/solidly-v3-factory.js.map +1 -1
  229. package/build/dex/solidly-v3/solidly-v3-pool.d.ts +5 -0
  230. package/build/dex/solidly-v3/solidly-v3-pool.js +7 -0
  231. package/build/dex/solidly-v3/solidly-v3-pool.js.map +1 -1
  232. package/build/dex/solidly-v3/solidly-v3.d.ts +1 -2
  233. package/build/dex/solidly-v3/solidly-v3.js +5 -11
  234. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  235. package/build/dex/solidly-v3/types.d.ts +0 -1
  236. package/build/dex/solidly-v3/types.js.map +1 -1
  237. package/build/dex/spark/config.d.ts +11 -0
  238. package/build/dex/spark/config.js +21 -0
  239. package/build/dex/spark/config.js.map +1 -0
  240. package/build/dex/spark/constants.d.ts +2 -0
  241. package/build/dex/spark/constants.js +6 -0
  242. package/build/dex/spark/constants.js.map +1 -0
  243. package/build/dex/spark/scripts/validate-state.d.ts +1 -0
  244. package/build/dex/spark/scripts/validate-state.js +102 -0
  245. package/build/dex/spark/scripts/validate-state.js.map +1 -0
  246. package/build/dex/spark/spark-sdai-pool.d.ts +16 -0
  247. package/build/dex/spark/spark-sdai-pool.js +85 -0
  248. package/build/dex/spark/spark-sdai-pool.js.map +1 -0
  249. package/build/dex/spark/spark.d.ts +52 -0
  250. package/build/dex/spark/spark.js +195 -0
  251. package/build/dex/spark/spark.js.map +1 -0
  252. package/build/dex/spark/types.d.ts +21 -0
  253. package/build/dex/spark/types.js +11 -0
  254. package/build/dex/spark/types.js.map +1 -0
  255. package/build/dex/spark/utils.d.ts +4 -0
  256. package/build/dex/spark/utils.js +39 -0
  257. package/build/dex/spark/utils.js.map +1 -0
  258. package/build/dex/stable-pool/stable-pool.js +4 -0
  259. package/build/dex/stable-pool/stable-pool.js.map +1 -1
  260. package/build/dex/swaap-v1/swaap-v1.js +4 -0
  261. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  262. package/build/dex/swaap-v2/swaap-v2.js +1 -0
  263. package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
  264. package/build/dex/swell/config.d.ts +1 -0
  265. package/build/dex/swell/config.js +1 -0
  266. package/build/dex/swell/config.js.map +1 -1
  267. package/build/dex/swell/rsweth-pool.d.ts +16 -0
  268. package/build/dex/swell/rsweth-pool.js +38 -0
  269. package/build/dex/swell/rsweth-pool.js.map +1 -0
  270. package/build/dex/swell/swell.d.ts +7 -2
  271. package/build/dex/swell/swell.js +58 -27
  272. package/build/dex/swell/swell.js.map +1 -1
  273. package/build/dex/swell/sweth-pool.js +1 -1
  274. package/build/dex/swell/sweth-pool.js.map +1 -1
  275. package/build/dex/swell/type.d.ts +3 -0
  276. package/build/dex/swell/utils.d.ts +3 -2
  277. package/build/dex/swell/utils.js +19 -3
  278. package/build/dex/swell/utils.js.map +1 -1
  279. package/build/dex/synthetix/synthetix.js +6 -0
  280. package/build/dex/synthetix/synthetix.js.map +1 -1
  281. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js +4 -0
  282. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js.map +1 -1
  283. package/build/dex/uniswap-v2/config.js +56 -0
  284. package/build/dex/uniswap-v2/config.js.map +1 -1
  285. package/build/dex/uniswap-v2/types.d.ts +1 -1
  286. package/build/dex/uniswap-v2/uniswap-v2.js +2 -1
  287. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  288. package/build/dex/uniswap-v3/config.js +102 -1
  289. package/build/dex/uniswap-v3/config.js.map +1 -1
  290. package/build/dex/uniswap-v3/forks/velodrome-slipstream/utils.d.ts +4 -0
  291. package/build/dex/uniswap-v3/forks/velodrome-slipstream/utils.js +56 -0
  292. package/build/dex/uniswap-v3/forks/velodrome-slipstream/utils.js.map +1 -0
  293. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-factory.d.ts +7 -0
  294. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-factory.js +23 -0
  295. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-factory.js.map +1 -0
  296. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.d.ts +13 -0
  297. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js +137 -0
  298. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js.map +1 -0
  299. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.d.ts +46 -0
  300. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +117 -0
  301. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -0
  302. package/build/dex/uniswap-v3/types.d.ts +8 -2
  303. package/build/dex/uniswap-v3/types.js.map +1 -1
  304. package/build/dex/uniswap-v3/uniswap-v3-factory.js +1 -1
  305. package/build/dex/uniswap-v3/uniswap-v3-factory.js.map +1 -1
  306. package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +9 -2
  307. package/build/dex/uniswap-v3/uniswap-v3-pool.js +15 -2
  308. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  309. package/build/dex/uniswap-v3/uniswap-v3.d.ts +27 -12
  310. package/build/dex/uniswap-v3/uniswap-v3.js +108 -76
  311. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  312. package/build/dex/uniswap-v3.js +4 -0
  313. package/build/dex/uniswap-v3.js.map +1 -1
  314. package/build/dex/weth/weth.js +1 -0
  315. package/build/dex/weth/weth.js.map +1 -1
  316. package/build/dex/wombat/wombat.js +4 -0
  317. package/build/dex/wombat/wombat.js.map +1 -1
  318. package/build/dex/woo-fi-v2/config.js +16 -16
  319. package/build/dex/woo-fi-v2/woo-fi-v2.js +4 -0
  320. package/build/dex/woo-fi-v2/woo-fi-v2.js.map +1 -1
  321. package/build/dex/wsteth/wsteth.js +8 -1
  322. package/build/dex/wsteth/wsteth.js.map +1 -1
  323. package/build/dex/zerox/index.js +1 -0
  324. package/build/dex/zerox/index.js.map +1 -1
  325. package/build/executor/Executor01BytecodeBuilder.d.ts +6 -8
  326. package/build/executor/Executor01BytecodeBuilder.js +47 -8
  327. package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
  328. package/build/executor/Executor02BytecodeBuilder.d.ts +18 -12
  329. package/build/executor/Executor02BytecodeBuilder.js +55 -10
  330. package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
  331. package/build/executor/Executor03BytecodeBuilder.d.ts +11 -8
  332. package/build/executor/Executor03BytecodeBuilder.js +27 -5
  333. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  334. package/build/executor/ExecutorBytecodeBuilder.d.ts +29 -6
  335. package/build/executor/ExecutorBytecodeBuilder.js +23 -4
  336. package/build/executor/ExecutorBytecodeBuilder.js.map +1 -1
  337. package/build/executor/ExecutorDetector.d.ts +2 -0
  338. package/build/executor/ExecutorDetector.js +12 -0
  339. package/build/executor/ExecutorDetector.js.map +1 -1
  340. package/build/executor/IExecutorBytecodeBuilder.d.ts +10 -0
  341. package/build/executor/IExecutorBytecodeBuilder.js +3 -0
  342. package/build/executor/IExecutorBytecodeBuilder.js.map +1 -0
  343. package/build/executor/WETHBytecodeBuilder.d.ts +14 -0
  344. package/build/executor/WETHBytecodeBuilder.js +47 -0
  345. package/build/executor/WETHBytecodeBuilder.js.map +1 -0
  346. package/build/executor/constants.d.ts +3 -1
  347. package/build/executor/constants.js +8 -3
  348. package/build/executor/constants.js.map +1 -1
  349. package/build/executor/types.d.ts +1 -0
  350. package/build/executor/types.js +1 -0
  351. package/build/executor/types.js.map +1 -1
  352. package/build/executor/utils.d.ts +2 -0
  353. package/build/executor/utils.js +30 -0
  354. package/build/executor/utils.js.map +1 -0
  355. package/build/generic-swap-transaction-builder.js +11 -5
  356. package/build/generic-swap-transaction-builder.js.map +1 -1
  357. package/build/implementations/local-paraswap-sdk.js +1 -1
  358. package/build/implementations/local-paraswap-sdk.js.map +1 -1
  359. package/build/stateful-event-subscriber.d.ts +1 -0
  360. package/build/stateful-event-subscriber.js +8 -1
  361. package/build/stateful-event-subscriber.js.map +1 -1
  362. package/build/types.d.ts +3 -0
  363. package/package.json +4 -3
  364. package/src/abi/angle/stagToken.json +963 -0
  365. package/src/abi/augustus-v6/ABI.json +1084 -587
  366. package/src/abi/balancer-v2/gyro-e.abi.json +1595 -0
  367. package/src/abi/etherfi/eETHPool.json +9 -0
  368. package/src/abi/etherfi/weETH.json +20 -0
  369. package/src/abi/maker-psm/pot.json +322 -0
  370. package/src/abi/rswETH.json +1142 -0
  371. package/src/abi/sdai/SavingsDai.abi.json +877 -0
  372. package/src/abi/velodrome-slipstream/VelodromeSlipstreamFactory.abi.json +579 -0
  373. package/src/abi/velodrome-slipstream/VelodromeSlipstreamPool.abi.json +1275 -0
  374. package/src/abi/velodrome-slipstream/VelodromeSlipstreamQuoterV2.abi.json +267 -0
  375. package/src/abi/velodrome-slipstream/VelodromeSlipstreamStateMulticall.abi.json +766 -0
  376. package/src/config.ts +51 -46
  377. package/src/dex/aave-v1/aave-v1.ts +1 -0
  378. package/src/dex/aave-v2/aave-v2.ts +1 -0
  379. package/src/dex/aave-v3/aave-v3.ts +1 -0
  380. package/src/dex/algebra/algebra-e2e.test.ts +22 -0
  381. package/src/dex/algebra/algebra-factory.ts +8 -1
  382. package/src/dex/algebra/algebra-pool-v1_1.ts +10 -2
  383. package/src/dex/algebra/algebra-pool-v1_9.ts +7 -0
  384. package/src/dex/algebra/algebra-pool-v1_9_bidirectional_fee.ts +55 -0
  385. package/src/dex/algebra/algebra.ts +28 -14
  386. package/src/dex/algebra/config.ts +4 -0
  387. package/src/dex/algebra/types.ts +1 -1
  388. package/src/dex/angle-staked-stable/angle-staked-stable-e2e.test.ts +146 -0
  389. package/src/dex/angle-staked-stable/angle-staked-stable-events.test.ts +95 -0
  390. package/src/dex/angle-staked-stable/angle-staked-stable-integration.test.ts +476 -0
  391. package/src/dex/angle-staked-stable/angle-staked-stable-pool.ts +325 -0
  392. package/src/dex/angle-staked-stable/angle-staked-stable.ts +351 -0
  393. package/src/dex/angle-staked-stable/config.ts +139 -0
  394. package/src/dex/angle-staked-stable/types.ts +16 -0
  395. package/src/dex/bProtocol/bProtocol.ts +8 -0
  396. package/src/dex/balancer-v1/balancer-v1.ts +9 -0
  397. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +94 -0
  398. package/src/dex/balancer-v2/balancer-v2-gyro3.test.ts +268 -0
  399. package/src/dex/balancer-v2/balancer-v2-gyroE.test.ts +401 -0
  400. package/src/dex/balancer-v2/balancer-v2-integration.test.ts +253 -112
  401. package/src/dex/balancer-v2/balancer-v2.ts +203 -143
  402. package/src/dex/balancer-v2/pools/gyro/Gyro3Pool.ts +255 -0
  403. package/src/dex/balancer-v2/pools/gyro/GyroEPool.ts +403 -0
  404. package/src/dex/balancer-v2/pools/gyro/gyro-helpers.ts +15 -0
  405. package/src/dex/balancer-v2/queryOnChain.ts +48 -0
  406. package/src/dex/balancer-v2/types.ts +45 -1
  407. package/src/dex/balancer-v2/utils.ts +16 -0
  408. package/src/dex/bancor/bancor.ts +8 -0
  409. package/src/dex/camelot/camelot.ts +1 -0
  410. package/src/dex/compound/compound.ts +1 -0
  411. package/src/dex/curve-v1/curve-v1.ts +1 -0
  412. package/src/dex/curve-v1-factory/config.ts +128 -11
  413. package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +122 -1
  414. package/src/dex/curve-v1-factory/curve-v1-factory-integration.test.ts +392 -0
  415. package/src/dex/curve-v1-factory/curve-v1-factory.ts +62 -39
  416. package/src/dex/curve-v1-factory/curve-v1-pool-manager.ts +1 -0
  417. package/src/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.ts +2 -0
  418. package/src/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.ts +6 -2
  419. package/src/dex/curve-v1-factory/price-handlers/functions/_rates.ts +2 -0
  420. package/src/dex/curve-v1-factory/price-handlers/functions/_xp.ts +2 -0
  421. package/src/dex/curve-v1-factory/price-handlers/functions/_xp_mem.ts +2 -0
  422. package/src/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.ts +2 -0
  423. package/src/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.ts +2 -0
  424. package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +11 -0
  425. package/src/dex/curve-v1-factory/price-handlers/functions/get_D.ts +59 -1
  426. package/src/dex/curve-v1-factory/price-handlers/functions/get_D_mem.ts +2 -0
  427. package/src/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.ts +2 -0
  428. package/src/dex/curve-v1-factory/price-handlers/functions/get_dy.ts +51 -0
  429. package/src/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.ts +2 -0
  430. package/src/dex/curve-v1-factory/price-handlers/functions/get_y.ts +68 -1
  431. package/src/dex/curve-v1-factory/price-handlers/functions/get_y_D.ts +2 -0
  432. package/src/dex/curve-v1-factory/price-handlers/functions/utils.ts +4 -0
  433. package/src/dex/curve-v1-factory/price-handlers/types.ts +8 -1
  434. package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +71 -18
  435. package/src/dex/curve-v1-factory/state-polling-pools/pool-polling-base.ts +1 -0
  436. package/src/dex/curve-v1-factory/types.ts +12 -1
  437. package/src/dex/curve-v2/curve-v2.ts +1 -0
  438. package/src/dex/dexalot/config.ts +7 -0
  439. package/src/dex/dexalot/dexalot-e2e.test.ts +23 -1
  440. package/src/dex/dexalot/dexalot-integration.test.ts +121 -0
  441. package/src/dex/dexalot/dexalot.ts +2 -0
  442. package/src/dex/dodo-v1/dodo-v1.ts +9 -0
  443. package/src/dex/dodo-v2.ts +9 -0
  444. package/src/dex/etherfi.ts +239 -0
  445. package/src/dex/generic-rfq/generic-rfq.ts +4 -2
  446. package/src/dex/generic-rfq/rate-fetcher.ts +2 -0
  447. package/src/dex/generic-rfq/types.ts +1 -0
  448. package/src/dex/gmx/gmx.ts +8 -0
  449. package/src/dex/hashflow/constants.ts +32 -0
  450. package/src/dex/hashflow/hashflow.ts +126 -20
  451. package/src/dex/hashflow/types.ts +20 -2
  452. package/src/dex/idex.ts +2 -1
  453. package/src/dex/index.ts +12 -2
  454. package/src/dex/jarvis-v6/jarvis-v6.ts +1 -0
  455. package/src/dex/jarvis.ts +14 -0
  456. package/src/dex/kyberdmm/kyberdmm.ts +9 -0
  457. package/src/dex/lido/lido-e2e.test.ts +10 -0
  458. package/src/dex/lido/lido.ts +25 -2
  459. package/src/dex/maker-psm/maker-psm.ts +1 -0
  460. package/src/dex/maverick-v1/maverick-v1.ts +9 -0
  461. package/src/dex/nerve/nerve.ts +8 -0
  462. package/src/dex/onebit/onebit.ts +8 -0
  463. package/src/dex/pancakeswap-v3/config.ts +32 -0
  464. package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +21 -0
  465. package/src/dex/pancakeswap-v3/pancakeswap-v3-factory.ts +8 -1
  466. package/src/dex/pancakeswap-v3/pancakeswap-v3-pool.ts +8 -0
  467. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +27 -13
  468. package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +1 -0
  469. package/src/dex/platypus/platypus.ts +20 -3
  470. package/src/dex/polygon-migrator/polygon-migrator.ts +1 -0
  471. package/src/dex/quick-perps/quick-perps.ts +11 -1
  472. package/src/dex/simple-exchange.ts +0 -4
  473. package/src/dex/smoothy/smoothy.ts +1 -0
  474. package/src/dex/solidly/config.ts +14 -0
  475. package/src/dex/solidly/forks-override/pharaohV1.ts +10 -0
  476. package/src/dex/solidly/solidly-e2e.test.ts +21 -0
  477. package/src/dex/solidly/solidly-integration.test.ts +143 -0
  478. package/src/dex/solidly/solidly.ts +2 -0
  479. package/src/dex/solidly-v3/config.ts +15 -1
  480. package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +33 -0
  481. package/src/dex/solidly-v3/solidly-v3-factory.ts +8 -1
  482. package/src/dex/solidly-v3/solidly-v3-pool.ts +8 -0
  483. package/src/dex/solidly-v3/solidly-v3.ts +8 -16
  484. package/src/dex/solidly-v3/types.ts +0 -1
  485. package/src/dex/spark/config.ts +25 -0
  486. package/src/dex/spark/constants.ts +2 -0
  487. package/src/dex/spark/scripts/validate-state.ts +144 -0
  488. package/src/dex/spark/spark-e2e.test.ts +96 -0
  489. package/src/dex/spark/spark-events.test.ts +102 -0
  490. package/src/dex/spark/spark-integration.test.ts +151 -0
  491. package/src/dex/spark/spark-sdai-pool.ts +114 -0
  492. package/src/dex/spark/spark.ts +284 -0
  493. package/src/dex/spark/types.ts +23 -0
  494. package/src/dex/spark/utils.ts +47 -0
  495. package/src/dex/stable-pool/stable-pool.ts +8 -0
  496. package/src/dex/swaap-v1/swaap-v1.ts +9 -0
  497. package/src/dex/swaap-v2/swaap-v2.ts +1 -0
  498. package/src/dex/swell/config.ts +2 -0
  499. package/src/dex/swell/rsweth-pool.ts +58 -0
  500. package/src/dex/swell/swell-e2e.test.ts +33 -31
  501. package/src/dex/swell/swell.ts +88 -35
  502. package/src/dex/swell/sweth-pool.ts +2 -2
  503. package/src/dex/swell/type.ts +4 -0
  504. package/src/dex/swell/utils.ts +26 -2
  505. package/src/dex/synthetix/synthetix-state.ts +2 -2
  506. package/src/dex/synthetix/synthetix.ts +11 -0
  507. package/src/dex/trader-joe-v2.1/trader-joe-v2.1.ts +9 -0
  508. package/src/dex/uniswap-v2/config.ts +58 -0
  509. package/src/dex/uniswap-v2/types.ts +2 -2
  510. package/src/dex/uniswap-v2/uniswap-v2-e2e-base.test.ts +48 -0
  511. package/src/dex/uniswap-v2/uniswap-v2.ts +2 -1
  512. package/src/dex/uniswap-v3/config.ts +112 -3
  513. package/src/dex/uniswap-v3/forks/velodrome-slipstream/utils.ts +65 -0
  514. package/src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-factory.ts +16 -0
  515. package/src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.ts +197 -0
  516. package/src/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.ts +237 -0
  517. package/src/dex/uniswap-v3/types.ts +6 -2
  518. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +184 -3
  519. package/src/dex/uniswap-v3/uniswap-v3-factory.ts +8 -1
  520. package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +741 -6
  521. package/src/dex/uniswap-v3/uniswap-v3-pool.ts +17 -9
  522. package/src/dex/uniswap-v3/uniswap-v3.ts +204 -121
  523. package/src/dex/uniswap-v3.ts +9 -0
  524. package/src/dex/weth/weth-e2e-v6.test.ts +117 -0
  525. package/src/dex/weth/weth.ts +1 -0
  526. package/src/dex/wombat/wombat.ts +9 -0
  527. package/src/dex/woo-fi-v2/config.ts +16 -16
  528. package/src/dex/woo-fi-v2/woo-fi-v2.ts +5 -0
  529. package/src/dex/wsteth/wsteth.ts +13 -4
  530. package/src/dex/zerox/index.ts +1 -0
  531. package/src/executor/Executor01BytecodeBuilder.ts +69 -29
  532. package/src/executor/Executor02BytecodeBuilder.ts +99 -44
  533. package/src/executor/Executor03BytecodeBuilder.ts +52 -33
  534. package/src/executor/ExecutorBytecodeBuilder.ts +57 -18
  535. package/src/executor/ExecutorDetector.ts +14 -0
  536. package/src/executor/WETHBytecodeBuilder.ts +57 -0
  537. package/src/executor/constants.ts +8 -2
  538. package/src/executor/executor01-bytecode-builder-e2e.test.ts +39 -0
  539. package/src/executor/executor02-bytecode-builder-e2e.test.ts +35 -0
  540. package/src/executor/types.ts +1 -0
  541. package/src/executor/utils.ts +44 -0
  542. package/src/generic-swap-transaction-builder.ts +14 -4
  543. package/src/implementations/local-paraswap-sdk.ts +1 -1
  544. package/src/stateful-event-subscriber.ts +13 -1
  545. package/src/types.ts +3 -0
  546. package/tests/constants-e2e.ts +233 -12
  547. package/tests/utils-e2e.ts +82 -2
  548. package/tests/debug-price-route.json +0 -87
@@ -698,4 +698,396 @@ describe('CurveV1Factory', function () {
698
698
  }
699
699
  });
700
700
  });
701
+
702
+ describe('Stable NG', () => {
703
+ describe('Mainnet', () => {
704
+ const network = Network.MAINNET;
705
+ const dexHelper = new DummyDexHelper(network);
706
+
707
+ const tokens = Tokens[network];
708
+
709
+ beforeAll(async () => {
710
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
711
+ // @ts-expect-error for testing there is dummy blocknumber, but it is not
712
+ // part of the interface
713
+ dexHelper.blockManager._blockNumber = blockNumber;
714
+ console.log(
715
+ `Received blockNumber ${blockNumber} on network ${dexHelper.config.data.network}`,
716
+ );
717
+ curveV1Factory = new CurveV1Factory(network, dexKey, dexHelper);
718
+ if (curveV1Factory.initializePricing) {
719
+ await curveV1Factory.initializePricing(blockNumber);
720
+ }
721
+ });
722
+
723
+ describe('GHO -> USDe', () => {
724
+ const srcTokenSymbol = 'GHO';
725
+ const destTokenSymbol = 'USDe';
726
+ const amountsForSell = [
727
+ 0n,
728
+ 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
729
+ 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
730
+ 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
731
+ 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
732
+ 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
733
+ 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
734
+ 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
735
+ 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
736
+ 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
737
+ 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
738
+ ];
739
+
740
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
741
+ await testPricingOnNetwork(
742
+ curveV1Factory,
743
+ network,
744
+ dexKey,
745
+ blockNumber,
746
+ srcTokenSymbol,
747
+ destTokenSymbol,
748
+ SwapSide.SELL,
749
+ amountsForSell,
750
+ );
751
+ });
752
+
753
+ it('getTopPoolsForToken', async function () {
754
+ // We have to check without calling initializePricing, because
755
+ // pool-tracker is not calling that function
756
+ const newCurveV1Factory = new CurveV1Factory(
757
+ network,
758
+ dexKey,
759
+ dexHelper,
760
+ );
761
+ if (newCurveV1Factory.updatePoolState) {
762
+ await newCurveV1Factory.updatePoolState();
763
+ }
764
+ const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
765
+ tokens[srcTokenSymbol].address,
766
+ 10,
767
+ );
768
+ console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
769
+
770
+ if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
771
+ checkPoolsLiquidity(
772
+ poolLiquidity,
773
+ Tokens[network][srcTokenSymbol].address,
774
+ dexKey,
775
+ );
776
+ }
777
+ });
778
+ });
779
+ });
780
+
781
+ describe('Polygon', () => {
782
+ const network = Network.POLYGON;
783
+ const dexHelper = new DummyDexHelper(network);
784
+
785
+ const tokens = Tokens[network];
786
+
787
+ beforeAll(async () => {
788
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
789
+ // @ts-expect-error for testing there is dummy blocknumber, but it is not
790
+ // part of the interface
791
+ dexHelper.blockManager._blockNumber = blockNumber;
792
+ console.log(
793
+ `Received blockNumber ${blockNumber} on network ${dexHelper.config.data.network}`,
794
+ );
795
+ curveV1Factory = new CurveV1Factory(network, dexKey, dexHelper);
796
+ if (curveV1Factory.initializePricing) {
797
+ await curveV1Factory.initializePricing(blockNumber);
798
+ }
799
+ });
800
+
801
+ describe('crvUSD -> USDT', () => {
802
+ const srcTokenSymbol = 'crvUSD';
803
+ const destTokenSymbol = 'USDT';
804
+ const amountsForSell = [
805
+ 0n,
806
+ 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
807
+ 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
808
+ 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
809
+ 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
810
+ 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
811
+ 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
812
+ 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
813
+ 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
814
+ 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
815
+ 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
816
+ ];
817
+
818
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
819
+ await testPricingOnNetwork(
820
+ curveV1Factory,
821
+ network,
822
+ dexKey,
823
+ blockNumber,
824
+ srcTokenSymbol,
825
+ destTokenSymbol,
826
+ SwapSide.SELL,
827
+ amountsForSell,
828
+ );
829
+ });
830
+
831
+ it('getTopPoolsForToken', async function () {
832
+ // We have to check without calling initializePricing, because
833
+ // pool-tracker is not calling that function
834
+ const newCurveV1Factory = new CurveV1Factory(
835
+ network,
836
+ dexKey,
837
+ dexHelper,
838
+ );
839
+ if (newCurveV1Factory.updatePoolState) {
840
+ await newCurveV1Factory.updatePoolState();
841
+ }
842
+ const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
843
+ tokens[srcTokenSymbol].address,
844
+ 10,
845
+ );
846
+ console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
847
+
848
+ if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
849
+ checkPoolsLiquidity(
850
+ poolLiquidity,
851
+ Tokens[network][srcTokenSymbol].address,
852
+ dexKey,
853
+ );
854
+ }
855
+ });
856
+ });
857
+ });
858
+
859
+ describe('Fantom', () => {
860
+ const network = Network.FANTOM;
861
+ const dexHelper = new DummyDexHelper(network);
862
+
863
+ const tokens = Tokens[network];
864
+
865
+ beforeAll(async () => {
866
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
867
+ // @ts-expect-error for testing there is dummy blocknumber, but it is not
868
+ // part of the interface
869
+ dexHelper.blockManager._blockNumber = blockNumber;
870
+ console.log(
871
+ `Received blockNumber ${blockNumber} on network ${dexHelper.config.data.network}`,
872
+ );
873
+ curveV1Factory = new CurveV1Factory(network, dexKey, dexHelper);
874
+ if (curveV1Factory.initializePricing) {
875
+ await curveV1Factory.initializePricing(blockNumber);
876
+ }
877
+ });
878
+
879
+ describe('scrvUSDC_e -> scrvUSDC_p', () => {
880
+ const srcTokenSymbol = 'scrvUSDC_e';
881
+ const destTokenSymbol = 'scrvUSDC_p';
882
+ const amountsForSell = [
883
+ 0n,
884
+ 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
885
+ 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
886
+ 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
887
+ 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
888
+ 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
889
+ 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
890
+ 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
891
+ 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
892
+ 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
893
+ 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
894
+ ];
895
+
896
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
897
+ await testPricingOnNetwork(
898
+ curveV1Factory,
899
+ network,
900
+ dexKey,
901
+ blockNumber,
902
+ srcTokenSymbol,
903
+ destTokenSymbol,
904
+ SwapSide.SELL,
905
+ amountsForSell,
906
+ );
907
+ });
908
+
909
+ it('getTopPoolsForToken', async function () {
910
+ // We have to check without calling initializePricing, because
911
+ // pool-tracker is not calling that function
912
+ const newCurveV1Factory = new CurveV1Factory(
913
+ network,
914
+ dexKey,
915
+ dexHelper,
916
+ );
917
+ if (newCurveV1Factory.updatePoolState) {
918
+ await newCurveV1Factory.updatePoolState();
919
+ }
920
+ const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
921
+ tokens[srcTokenSymbol].address,
922
+ 10,
923
+ );
924
+ console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
925
+
926
+ if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
927
+ checkPoolsLiquidity(
928
+ poolLiquidity,
929
+ Tokens[network][srcTokenSymbol].address,
930
+ dexKey,
931
+ );
932
+ }
933
+ });
934
+ });
935
+ });
936
+
937
+ describe('Arbitrum', () => {
938
+ const network = Network.ARBITRUM;
939
+ const dexHelper = new DummyDexHelper(network);
940
+
941
+ const tokens = Tokens[network];
942
+
943
+ beforeAll(async () => {
944
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
945
+ // @ts-expect-error for testing there is dummy blocknumber, but it is not
946
+ // part of the interface
947
+ dexHelper.blockManager._blockNumber = blockNumber;
948
+ console.log(
949
+ `Received blockNumber ${blockNumber} on network ${dexHelper.config.data.network}`,
950
+ );
951
+ curveV1Factory = new CurveV1Factory(network, dexKey, dexHelper);
952
+ if (curveV1Factory.initializePricing) {
953
+ await curveV1Factory.initializePricing(blockNumber);
954
+ }
955
+ });
956
+
957
+ describe('crvUSD -> USDCe', () => {
958
+ const srcTokenSymbol = 'crvUSD';
959
+ const destTokenSymbol = 'USDCe';
960
+ const amountsForSell = [
961
+ 0n,
962
+ 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
963
+ 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
964
+ 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
965
+ 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
966
+ 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
967
+ 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
968
+ 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
969
+ 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
970
+ 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
971
+ 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
972
+ ];
973
+
974
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
975
+ await testPricingOnNetwork(
976
+ curveV1Factory,
977
+ network,
978
+ dexKey,
979
+ blockNumber,
980
+ srcTokenSymbol,
981
+ destTokenSymbol,
982
+ SwapSide.SELL,
983
+ amountsForSell,
984
+ );
985
+ });
986
+
987
+ it('getTopPoolsForToken', async function () {
988
+ // We have to check without calling initializePricing, because
989
+ // pool-tracker is not calling that function
990
+ const newCurveV1Factory = new CurveV1Factory(
991
+ network,
992
+ dexKey,
993
+ dexHelper,
994
+ );
995
+ if (newCurveV1Factory.updatePoolState) {
996
+ await newCurveV1Factory.updatePoolState();
997
+ }
998
+ const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
999
+ tokens[srcTokenSymbol].address,
1000
+ 10,
1001
+ );
1002
+ console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
1003
+
1004
+ if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
1005
+ checkPoolsLiquidity(
1006
+ poolLiquidity,
1007
+ Tokens[network][srcTokenSymbol].address,
1008
+ dexKey,
1009
+ );
1010
+ }
1011
+ });
1012
+ });
1013
+ });
1014
+
1015
+ describe('Optimism', () => {
1016
+ const network = Network.OPTIMISM;
1017
+ const dexHelper = new DummyDexHelper(network);
1018
+
1019
+ const tokens = Tokens[network];
1020
+
1021
+ beforeAll(async () => {
1022
+ blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
1023
+ // @ts-expect-error for testing there is dummy blocknumber, but it is not
1024
+ // part of the interface
1025
+ dexHelper.blockManager._blockNumber = blockNumber;
1026
+ console.log(
1027
+ `Received blockNumber ${blockNumber} on network ${dexHelper.config.data.network}`,
1028
+ );
1029
+ curveV1Factory = new CurveV1Factory(network, dexKey, dexHelper);
1030
+ if (curveV1Factory.initializePricing) {
1031
+ await curveV1Factory.initializePricing(blockNumber);
1032
+ }
1033
+ });
1034
+
1035
+ describe('crvUSD -> USDT', () => {
1036
+ const srcTokenSymbol = 'crvUSD';
1037
+ const destTokenSymbol = 'USDT';
1038
+ const amountsForSell = [
1039
+ 0n,
1040
+ 1n * BI_POWS[tokens[srcTokenSymbol].decimals],
1041
+ 2n * BI_POWS[tokens[srcTokenSymbol].decimals],
1042
+ 3n * BI_POWS[tokens[srcTokenSymbol].decimals],
1043
+ 4n * BI_POWS[tokens[srcTokenSymbol].decimals],
1044
+ 5n * BI_POWS[tokens[srcTokenSymbol].decimals],
1045
+ 6n * BI_POWS[tokens[srcTokenSymbol].decimals],
1046
+ 7n * BI_POWS[tokens[srcTokenSymbol].decimals],
1047
+ 8n * BI_POWS[tokens[srcTokenSymbol].decimals],
1048
+ 9n * BI_POWS[tokens[srcTokenSymbol].decimals],
1049
+ 10n * BI_POWS[tokens[srcTokenSymbol].decimals],
1050
+ ];
1051
+
1052
+ it('getPoolIdentifiers and getPricesVolume SELL', async function () {
1053
+ await testPricingOnNetwork(
1054
+ curveV1Factory,
1055
+ network,
1056
+ dexKey,
1057
+ blockNumber,
1058
+ srcTokenSymbol,
1059
+ destTokenSymbol,
1060
+ SwapSide.SELL,
1061
+ amountsForSell,
1062
+ );
1063
+ });
1064
+
1065
+ it('getTopPoolsForToken', async function () {
1066
+ // We have to check without calling initializePricing, because
1067
+ // pool-tracker is not calling that function
1068
+ const newCurveV1Factory = new CurveV1Factory(
1069
+ network,
1070
+ dexKey,
1071
+ dexHelper,
1072
+ );
1073
+ if (newCurveV1Factory.updatePoolState) {
1074
+ await newCurveV1Factory.updatePoolState();
1075
+ }
1076
+ const poolLiquidity = await newCurveV1Factory.getTopPoolsForToken(
1077
+ tokens[srcTokenSymbol].address,
1078
+ 10,
1079
+ );
1080
+ console.log(`${srcTokenSymbol} Top Pools:`, poolLiquidity);
1081
+
1082
+ if (!newCurveV1Factory.hasConstantPriceLargeAmounts) {
1083
+ checkPoolsLiquidity(
1084
+ poolLiquidity,
1085
+ Tokens[network][srcTokenSymbol].address,
1086
+ dexKey,
1087
+ );
1088
+ }
1089
+ });
1090
+ });
1091
+ });
1092
+ });
701
1093
  });
@@ -111,6 +111,8 @@ export class CurveV1Factory
111
111
  readonly isFeeOnTransferSupported = true;
112
112
  readonly isStatePollingDex = true;
113
113
 
114
+ private factoryAddresses: string[];
115
+
114
116
  readonly poolManager: CurveV1FactoryPoolManager;
115
117
  readonly ifaces: CurveV1FactoryIfaces;
116
118
 
@@ -138,6 +140,8 @@ export class CurveV1Factory
138
140
  ) {
139
141
  super(dexHelper, dexKey);
140
142
  this.logger = dexHelper.getLogger(`${this.dexKey}-${this.network}`);
143
+ this.factoryAddresses =
144
+ this.config.factories?.map(e => e.address.toLowerCase()) || [];
141
145
  this.ifaces = {
142
146
  exchangeRouter: new Interface(CurveABI),
143
147
  factory: new Interface(FactoryCurveV1ABI as JsonFragment[]),
@@ -358,10 +362,7 @@ export class CurveV1Factory
358
362
  return;
359
363
  }
360
364
 
361
- if (
362
- !this.config.factoryAddresses ||
363
- this.config.factoryAddresses.length == 0
364
- ) {
365
+ if (!this.factoryAddresses || this.factoryAddresses.length == 0) {
365
366
  this.logger.warn(`No factory address specified in configs`);
366
367
  return;
367
368
  }
@@ -370,13 +371,13 @@ export class CurveV1Factory
370
371
  // So I put it here to not forget call, because custom pools must be initialised before factory pools
371
372
  // This function may be called multiple times, but will execute only once
372
373
  await this.initializeCustomPollingPools(
373
- this.config.factoryAddresses,
374
+ this.factoryAddresses,
374
375
  blockNumber,
375
376
  initializeInitialState,
376
377
  );
377
378
 
378
379
  await Promise.all(
379
- this.config.factoryAddresses.map(async factoryAddress => {
380
+ this.factoryAddresses.map(async factoryAddress => {
380
381
  try {
381
382
  const poolCountResult =
382
383
  await this.dexHelper.multiWrapper!.tryAggregate(true, [
@@ -436,6 +437,11 @@ export class CurveV1Factory
436
437
  }
437
438
  });
438
439
 
440
+ const factoryConfig = this.config.factories?.find(
441
+ ({ address }) =>
442
+ factoryAddress.toLowerCase() === address.toLowerCase(),
443
+ );
444
+
439
445
  let callDataFromFactoryPools: MultiCallParams<
440
446
  string[] | number[] | string
441
447
  >[] = poolAddresses
@@ -458,7 +464,11 @@ export class CurveV1Factory
458
464
  ): string[] =>
459
465
  generalDecoder<string[]>(
460
466
  result,
461
- ['address[4]'],
467
+ [
468
+ `address[${
469
+ factoryConfig?.maxPlainCoins?.toString() || ''
470
+ }]`,
471
+ ],
462
472
  new Array(4).fill(NULL_ADDRESS),
463
473
  parsed => parsed[0].map((p: string) => p.toLowerCase()),
464
474
  ),
@@ -474,7 +484,11 @@ export class CurveV1Factory
474
484
  ): number[] =>
475
485
  generalDecoder<number[]>(
476
486
  result,
477
- ['uint256[4]'],
487
+ [
488
+ `uint256[${
489
+ factoryConfig?.maxPlainCoins?.toString() || ''
490
+ }]`,
491
+ ],
478
492
  [0, 0, 0, 0],
479
493
  parsed =>
480
494
  parsed[0].map((p: BigNumber) => Number(p.toString())),
@@ -486,43 +500,51 @@ export class CurveV1Factory
486
500
  // This is divider between pools related results and implementations
487
501
  const factoryResultsDivider = callDataFromFactoryPools.length;
488
502
 
503
+ const metaPoolImplementations = factoryConfig?.isStableNg
504
+ ? []
505
+ : basePoolAddresses.map(basePoolAddress => ({
506
+ target: factoryAddress,
507
+ callData: this.ifaces.factory.encodeFunctionData(
508
+ 'metapool_implementations',
509
+ [basePoolAddress],
510
+ ),
511
+ decodeFunction: (
512
+ result: MultiResult<BytesLike> | BytesLike,
513
+ ): string[] =>
514
+ generalDecoder<string[]>(
515
+ result,
516
+ ['address[10]'],
517
+ new Array(10).fill(NULL_ADDRESS),
518
+ parsed => parsed[0].map((p: string) => p.toLowerCase()),
519
+ ),
520
+ }));
521
+
522
+ const plainImplementations = factoryConfig?.isStableNg
523
+ ? []
524
+ : _.flattenDeep(
525
+ _.range(2, FACTORY_MAX_PLAIN_COINS + 1).map(coinNumber =>
526
+ _.range(FACTORY_MAX_PLAIN_IMPLEMENTATIONS_FOR_COIN).map(
527
+ implInd => ({
528
+ target: factoryAddress,
529
+ callData: this.ifaces.factory.encodeFunctionData(
530
+ 'plain_implementations',
531
+ [coinNumber, implInd],
532
+ ),
533
+ decodeFunction: addressDecode,
534
+ }),
535
+ ),
536
+ ),
537
+ );
538
+
489
539
  // Implementations must be requested from factory, but it accepts as arg basePool address
490
540
  // for metaPools
491
541
  callDataFromFactoryPools = callDataFromFactoryPools.concat(
492
- ...basePoolAddresses.map(basePoolAddress => ({
493
- target: factoryAddress,
494
- callData: this.ifaces.factory.encodeFunctionData(
495
- 'metapool_implementations',
496
- [basePoolAddress],
497
- ),
498
- decodeFunction: (
499
- result: MultiResult<BytesLike> | BytesLike,
500
- ): string[] =>
501
- generalDecoder<string[]>(
502
- result,
503
- ['address[10]'],
504
- new Array(10).fill(NULL_ADDRESS),
505
- parsed => parsed[0].map((p: string) => p.toLowerCase()),
506
- ),
507
- })),
542
+ ...metaPoolImplementations,
508
543
  // To receive plain pool implementation address, you have to call plain_implementations
509
544
  // with two variables: N_COINS and implementations_index
510
545
  // N_COINS is between 2-4. Currently more than 4 coins is not supported
511
546
  // as for implementation index, there are only 0-9 indexes
512
- ..._.flattenDeep(
513
- _.range(2, FACTORY_MAX_PLAIN_COINS + 1).map(coinNumber =>
514
- _.range(FACTORY_MAX_PLAIN_IMPLEMENTATIONS_FOR_COIN).map(
515
- implInd => ({
516
- target: factoryAddress,
517
- callData: this.ifaces.factory.encodeFunctionData(
518
- 'plain_implementations',
519
- [coinNumber, implInd],
520
- ),
521
- decodeFunction: addressDecode,
522
- }),
523
- ),
524
- ),
525
- ),
547
+ ...plainImplementations,
526
548
  );
527
549
 
528
550
  const allResultsFromFactory = (
@@ -629,7 +651,7 @@ export class CurveV1Factory
629
651
  factoryImplementationFromConfig.name,
630
652
  implementationAddress.toLowerCase(),
631
653
  poolAddresses[i],
632
- this.config.stateUpdatePeriodMs,
654
+ this.config,
633
655
  factoryAddress,
634
656
  poolIdentifier,
635
657
  poolConstants,
@@ -1154,6 +1176,7 @@ export class CurveV1Factory
1154
1176
  sendEthButSupportsInsertFromAmount: true,
1155
1177
  dexFuncHasRecipient: false,
1156
1178
  targetExchange: exchange,
1179
+ returnAmountPos: undefined,
1157
1180
  };
1158
1181
  }
1159
1182
 
@@ -45,6 +45,7 @@ export class CurveV1FactoryPoolManager {
45
45
  private allCurveLiquidityApiSlugs: Set<string> = new Set([
46
46
  '/factory',
47
47
  '/factory-crvusd',
48
+ '/factory-stable-ng',
48
49
  ]);
49
50
 
50
51
  private statePollingManager = StatePollingManager;
@@ -285,6 +285,8 @@ const implementations: Record<ImplementationNames, _calc_withdraw_one_coin> = {
285
285
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: customArbitrum2CoinBtc,
286
286
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: factoryPlain2EthEma2,
287
287
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: customArbitrum2CoinBtc,
288
+
289
+ [ImplementationNames.FACTORY_STABLE_NG]: notImplemented,
288
290
  };
289
291
 
290
292
  export default implementations;
@@ -1,9 +1,8 @@
1
- import _ from 'lodash';
2
1
  import { ImplementationNames } from '../../types';
3
2
  import { IPoolContext, _dynamic_fee } from '../types';
4
3
  import { throwNotExist } from './utils';
5
4
 
6
- const customAvalanche3CoinLending: _dynamic_fee = (
5
+ const dynamicFee: _dynamic_fee = (
7
6
  self: IPoolContext,
8
7
  xpi: bigint,
9
8
  xpj: bigint,
@@ -23,6 +22,9 @@ const customAvalanche3CoinLending: _dynamic_fee = (
23
22
  }
24
23
  };
25
24
 
25
+ const stableNg = dynamicFee;
26
+ const customAvalanche3CoinLending = dynamicFee;
27
+
26
28
  const notExist: _dynamic_fee = (
27
29
  self: IPoolContext,
28
30
  xpi: bigint,
@@ -94,6 +96,8 @@ const implementations: Record<ImplementationNames, _dynamic_fee> = {
94
96
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: notExist,
95
97
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: notExist,
96
98
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: notExist,
99
+
100
+ [ImplementationNames.FACTORY_STABLE_NG]: stableNg,
97
101
  };
98
102
 
99
103
  export default implementations;
@@ -109,6 +109,8 @@ const implementations: Record<ImplementationNames, _rates> = {
109
109
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: notExist,
110
110
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: notExist,
111
111
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: notExist,
112
+
113
+ [ImplementationNames.FACTORY_STABLE_NG]: notExist,
112
114
  };
113
115
 
114
116
  export default implementations;
@@ -107,6 +107,8 @@ const implementations: Record<ImplementationNames, _xp> = {
107
107
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: notExist,
108
108
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: notExist,
109
109
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: notExist,
110
+
111
+ [ImplementationNames.FACTORY_STABLE_NG]: notExist,
110
112
  };
111
113
 
112
114
  export default implementations;
@@ -96,6 +96,8 @@ const implementations: Record<ImplementationNames, _xp_mem> = {
96
96
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: factoryPlain2Basic,
97
97
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: factoryPlain2Basic,
98
98
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: factoryPlain2Basic,
99
+
100
+ [ImplementationNames.FACTORY_STABLE_NG]: notExist,
99
101
  };
100
102
 
101
103
  export default implementations;
@@ -223,6 +223,8 @@ const implementations: Record<ImplementationNames, calc_token_amount> = {
223
223
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: customPlain3CoinThree,
224
224
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: customPlain3CoinThree,
225
225
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: customPlain2CoinCrv,
226
+
227
+ [ImplementationNames.FACTORY_STABLE_NG]: notImplemented,
226
228
  };
227
229
 
228
230
  export default implementations;
@@ -83,6 +83,8 @@ export const implementations: Record<
83
83
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA]: customPlain3CoinThree,
84
84
  [ImplementationNames.FACTORY_PLAIN_2_ETH_EMA2]: customPlain3CoinThree,
85
85
  [ImplementationNames.FACTORY_PLAIN_2_CRV_EMA]: customPlain3CoinThree,
86
+
87
+ [ImplementationNames.FACTORY_STABLE_NG]: notImplemented,
86
88
  };
87
89
 
88
90
  export default implementations;
@@ -584,6 +584,17 @@ const implementationConstants: Record<
584
584
  isFeeOnTransferSupported: false,
585
585
  isLending: false,
586
586
 
587
+ N_COINS: 2,
588
+ BI_N_COINS: 2n,
589
+ PRECISION: BI_POWS[18],
590
+ FEE_DENOMINATOR: BI_POWS[10],
591
+ A_PRECISION: 100n,
592
+ },
593
+ [ImplementationNames.FACTORY_STABLE_NG]: {
594
+ isWrapNative: false,
595
+ isFeeOnTransferSupported: false,
596
+ isLending: false,
597
+
587
598
  N_COINS: 2,
588
599
  BI_N_COINS: 2n,
589
600
  PRECISION: BI_POWS[18],