@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
@@ -0,0 +1,117 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+
4
+ import { testE2E } from '../../../tests/utils-e2e';
5
+ import { Tokens, Holders } from '../../../tests/constants-e2e';
6
+ import { Network, ContractMethod, SwapSide } from '../../constants';
7
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
8
+ import { generateConfig } from '../../config';
9
+ import { DummyDexHelper } from '../../dex-helper';
10
+ import { WethConfig } from './config';
11
+
12
+ const NETWORKS = [
13
+ Network.MAINNET,
14
+ Network.AVALANCHE,
15
+ Network.BSC,
16
+ Network.BASE,
17
+ Network.POLYGON,
18
+ Network.OPTIMISM,
19
+ Network.FANTOM,
20
+ Network.ARBITRUM,
21
+ Network.ZKEVM,
22
+ ];
23
+
24
+ const nativeAmount = '10000000000000000';
25
+ const wrappedAmount = '10000000000000000';
26
+
27
+ describe('Wrapped Native E2E v6', () => {
28
+ NETWORKS.forEach(network => {
29
+ describe(`${network}`, () => {
30
+ const dexKey = Object.keys(WethConfig).find(
31
+ key => !!WethConfig[key][network],
32
+ );
33
+ if (!dexKey) return;
34
+
35
+ const tokens = Tokens[network];
36
+ const holders = Holders[network];
37
+ const provider = new StaticJsonRpcProvider(
38
+ generateConfig(network).privateHttpProvider,
39
+ network,
40
+ );
41
+
42
+ const dexHelper = new DummyDexHelper(network);
43
+
44
+ const nativeTokenSymbol =
45
+ dexHelper.config.data.nativeTokenSymbol.toUpperCase();
46
+ const wrappedTokenSymbol =
47
+ dexHelper.config.data.wrappedNativeTokenSymbol.toUpperCase();
48
+
49
+ const nativeToken = tokens[nativeTokenSymbol];
50
+ const wrappedToken = tokens[wrappedTokenSymbol];
51
+
52
+ const nativeHolder = holders[nativeTokenSymbol];
53
+ const wrappedHolder = holders[wrappedTokenSymbol];
54
+
55
+ [
56
+ ContractMethod.simpleSwap,
57
+ ContractMethod.multiSwap,
58
+ ContractMethod.megaSwap,
59
+ ].forEach(contractMethod => {
60
+ describe(`${contractMethod}`, () => {
61
+ it(`SELL ${nativeTokenSymbol} -> ${wrappedTokenSymbol}`, async () => {
62
+ await testE2E(
63
+ nativeToken,
64
+ wrappedToken,
65
+ nativeHolder,
66
+ nativeAmount,
67
+ SwapSide.SELL,
68
+ dexKey,
69
+ contractMethod,
70
+ network,
71
+ provider,
72
+ );
73
+ });
74
+ it(`SELL ${wrappedTokenSymbol} -> ${nativeTokenSymbol}`, async () => {
75
+ await testE2E(
76
+ wrappedToken,
77
+ nativeToken,
78
+ wrappedHolder,
79
+ wrappedAmount,
80
+ SwapSide.SELL,
81
+ dexKey,
82
+ contractMethod,
83
+ network,
84
+ provider,
85
+ );
86
+ });
87
+ it(`BUY ${nativeTokenSymbol} -> ${wrappedTokenSymbol}`, async () => {
88
+ await testE2E(
89
+ nativeToken,
90
+ wrappedToken,
91
+ nativeHolder,
92
+ nativeAmount,
93
+ SwapSide.BUY,
94
+ dexKey,
95
+ contractMethod,
96
+ network,
97
+ provider,
98
+ );
99
+ });
100
+ it(`BUY ${wrappedTokenSymbol} -> ${nativeTokenSymbol}`, async () => {
101
+ await testE2E(
102
+ wrappedToken,
103
+ nativeToken,
104
+ wrappedHolder,
105
+ wrappedAmount,
106
+ SwapSide.BUY,
107
+ dexKey,
108
+ contractMethod,
109
+ network,
110
+ provider,
111
+ );
112
+ });
113
+ });
114
+ });
115
+ });
116
+ });
117
+ });
@@ -170,6 +170,7 @@ export class Weth
170
170
  dexFuncHasRecipient: false,
171
171
  exchangeData: swapData,
172
172
  targetExchange: this.address,
173
+ returnAmountPos: undefined,
173
174
  };
174
175
  }
175
176
 
@@ -32,6 +32,7 @@ import { WombatBmw } from './wombat-bmw';
32
32
  import { fromWad } from './utils';
33
33
  import { WombatPool } from './wombat-pool';
34
34
  import { StatePollingManager } from '../../lib/stateful-rpc-poller/state-polling-manager';
35
+ import { extractReturnAmountPosition } from '../../executor/utils';
35
36
 
36
37
  export class Wombat extends SimpleExchange implements IDex<WombatData> {
37
38
  // contract interfaces
@@ -339,6 +340,14 @@ export class Wombat extends SimpleExchange implements IDex<WombatData> {
339
340
  dexFuncHasRecipient: true,
340
341
  exchangeData: swapData,
341
342
  targetExchange: exchange,
343
+ returnAmountPos:
344
+ side === SwapSide.SELL
345
+ ? extractReturnAmountPosition(
346
+ Wombat.poolInterface,
347
+ 'swap',
348
+ 'actualToAmount',
349
+ )
350
+ : undefined,
342
351
  };
343
352
  }
344
353
 
@@ -5,18 +5,18 @@ import { Network, SwapSide } from '../../constants';
5
5
  export const WooFiV2Config: DexConfigMap<DexParams> = {
6
6
  WooFiV2: {
7
7
  [Network.OPTIMISM]: {
8
- wooPPV2Address: '0xd1778F9DF3eee5473A9640f13682e3846f61fEbC',
9
- wooOracleV2Address: '0xd589484d3A27B7Ce5C2C7F829EB2e1D163f95817',
8
+ wooPPV2Address: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642',
9
+ wooOracleV2Address: '0xA43305Ce0164D87d7B2368f91a1dcC4eBdA75127',
10
10
  integrationHelperAddress: '0x96329d66074EB8386Ae8bFD6698B2E3FDA87e15E',
11
11
  // USDC
12
12
  quoteToken: {
13
- address: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607',
13
+ address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
14
14
  decimals: 6,
15
15
  },
16
16
  },
17
17
  [Network.BSC]: {
18
- wooPPV2Address: '0x59dE3B49314Bf5067719364A2Cb43e8525ab93FA',
19
- wooOracleV2Address: '0x72dc7fa5eeb901a34173C874A7333c8d1b34bca9',
18
+ wooPPV2Address: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642',
19
+ wooOracleV2Address: '0x2A375567f5E13F6bd74fDa7627Df3b1Af6BfA5a6',
20
20
  integrationHelperAddress: '0xAA9c15cd603428cA8ddD45e933F8EfE3Afbcc173',
21
21
  // USDT
22
22
  quoteToken: {
@@ -25,12 +25,12 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
25
25
  },
26
26
  },
27
27
  [Network.POLYGON]: {
28
- wooPPV2Address: '0x7081A38158BD050Ae4a86e38E0225Bc281887d7E',
29
- wooOracleV2Address: '0x31aE608cBadD1214D6A3d5dcf49E45Fb18E2a48E',
28
+ wooPPV2Address: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642',
29
+ wooOracleV2Address: '0x2A8Ede62D0717C8C92b88639ecf603FDF31A8428',
30
30
  integrationHelperAddress: '0x7Ba560eB735AbDCf9a3a5692272652A0cc81850d',
31
31
  // USDC
32
32
  quoteToken: {
33
- address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',
33
+ address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',
34
34
  decimals: 6,
35
35
  },
36
36
  },
@@ -45,18 +45,18 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
45
45
  },
46
46
  },
47
47
  [Network.ARBITRUM]: {
48
- wooPPV2Address: '0xeFF23B4bE1091b53205E35f3AfCD9C7182bf3062',
49
- wooOracleV2Address: '0x73504eaCB100c7576146618DC306c97454CB3620',
48
+ wooPPV2Address: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642',
49
+ wooOracleV2Address: '0xCf4EA1688bc23DD93D933edA535F8B72FC8934Ec',
50
50
  integrationHelperAddress: '0x28D2B949024FE50627f1EbC5f0Ca3Ca721148E40',
51
51
  // USDC
52
52
  quoteToken: {
53
- address: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8',
53
+ address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
54
54
  decimals: 6,
55
55
  },
56
56
  },
57
57
  [Network.AVALANCHE]: {
58
- wooPPV2Address: '0x3b3E4b4741e91aF52d0e9ad8660573E951c88524',
59
- wooOracleV2Address: '0xc13843aE0D2C5ca9E0EfB93a78828446D8173d19',
58
+ wooPPV2Address: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642',
59
+ wooOracleV2Address: '0x2A375567f5E13F6bd74fDa7627Df3b1Af6BfA5a6',
60
60
  integrationHelperAddress: '0x020630613E296c3E9b06186f630D1bF97A2B6Ad1',
61
61
  // USDC
62
62
  quoteToken: {
@@ -65,12 +65,12 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
65
65
  },
66
66
  },
67
67
  [Network.BASE]: {
68
- wooPPV2Address: '0xb130a49065178465931d4f887056328CeA5D723f',
69
- wooOracleV2Address: '0x2Fe5E5D341cFFa606a5d9DA1B6B646a381B0f7ec',
68
+ wooPPV2Address: '0xEd9e3f98bBed560e66B89AaC922E29D4596A9642',
69
+ wooOracleV2Address: '0x2A375567f5E13F6bd74fDa7627Df3b1Af6BfA5a6',
70
70
  integrationHelperAddress: '0xC4E9B633685461E7B7A807D12a246C81f96F31B8',
71
71
  // USDbC
72
72
  quoteToken: {
73
- address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA',
73
+ address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
74
74
  decimals: 6,
75
75
  },
76
76
  },
@@ -28,6 +28,7 @@ import { addressDecode } from '../../lib/decoders';
28
28
  import { ifaces } from './utils';
29
29
  import { StatePollingManager } from '../../lib/stateful-rpc-poller/state-polling-manager';
30
30
  import { solidityPack } from 'ethers/lib/utils';
31
+ import { extractReturnAmountPosition } from '../../executor/utils';
31
32
 
32
33
  export class WooFiV2 extends SimpleExchange implements IDex<WooFiV2Data> {
33
34
  readonly math: WooFiV2Math;
@@ -357,6 +358,10 @@ export class WooFiV2 extends SimpleExchange implements IDex<WooFiV2Data> {
357
358
  exchangeData: swapData,
358
359
  targetExchange: this.config.wooPPV2Address,
359
360
  transferSrcTokenBeforeSwap: this.config.wooPPV2Address,
361
+ returnAmountPos:
362
+ side === SwapSide.SELL
363
+ ? extractReturnAmountPosition(ifaces.PPV2, 'swap', 'realToAmount')
364
+ : undefined,
360
365
  };
361
366
  }
362
367
 
@@ -23,6 +23,7 @@ import { uint256ToBigInt } from '../../lib/decoders';
23
23
  import { Utils } from '../../utils';
24
24
  import WSTETH_ABI from '../../abi/wstETH.json';
25
25
  import STETH_ABI from '../../abi/stETH.json';
26
+ import { extractReturnAmountPosition } from '../../executor/utils';
26
27
 
27
28
  export class WstETH extends SimpleExchange implements IDex<WstETHData> {
28
29
  static readonly wstETHIface = new Interface(WSTETH_ABI);
@@ -252,16 +253,24 @@ export class WstETH extends SimpleExchange implements IDex<WstETHData> {
252
253
  data: WstETHData,
253
254
  side: SwapSide,
254
255
  ): Promise<DexExchangeParam> {
255
- const exchangeData = WstETH.wstETHIface.encodeFunctionData(
256
- srcToken.toLowerCase() === this.config.stETHAddress ? 'wrap' : 'unwrap',
257
- [srcAmount],
258
- );
256
+ const swapFunction =
257
+ srcToken.toLowerCase() === this.config.stETHAddress ? 'wrap' : 'unwrap';
258
+ const exchangeData = WstETH.wstETHIface.encodeFunctionData(swapFunction, [
259
+ srcAmount,
260
+ ]);
259
261
 
260
262
  return {
261
263
  needWrapNative: this.needWrapNative,
262
264
  dexFuncHasRecipient: false,
263
265
  exchangeData,
264
266
  targetExchange: this.config.wstETHAddress,
267
+ returnAmountPos:
268
+ side === SwapSide.SELL
269
+ ? extractReturnAmountPosition(
270
+ WstETH.wstETHIface,
271
+ swapFunction,
272
+ )
273
+ : undefined,
265
274
  };
266
275
  }
267
276
 
@@ -257,6 +257,7 @@ export class ZeroX
257
257
  dexFuncHasRecipient: false,
258
258
  exchangeData: swapData,
259
259
  targetExchange: this.getExchange(data),
260
+ returnAmountPos: undefined,
260
261
  };
261
262
  }
262
263
 
@@ -4,18 +4,28 @@ import { OptimalRate } from '@paraswap/core';
4
4
  import { isETHAddress } from '../utils';
5
5
  import { DepositWithdrawReturn } from '../dex/weth/types';
6
6
  import { Executors, Flag, SpecialDex } from './types';
7
- import { BYTES_64_LENGTH } from './constants';
8
- import { ExecutorBytecodeBuilder } from './ExecutorBytecodeBuilder';
7
+ import { BYTES_64_LENGTH, DEFAULT_RETURN_AMOUNT_POS } from './constants';
8
+ import {
9
+ DexCallDataParams,
10
+ ExecutorBytecodeBuilder,
11
+ SingleSwapCallDataParams,
12
+ } from './ExecutorBytecodeBuilder';
9
13
  import { assert } from 'ts-essentials';
10
14
 
11
15
  const {
12
16
  utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack },
13
17
  } = ethers;
14
18
 
19
+ export type Executor01SingleSwapCallDataParams = {};
20
+ export type Executor01DexCallDataParams = {};
21
+
15
22
  /**
16
23
  * Class to build bytecode for Executor01 - simpleSwap (SINGLE_STEP) with 100% on a path and multiSwap with 100% amounts on each path (HORIZONTAL_SEQUENCE)
17
24
  */
18
- export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
25
+ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder<
26
+ Executor01SingleSwapCallDataParams,
27
+ Executor01DexCallDataParams
28
+ > {
19
29
  type = Executors.ONE;
20
30
  /**
21
31
  * Executor01 Flags:
@@ -51,6 +61,7 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
51
61
  specialDexFlag,
52
62
  specialDexSupportsInsertFromAmount,
53
63
  swappedAmountNotPresentInExchangeData,
64
+ preSwapUnwrapCalldata,
54
65
  } = exchangeParam;
55
66
 
56
67
  const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
@@ -82,6 +93,13 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
82
93
  : Flag.INSERT_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP; // 8 or 11
83
94
  }
84
95
 
96
+ // Actual srcToken is eth, because we'll unwrap weth before swap.
97
+ // Need to check balance, some dexes don't have 1:1 ETH -> custom_ETH rate
98
+ if (preSwapUnwrapCalldata) {
99
+ dexFlag =
100
+ Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP;
101
+ }
102
+
85
103
  return {
86
104
  dexFlag,
87
105
  approveFlag,
@@ -122,6 +140,7 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
122
140
  specialDexSupportsInsertFromAmount,
123
141
  swappedAmountNotPresentInExchangeData,
124
142
  sendEthButSupportsInsertFromAmount,
143
+ preSwapUnwrapCalldata,
125
144
  } = exchangeParam;
126
145
 
127
146
  const isLastSwap =
@@ -186,6 +205,13 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
186
205
  : Flag.INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP; // 3
187
206
  }
188
207
 
208
+ // Actual srcToken is eth, because we'll unwrap weth before swap.
209
+ // Need to check balance, some dexes don't have 1:1 ETH -> custom_ETH rate
210
+ if (preSwapUnwrapCalldata) {
211
+ dexFlag =
212
+ Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP;
213
+ }
214
+
189
215
  return {
190
216
  dexFlag,
191
217
  approveFlag,
@@ -193,29 +219,35 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
193
219
  }
194
220
 
195
221
  protected buildSingleSwapCallData(
196
- priceRoute: OptimalRate,
197
- exchangeParams: DexExchangeBuildParam[],
198
- index: number,
199
- flags: { approves: Flag[]; dexes: Flag[]; wrap: Flag },
200
- sender: string,
201
- maybeWethCallData?: DepositWithdrawReturn,
222
+ params: SingleSwapCallDataParams<Executor01SingleSwapCallDataParams>,
202
223
  ): string {
224
+ const { priceRoute, index, exchangeParams, flags, maybeWethCallData } =
225
+ params;
226
+
203
227
  let swapCallData = '';
204
228
  const swap = priceRoute.bestRoute[0].swaps[index];
205
229
  const curExchangeParam = exchangeParams[index];
206
230
 
207
- const dexCallData = this.buildDexCallData(
231
+ const dexCallData = this.buildDexCallData({
208
232
  priceRoute,
209
- 0,
210
- index,
211
- 0,
233
+ routeIndex: 0,
234
+ swapIndex: index,
235
+ swapExchangeIndex: 0,
212
236
  exchangeParams,
213
- index,
214
- index === priceRoute.bestRoute[0].swaps.length - 1,
215
- flags.dexes[index],
216
- );
217
-
218
- swapCallData = hexConcat([dexCallData]);
237
+ exchangeParamIndex: index,
238
+ isLastSwap: index === priceRoute.bestRoute[0].swaps.length - 1,
239
+ flag: flags.dexes[index],
240
+ });
241
+
242
+ if (curExchangeParam.preSwapUnwrapCalldata) {
243
+ const withdrawCallData = this.buildUnwrapEthCallData(
244
+ this.getWETHAddress(curExchangeParam),
245
+ curExchangeParam.preSwapUnwrapCalldata,
246
+ );
247
+ swapCallData = hexConcat([withdrawCallData, dexCallData]);
248
+ } else {
249
+ swapCallData = hexConcat([dexCallData]);
250
+ }
219
251
 
220
252
  if (curExchangeParam.transferSrcTokenBeforeSwap) {
221
253
  const transferCallData = this.buildTransferCallData(
@@ -301,21 +333,27 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
301
333
  }
302
334
 
303
335
  protected buildDexCallData(
304
- priceRoute: OptimalRate,
305
- routeIndex: number,
306
- swapIndex: number,
307
- swapExchangeIndex: number,
308
- exchangeParams: DexExchangeBuildParam[],
309
- exchangeParamIndex: number,
310
- isLastSwap: boolean,
311
- flag: Flag,
336
+ params: DexCallDataParams<Executor01DexCallDataParams>,
312
337
  ): string {
338
+ const {
339
+ priceRoute,
340
+ exchangeParamIndex,
341
+ exchangeParams,
342
+ routeIndex,
343
+ swapIndex,
344
+ flag,
345
+ } = params;
346
+
313
347
  const dontCheckBalanceAfterSwap = flag % 3 === 0;
314
348
  const checkDestTokenBalanceAfterSwap = flag % 3 === 2;
315
349
  const insertFromAmount = flag % 4 === 3 || flag % 4 === 2;
316
350
  const exchangeParam = exchangeParams[exchangeParamIndex];
317
351
  const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
318
352
  let { exchangeData, specialDexFlag } = exchangeParam;
353
+ const returnAmountPos =
354
+ exchangeParam.returnAmountPos !== undefined
355
+ ? exchangeParam.returnAmountPos
356
+ : DEFAULT_RETURN_AMOUNT_POS;
319
357
 
320
358
  let destTokenPos = 0;
321
359
  if (checkDestTokenBalanceAfterSwap && !dontCheckBalanceAfterSwap) {
@@ -359,6 +397,8 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
359
397
  destTokenPos,
360
398
  specialDexFlag || SpecialDex.DEFAULT,
361
399
  flag,
400
+ undefined,
401
+ returnAmountPos,
362
402
  );
363
403
  }
364
404
 
@@ -382,14 +422,14 @@ export class Executor01BytecodeBuilder extends ExecutorBytecodeBuilder {
382
422
  (acc, ep, index) =>
383
423
  hexConcat([
384
424
  acc,
385
- this.buildSingleSwapCallData(
425
+ this.buildSingleSwapCallData({
386
426
  priceRoute,
387
427
  exchangeParams,
388
428
  index,
389
429
  flags,
390
430
  sender,
391
431
  maybeWethCallData,
392
- ),
432
+ }),
393
433
  ]),
394
434
  '0x',
395
435
  );