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

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
@@ -9,7 +9,11 @@ import { DexExchangeBuildParam, DexExchangeParam } from '../types';
9
9
  import { Executors, Flag, SpecialDex } from './types';
10
10
  import { isETHAddress } from '../utils';
11
11
  import { DepositWithdrawReturn } from '../dex/weth/types';
12
- import { ExecutorBytecodeBuilder } from './ExecutorBytecodeBuilder';
12
+ import {
13
+ DexCallDataParams,
14
+ ExecutorBytecodeBuilder,
15
+ SingleSwapCallDataParams,
16
+ } from './ExecutorBytecodeBuilder';
13
17
  import {
14
18
  BYTES_64_LENGTH,
15
19
  NOT_EXISTING_EXCHANGE_PARAM_INDEX,
@@ -18,6 +22,7 @@ import {
18
22
  ZEROS_20_BYTES,
19
23
  ZEROS_28_BYTES,
20
24
  ZEROS_4_BYTES,
25
+ DEFAULT_RETURN_AMOUNT_POS,
21
26
  } from './constants';
22
27
  import { assert } from 'ts-essentials';
23
28
 
@@ -25,10 +30,25 @@ const {
25
30
  utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack },
26
31
  } = ethers;
27
32
 
33
+ export type Executor02SingleSwapCallDataParams = {
34
+ routeIndex: number;
35
+ swapIndex: number;
36
+ wrapToSwapMap: { [key: number]: boolean };
37
+ wrapToSwapExchangeMap: { [key: string]: boolean };
38
+ swap: OptimalSwap;
39
+ };
40
+
41
+ export type Executor02DexCallDataParams = {
42
+ swapExchange: OptimalSwapExchange<any>;
43
+ };
44
+
28
45
  /**
29
46
  * Class to build bytecode for Executor02 - simpleSwap with N DEXs (VERTICAL_BRANCH), multiSwaps (VERTICAL_BRANCH_HORIZONTAL_SEQUENCE) and megaswaps (NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE)
30
47
  */
31
- export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
48
+ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder<
49
+ Executor02SingleSwapCallDataParams,
50
+ Executor02DexCallDataParams
51
+ > {
32
52
  type = Executors.TWO;
33
53
  /**
34
54
  * Executor02 Flags:
@@ -64,6 +84,7 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
64
84
  specialDexFlag,
65
85
  specialDexSupportsInsertFromAmount,
66
86
  swappedAmountNotPresentInExchangeData,
87
+ preSwapUnwrapCalldata,
67
88
  } = exchangeParam;
68
89
 
69
90
  const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
@@ -95,6 +116,13 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
95
116
  : Flag.INSERT_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP; // 8 or 11
96
117
  }
97
118
 
119
+ // Actual srcToken is eth, because we'll unwrap weth before swap.
120
+ // Need to check balance, some dexes don't have 1:1 ETH -> custom_ETH rate
121
+ if (preSwapUnwrapCalldata) {
122
+ dexFlag =
123
+ Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP;
124
+ }
125
+
98
126
  return {
99
127
  dexFlag,
100
128
  approveFlag,
@@ -147,6 +175,7 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
147
175
  swappedAmountNotPresentInExchangeData,
148
176
  wethAddress,
149
177
  sendEthButSupportsInsertFromAmount,
178
+ preSwapUnwrapCalldata,
150
179
  } = exchangeParam;
151
180
 
152
181
  const isEthSrc = isETHAddress(srcToken);
@@ -217,6 +246,13 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
217
246
  : Flag.INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP; // 3
218
247
  }
219
248
 
249
+ // Actual srcToken is eth, because we'll unwrap weth before swap.
250
+ // Need to check balance, some dexes don't have 1:1 ETH -> custom_ETH rate
251
+ if (preSwapUnwrapCalldata) {
252
+ dexFlag =
253
+ Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP;
254
+ }
255
+
220
256
  return {
221
257
  dexFlag,
222
258
  approveFlag,
@@ -224,21 +260,27 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
224
260
  }
225
261
 
226
262
  protected buildDexCallData(
227
- priceRoute: OptimalRate,
228
- routeIndex: number,
229
- swapIndex: number,
230
- swapExchangeIndex: number,
231
- exchangeParams: DexExchangeBuildParam[],
232
- exchangeParamIndex: number,
233
- isLastSwap: boolean,
234
- flag: Flag,
235
- swapExchange: OptimalSwapExchange<any>,
263
+ params: DexCallDataParams<Executor02DexCallDataParams>,
236
264
  ): string {
265
+ const {
266
+ priceRoute,
267
+ exchangeParamIndex,
268
+ swapExchange,
269
+ exchangeParams,
270
+ routeIndex,
271
+ swapIndex,
272
+ flag,
273
+ } = params;
274
+
237
275
  const swap = priceRoute.bestRoute[routeIndex].swaps[swapIndex];
238
276
  const exchangeParam = exchangeParams[exchangeParamIndex];
239
277
  let { exchangeData, specialDexFlag, targetExchange, needWrapNative } =
240
278
  exchangeParam;
241
279
 
280
+ const returnAmountPos =
281
+ exchangeParam.returnAmountPos !== undefined
282
+ ? exchangeParam.returnAmountPos
283
+ : DEFAULT_RETURN_AMOUNT_POS;
242
284
  const applyVerticalBranching = this.doesSwapNeedToApplyVerticalBranching(
243
285
  priceRoute,
244
286
  routeIndex,
@@ -306,6 +348,8 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
306
348
  destTokenPos,
307
349
  specialDexFlag || SpecialDex.DEFAULT,
308
350
  flag,
351
+ undefined,
352
+ returnAmountPos,
309
353
  );
310
354
  }
311
355
 
@@ -510,19 +554,27 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
510
554
 
511
555
  const curExchangeParam = exchangeParams[exchangeParamIndex];
512
556
 
513
- const dexCallData = this.buildDexCallData(
557
+ const dexCallData = this.buildDexCallData({
514
558
  priceRoute,
515
559
  routeIndex,
516
560
  swapIndex,
517
561
  swapExchangeIndex,
518
562
  exchangeParams,
519
563
  exchangeParamIndex,
520
- false,
521
- flags.dexes[exchangeParamIndex],
564
+ isLastSwap: false,
565
+ flag: flags.dexes[exchangeParamIndex],
522
566
  swapExchange,
523
- );
567
+ });
524
568
 
525
- swapExchangeCallData = hexConcat([dexCallData]);
569
+ if (curExchangeParam.preSwapUnwrapCalldata) {
570
+ const withdrawCallData = this.buildUnwrapEthCallData(
571
+ this.getWETHAddress(curExchangeParam),
572
+ curExchangeParam.preSwapUnwrapCalldata,
573
+ );
574
+ swapExchangeCallData = hexConcat([withdrawCallData, dexCallData]);
575
+ } else {
576
+ swapExchangeCallData = hexConcat([dexCallData]);
577
+ }
526
578
 
527
579
  const isLastSwap =
528
580
  swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
@@ -546,7 +598,7 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
546
598
  }
547
599
 
548
600
  if (
549
- !isETHAddress(swap!.srcToken) &&
601
+ !isETHAddress(swap.srcToken) &&
550
602
  !curExchangeParam.transferSrcTokenBeforeSwap &&
551
603
  curExchangeParam.approveData
552
604
  ) {
@@ -560,7 +612,7 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
560
612
  }
561
613
 
562
614
  if (curExchangeParam.needWrapNative) {
563
- if (isETHAddress(swap!.srcToken)) {
615
+ if (isETHAddress(swap.srcToken)) {
564
616
  let approveWethCalldata = '0x';
565
617
  if (
566
618
  curExchangeParam.approveData &&
@@ -963,7 +1015,7 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
963
1015
  flag = Flag.INSERT_FROM_AMOUNT_DONT_CHECK_BALANCE_AFTER_SWAP; // 3
964
1016
  }
965
1017
  } else {
966
- const isEthDest = isETHAddress(swap!.destToken);
1018
+ const isEthDest = isETHAddress(swap.destToken);
967
1019
 
968
1020
  if (isEthDest) {
969
1021
  if (
@@ -982,36 +1034,38 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
982
1034
  }
983
1035
 
984
1036
  protected buildSingleSwapCallData(
985
- priceRoute: OptimalRate,
986
- exchangeParams: DexExchangeBuildParam[],
987
- routeIndex: number,
988
- swapIndex: number,
989
- flags: { approves: Flag[]; dexes: Flag[]; wrap: Flag },
990
- sender: string,
991
- appendedWrapToSwapMap: { [key: number]: boolean },
992
- addedWrapToSwapExchangeMap: { [key: string]: boolean },
993
- maybeWethCallData?: DepositWithdrawReturn,
994
- swap?: OptimalSwap,
1037
+ params: SingleSwapCallDataParams<Executor02SingleSwapCallDataParams>,
995
1038
  ): string {
1039
+ const {
1040
+ priceRoute,
1041
+ exchangeParams,
1042
+ routeIndex,
1043
+ swapIndex,
1044
+ flags,
1045
+ maybeWethCallData,
1046
+ wrapToSwapMap,
1047
+ wrapToSwapExchangeMap,
1048
+ swap,
1049
+ } = params;
996
1050
  const isLastSwap =
997
1051
  swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
998
1052
  const isMegaSwap = priceRoute.bestRoute.length > 1;
999
1053
  const isMultiSwap =
1000
1054
  !isMegaSwap && priceRoute.bestRoute[routeIndex].swaps.length > 1;
1001
1055
 
1002
- const { swapExchanges } = swap!;
1056
+ const { swapExchanges } = swap;
1003
1057
 
1004
1058
  const applyVerticalBranching = this.doesSwapNeedToApplyVerticalBranching(
1005
1059
  priceRoute,
1006
1060
  routeIndex,
1007
- swap!,
1061
+ swap,
1008
1062
  );
1009
1063
 
1010
1064
  const anyDexOnSwapDoesntNeedWrapNative =
1011
- this.anyDexOnSwapDoesntNeedWrapNative(priceRoute, swap!, exchangeParams);
1065
+ this.anyDexOnSwapDoesntNeedWrapNative(priceRoute, swap, exchangeParams);
1012
1066
 
1013
1067
  const needToAppendWrapCallData =
1014
- isETHAddress(swap!.destToken) &&
1068
+ isETHAddress(swap.destToken) &&
1015
1069
  anyDexOnSwapDoesntNeedWrapNative &&
1016
1070
  !isLastSwap &&
1017
1071
  maybeWethCallData?.deposit;
@@ -1027,11 +1081,11 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
1027
1081
  swapExchangeIndex,
1028
1082
  exchangeParams,
1029
1083
  flags,
1030
- addedWrapToSwapExchangeMap,
1031
- !appendedWrapToSwapMap[swapIndex - 1],
1032
- appendedWrapToSwapMap[swapIndex - 1],
1084
+ wrapToSwapExchangeMap,
1085
+ !wrapToSwapMap[swapIndex - 1],
1086
+ wrapToSwapMap[swapIndex - 1],
1033
1087
  maybeWethCallData,
1034
- swap!.swapExchanges.length > 1,
1088
+ swap.swapExchanges.length > 1,
1035
1089
  applyVerticalBranching,
1036
1090
  ),
1037
1091
  ]);
@@ -1040,7 +1094,7 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
1040
1094
  );
1041
1095
 
1042
1096
  if (needToAppendWrapCallData) {
1043
- appendedWrapToSwapMap[swapIndex] = true;
1097
+ wrapToSwapMap[swapIndex] = true;
1044
1098
  }
1045
1099
 
1046
1100
  if (!isMultiSwap && !isMegaSwap) {
@@ -1054,11 +1108,11 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
1054
1108
  priceRoute,
1055
1109
  routeIndex,
1056
1110
  exchangeParams,
1057
- swap!,
1111
+ swap,
1058
1112
  swapCallData,
1059
1113
  this.buildVerticalBranchingFlag(
1060
1114
  priceRoute,
1061
- swap!,
1115
+ swap,
1062
1116
  exchangeParams,
1063
1117
  routeIndex,
1064
1118
  swapIndex,
@@ -1098,18 +1152,19 @@ export class Executor02BytecodeBuilder extends ExecutorBytecodeBuilder {
1098
1152
  (swapAcc, swap, swapIndex) =>
1099
1153
  hexConcat([
1100
1154
  swapAcc,
1101
- this.buildSingleSwapCallData(
1155
+ this.buildSingleSwapCallData({
1102
1156
  priceRoute,
1103
1157
  exchangeParams,
1104
1158
  routeIndex,
1105
1159
  swapIndex,
1106
1160
  flags,
1107
1161
  sender,
1108
- appendedWrapToSwapExchangeMap,
1109
- addedWrapToSwapMap,
1162
+ wrapToSwapExchangeMap: appendedWrapToSwapExchangeMap,
1163
+ wrapToSwapMap: addedWrapToSwapMap,
1110
1164
  maybeWethCallData,
1111
1165
  swap,
1112
- ),
1166
+ index: 0,
1167
+ }),
1113
1168
  ]),
1114
1169
  '0x',
1115
1170
  );
@@ -9,18 +9,34 @@ import {
9
9
  import { isETHAddress } from '../utils';
10
10
  import { DepositWithdrawReturn } from '../dex/weth/types';
11
11
  import { Executors, Flag, SpecialDex } from './types';
12
- import { BYTES_96_LENGTH, ZEROS_28_BYTES } from './constants';
13
- import { ExecutorBytecodeBuilder } from './ExecutorBytecodeBuilder';
12
+ import { BYTES_96_LENGTH } from './constants';
13
+ import {
14
+ DexCallDataParams,
15
+ ExecutorBytecodeBuilder,
16
+ SingleSwapCallDataParams,
17
+ } from './ExecutorBytecodeBuilder';
14
18
  import { assert } from 'ts-essentials';
15
19
 
16
20
  const {
17
21
  utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack },
18
22
  } = ethers;
19
23
 
24
+ export type Executor03SingleSwapCallDataParams = {
25
+ swap: OptimalSwap;
26
+ };
27
+
28
+ export type Executor03DexCallDataParams = {
29
+ swapExchange?: OptimalSwapExchange<any>;
30
+ maybeWethCallData?: DepositWithdrawReturn;
31
+ };
32
+
20
33
  /**
21
34
  * Class to build bytecode for Executor03 - simpleSwap (SINGLE_STEP) with 100% on a path and multiSwap with 100% amounts on each path (HORIZONTAL_SEQUENCE)
22
35
  */
23
- export class Executor03BytecodeBuilder extends ExecutorBytecodeBuilder {
36
+ export class Executor03BytecodeBuilder extends ExecutorBytecodeBuilder<
37
+ Executor03SingleSwapCallDataParams,
38
+ Executor03DexCallDataParams
39
+ > {
24
40
  type = Executors.THREE;
25
41
  /**
26
42
  * Executor03 Flags:
@@ -98,30 +114,33 @@ export class Executor03BytecodeBuilder extends ExecutorBytecodeBuilder {
98
114
  }
99
115
 
100
116
  protected buildSingleSwapCallData(
101
- priceRoute: OptimalRate,
102
- exchangeParams: DexExchangeBuildParam[],
103
- index: number,
104
- flags: { approves: Flag[]; dexes: Flag[]; wrap: Flag },
105
- sender: string,
106
- maybeWethCallData: DepositWithdrawReturn | undefined,
107
- swap: OptimalSwap,
117
+ params: SingleSwapCallDataParams<Executor03SingleSwapCallDataParams>,
108
118
  ): string {
119
+ const {
120
+ priceRoute,
121
+ exchangeParams,
122
+ index,
123
+ flags,
124
+ maybeWethCallData,
125
+ swap,
126
+ } = params;
127
+ if (!swap) throw new Error('Swap is not provided for single swap calldata');
128
+
109
129
  let swapCallData = '';
110
130
 
111
131
  const curExchangeParam = exchangeParams[index];
112
132
 
113
- const dexCallData = this.buildDexCallData(
133
+ const dexCallData = this.buildDexCallData({
114
134
  priceRoute,
115
- 0,
116
- 0,
117
- index,
135
+ routeIndex: 0,
136
+ swapIndex: 0,
137
+ swapExchangeIndex: index,
118
138
  exchangeParams,
119
- index,
120
- true,
121
- flags.dexes[index],
122
- undefined,
139
+ exchangeParamIndex: index,
140
+ isLastSwap: true,
141
+ flag: flags.dexes[index],
123
142
  maybeWethCallData,
124
- );
143
+ });
125
144
 
126
145
  swapCallData = hexConcat([dexCallData]);
127
146
 
@@ -220,17 +239,17 @@ export class Executor03BytecodeBuilder extends ExecutorBytecodeBuilder {
220
239
  }
221
240
 
222
241
  protected buildDexCallData(
223
- priceRoute: OptimalRate,
224
- routeIndex: number,
225
- swapIndex: number,
226
- swapExchangeIndex: number,
227
- exchangeParams: DexExchangeBuildParam[],
228
- exchangeParamIndex: number,
229
- isLastSwap: boolean,
230
- flag: Flag,
231
- _?: OptimalSwapExchange<any>,
232
- maybeWethCalldata?: DepositWithdrawReturn,
242
+ params: DexCallDataParams<Executor03DexCallDataParams>,
233
243
  ): string {
244
+ const {
245
+ priceRoute,
246
+ routeIndex,
247
+ swapIndex,
248
+ exchangeParams,
249
+ exchangeParamIndex,
250
+ flag,
251
+ maybeWethCallData,
252
+ } = params;
234
253
  const dontCheckBalanceAfterSwap = flag % 3 === 0;
235
254
  const checkDestTokenBalanceAfterSwap = flag % 3 === 2;
236
255
 
@@ -254,7 +273,7 @@ export class Executor03BytecodeBuilder extends ExecutorBytecodeBuilder {
254
273
  if (
255
274
  isETHAddress(swap.destToken) &&
256
275
  exchangeParam.needWrapNative &&
257
- maybeWethCalldata?.withdraw
276
+ maybeWethCallData?.withdraw
258
277
  ) {
259
278
  exchangeData = this.addTokenAddressToCallData(
260
279
  exchangeData,
@@ -354,15 +373,15 @@ export class Executor03BytecodeBuilder extends ExecutorBytecodeBuilder {
354
373
  (acc, ep, index) =>
355
374
  hexConcat([
356
375
  acc,
357
- this.buildSingleSwapCallData(
376
+ this.buildSingleSwapCallData({
358
377
  priceRoute,
359
378
  exchangeParams,
360
379
  index,
361
380
  flags,
362
381
  sender,
363
382
  maybeWethCallData,
364
- swapWithOrderedExchanges,
365
- ),
383
+ swap: swapWithOrderedExchanges,
384
+ }),
366
385
  ]),
367
386
  '0x',
368
387
  );
@@ -30,7 +30,27 @@ const {
30
30
  utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack },
31
31
  } = ethers;
32
32
 
33
- export abstract class ExecutorBytecodeBuilder {
33
+ export type SingleSwapCallDataParams<T> = {
34
+ priceRoute: OptimalRate;
35
+ exchangeParams: DexExchangeBuildParam[];
36
+ index: number;
37
+ flags: { approves: Flag[]; dexes: Flag[]; wrap: Flag };
38
+ sender: string;
39
+ maybeWethCallData?: DepositWithdrawReturn;
40
+ } & T;
41
+
42
+ export type DexCallDataParams<T> = {
43
+ priceRoute: OptimalRate;
44
+ routeIndex: number;
45
+ swapIndex: number;
46
+ swapExchangeIndex: number;
47
+ exchangeParams: DexExchangeBuildParam[];
48
+ exchangeParamIndex: number;
49
+ isLastSwap: boolean;
50
+ flag: Flag;
51
+ } & T;
52
+
53
+ export abstract class ExecutorBytecodeBuilder<S = {}, D = {}> {
34
54
  type!: Executors;
35
55
  erc20Interface: Interface;
36
56
 
@@ -38,7 +58,7 @@ export abstract class ExecutorBytecodeBuilder {
38
58
  this.erc20Interface = new Interface(ERC20ABI);
39
59
  }
40
60
 
41
- protected abstract buildSimpleSwapFlags(
61
+ protected buildSimpleSwapFlags(
42
62
  priceRoute: OptimalRate,
43
63
  exchangeParams: DexExchangeBuildParam[],
44
64
  routeIndex: number,
@@ -46,9 +66,18 @@ export abstract class ExecutorBytecodeBuilder {
46
66
  swapExchangeIndex: number,
47
67
  exchangeParamIndex: number,
48
68
  maybeWethCallData?: DepositWithdrawReturn,
49
- ): { dexFlag: Flag; approveFlag: Flag };
69
+ ): {
70
+ dexFlag: Flag;
71
+ approveFlag: Flag;
72
+ } {
73
+ return {
74
+ dexFlag:
75
+ Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP,
76
+ approveFlag: 0,
77
+ };
78
+ }
50
79
 
51
- protected abstract buildMultiMegaSwapFlags(
80
+ protected buildMultiMegaSwapFlags(
52
81
  priceRoute: OptimalRate,
53
82
  exchangeParams: DexExchangeBuildParam[],
54
83
  routeIndex: number,
@@ -56,7 +85,16 @@ export abstract class ExecutorBytecodeBuilder {
56
85
  swapExchangeIndex: number,
57
86
  exchangeParamIndex: number,
58
87
  maybeWethCallData?: DepositWithdrawReturn,
59
- ): { dexFlag: Flag; approveFlag: Flag };
88
+ ): {
89
+ dexFlag: Flag;
90
+ approveFlag: Flag;
91
+ } {
92
+ return {
93
+ dexFlag:
94
+ Flag.SEND_ETH_EQUAL_TO_FROM_AMOUNT_CHECK_SRC_TOKEN_BALANCE_AFTER_SWAP,
95
+ approveFlag: 0,
96
+ };
97
+ }
60
98
 
61
99
  public abstract buildByteCode(
62
100
  priceRoute: OptimalRate,
@@ -67,18 +105,15 @@ export abstract class ExecutorBytecodeBuilder {
67
105
 
68
106
  public abstract getAddress(): string;
69
107
 
70
- protected abstract buildDexCallData(
71
- priceRoute: OptimalRate,
72
- routeIndex: number,
73
- swapIndex: number,
74
- swapExchangeIndex: number,
75
- exchangeParams: DexExchangeBuildParam[],
76
- exchangeParamIndex: number,
77
- isLastSwap: boolean,
78
- flag: Flag,
79
- swapExchange?: OptimalSwapExchange<any>,
80
- maybeWethCallData?: DepositWithdrawReturn,
81
- ): string;
108
+ protected buildSingleSwapCallData(
109
+ params: SingleSwapCallDataParams<S>,
110
+ ): string {
111
+ return '0x';
112
+ }
113
+
114
+ protected buildDexCallData(params: DexCallDataParams<D>): string {
115
+ return '0x';
116
+ }
82
117
 
83
118
  protected buildApproveCallData(
84
119
  spender: string,
@@ -193,6 +228,7 @@ export abstract class ExecutorBytecodeBuilder {
193
228
  specialDexFlag: SpecialDex,
194
229
  flag: Flag,
195
230
  toAmountPos = 0,
231
+ returnAmountPos = DEFAULT_RETURN_AMOUNT_POS,
196
232
  ): string {
197
233
  const builder =
198
234
  this.type !== Executors.THREE
@@ -207,6 +243,7 @@ export abstract class ExecutorBytecodeBuilder {
207
243
  specialDexFlag,
208
244
  flag,
209
245
  toAmountPos,
246
+ returnAmountPos,
210
247
  );
211
248
  }
212
249
 
@@ -217,13 +254,15 @@ export abstract class ExecutorBytecodeBuilder {
217
254
  destTokenPos: number,
218
255
  specialDexFlag: SpecialDex,
219
256
  flag: Flag,
257
+ toAmountPos = 0, // not used for Executor01 and Executor02, just to follow the same interface
258
+ returnAmountPos = DEFAULT_RETURN_AMOUNT_POS,
220
259
  ) {
221
260
  return solidityPack(EXECUTOR_01_02_FUNCTION_CALL_DATA_TYPES, [
222
261
  tokenAddress, // token address
223
262
  hexZeroPad(hexlify(hexDataLength(calldata) + BYTES_28_LENGTH), 4), // calldata length + bytes28(0)
224
263
  hexZeroPad(hexlify(fromAmountPos), 2), // fromAmountPos
225
264
  hexZeroPad(hexlify(destTokenPos), 2), // destTokenPos
226
- hexZeroPad(hexlify(DEFAULT_RETURN_AMOUNT_POS), 1), // TODO: Fix returnAmount Pos
265
+ hexZeroPad(hexlify(returnAmountPos), 1), // returnAmountPos
227
266
  hexZeroPad(hexlify(specialDexFlag), 1), // special
228
267
  hexZeroPad(hexlify(flag), 2), // flag
229
268
  ZEROS_28_BYTES, // bytes28(0)
@@ -5,11 +5,13 @@ import { Executor01BytecodeBuilder } from './Executor01BytecodeBuilder';
5
5
  import { Executor02BytecodeBuilder } from './Executor02BytecodeBuilder';
6
6
  import { Executors, RouteExecutionType } from './types';
7
7
  import { Executor03BytecodeBuilder } from './Executor03BytecodeBuilder';
8
+ import { WETHBytecodeBuilder, isSingleWrapRoute } from './WETHBytecodeBuilder';
8
9
 
9
10
  export class ExecutorDetector {
10
11
  private executor01BytecodeBuilder: ExecutorBytecodeBuilder;
11
12
  private executor02BytecodeBuilder: ExecutorBytecodeBuilder;
12
13
  private executor03BytecodeBuilder: ExecutorBytecodeBuilder;
14
+ private wethBytecodeBuilder: ExecutorBytecodeBuilder;
13
15
 
14
16
  protected routeExecutionTypeToExecutorMap: Record<
15
17
  SwapSide,
@@ -40,6 +42,8 @@ export class ExecutorDetector {
40
42
  this.executor03BytecodeBuilder = new Executor03BytecodeBuilder(
41
43
  this.dexHelper,
42
44
  );
45
+
46
+ this.wethBytecodeBuilder = new WETHBytecodeBuilder(this.dexHelper);
43
47
  }
44
48
 
45
49
  protected getRouteExecutionType(priceRoute: OptimalRate): RouteExecutionType {
@@ -82,7 +86,15 @@ export class ExecutorDetector {
82
86
  throw new Error('Route type is not supported yet');
83
87
  }
84
88
 
89
+ detectSpecialExecutor(priceRoute: OptimalRate): Executors | null {
90
+ if (isSingleWrapRoute(priceRoute)) return Executors.WETH;
91
+ return null;
92
+ }
93
+
85
94
  getExecutorByPriceRoute(priceRoute: OptimalRate): Executors {
95
+ const specialExecutor = this.detectSpecialExecutor(priceRoute);
96
+ if (specialExecutor) return specialExecutor;
97
+
86
98
  const routeExecutionType = this.getRouteExecutionType(priceRoute);
87
99
  const executorName =
88
100
  this.routeExecutionTypeToExecutorMap[priceRoute.side][routeExecutionType];
@@ -110,6 +122,8 @@ export class ExecutorDetector {
110
122
  return this.executor02BytecodeBuilder;
111
123
  case Executors.THREE:
112
124
  return this.executor03BytecodeBuilder;
125
+ case Executors.WETH:
126
+ return this.wethBytecodeBuilder;
113
127
  default:
114
128
  throw new Error(`${executorName} is not supported`);
115
129
  }
@@ -0,0 +1,57 @@
1
+ import { DexExchangeBuildParam } from '../types';
2
+ import { OptimalRate, SwapSide } from '@paraswap/core';
3
+ import { isETHAddress } from '../utils';
4
+ import { DepositWithdrawReturn } from '../dex/weth/types';
5
+ import { WethConfig } from '../dex/weth/config';
6
+ import { Executors, Flag, SpecialDex } from './types';
7
+ import { ExecutorBytecodeBuilder } from './ExecutorBytecodeBuilder';
8
+ import { Network } from '../constants';
9
+
10
+ const SUPPORTED_NETWORKS = [
11
+ Network.MAINNET,
12
+ Network.AVALANCHE,
13
+ Network.BSC,
14
+ Network.BASE,
15
+ Network.POLYGON,
16
+ Network.OPTIMISM,
17
+ Network.ZKEVM,
18
+ ];
19
+ const SUPPORTED_EXCHANGES = Object.keys(WethConfig);
20
+
21
+ export const isSingleWrapRoute = (priceRoute: OptimalRate): boolean => {
22
+ //note: FANTOM and ARBITRUM doesnt support fallback deposit case
23
+
24
+ const isSingleSwap =
25
+ priceRoute.bestRoute.length === 1 &&
26
+ priceRoute.bestRoute[0].swaps.length === 1 &&
27
+ priceRoute.bestRoute[0].swaps[0].swapExchanges.length === 1;
28
+
29
+ const { exchange } = priceRoute.bestRoute[0].swaps[0].swapExchanges[0];
30
+
31
+ const isWethExchange = SUPPORTED_EXCHANGES.includes(exchange);
32
+ const supportedNetwork = SUPPORTED_NETWORKS.includes(priceRoute.network);
33
+
34
+ const isWrap = isETHAddress(priceRoute.srcToken);
35
+
36
+ return supportedNetwork && isSingleSwap && isWethExchange && isWrap;
37
+ };
38
+
39
+ /**
40
+ * Class to build bytecode for WETH - simple optimisation for a single ETH->WETH Swap
41
+ */
42
+ export class WETHBytecodeBuilder extends ExecutorBytecodeBuilder {
43
+ type = Executors.WETH;
44
+
45
+ public getAddress(): string {
46
+ return this.dexHelper.config.data.wrappedNativeTokenAddress;
47
+ }
48
+
49
+ public buildByteCode(
50
+ priceRoute: OptimalRate,
51
+ exchangeParams: DexExchangeBuildParam[],
52
+ sender: string,
53
+ maybeWethCallData?: DepositWithdrawReturn,
54
+ ): string {
55
+ return '0x';
56
+ }
57
+ }