@paraswap/dex-lib 2.45.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/.github/workflows/release-package.yml +32 -0
  2. package/.vscode/launch.json +72 -0
  3. package/.vscode/settings.json +2 -0
  4. package/.vscode/tasks.json +15 -0
  5. package/build/abi/AugustusV6.abi.json +1454 -0
  6. package/build/abi/augustus-v6/ABI.json +1075 -0
  7. package/build/config.d.ts +1 -0
  8. package/build/config.js +53 -1
  9. package/build/config.js.map +1 -1
  10. package/build/constants.d.ts +6 -0
  11. package/build/constants.js +9 -2
  12. package/build/constants.js.map +1 -1
  13. package/build/dex/aave-v1/aave-v1.d.ts +2 -1
  14. package/build/dex/aave-v1/aave-v1.js +22 -0
  15. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  16. package/build/dex/aave-v2/aave-v2.d.ts +2 -1
  17. package/build/dex/aave-v2/aave-v2.js +80 -0
  18. package/build/dex/aave-v2/aave-v2.js.map +1 -1
  19. package/build/dex/aave-v3/aave-v3.d.ts +3 -1
  20. package/build/dex/aave-v3/aave-v3.js +39 -0
  21. package/build/dex/aave-v3/aave-v3.js.map +1 -1
  22. package/build/dex/algebra/algebra.d.ts +2 -1
  23. package/build/dex/algebra/algebra.js +52 -1
  24. package/build/dex/algebra/algebra.js.map +1 -1
  25. package/build/dex/algebra/scripts/validate-state-v1-1.d.ts +1 -0
  26. package/build/dex/algebra/scripts/validate-state-v1-1.js +206 -0
  27. package/build/dex/algebra/scripts/validate-state-v1-1.js.map +1 -0
  28. package/build/dex/augustus-approvals-helper.d.ts +22 -0
  29. package/build/dex/augustus-approvals-helper.js +110 -0
  30. package/build/dex/augustus-approvals-helper.js.map +1 -0
  31. package/build/dex/augustus-approvals.d.ts +24 -0
  32. package/build/dex/augustus-approvals.js +106 -0
  33. package/build/dex/augustus-approvals.js.map +1 -0
  34. package/build/dex/bProtocol/bProtocol.d.ts +15 -0
  35. package/build/dex/bProtocol/bProtocol.js +51 -0
  36. package/build/dex/bProtocol/bProtocol.js.map +1 -0
  37. package/build/dex/bProtocol/types.d.ts +11 -0
  38. package/build/dex/bProtocol/types.js +8 -0
  39. package/build/dex/bProtocol/types.js.map +1 -0
  40. package/build/dex/bProtocol.d.ts +2 -1
  41. package/build/dex/bProtocol.js +15 -0
  42. package/build/dex/bProtocol.js.map +1 -1
  43. package/build/dex/balancer-v1/balancer-v1.d.ts +5 -3
  44. package/build/dex/balancer-v1/balancer-v1.js +72 -3
  45. package/build/dex/balancer-v1/balancer-v1.js.map +1 -1
  46. package/build/dex/balancer-v2/balancer-v2.d.ts +16 -4
  47. package/build/dex/balancer-v2/balancer-v2.js +154 -7
  48. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  49. package/build/dex/balancer-v2/constants.d.ts +4 -0
  50. package/build/dex/balancer-v2/constants.js +6 -1
  51. package/build/dex/balancer-v2/constants.js.map +1 -1
  52. package/build/dex/balancer-v2/types.d.ts +11 -0
  53. package/build/dex/bancor/bancor.d.ts +15 -0
  54. package/build/dex/bancor/bancor.js +69 -0
  55. package/build/dex/bancor/bancor.js.map +1 -0
  56. package/build/dex/bancor/config.d.ts +6 -0
  57. package/build/dex/bancor/config.js +11 -0
  58. package/build/dex/bancor/config.js.map +1 -0
  59. package/build/dex/bancor/types.d.ts +16 -0
  60. package/build/dex/bancor/types.js +8 -0
  61. package/build/dex/bancor/types.js.map +1 -0
  62. package/build/dex/bancor.d.ts +2 -1
  63. package/build/dex/bancor.js +19 -0
  64. package/build/dex/bancor.js.map +1 -1
  65. package/build/dex/camelot/camelot.d.ts +3 -1
  66. package/build/dex/camelot/camelot.js +31 -0
  67. package/build/dex/camelot/camelot.js.map +1 -1
  68. package/build/dex/camelot/scripts/validate-state.d.ts +1 -0
  69. package/build/dex/camelot/scripts/validate-state.js +84 -0
  70. package/build/dex/camelot/scripts/validate-state.js.map +1 -0
  71. package/build/dex/compound/compound.d.ts +15 -0
  72. package/build/dex/compound/compound.js +54 -0
  73. package/build/dex/compound/compound.js.map +1 -0
  74. package/build/dex/compound/types.d.ts +8 -0
  75. package/build/dex/compound/types.js +9 -0
  76. package/build/dex/compound/types.js.map +1 -0
  77. package/build/dex/compound.d.ts +2 -1
  78. package/build/dex/compound.js +12 -0
  79. package/build/dex/compound.js.map +1 -1
  80. package/build/dex/curve-v1/constants.d.ts +1 -0
  81. package/build/dex/curve-v1/constants.js +2 -1
  82. package/build/dex/curve-v1/constants.js.map +1 -1
  83. package/build/dex/curve-v1/curve-v1.d.ts +10 -3
  84. package/build/dex/curve-v1/curve-v1.js +57 -7
  85. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  86. package/build/dex/curve-v1/packer.d.ts +2 -0
  87. package/build/dex/curve-v1/packer.js +18 -0
  88. package/build/dex/curve-v1/packer.js.map +1 -0
  89. package/build/dex/curve-v1/types.d.ts +16 -0
  90. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +2 -1
  91. package/build/dex/curve-v1-factory/curve-v1-factory.js +19 -7
  92. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  93. package/build/dex/curve-v1-factory/state-polling-pools/polling-manager.js +3 -1
  94. package/build/dex/curve-v1-factory/state-polling-pools/polling-manager.js.map +1 -1
  95. package/build/dex/curve-v2/constants.d.ts +1 -0
  96. package/build/dex/curve-v2/constants.js +5 -0
  97. package/build/dex/curve-v2/constants.js.map +1 -0
  98. package/build/dex/curve-v2/curve-v2.d.ts +61 -0
  99. package/build/dex/curve-v2/curve-v2.js +245 -0
  100. package/build/dex/curve-v2/curve-v2.js.map +1 -0
  101. package/build/dex/curve-v2/types.d.ts +24 -0
  102. package/build/dex/curve-v2/types.js +10 -0
  103. package/build/dex/curve-v2/types.js.map +1 -0
  104. package/build/dex/dexalot/dexalot.d.ts +2 -1
  105. package/build/dex/dexalot/dexalot.js +25 -0
  106. package/build/dex/dexalot/dexalot.js.map +1 -1
  107. package/build/dex/dodo-v1/config.d.ts +7 -0
  108. package/build/dex/dodo-v1/config.js +16 -0
  109. package/build/dex/dodo-v1/config.js.map +1 -0
  110. package/build/dex/dodo-v1/dodo-v1.d.ts +16 -0
  111. package/build/dex/dodo-v1/dodo-v1.js +71 -0
  112. package/build/dex/dodo-v1/dodo-v1.js.map +1 -0
  113. package/build/dex/dodo-v1/types.d.ts +22 -0
  114. package/build/dex/dodo-v1/types.js +8 -0
  115. package/build/dex/dodo-v1/types.js.map +1 -0
  116. package/build/dex/dodo-v1.d.ts +2 -1
  117. package/build/dex/dodo-v1.js +20 -0
  118. package/build/dex/dodo-v1.js.map +1 -1
  119. package/build/dex/dodo-v2.d.ts +2 -1
  120. package/build/dex/dodo-v2.js +54 -0
  121. package/build/dex/dodo-v2.js.map +1 -1
  122. package/build/dex/generic-rfq/e2e-test-config.js +50 -6
  123. package/build/dex/generic-rfq/e2e-test-config.js.map +1 -1
  124. package/build/dex/generic-rfq/fetch-mm-api.js +2 -2
  125. package/build/dex/generic-rfq/fetch-mm-api.js.map +1 -1
  126. package/build/dex/generic-rfq/generic-rfq.d.ts +10 -3
  127. package/build/dex/generic-rfq/generic-rfq.js +68 -10
  128. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  129. package/build/dex/generic-rfq/rate-fetcher.js +2 -2
  130. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  131. package/build/dex/generic-rfq/test-v6/constants.d.ts +1 -0
  132. package/build/dex/generic-rfq/test-v6/constants.js +5 -0
  133. package/build/dex/generic-rfq/test-v6/constants.js.map +1 -0
  134. package/build/dex/generic-rfq/test-v6/get-config.d.ts +1 -0
  135. package/build/dex/generic-rfq/test-v6/get-config.js +63 -0
  136. package/build/dex/generic-rfq/test-v6/get-config.js.map +1 -0
  137. package/build/dex/generic-rfq/test-v6/types.d.ts +14 -0
  138. package/build/dex/generic-rfq/test-v6/types.js +3 -0
  139. package/build/dex/generic-rfq/test-v6/types.js.map +1 -0
  140. package/build/dex/generic-rfq/tokens.json +570 -0
  141. package/build/dex/generic-rfq/types.d.ts +14 -2
  142. package/build/dex/generic-rfq/types.js.map +1 -1
  143. package/build/dex/generic-rfq/utils.d.ts +1 -1
  144. package/build/dex/generic-rfq/utils.js +4 -7
  145. package/build/dex/generic-rfq/utils.js.map +1 -1
  146. package/build/dex/generic-rfq/validators.d.ts +1 -0
  147. package/build/dex/generic-rfq/validators.js +9 -12
  148. package/build/dex/generic-rfq/validators.js.map +1 -1
  149. package/build/dex/gmx/gmx.d.ts +2 -1
  150. package/build/dex/gmx/gmx.js +15 -0
  151. package/build/dex/gmx/gmx.js.map +1 -1
  152. package/build/dex/hashflow/hashflow.d.ts +2 -1
  153. package/build/dex/hashflow/hashflow.js +31 -1
  154. package/build/dex/hashflow/hashflow.js.map +1 -1
  155. package/build/dex/idex.d.ts +7 -1
  156. package/build/dex/index.d.ts +2 -0
  157. package/build/dex/index.js +23 -10
  158. package/build/dex/index.js.map +1 -1
  159. package/build/dex/jarvis-v6/jarvis-v6.d.ts +2 -1
  160. package/build/dex/jarvis-v6/jarvis-v6.js +24 -0
  161. package/build/dex/jarvis-v6/jarvis-v6.js.map +1 -1
  162. package/build/dex/jarvis.d.ts +2 -1
  163. package/build/dex/jarvis.js +50 -0
  164. package/build/dex/jarvis.js.map +1 -1
  165. package/build/dex/kyberdmm/kyberdmm.d.ts +2 -1
  166. package/build/dex/kyberdmm/kyberdmm.js +20 -0
  167. package/build/dex/kyberdmm/kyberdmm.js.map +1 -1
  168. package/build/dex/lido/config.d.ts +1 -0
  169. package/build/dex/lido/config.js +8 -0
  170. package/build/dex/lido/config.js.map +1 -0
  171. package/build/dex/lido/lido.d.ts +16 -0
  172. package/build/dex/lido/lido.js +46 -0
  173. package/build/dex/lido/lido.js.map +1 -0
  174. package/build/dex/lido/types.d.ts +4 -0
  175. package/build/dex/lido/types.js +8 -0
  176. package/build/dex/lido/types.js.map +1 -0
  177. package/build/dex/lido.d.ts +2 -1
  178. package/build/dex/lido.js +9 -0
  179. package/build/dex/lido.js.map +1 -1
  180. package/build/dex/maker-psm/maker-psm.d.ts +2 -1
  181. package/build/dex/maker-psm/maker-psm.js +27 -0
  182. package/build/dex/maker-psm/maker-psm.js.map +1 -1
  183. package/build/dex/maverick-v1/maverick-v1.d.ts +3 -1
  184. package/build/dex/maverick-v1/maverick-v1.js +35 -0
  185. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  186. package/build/dex/nerve/nerve.d.ts +2 -1
  187. package/build/dex/nerve/nerve.js +19 -0
  188. package/build/dex/nerve/nerve.js.map +1 -1
  189. package/build/dex/onebit/onebit.d.ts +16 -0
  190. package/build/dex/onebit/onebit.js +56 -0
  191. package/build/dex/onebit/onebit.js.map +1 -0
  192. package/build/dex/onebit/types.d.ts +14 -0
  193. package/build/dex/onebit/types.js +8 -0
  194. package/build/dex/onebit/types.js.map +1 -0
  195. package/build/dex/onebit.d.ts +2 -1
  196. package/build/dex/onebit.js +17 -0
  197. package/build/dex/onebit.js.map +1 -1
  198. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +2 -1
  199. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +30 -0
  200. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  201. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.d.ts +2 -1
  202. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +15 -0
  203. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  204. package/build/dex/paraswap-limit-orders/types.d.ts +1 -0
  205. package/build/dex/platypus/platypus.d.ts +2 -1
  206. package/build/dex/platypus/platypus.js +31 -0
  207. package/build/dex/platypus/platypus.js.map +1 -1
  208. package/build/dex/polygon-migrator/polygon-migrator.d.ts +2 -1
  209. package/build/dex/polygon-migrator/polygon-migrator.js +11 -0
  210. package/build/dex/polygon-migrator/polygon-migrator.js.map +1 -1
  211. package/build/dex/quick-perps/quick-perps.d.ts +2 -1
  212. package/build/dex/quick-perps/quick-perps.js +15 -0
  213. package/build/dex/quick-perps/quick-perps.js.map +1 -1
  214. package/build/dex/simple-exchange.d.ts +2 -5
  215. package/build/dex/simple-exchange.js +4 -32
  216. package/build/dex/simple-exchange.js.map +1 -1
  217. package/build/dex/smoothy/smoothy.d.ts +16 -0
  218. package/build/dex/smoothy/smoothy.js +58 -0
  219. package/build/dex/smoothy/smoothy.js.map +1 -0
  220. package/build/dex/smoothy/types.d.ts +15 -0
  221. package/build/dex/smoothy/types.js +8 -0
  222. package/build/dex/smoothy/types.js.map +1 -0
  223. package/build/dex/smoothy.d.ts +2 -1
  224. package/build/dex/smoothy.js +13 -0
  225. package/build/dex/smoothy.js.map +1 -1
  226. package/build/dex/solidly/solidly.d.ts +2 -1
  227. package/build/dex/solidly/solidly.js +30 -0
  228. package/build/dex/solidly/solidly.js.map +1 -1
  229. package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -1
  230. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +4 -4
  231. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -1
  232. package/build/dex/solidly-v3/solidly-v3.d.ts +2 -3
  233. package/build/dex/solidly-v3/solidly-v3.js +25 -37
  234. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  235. package/build/dex/stable-pool/stable-pool.d.ts +16 -0
  236. package/build/dex/stable-pool/stable-pool.js +78 -0
  237. package/build/dex/stable-pool/stable-pool.js.map +1 -0
  238. package/build/dex/stable-pool/types.d.ts +17 -0
  239. package/build/dex/stable-pool/types.js +8 -0
  240. package/build/dex/stable-pool/types.js.map +1 -0
  241. package/build/dex/stable-pool.d.ts +2 -1
  242. package/build/dex/stable-pool.js +19 -0
  243. package/build/dex/stable-pool.js.map +1 -1
  244. package/build/dex/swaap-v1/swaap-v1.d.ts +2 -1
  245. package/build/dex/swaap-v1/swaap-v1.js +10 -0
  246. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  247. package/build/dex/swaap-v2/rate-fetcher.d.ts +1 -1
  248. package/build/dex/swaap-v2/rate-fetcher.js +4 -4
  249. package/build/dex/swaap-v2/rate-fetcher.js.map +1 -1
  250. package/build/dex/swaap-v2/swaap-v2.d.ts +3 -1
  251. package/build/dex/swaap-v2/swaap-v2.js +17 -1
  252. package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
  253. package/build/dex/swaap-v2/validators.d.ts +1 -0
  254. package/build/dex/swaap-v2/validators.js +9 -12
  255. package/build/dex/swaap-v2/validators.js.map +1 -1
  256. package/build/dex/swell/swell.d.ts +2 -1
  257. package/build/dex/swell/swell.js +12 -2
  258. package/build/dex/swell/swell.js.map +1 -1
  259. package/build/dex/synthetix/synthetix.d.ts +2 -1
  260. package/build/dex/synthetix/synthetix.js +24 -0
  261. package/build/dex/synthetix/synthetix.js.map +1 -1
  262. package/build/dex/trader-joe-v2.1/config.d.ts +4 -0
  263. package/build/dex/trader-joe-v2.1/config.js +11 -0
  264. package/build/dex/trader-joe-v2.1/config.js.map +1 -0
  265. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.d.ts +19 -0
  266. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js +98 -0
  267. package/build/dex/trader-joe-v2.1/trader-joe-v2.1.js.map +1 -0
  268. package/build/dex/trader-joe-v2.1/types.d.ts +31 -0
  269. package/build/dex/trader-joe-v2.1/types.js +9 -0
  270. package/build/dex/trader-joe-v2.1/types.js.map +1 -0
  271. package/build/dex/trader-joe-v2.1.d.ts +2 -1
  272. package/build/dex/trader-joe-v2.1.js +28 -0
  273. package/build/dex/trader-joe-v2.1.js.map +1 -1
  274. package/build/dex/uniswap-v2/config.js +36 -0
  275. package/build/dex/uniswap-v2/config.js.map +1 -1
  276. package/build/dex/uniswap-v2/constants.js +7 -6
  277. package/build/dex/uniswap-v2/constants.js.map +1 -1
  278. package/build/dex/uniswap-v2/dfyn.d.ts +4 -2
  279. package/build/dex/uniswap-v2/dfyn.js +13 -0
  280. package/build/dex/uniswap-v2/dfyn.js.map +1 -1
  281. package/build/dex/uniswap-v2/types.d.ts +19 -0
  282. package/build/dex/uniswap-v2/types.js +6 -1
  283. package/build/dex/uniswap-v2/types.js.map +1 -1
  284. package/build/dex/uniswap-v2/uniswap-v2-optimizer.d.ts +2 -0
  285. package/build/dex/uniswap-v2/uniswap-v2-optimizer.js +75 -0
  286. package/build/dex/uniswap-v2/uniswap-v2-optimizer.js.map +1 -0
  287. package/build/dex/uniswap-v2/uniswap-v2.d.ts +15 -4
  288. package/build/dex/uniswap-v2/uniswap-v2.js +124 -1
  289. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  290. package/build/dex/uniswap-v3/constants.d.ts +4 -0
  291. package/build/dex/uniswap-v3/constants.js +6 -1
  292. package/build/dex/uniswap-v3/constants.js.map +1 -1
  293. package/build/dex/uniswap-v3/types.d.ts +15 -0
  294. package/build/dex/uniswap-v3/types.js.map +1 -1
  295. package/build/dex/uniswap-v3/uniswap-v3.d.ts +13 -4
  296. package/build/dex/uniswap-v3/uniswap-v3.js +130 -27
  297. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  298. package/build/dex/uniswap-v3.d.ts +2 -1
  299. package/build/dex/uniswap-v3.js +28 -0
  300. package/build/dex/uniswap-v3.js.map +1 -1
  301. package/build/dex/weth/weth.d.ts +3 -1
  302. package/build/dex/weth/weth.js +17 -2
  303. package/build/dex/weth/weth.js.map +1 -1
  304. package/build/dex/wombat/wombat.d.ts +3 -2
  305. package/build/dex/wombat/wombat.js +20 -0
  306. package/build/dex/wombat/wombat.js.map +1 -1
  307. package/build/dex/woo-fi-v2/woo-fi-v2.d.ts +2 -1
  308. package/build/dex/woo-fi-v2/woo-fi-v2.js +27 -0
  309. package/build/dex/woo-fi-v2/woo-fi-v2.js.map +1 -1
  310. package/build/dex/wsteth/wsteth.d.ts +2 -1
  311. package/build/dex/wsteth/wsteth.js +9 -0
  312. package/build/dex/wsteth/wsteth.js.map +1 -1
  313. package/build/dex/zerox/config.d.ts +2 -0
  314. package/build/dex/zerox/config.js +33 -0
  315. package/build/dex/zerox/config.js.map +1 -0
  316. package/build/dex/zerox/index.d.ts +3 -25
  317. package/build/dex/zerox/index.js +49 -42
  318. package/build/dex/zerox/index.js.map +1 -1
  319. package/build/dex/zerox/types.d.ts +29 -0
  320. package/build/dex/zerox/types.js +8 -1
  321. package/build/dex/zerox/types.js.map +1 -1
  322. package/build/dex-helper/dummy-dex-helper.d.ts +2 -0
  323. package/build/dex-helper/dummy-dex-helper.js +20 -1
  324. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  325. package/build/dex-helper/icache.d.ts +2 -0
  326. package/build/dex-helper/idex-helper.d.ts +2 -0
  327. package/build/executor/Executor01BytecodeBuilder.d.ts +53 -0
  328. package/build/executor/Executor01BytecodeBuilder.js +253 -0
  329. package/build/executor/Executor01BytecodeBuilder.js.map +1 -0
  330. package/build/executor/Executor02BytecodeBuilder.d.ts +77 -0
  331. package/build/executor/Executor02BytecodeBuilder.js +717 -0
  332. package/build/executor/Executor02BytecodeBuilder.js.map +1 -0
  333. package/build/executor/Executor03BytecodeBuilder.d.ts +41 -0
  334. package/build/executor/Executor03BytecodeBuilder.js +226 -0
  335. package/build/executor/Executor03BytecodeBuilder.js.map +1 -0
  336. package/build/executor/ExecutorBytecodeBuilder.d.ts +42 -0
  337. package/build/executor/ExecutorBytecodeBuilder.js +150 -0
  338. package/build/executor/ExecutorBytecodeBuilder.js.map +1 -0
  339. package/build/executor/ExecutorDetector.d.ts +16 -0
  340. package/build/executor/ExecutorDetector.js +93 -0
  341. package/build/executor/ExecutorDetector.js.map +1 -0
  342. package/build/executor/IExecutorBytecodeBuilder.d.ts +6 -0
  343. package/build/executor/IExecutorBytecodeBuilder.js +3 -0
  344. package/build/executor/IExecutorBytecodeBuilder.js.map +1 -0
  345. package/build/executor/constants.d.ts +18 -0
  346. package/build/executor/constants.js +49 -0
  347. package/build/executor/constants.js.map +1 -0
  348. package/build/executor/tests/utils-e2e-v6.d.ts +8 -0
  349. package/build/executor/tests/utils-e2e-v6.js +175 -0
  350. package/build/executor/tests/utils-e2e-v6.js.map +1 -0
  351. package/build/executor/types.d.ts +37 -0
  352. package/build/executor/types.js +46 -0
  353. package/build/executor/types.js.map +1 -0
  354. package/build/generic-swap-transaction-builder.d.ts +56 -0
  355. package/build/generic-swap-transaction-builder.js +306 -0
  356. package/build/generic-swap-transaction-builder.js.map +1 -0
  357. package/build/implementations/local-paraswap-sdk.d.ts +15 -9
  358. package/build/implementations/local-paraswap-sdk.js +43 -27
  359. package/build/implementations/local-paraswap-sdk.js.map +1 -1
  360. package/build/index.d.ts +1 -0
  361. package/build/index.js +3 -1
  362. package/build/index.js.map +1 -1
  363. package/build/lib/curve/encoder.d.ts +5 -0
  364. package/build/lib/curve/encoder.js +13 -0
  365. package/build/lib/curve/encoder.js.map +1 -0
  366. package/build/transaction-builder.d.ts +13 -1
  367. package/build/transaction-builder.js +17 -0
  368. package/build/transaction-builder.js.map +1 -1
  369. package/build/types.d.ts +34 -1
  370. package/jest.config.js +1 -1
  371. package/package.json +2 -2
  372. package/src/abi/augustus-v6/ABI.json +1075 -0
  373. package/src/config.ts +59 -3
  374. package/src/constants.ts +10 -1
  375. package/src/dex/aave-v1/aave-v1-e2e.test.ts +4 -8
  376. package/src/dex/aave-v1/aave-v1.ts +44 -0
  377. package/src/dex/aave-v2/aave-v2-e2e.test.ts +8 -5
  378. package/src/dex/aave-v2/aave-v2.ts +104 -0
  379. package/src/dex/aave-v3/aave-v3-e2e.test.ts +7 -5
  380. package/src/dex/aave-v3/aave-v3.ts +63 -0
  381. package/src/dex/algebra/algebra-e2e.test.ts +42 -72
  382. package/src/dex/algebra/algebra.ts +70 -3
  383. package/src/dex/augustus-approvals.ts +175 -0
  384. package/src/dex/bProtocol/bProtocol-e2e.test.ts +93 -0
  385. package/src/dex/{bProtocol.ts → bProtocol/bProtocol.ts} +40 -14
  386. package/src/dex/bProtocol/types.ts +13 -0
  387. package/src/dex/balancer-v1/balancer-v1-e2e.test.ts +7 -5
  388. package/src/dex/balancer-v1/balancer-v1.ts +116 -14
  389. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +303 -267
  390. package/src/dex/balancer-v2/balancer-v2.ts +295 -15
  391. package/src/dex/balancer-v2/constants.ts +5 -0
  392. package/src/dex/balancer-v2/types.ts +13 -0
  393. package/src/dex/bancor/bancor-e2e.test.ts +91 -0
  394. package/src/dex/{bancor.ts → bancor/bancor.ts} +46 -33
  395. package/src/dex/bancor/config.ts +9 -0
  396. package/src/dex/bancor/types.ts +19 -0
  397. package/src/dex/camelot/camelot-e2e.test.ts +72 -4
  398. package/src/dex/camelot/camelot.ts +50 -0
  399. package/src/dex/compound/compound-e2e.test.ts +91 -0
  400. package/src/dex/{compound.ts → compound/compound.ts} +39 -17
  401. package/src/dex/compound/types.ts +10 -0
  402. package/src/dex/curve-v1/constants.ts +1 -0
  403. package/src/dex/curve-v1/curve-v1-e2e.test.ts +124 -64
  404. package/src/dex/curve-v1/curve-v1.ts +108 -9
  405. package/src/dex/curve-v1/packer.ts +17 -0
  406. package/src/dex/curve-v1/types.ts +18 -0
  407. package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +9 -8
  408. package/src/dex/curve-v1-factory/curve-v1-factory.ts +37 -7
  409. package/src/dex/curve-v1-factory/state-polling-pools/polling-manager.ts +3 -3
  410. package/src/dex/curve-v2/constants.ts +1 -0
  411. package/src/dex/curve-v2/curve-v2-e2e.test.ts +104 -0
  412. package/src/dex/{curve-v2.ts → curve-v2/curve-v2.ts} +143 -23
  413. package/src/dex/curve-v2/types.ts +27 -0
  414. package/src/dex/dexalot/dexalot-e2e.test.ts +8 -6
  415. package/src/dex/dexalot/dexalot.ts +46 -0
  416. package/src/dex/dodo-v1/config.ts +15 -0
  417. package/src/dex/dodo-v1/dodo-v1-e2e.test.ts +101 -0
  418. package/src/dex/{dodo-v1.ts → dodo-v1/dodo-v1.ts} +52 -48
  419. package/src/dex/dodo-v1/types.ts +25 -0
  420. package/src/dex/dodo-v2.ts +80 -1
  421. package/src/dex/generic-rfq/e2e-test-config.ts +50 -6
  422. package/src/dex/generic-rfq/fetch-mm-api.ts +2 -4
  423. package/src/dex/generic-rfq/generic-rfq-e2e.test.ts +3 -3
  424. package/src/dex/generic-rfq/generic-rfq.ts +128 -11
  425. package/src/dex/generic-rfq/rate-fetcher.ts +2 -3
  426. package/src/dex/generic-rfq/types.ts +19 -2
  427. package/src/dex/generic-rfq/utils.ts +3 -9
  428. package/src/dex/generic-rfq/validators.ts +12 -15
  429. package/src/dex/gmx/gmx-e2e.test.ts +11 -8
  430. package/src/dex/gmx/gmx.ts +27 -0
  431. package/src/dex/hashflow/hashflow-e2e.test.ts +7 -5
  432. package/src/dex/hashflow/hashflow.ts +48 -1
  433. package/src/dex/idex.ts +34 -0
  434. package/src/dex/index.ts +27 -10
  435. package/src/dex/jarvis-v6/jarvis-v6-e2e.test.ts +5 -4
  436. package/src/dex/jarvis-v6/jarvis-v6.ts +37 -0
  437. package/src/dex/jarvis.ts +68 -1
  438. package/src/dex/kyberdmm/kyberdmm-e2e.test.ts +8 -5
  439. package/src/dex/kyberdmm/kyberdmm.ts +36 -0
  440. package/src/dex/lido/config.ts +5 -0
  441. package/src/dex/lido/lido-e2e.test.ts +71 -0
  442. package/src/dex/{lido.ts → lido/lido.ts} +34 -16
  443. package/src/dex/lido/types.ts +5 -0
  444. package/src/dex/maker-psm/maker-psm-e2e.test.ts +37 -7
  445. package/src/dex/maker-psm/maker-psm.ts +52 -0
  446. package/src/dex/maverick-v1/maverick-v1-e2e.test.ts +108 -0
  447. package/src/dex/maverick-v1/maverick-v1.ts +51 -0
  448. package/src/dex/nerve/nerve-e2e.test.ts +114 -57
  449. package/src/dex/nerve/nerve.ts +36 -0
  450. package/src/dex/{onebit.ts → onebit/onebit.ts} +43 -21
  451. package/src/dex/onebit/types.ts +17 -0
  452. package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +19 -5
  453. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +46 -0
  454. package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +34 -0
  455. package/src/dex/paraswap-limit-orders/types.ts +1 -0
  456. package/src/dex/platypus/platypus-e2e.test.ts +5 -4
  457. package/src/dex/platypus/platypus.ts +43 -0
  458. package/src/dex/polygon-migrator/polygon-migrator-e2e.test.ts +7 -5
  459. package/src/dex/polygon-migrator/polygon-migrator.ts +26 -0
  460. package/src/dex/quick-perps/quick-perps-e2e.test.ts +4 -3
  461. package/src/dex/quick-perps/quick-perps.ts +28 -0
  462. package/src/dex/quickswap/quickswap-e2e.test.ts +7 -5
  463. package/src/dex/simple-exchange.ts +16 -60
  464. package/src/dex/smoothy/smoothy-e2e.test.ts +81 -0
  465. package/src/dex/{smoothy.ts → smoothy/smoothy.ts} +34 -24
  466. package/src/dex/smoothy/types.ts +18 -0
  467. package/src/dex/solidly/solidly-e2e.test.ts +122 -0
  468. package/src/dex/solidly/solidly.ts +49 -0
  469. package/src/dex/solidly-v3/contract-math/Tick.ts +1 -4
  470. package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +6 -14
  471. package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +7 -5
  472. package/src/dex/solidly-v3/solidly-v3-events.test.ts +9 -7
  473. package/src/dex/solidly-v3/solidly-v3.ts +40 -52
  474. package/src/dex/{stable-pool.ts → stable-pool/stable-pool.ts} +45 -32
  475. package/src/dex/stable-pool/stablepool-e2e.test.ts +73 -0
  476. package/src/dex/stable-pool/types.ts +20 -0
  477. package/src/dex/swaap-v1/swaap-v1-e2e.test.ts +7 -5
  478. package/src/dex/swaap-v1/swaap-v1.ts +32 -0
  479. package/src/dex/swaap-v2/rate-fetcher.ts +6 -4
  480. package/src/dex/swaap-v2/swaap-v2-e2e.test.ts +7 -5
  481. package/src/dex/swaap-v2/swaap-v2.ts +39 -2
  482. package/src/dex/swaap-v2/validators.ts +12 -15
  483. package/src/dex/swell/swell-e2e.test.ts +4 -3
  484. package/src/dex/swell/swell.ts +27 -2
  485. package/src/dex/synthetix/synthetix-e2e.test.ts +5 -4
  486. package/src/dex/synthetix/synthetix.ts +38 -0
  487. package/src/dex/trader-joe-v2.1/config.ts +9 -0
  488. package/src/dex/trader-joe-v2.1/trader-joe-v2.1-e2e.test.ts +101 -0
  489. package/src/dex/{trader-joe-v2.1.ts → trader-joe-v2.1/trader-joe-v2.1.ts} +63 -48
  490. package/src/dex/trader-joe-v2.1/types.ts +38 -0
  491. package/src/dex/uniswap-v2/config.ts +42 -0
  492. package/src/dex/uniswap-v2/constants.ts +8 -6
  493. package/src/dex/uniswap-v2/dfyn.ts +44 -3
  494. package/src/dex/uniswap-v2/types.ts +22 -0
  495. package/src/dex/uniswap-v2/uniswap-v2-e2e-avalanche.test.ts +16 -13
  496. package/src/dex/uniswap-v2/uniswap-v2-e2e-bsc.test.ts +33 -17
  497. package/src/dex/uniswap-v2/uniswap-v2-e2e-mainnet.test.ts +424 -5
  498. package/src/dex/uniswap-v2/uniswap-v2-e2e-polygon.test.ts +145 -46
  499. package/src/dex/uniswap-v2/uniswap-v2-optimizer.ts +114 -0
  500. package/src/dex/uniswap-v2/uniswap-v2.ts +206 -2
  501. package/src/dex/uniswap-v3/constants.ts +5 -0
  502. package/src/dex/uniswap-v3/types.ts +17 -0
  503. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +460 -402
  504. package/src/dex/uniswap-v3/uniswap-v3.ts +217 -43
  505. package/src/dex/uniswap-v3.ts +52 -1
  506. package/src/dex/weth/weth-e2e.test.ts +69 -38
  507. package/src/dex/weth/weth.ts +29 -5
  508. package/src/dex/wombat/wombat-e2e.test.ts +5 -4
  509. package/src/dex/wombat/wombat.ts +32 -1
  510. package/src/dex/woo-fi-v2/woo-fi-v2-e2e.test.ts +5 -4
  511. package/src/dex/woo-fi-v2/woo-fi-v2.ts +42 -0
  512. package/src/dex/wsteth/wsteth-e2e.test.ts +4 -3
  513. package/src/dex/wsteth/wsteth.ts +24 -0
  514. package/src/dex/zerox/config.ts +31 -0
  515. package/src/dex/zerox/index.ts +63 -67
  516. package/src/dex/zerox/types.ts +34 -0
  517. package/src/dex/zerox/zerox-e2e.test.ts +110 -0
  518. package/src/dex-helper/dummy-dex-helper.ts +28 -1
  519. package/src/dex-helper/icache.ts +4 -0
  520. package/src/dex-helper/idex-helper.ts +2 -0
  521. package/src/executor/Executor01BytecodeBuilder.ts +433 -0
  522. package/src/executor/Executor02BytecodeBuilder.ts +1329 -0
  523. package/src/executor/Executor03BytecodeBuilder.ts +419 -0
  524. package/src/executor/ExecutorBytecodeBuilder.ts +350 -0
  525. package/src/executor/ExecutorDetector.ts +117 -0
  526. package/src/executor/__snapshots__/executor01-bytecode-builder-snapshot.test.ts.snap +35 -0
  527. package/src/executor/__snapshots__/executor02-bytecode-builder-snapshot.test.ts.snap +23 -0
  528. package/src/executor/constants.ts +59 -0
  529. package/src/executor/executor01-bytecode-builder-e2e.test.ts +1439 -0
  530. package/src/executor/executor01-bytecode-builder-snapshot.test.ts +271 -0
  531. package/src/executor/executor02-bytecode-builder-e2e.test.ts +1489 -0
  532. package/src/executor/executor02-bytecode-builder-snapshot.test.ts +188 -0
  533. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +16 -0
  534. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +16 -0
  535. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +16 -0
  536. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +16 -0
  537. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-dai-usdc-eth.json +16 -0
  538. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-eth-usdc-dai.json +16 -0
  539. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +16 -0
  540. package/src/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdt-usdc-dai.json +16 -0
  541. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-eth-usdc.json +9 -0
  542. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-eth.json +9 -0
  543. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-wbtc.json +9 -0
  544. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-eth-steth.json +9 -0
  545. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-steth-eth.json +9 -0
  546. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-usdc-usdt.json +9 -0
  547. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-eth-usdc.json +9 -0
  548. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-eth.json +9 -0
  549. package/src/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-usdt.json +9 -0
  550. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +12 -0
  551. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +7 -0
  552. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +7 -0
  553. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-dai-usdc-eth.json +7 -0
  554. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-eth-usdc-dai.json +7 -0
  555. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +12 -0
  556. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-eth-usdc.json +7 -0
  557. package/src/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-usdc-eth.json +7 -0
  558. package/src/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +78 -0
  559. package/src/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +81 -0
  560. package/src/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +78 -0
  561. package/src/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +78 -0
  562. package/src/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-dai-usdc-eth.json +81 -0
  563. package/src/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-eth-usdc-dai.json +81 -0
  564. package/src/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +81 -0
  565. package/src/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdt-usdc-dai.json +81 -0
  566. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-eth-usdc.json +64 -0
  567. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-eth.json +85 -0
  568. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-wbtc.json +64 -0
  569. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-eth-steth.json +52 -0
  570. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-steth-eth.json +52 -0
  571. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-usdc-usdt.json +52 -0
  572. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-eth-usdc.json +55 -0
  573. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-eth.json +55 -0
  574. package/src/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-usdt.json +55 -0
  575. package/src/executor/fixtures/executor02/exchange-params/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +23 -0
  576. package/src/executor/fixtures/executor02/exchange-params/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +37 -0
  577. package/src/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +23 -0
  578. package/src/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +23 -0
  579. package/src/executor/fixtures/executor02/exchange-params/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +51 -0
  580. package/src/executor/fixtures/executor02/exchange-params/price-route-multiswap-univ3-usdt-dai-eth.json +58 -0
  581. package/src/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +23 -0
  582. package/src/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +23 -0
  583. package/src/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +9 -0
  584. package/src/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +16 -0
  585. package/src/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +23 -0
  586. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +12 -0
  587. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +7 -0
  588. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +12 -0
  589. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +12 -0
  590. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +7 -0
  591. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-univ3-usdt-dai-eth.json +7 -0
  592. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +7 -0
  593. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +7 -0
  594. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +7 -0
  595. package/src/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +7 -0
  596. package/src/executor/fixtures/executor02/routes/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +130 -0
  597. package/src/executor/fixtures/executor02/routes/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +136 -0
  598. package/src/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +100 -0
  599. package/src/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +100 -0
  600. package/src/executor/fixtures/executor02/routes/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +166 -0
  601. package/src/executor/fixtures/executor02/routes/price-route-multiswap-univ3-usdt-dai-eth.json +190 -0
  602. package/src/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +114 -0
  603. package/src/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +114 -0
  604. package/src/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +55 -0
  605. package/src/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +73 -0
  606. package/src/executor/fixtures/executor02/routes/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +82 -0
  607. package/src/executor/types.ts +41 -0
  608. package/src/generic-swap-transaction-builder.ts +679 -0
  609. package/src/implementations/local-paraswap-sdk.ts +70 -29
  610. package/src/index.ts +1 -0
  611. package/src/lib/curve/encoder.ts +19 -0
  612. package/src/transaction-builder.ts +45 -1
  613. package/src/types.ts +35 -1
  614. package/tests/augustus-approvals.test.ts +628 -0
  615. package/tests/constants-e2e.ts +167 -35
  616. package/tests/debug-price-route.json +68 -0
  617. package/tests/debug-price-route.test.ts +55 -0
  618. package/tests/tenderly-simulation.ts +54 -5
  619. package/tests/utils-e2e.ts +347 -53
  620. package/tests/v6/executors.test.ts +110 -0
  621. package/tests/v6/price-routes/arbitrum/sell-0.1-ETH-USDC.json +104 -0
  622. package/tests/v6/price-routes/arbitrum/sell-1_000-ETH-DAI.json +294 -0
  623. package/tests/v6/price-routes/arbitrum/sell-1_000-WETH-wstETH.json +121 -0
  624. package/tests/v6/price-routes/arbitrum/sell-1_000_000-ARB-DAI.json +270 -0
  625. package/tests/v6/price-routes/arbitrum/sell-1_000_000-ARB-ETH.json +326 -0
  626. package/tests/v6/price-routes/arbitrum/sell-1_000_000-DAI-ARB.json +434 -0
  627. package/tests/v6/price-routes/arbitrum/sell-250_000-LINK-USDC.json +182 -0
  628. package/tests/v6/price-routes/arbitrum/sell-3_000-BAL-UNI.json +154 -0
  629. package/tests/v6/price-routes/avalanche/sell-100_000-WAVAX-USDC.json +315 -0
  630. package/tests/v6/price-routes/avalanche/sell-40-BTC-AVAX.json +207 -0
  631. package/tests/v6/price-routes/fantom/test.json +161 -0
  632. package/tests/v6/price-routes/mainnet/buy-3200-ETH-DAI.json +228 -0
  633. package/tests/v6/price-routes/mainnet/buy-usdc.json +233 -0
  634. package/tests/v6/price-routes/mainnet/executor-01.json +93 -0
  635. package/tests/v6/price-routes/mainnet/executor01-test copy.json +88 -0
  636. package/tests/v6/price-routes/mainnet/executor01-test.json +88 -0
  637. package/tests/v6/price-routes/mainnet/sell-1-USDC-USDT.json +78 -0
  638. package/tests/v6/price-routes/mainnet/sell-1-WBTC-BAL.json +158 -0
  639. package/tests/v6/price-routes/mainnet/sell-100-tBTC-WBTC.json +100 -0
  640. package/tests/v6/price-routes/mainnet/sell-1000-eth-dai.json +340 -0
  641. package/tests/v6/price-routes/mainnet/sell-1000-wbtc-eth-uniswapv3-balancerv2.json +162 -0
  642. package/tests/v6/price-routes/mainnet/sell-100_000-USDC-USDT-2-univ2-pools.json +86 -0
  643. package/tests/v6/price-routes/mainnet/sell-10_000-ETH-USDC-balancer.json +383 -0
  644. package/tests/v6/price-routes/mainnet/sell-10_000-ETH-stETH.json +168 -0
  645. package/tests/v6/price-routes/mainnet/sell-10_000-USDC-USDT-BalancerV2.json +68 -0
  646. package/tests/v6/price-routes/mainnet/sell-10_000-eth-usdc-uniswapv3-balancerv2.json +348 -0
  647. package/tests/v6/price-routes/mainnet/sell-1_000-stETH-ETH.json +100 -0
  648. package/tests/v6/price-routes/mainnet/sell-50-eth-usdc.json +153 -0
  649. package/tests/v6/price-routes/polygon/sell-100-WBTC-MATIC-1.json +571 -0
  650. package/tests/v6/price-routes/polygon/sell-100-WBTC-MATIC.json +559 -0
  651. package/tests/v6/price-routes/polygon/sell-1_000_000-DAI-MATIC-2.json +447 -0
  652. package/tests/v6/price-routes/polygon/sell-1_000_000-DAI-MATIC-3.json +472 -0
  653. package/tests/v6/price-routes/polygon/sell-1_000_000-DAI-MATIC.json +628 -0
  654. package/tests/v6/price-routes/polygon/test.json +109 -0
  655. package/tests/v6/utils-e2e-v6.ts +177 -0
  656. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  657. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  658. package/build/abi/wombat/pool.json +0 -1289
  659. package/build/dex/algebra/algebra-pool.d.ts +0 -46
  660. package/build/dex/algebra/algebra-pool.js +0 -336
  661. package/build/dex/algebra/algebra-pool.js.map +0 -1
  662. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  663. package/build/dex/quickswap/camelot-v3.js +0 -19
  664. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  665. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  666. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  667. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  668. package/build/dex/uniswap-v2/rebase-tokens.json +0 -7
@@ -0,0 +1,1439 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+
4
+ import { testE2E } from '../../tests/utils-e2e';
5
+ import { Holders, NativeTokenSymbols, Tokens } from '../../tests/constants-e2e';
6
+ import { ContractMethod, Network, SwapSide } from '../constants';
7
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
8
+ import { generateConfig } from '../config';
9
+ import { OptimalRate } from '../types';
10
+
11
+ function testForNetwork(
12
+ network: Network,
13
+ dexKey: string,
14
+ tokenASymbol: string,
15
+ tokenBSymbol: string,
16
+ tokenAAmount: string,
17
+ tokenBAmount: string,
18
+ nativeTokenAmount: string,
19
+ slippage?: number | undefined,
20
+ ) {
21
+ const provider = new StaticJsonRpcProvider(
22
+ generateConfig(network).privateHttpProvider,
23
+ network,
24
+ );
25
+ const tokens = Tokens[network];
26
+ const holders = Holders[network];
27
+ const nativeTokenSymbol = NativeTokenSymbols[network];
28
+
29
+ const sideToContractMethods = new Map([
30
+ [SwapSide.SELL, [ContractMethod.simpleSwap]],
31
+ ]);
32
+
33
+ describe(`${network}`, () => {
34
+ sideToContractMethods.forEach((contractMethods, side) =>
35
+ describe(`${side}`, () => {
36
+ contractMethods.forEach((contractMethod: ContractMethod) => {
37
+ describe(`${contractMethod}`, () => {
38
+ it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
39
+ await testE2E(
40
+ tokens[nativeTokenSymbol],
41
+ tokens[tokenASymbol],
42
+ holders[nativeTokenSymbol],
43
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
44
+ side,
45
+ dexKey,
46
+ contractMethod,
47
+ network,
48
+ provider,
49
+ undefined,
50
+ undefined,
51
+ undefined,
52
+ slippage,
53
+ 2000,
54
+ );
55
+ });
56
+ it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
57
+ await testE2E(
58
+ tokens[tokenASymbol],
59
+ tokens[nativeTokenSymbol],
60
+ holders[tokenASymbol],
61
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
62
+ side,
63
+ dexKey,
64
+ contractMethod,
65
+ network,
66
+ provider,
67
+ undefined,
68
+ undefined,
69
+ undefined,
70
+ slippage,
71
+ 2000,
72
+ );
73
+ });
74
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
75
+ await testE2E(
76
+ tokens[tokenASymbol],
77
+ tokens[tokenBSymbol],
78
+ holders[tokenASymbol],
79
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
80
+ side,
81
+ dexKey,
82
+ contractMethod,
83
+ network,
84
+ provider,
85
+ undefined,
86
+ undefined,
87
+ undefined,
88
+ slippage,
89
+ 2000,
90
+ );
91
+ });
92
+ });
93
+ });
94
+ }),
95
+ );
96
+ });
97
+ }
98
+
99
+ jest.setTimeout(200000);
100
+ describe('Executor01ByteCodeBuilder e2e tests', () => {
101
+ describe('Mainnet', () => {
102
+ const network = Network.MAINNET;
103
+
104
+ describe('SimpleSwap', () => {
105
+ describe('UniswapV3', () => {
106
+ const dexKey = 'UniswapV3';
107
+
108
+ const tokenASymbol: string = 'USDC';
109
+ const tokenBSymbol: string = 'USDT';
110
+
111
+ const tokenAAmount: string = '1000000';
112
+ const tokenBAmount: string = '1100000000';
113
+ const nativeTokenAmount = '1000000000000000000';
114
+
115
+ testForNetwork(
116
+ network,
117
+ dexKey,
118
+ tokenASymbol,
119
+ tokenBSymbol,
120
+ tokenAAmount,
121
+ tokenBAmount,
122
+ nativeTokenAmount,
123
+ );
124
+ });
125
+
126
+ describe('SushiSwapV3', () => {
127
+ const dexKey = 'SushiswapV3';
128
+
129
+ const tokenASymbol: string = 'USDC';
130
+ const tokenBSymbol: string = 'USDT';
131
+
132
+ const tokenAAmount: string = '1000000';
133
+ const tokenBAmount: string = '1100000000';
134
+ const nativeTokenAmount = '1000000000000000000';
135
+ //
136
+ testForNetwork(
137
+ network,
138
+ dexKey,
139
+ tokenASymbol,
140
+ tokenBSymbol,
141
+ tokenAAmount,
142
+ tokenBAmount,
143
+ nativeTokenAmount,
144
+ );
145
+ });
146
+
147
+ describe('BalancerV1', () => {
148
+ const dexKey = 'BalancerV1';
149
+
150
+ const tokenASymbol: string = 'USDC';
151
+ const tokenBSymbol: string = 'WBTC';
152
+ const tokenAAmount: string = '3333000000';
153
+ const tokenBAmount: string = '17000000';
154
+ const nativeTokenAmount = '3000000000000000000';
155
+
156
+ testForNetwork(
157
+ network,
158
+ dexKey,
159
+ tokenASymbol,
160
+ tokenBSymbol,
161
+ tokenAAmount,
162
+ tokenBAmount,
163
+ nativeTokenAmount,
164
+ );
165
+
166
+ const tokens = Tokens[network];
167
+ const holders = Holders[network];
168
+ const provider = new StaticJsonRpcProvider(
169
+ generateConfig(network).privateHttpProvider,
170
+ network,
171
+ );
172
+
173
+ it('simpleSwap USDC -> DAI', async () => {
174
+ await testE2E(
175
+ tokens['USDC'],
176
+ tokens['DAI'],
177
+ holders['USDC'],
178
+ '100000000',
179
+ SwapSide.SELL,
180
+ dexKey,
181
+ ContractMethod.simpleSwap,
182
+ network,
183
+ provider,
184
+ );
185
+ });
186
+ });
187
+
188
+ describe('BalancerV2', () => {
189
+ const dexKey = 'BalancerV2';
190
+
191
+ const tokenASymbol: string = 'USDT';
192
+ const tokenBSymbol: string = 'DAI';
193
+ const tokenAAmount: string = '100000000';
194
+ const tokenBAmount: string = '100000000000000000000';
195
+ const nativeTokenAmount = '500000000000000000';
196
+
197
+ testForNetwork(
198
+ network,
199
+ dexKey,
200
+ tokenASymbol,
201
+ tokenBSymbol,
202
+ tokenAAmount,
203
+ tokenBAmount,
204
+ nativeTokenAmount,
205
+ );
206
+ });
207
+
208
+ describe('UniswapV2Fork', () => {
209
+ const dexKey = 'UniswapV2';
210
+
211
+ const tokenASymbol: string = 'USDT';
212
+ const tokenBSymbol: string = 'DAI';
213
+ const tokenAAmount: string = '100000000';
214
+ const tokenBAmount: string = '100000000000000000000';
215
+ const nativeTokenAmount = '500000000000000000';
216
+
217
+ testForNetwork(
218
+ network,
219
+ dexKey,
220
+ tokenASymbol,
221
+ tokenBSymbol,
222
+ tokenAAmount,
223
+ tokenBAmount,
224
+ nativeTokenAmount,
225
+ );
226
+ });
227
+
228
+ describe('CurveV1', () => {
229
+ const dexKey = 'CurveV1';
230
+
231
+ const tokens = Tokens[network];
232
+ const holders = Holders[network];
233
+ const provider = new StaticJsonRpcProvider(
234
+ generateConfig(network).privateHttpProvider,
235
+ network,
236
+ );
237
+
238
+ const tokensToTest = [
239
+ [
240
+ {
241
+ symbol: 'USDT',
242
+ amount: (10 ** 8).toString(),
243
+ },
244
+ {
245
+ symbol: 'DAI',
246
+ amount: (10 ** 8).toString(),
247
+ },
248
+ ],
249
+ [
250
+ {
251
+ symbol: 'CUSDC',
252
+ amount: (10 ** 8).toString(),
253
+ },
254
+ {
255
+ symbol: 'CDAI',
256
+ amount: (10 ** 8).toString(),
257
+ },
258
+ ],
259
+ ];
260
+
261
+ const sideToContractMethods = new Map([
262
+ [
263
+ SwapSide.SELL,
264
+ [
265
+ ContractMethod.simpleSwap,
266
+ ContractMethod.multiSwap,
267
+ ContractMethod.megaSwap,
268
+ ],
269
+ ],
270
+ ]);
271
+
272
+ sideToContractMethods.forEach((contractMethods, side) =>
273
+ contractMethods.forEach((contractMethod: ContractMethod) => {
274
+ tokensToTest.forEach(pair => {
275
+ describe(`${contractMethod}`, () => {
276
+ it(`${pair[0].symbol} -> ${pair[1].symbol}`, async () => {
277
+ await testE2E(
278
+ tokens[pair[0].symbol],
279
+ tokens[pair[1].symbol],
280
+ holders[pair[0].symbol],
281
+ side === SwapSide.SELL ? pair[0].amount : pair[1].amount,
282
+ side,
283
+ dexKey,
284
+ contractMethod,
285
+ network,
286
+ provider,
287
+ );
288
+ });
289
+ });
290
+ });
291
+ }),
292
+ );
293
+ it('simpleSwap DAI -> USDT', async () => {
294
+ await testE2E(
295
+ tokens['DAI'],
296
+ tokens['USDT'],
297
+ holders['DAI'],
298
+ '100000000000000000000',
299
+ SwapSide.SELL,
300
+ dexKey,
301
+ ContractMethod.simpleSwap,
302
+ network,
303
+ provider,
304
+ );
305
+ });
306
+
307
+ it('USDC -> DAI', async () => {
308
+ await testE2E(
309
+ tokens['USDC'],
310
+ tokens['DAI'],
311
+ holders['USDC'],
312
+ '100000000',
313
+ SwapSide.SELL,
314
+ dexKey,
315
+ ContractMethod.simpleSwap,
316
+ network,
317
+ provider,
318
+ );
319
+ });
320
+
321
+ it('DAI -> GUSD', async () => {
322
+ await testE2E(
323
+ tokens['DAI'],
324
+ tokens['GUSD'],
325
+ holders['DAI'],
326
+ '100000000000000000000',
327
+ SwapSide.SELL,
328
+ dexKey,
329
+ ContractMethod.simpleSwap,
330
+ network,
331
+ provider,
332
+ null,
333
+ undefined,
334
+ undefined,
335
+ 1000,
336
+ );
337
+ });
338
+
339
+ describe('FeeOnTransfer', () => {
340
+ describe('sell', () => {
341
+ const contractMethod = ContractMethod.megaSwap;
342
+ it('stETH -> ETH', async () => {
343
+ await testE2E(
344
+ tokens['STETH'],
345
+ tokens['ETH'],
346
+ holders['STETH'],
347
+ '1000000000000000000',
348
+ SwapSide.SELL,
349
+ dexKey,
350
+ contractMethod,
351
+ network,
352
+ provider,
353
+ undefined,
354
+ undefined,
355
+ { srcFee: 1, destFee: 0, srcDexFee: 1, destDexFee: 0 },
356
+ );
357
+ });
358
+
359
+ it('ETH -> stETH', async () => {
360
+ await testE2E(
361
+ tokens['ETH'],
362
+ tokens['STETH'],
363
+ holders['ETH'],
364
+ '1000000000000000000',
365
+ SwapSide.SELL,
366
+ dexKey,
367
+ contractMethod,
368
+ network,
369
+ provider,
370
+ undefined,
371
+ undefined,
372
+ { srcFee: 0, destFee: 1, srcDexFee: 0, destDexFee: 1 },
373
+ );
374
+ });
375
+ });
376
+ });
377
+ });
378
+
379
+ describe('MaverickV1', () => {
380
+ const dexKey = 'MaverickV1';
381
+
382
+ const tokens = Tokens[network];
383
+ const holders = Holders[network];
384
+ const provider = new StaticJsonRpcProvider(
385
+ generateConfig(network).privateHttpProvider,
386
+ network,
387
+ );
388
+
389
+ it('USDC -> DAI', async () => {
390
+ await testE2E(
391
+ tokens['USDC'],
392
+ tokens['DAI'],
393
+ holders['USDC'],
394
+ '100000000',
395
+ SwapSide.SELL,
396
+ dexKey,
397
+ ContractMethod.simpleSwap,
398
+ network,
399
+ provider,
400
+ );
401
+ });
402
+
403
+ it('ETH -> USDC', async () => {
404
+ await testE2E(
405
+ tokens['ETH'],
406
+ tokens['USDC'],
407
+ holders['ETH'],
408
+ '1000000000000000000',
409
+ SwapSide.SELL,
410
+ dexKey,
411
+ ContractMethod.simpleSwap,
412
+ network,
413
+ provider,
414
+ );
415
+ });
416
+
417
+ it('USDC -> ETH', async () => {
418
+ await testE2E(
419
+ tokens['USDC'],
420
+ tokens['ETH'],
421
+ holders['USDC'],
422
+ '100000000',
423
+ SwapSide.SELL,
424
+ dexKey,
425
+ ContractMethod.simpleSwap,
426
+ network,
427
+ provider,
428
+ );
429
+ });
430
+ });
431
+
432
+ describe('AaveV3', () => {
433
+ const dexKey = 'AaveV3';
434
+
435
+ const tokens = Tokens[network];
436
+ const holders = Holders[network];
437
+ const provider = new StaticJsonRpcProvider(
438
+ generateConfig(network).privateHttpProvider,
439
+ network,
440
+ );
441
+
442
+ it('USDC -> aEthUSDC', async () => {
443
+ await testE2E(
444
+ tokens['USDC'],
445
+ tokens['aEthUSDC'],
446
+ holders['USDC'],
447
+ '1000000',
448
+ SwapSide.SELL,
449
+ dexKey,
450
+ ContractMethod.simpleSwap,
451
+ network,
452
+ provider,
453
+ );
454
+ });
455
+
456
+ it('ETH -> aEthWETH', async () => {
457
+ await testE2E(
458
+ tokens['ETH'],
459
+ tokens['aEthWETH'],
460
+ holders['ETH'],
461
+ '300000000000000000',
462
+ SwapSide.SELL,
463
+ dexKey,
464
+ ContractMethod.simpleSwap,
465
+ network,
466
+ provider,
467
+ );
468
+ });
469
+
470
+ it('aEthWETH -> ETH', async () => {
471
+ await testE2E(
472
+ tokens['aEthWETH'],
473
+ tokens['ETH'],
474
+ holders['aEthWETH'],
475
+ '300000000000000000',
476
+ SwapSide.SELL,
477
+ dexKey,
478
+ ContractMethod.simpleSwap,
479
+ network,
480
+ provider,
481
+ );
482
+ });
483
+ });
484
+ });
485
+
486
+ describe('MutliSwap', () => {
487
+ describe('MaverickV1', () => {
488
+ describe('DAI -> USDC -> MAV via MaverickV1', () => {
489
+ const dexKeys = ['MaverickV1'];
490
+ const provider = new StaticJsonRpcProvider(
491
+ generateConfig(network).privateHttpProvider,
492
+ network,
493
+ );
494
+ const slippage = undefined;
495
+
496
+ const tokenASymbol: string = 'DAI';
497
+ const tokenBSymbol: string = 'MAV';
498
+
499
+ const tokenAAmount: string = '100000000000000000000';
500
+
501
+ const tokens = Tokens[network];
502
+ const holders = Holders[network];
503
+ const contractMethod = ContractMethod.multiSwap;
504
+ const side = SwapSide.SELL;
505
+
506
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
507
+ await testE2E(
508
+ tokens[tokenASymbol],
509
+ tokens[tokenBSymbol],
510
+ holders[tokenASymbol],
511
+ tokenAAmount,
512
+ side,
513
+ dexKeys,
514
+ contractMethod,
515
+ network,
516
+ provider,
517
+ undefined,
518
+ undefined,
519
+ undefined,
520
+ slippage,
521
+ 2000,
522
+ );
523
+ });
524
+ });
525
+
526
+ describe('ETH -> USDC -> MAV via MaverickV1', () => {
527
+ const dexKeys = ['MaverickV1'];
528
+ const provider = new StaticJsonRpcProvider(
529
+ generateConfig(network).privateHttpProvider,
530
+ network,
531
+ );
532
+ const slippage = undefined;
533
+
534
+ const tokenASymbol: string = 'ETH';
535
+ const tokenBSymbol: string = 'MAV';
536
+
537
+ const tokenAAmount: string = '1500000000000000000';
538
+
539
+ const tokens = Tokens[network];
540
+ const holders = Holders[network];
541
+ const contractMethod = ContractMethod.multiSwap;
542
+ const side = SwapSide.SELL;
543
+
544
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
545
+ await testE2E(
546
+ tokens[tokenASymbol],
547
+ tokens[tokenBSymbol],
548
+ holders[tokenASymbol],
549
+ tokenAAmount,
550
+ side,
551
+ dexKeys,
552
+ contractMethod,
553
+ network,
554
+ provider,
555
+ undefined,
556
+ undefined,
557
+ undefined,
558
+ slippage,
559
+ 2000,
560
+ );
561
+ });
562
+ });
563
+
564
+ describe('DAI -> USDC -> ETH via MaverickV1', () => {
565
+ const dexKeys = ['MaverickV1'];
566
+ const provider = new StaticJsonRpcProvider(
567
+ generateConfig(network).privateHttpProvider,
568
+ network,
569
+ );
570
+ const slippage = undefined;
571
+
572
+ const tokenASymbol: string = 'DAI';
573
+ const tokenBSymbol: string = 'ETH';
574
+
575
+ const tokenAAmount: string = '15000000000000000000';
576
+
577
+ const tokens = Tokens[network];
578
+ const holders = Holders[network];
579
+ const contractMethod = ContractMethod.multiSwap;
580
+ const side = SwapSide.SELL;
581
+
582
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
583
+ await testE2E(
584
+ tokens[tokenASymbol],
585
+ tokens[tokenBSymbol],
586
+ holders[tokenASymbol],
587
+ tokenAAmount,
588
+ side,
589
+ dexKeys,
590
+ contractMethod,
591
+ network,
592
+ provider,
593
+ undefined,
594
+ undefined,
595
+ undefined,
596
+ slippage,
597
+ 2000,
598
+ );
599
+ });
600
+ });
601
+ });
602
+
603
+ describe('SushiSwapV3', () => {
604
+ describe('USDC -> ETH -> WBTC via SushiSwapV3', () => {
605
+ const dexKeys = ['SushiSwapV3'];
606
+ const provider = new StaticJsonRpcProvider(
607
+ generateConfig(network).privateHttpProvider,
608
+ network,
609
+ );
610
+ const slippage = undefined;
611
+
612
+ const tokenASymbol: string = 'USDC';
613
+ const tokenBSymbol: string = 'WBTC';
614
+
615
+ const tokenAAmount: string = '10000000';
616
+
617
+ const tokens = Tokens[network];
618
+ const holders = Holders[network];
619
+ const contractMethod = ContractMethod.multiSwap;
620
+ const side = SwapSide.SELL;
621
+
622
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
623
+ await testE2E(
624
+ tokens[tokenASymbol],
625
+ tokens[tokenBSymbol],
626
+ holders[tokenASymbol],
627
+ tokenAAmount,
628
+ side,
629
+ dexKeys,
630
+ contractMethod,
631
+ network,
632
+ provider,
633
+ undefined,
634
+ undefined,
635
+ undefined,
636
+ slippage,
637
+ 2000,
638
+ );
639
+ });
640
+ });
641
+
642
+ describe('USDT -> USDC -> ETH via SushiSwapV3', () => {
643
+ const dexKeys = ['SushiSwapV3'];
644
+ const provider = new StaticJsonRpcProvider(
645
+ generateConfig(network).privateHttpProvider,
646
+ network,
647
+ );
648
+ const slippage = undefined;
649
+
650
+ const tokenASymbol: string = 'USDT';
651
+ const tokenBSymbol: string = 'ETH';
652
+
653
+ const tokenAAmount: string = '1000000000';
654
+
655
+ const tokens = Tokens[network];
656
+ const holders = Holders[network];
657
+ const contractMethod = ContractMethod.multiSwap;
658
+ const side = SwapSide.SELL;
659
+
660
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
661
+ await testE2E(
662
+ tokens[tokenASymbol],
663
+ tokens[tokenBSymbol],
664
+ holders[tokenASymbol],
665
+ tokenAAmount,
666
+ side,
667
+ dexKeys,
668
+ contractMethod,
669
+ network,
670
+ provider,
671
+ undefined,
672
+ undefined,
673
+ undefined,
674
+ slippage,
675
+ 2000,
676
+ );
677
+ });
678
+ });
679
+
680
+ describe('ETH -> USDC -> DAI via SushiSwapV3', () => {
681
+ const dexKeys = ['SushiSwapV3'];
682
+ const provider = new StaticJsonRpcProvider(
683
+ generateConfig(network).privateHttpProvider,
684
+ network,
685
+ );
686
+ const slippage = undefined;
687
+
688
+ const tokenASymbol: string = 'ETH';
689
+ const tokenBSymbol: string = 'DAI';
690
+
691
+ const tokenAAmount: string = '100000000000000000';
692
+
693
+ const tokens = Tokens[network];
694
+ const holders = Holders[network];
695
+ const contractMethod = ContractMethod.multiSwap;
696
+ const side = SwapSide.SELL;
697
+
698
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
699
+ await testE2E(
700
+ tokens[tokenASymbol],
701
+ tokens[tokenBSymbol],
702
+ holders[tokenASymbol],
703
+ tokenAAmount,
704
+ side,
705
+ dexKeys,
706
+ contractMethod,
707
+ network,
708
+ provider,
709
+ undefined,
710
+ undefined,
711
+ undefined,
712
+ slippage,
713
+ 2000,
714
+ );
715
+ });
716
+ });
717
+
718
+ describe('USDT -> USDC -> DAI via SushiSwapV3', () => {
719
+ const dexKeys = ['SushiSwapV3'];
720
+ const provider = new StaticJsonRpcProvider(
721
+ generateConfig(network).privateHttpProvider,
722
+ network,
723
+ );
724
+ const slippage = undefined;
725
+
726
+ const tokenASymbol: string = 'USDT';
727
+ const tokenBSymbol: string = 'DAI';
728
+
729
+ const tokenAAmount: string = '100000000';
730
+
731
+ const tokens = Tokens[network];
732
+ const holders = Holders[network];
733
+ const contractMethod = ContractMethod.multiSwap;
734
+ const side = SwapSide.SELL;
735
+
736
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
737
+ await testE2E(
738
+ tokens[tokenASymbol],
739
+ tokens[tokenBSymbol],
740
+ holders[tokenASymbol],
741
+ tokenAAmount,
742
+ side,
743
+ dexKeys,
744
+ contractMethod,
745
+ network,
746
+ provider,
747
+ undefined,
748
+ undefined,
749
+ undefined,
750
+ slippage,
751
+ 2000,
752
+ );
753
+ });
754
+ });
755
+ });
756
+
757
+ describe('BalancerV2', () => {
758
+ describe('WBTC -> ETH -> BAL via BalancerV2', () => {
759
+ const dexKeys = ['BalancerV2'];
760
+ const provider = new StaticJsonRpcProvider(
761
+ generateConfig(network).privateHttpProvider,
762
+ network,
763
+ );
764
+ const slippage = undefined;
765
+
766
+ const tokenASymbol: string = 'WBTC';
767
+ const tokenBSymbol: string = 'BAL';
768
+
769
+ const tokenAAmount: string = '500000000';
770
+
771
+ const tokens = Tokens[network];
772
+ const holders = Holders[network];
773
+ const contractMethod = ContractMethod.multiSwap;
774
+ const side = SwapSide.SELL;
775
+
776
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
777
+ await testE2E(
778
+ tokens[tokenASymbol],
779
+ tokens[tokenBSymbol],
780
+ holders[tokenASymbol],
781
+ tokenAAmount,
782
+ side,
783
+ dexKeys,
784
+ contractMethod,
785
+ network,
786
+ provider,
787
+ undefined,
788
+ undefined,
789
+ undefined,
790
+ slippage,
791
+ 2000,
792
+ );
793
+ });
794
+ });
795
+
796
+ describe('USDC -> DAI -> USDT via BalancerV2', () => {
797
+ const dexKeys = ['BalancerV2'];
798
+ const provider = new StaticJsonRpcProvider(
799
+ generateConfig(network).privateHttpProvider,
800
+ network,
801
+ );
802
+ const slippage = undefined;
803
+
804
+ const tokenASymbol: string = 'USDC';
805
+ const tokenBSymbol: string = 'USDT';
806
+
807
+ const tokenAAmount: string = '50000000000';
808
+
809
+ const tokens = Tokens[network];
810
+ const holders = Holders[network];
811
+ const contractMethod = ContractMethod.multiSwap;
812
+ const side = SwapSide.SELL;
813
+
814
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
815
+ await testE2E(
816
+ tokens[tokenASymbol],
817
+ tokens[tokenBSymbol],
818
+ holders[tokenASymbol],
819
+ tokenAAmount,
820
+ side,
821
+ dexKeys,
822
+ contractMethod,
823
+ network,
824
+ provider,
825
+ undefined,
826
+ undefined,
827
+ undefined,
828
+ slippage,
829
+ 2000,
830
+ false,
831
+ [
832
+ '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
833
+ '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI
834
+ '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT
835
+ ],
836
+ );
837
+ });
838
+ });
839
+
840
+ describe('ETH -> USDC -> DAI via BalancerV2', () => {
841
+ const dexKeys = ['BalancerV2'];
842
+ const provider = new StaticJsonRpcProvider(
843
+ generateConfig(network).privateHttpProvider,
844
+ network,
845
+ );
846
+ const slippage = undefined;
847
+
848
+ const tokenASymbol: string = 'ETH';
849
+ const tokenBSymbol: string = 'DAI';
850
+
851
+ const tokenAAmount: string = '1000000000000000000';
852
+
853
+ const tokens = Tokens[network];
854
+ const holders = Holders[network];
855
+ const contractMethod = ContractMethod.multiSwap;
856
+ const side = SwapSide.SELL;
857
+
858
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
859
+ await testE2E(
860
+ tokens[tokenASymbol],
861
+ tokens[tokenBSymbol],
862
+ holders[tokenASymbol],
863
+ tokenAAmount,
864
+ side,
865
+ dexKeys,
866
+ contractMethod,
867
+ network,
868
+ provider,
869
+ undefined,
870
+ undefined,
871
+ undefined,
872
+ slippage,
873
+ 2000,
874
+ false,
875
+ [
876
+ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // ETH
877
+ '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
878
+ '0x6b175474e89094c44da98b954eedeac495271d0f', // BAL
879
+ ],
880
+ );
881
+ });
882
+ });
883
+ });
884
+
885
+ describe('Dex combinations', () => {
886
+ describe('GUSD -> USDC -> ETH via SushiSwapV3 and CurveV1', () => {
887
+ const dexKeys = ['SushiSwapV3', 'CurveV1'];
888
+ const provider = new StaticJsonRpcProvider(
889
+ generateConfig(network).privateHttpProvider,
890
+ network,
891
+ );
892
+ const slippage = undefined;
893
+
894
+ const tokenASymbol: string = 'GUSD';
895
+ const tokenBSymbol: string = 'ETH';
896
+
897
+ const tokenAAmount: string = '100000';
898
+
899
+ const tokens = Tokens[network];
900
+ const holders = Holders[network];
901
+ const contractMethod = ContractMethod.multiSwap;
902
+ const side = SwapSide.SELL;
903
+
904
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
905
+ await testE2E(
906
+ tokens[tokenASymbol],
907
+ tokens[tokenBSymbol],
908
+ holders[tokenASymbol],
909
+ tokenAAmount,
910
+ side,
911
+ dexKeys,
912
+ contractMethod,
913
+ network,
914
+ provider,
915
+ undefined,
916
+ undefined,
917
+ undefined,
918
+ slippage,
919
+ 2000,
920
+ );
921
+ });
922
+ });
923
+
924
+ describe('ETH -> USDC -> GUSD via SushiSwapV3 and CurveV1', () => {
925
+ const dexKeys = ['SushiSwapV3', 'CurveV1'];
926
+ const provider = new StaticJsonRpcProvider(
927
+ generateConfig(network).privateHttpProvider,
928
+ network,
929
+ );
930
+ const slippage = undefined;
931
+
932
+ const tokenASymbol: string = 'ETH';
933
+ const tokenBSymbol: string = 'GUSD';
934
+
935
+ const tokenAAmount: string = '100000000000000000';
936
+
937
+ const tokens = Tokens[network];
938
+ const holders = Holders[network];
939
+ const contractMethod = ContractMethod.multiSwap;
940
+ const side = SwapSide.SELL;
941
+
942
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
943
+ await testE2E(
944
+ tokens[tokenASymbol],
945
+ tokens[tokenBSymbol],
946
+ holders[tokenASymbol],
947
+ tokenAAmount,
948
+ side,
949
+ dexKeys,
950
+ contractMethod,
951
+ network,
952
+ provider,
953
+ undefined,
954
+ undefined,
955
+ undefined,
956
+ slippage,
957
+ 2000,
958
+ );
959
+ });
960
+ });
961
+
962
+ describe('ETH -> USDC -> GUSD via BalancerV1 and CurveV1', () => {
963
+ const dexKeys = ['BalancerV1', 'CurveV1'];
964
+ const provider = new StaticJsonRpcProvider(
965
+ generateConfig(network).privateHttpProvider,
966
+ network,
967
+ );
968
+ const slippage = undefined;
969
+
970
+ const tokenASymbol: string = 'ETH';
971
+ const tokenBSymbol: string = 'GUSD';
972
+
973
+ const tokenAAmount: string = '100000000000000000';
974
+
975
+ const tokens = Tokens[network];
976
+ const holders = Holders[network];
977
+ const contractMethod = ContractMethod.multiSwap;
978
+ const side = SwapSide.SELL;
979
+
980
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
981
+ await testE2E(
982
+ tokens[tokenASymbol],
983
+ tokens[tokenBSymbol],
984
+ holders[tokenASymbol],
985
+ tokenAAmount,
986
+ side,
987
+ dexKeys,
988
+ contractMethod,
989
+ network,
990
+ provider,
991
+ undefined,
992
+ undefined,
993
+ undefined,
994
+ slippage,
995
+ 2000,
996
+ );
997
+ });
998
+ });
999
+
1000
+ describe('TUSD -> DAI -> GUSD via BalancerV1 and CurveV1', () => {
1001
+ const dexKeys = ['CurveV1'];
1002
+ const provider = new StaticJsonRpcProvider(
1003
+ generateConfig(network).privateHttpProvider,
1004
+ network,
1005
+ );
1006
+ const slippage = undefined;
1007
+
1008
+ const tokenASymbol: string = 'TUSD';
1009
+ const tokenBSymbol: string = 'GUSD';
1010
+
1011
+ const tokenAAmount: string = '100000000000000000000';
1012
+
1013
+ const tokens = Tokens[network];
1014
+ const holders = Holders[network];
1015
+ const contractMethod = ContractMethod.multiSwap;
1016
+ const side = SwapSide.SELL;
1017
+
1018
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1019
+ await testE2E(
1020
+ tokens[tokenASymbol],
1021
+ tokens[tokenBSymbol],
1022
+ holders[tokenASymbol],
1023
+ tokenAAmount,
1024
+ side,
1025
+ dexKeys,
1026
+ contractMethod,
1027
+ network,
1028
+ provider,
1029
+ undefined,
1030
+ undefined,
1031
+ undefined,
1032
+ slippage,
1033
+ 2000,
1034
+ );
1035
+ });
1036
+ });
1037
+
1038
+ describe('WBTC -> ETH -> SUSHI via BalancerV1 and SushiSwapV3', () => {
1039
+ const dexKeys = ['BalancerV1', 'SushiSwapV3'];
1040
+ const provider = new StaticJsonRpcProvider(
1041
+ generateConfig(network).privateHttpProvider,
1042
+ network,
1043
+ );
1044
+ const slippage = undefined;
1045
+
1046
+ const tokenASymbol: string = 'WBTC';
1047
+ const tokenBSymbol: string = 'SUSHI';
1048
+
1049
+ const tokenAAmount: string = '2000000';
1050
+
1051
+ const tokens = Tokens[network];
1052
+ const holders = Holders[network];
1053
+ const contractMethod = ContractMethod.multiSwap;
1054
+ const side = SwapSide.SELL;
1055
+
1056
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1057
+ await testE2E(
1058
+ tokens[tokenASymbol],
1059
+ tokens[tokenBSymbol],
1060
+ holders[tokenASymbol],
1061
+ tokenAAmount,
1062
+ side,
1063
+ dexKeys,
1064
+ contractMethod,
1065
+ network,
1066
+ provider,
1067
+ undefined,
1068
+ undefined,
1069
+ undefined,
1070
+ slippage,
1071
+ 2000,
1072
+ );
1073
+ });
1074
+ });
1075
+
1076
+ describe('PSP -> ETH -> stETH', () => {
1077
+ const dexKeys = ['SushiSwap', 'Lido'];
1078
+ const provider = new StaticJsonRpcProvider(
1079
+ generateConfig(network).privateHttpProvider,
1080
+ network,
1081
+ );
1082
+ const slippage = undefined;
1083
+
1084
+ const tokenASymbol: string = 'PSP';
1085
+ const tokenBSymbol: string = 'STETH';
1086
+
1087
+ const tokenAAmount: string = '3396186773559304606863';
1088
+
1089
+ const tokens = Tokens[network];
1090
+ const holders = Holders[network];
1091
+ const contractMethod = ContractMethod.multiSwap;
1092
+ const side = SwapSide.SELL;
1093
+
1094
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1095
+ await testE2E(
1096
+ tokens[tokenASymbol],
1097
+ tokens[tokenBSymbol],
1098
+ holders[tokenASymbol],
1099
+ tokenAAmount,
1100
+ side,
1101
+ dexKeys,
1102
+ contractMethod,
1103
+ network,
1104
+ provider,
1105
+ undefined,
1106
+ undefined,
1107
+ undefined,
1108
+ slippage,
1109
+ 2000,
1110
+ undefined,
1111
+ [
1112
+ '0xcafe001067cdef266afb7eb5a286dcfd277f3de5', // PSP
1113
+ '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // ETH
1114
+ '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', // stETH
1115
+ ],
1116
+ );
1117
+ });
1118
+ });
1119
+ });
1120
+ });
1121
+ });
1122
+
1123
+ describe('Polygon', () => {
1124
+ const network = Network.POLYGON;
1125
+
1126
+ describe('SimpleSwap', () => {
1127
+ describe('Dfyn', () => {
1128
+ const dexKey = 'Dfyn';
1129
+
1130
+ const tokenASymbol: string = 'USDC';
1131
+ const tokenBSymbol: string = 'WBTC';
1132
+
1133
+ const tokenAAmount: string = '10000000';
1134
+ const tokenBAmount: string = '10000000';
1135
+ const nativeTokenAmount = '1000000000000000000';
1136
+
1137
+ testForNetwork(
1138
+ network,
1139
+ dexKey,
1140
+ tokenASymbol,
1141
+ tokenBSymbol,
1142
+ tokenAAmount,
1143
+ tokenBAmount,
1144
+ nativeTokenAmount,
1145
+ );
1146
+ });
1147
+ });
1148
+
1149
+ describe('MultiSwap', () => {
1150
+ describe('USDC.e -> MATIC -> CRV via Dystopia and QuickSwap', () => {
1151
+ const dexKeys = ['Dystopia', 'QuickSwap'];
1152
+ const provider = new StaticJsonRpcProvider(
1153
+ generateConfig(network).privateHttpProvider,
1154
+ network,
1155
+ );
1156
+ const slippage = undefined;
1157
+
1158
+ const tokenASymbol: string = 'USDC';
1159
+ const tokenBSymbol: string = 'CRV';
1160
+
1161
+ const tokenAAmount: string = '4439351';
1162
+
1163
+ const tokens = Tokens[network];
1164
+ const holders = Holders[network];
1165
+ const contractMethod = ContractMethod.multiSwap;
1166
+ const side = SwapSide.SELL;
1167
+
1168
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1169
+ await testE2E(
1170
+ tokens[tokenASymbol],
1171
+ tokens[tokenBSymbol],
1172
+ holders[tokenASymbol],
1173
+ tokenAAmount,
1174
+ side,
1175
+ dexKeys,
1176
+ contractMethod,
1177
+ network,
1178
+ provider,
1179
+ undefined,
1180
+ undefined,
1181
+ undefined,
1182
+ slippage,
1183
+ 2000,
1184
+ );
1185
+ });
1186
+ });
1187
+
1188
+ // describe('MATIC -> ETH -> SUSHI via Dfyn and SushiV3', () => {
1189
+ // const dexKeys = ['Dfyn', 'SushiSwapV3'];
1190
+ // const provider = new StaticJsonRpcProvider(
1191
+ // generateConfig(network).privateHttpProvider,
1192
+ // network,
1193
+ // );
1194
+ // const slippage = undefined;
1195
+ //
1196
+ // const tokenASymbol: string = 'MATIC';
1197
+ // const tokenBSymbol: string = 'SUSHI';
1198
+ //
1199
+ // const tokenAAmount: string = '10000000000000000000';
1200
+ //
1201
+ // const tokens = Tokens[network];
1202
+ // const holders = Holders[network];
1203
+ // const contractMethod = ContractMethod.multiSwap;
1204
+ // const side = SwapSide.SELL;
1205
+ //
1206
+ // it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1207
+ // await testE2E(
1208
+ // tokens[tokenASymbol],
1209
+ // tokens[tokenBSymbol],
1210
+ // holders[tokenASymbol],
1211
+ // tokenAAmount,
1212
+ // side,
1213
+ // dexKeys,
1214
+ // contractMethod,
1215
+ // network,
1216
+ // provider,
1217
+ // undefined,
1218
+ // undefined,
1219
+ // undefined,
1220
+ // slippage,
1221
+ // 2000,
1222
+ // );
1223
+ // });
1224
+ // });
1225
+ });
1226
+ });
1227
+
1228
+ describe('Optimism', () => {
1229
+ const network = Network.OPTIMISM;
1230
+
1231
+ describe('MultiSwap', () => {
1232
+ describe('USDC -> ETH -> sETH', () => {
1233
+ const dexKeys = ['UniswapV3', 'CurveV1Factory'];
1234
+ const provider = new StaticJsonRpcProvider(
1235
+ generateConfig(network).privateHttpProvider,
1236
+ network,
1237
+ );
1238
+ const slippage = undefined;
1239
+
1240
+ const tokenASymbol: string = 'USDC';
1241
+ const tokenBSymbol: string = 'sETH';
1242
+
1243
+ const tokenAAmount: string = '1617000000';
1244
+
1245
+ const tokens = Tokens[network];
1246
+ const holders = Holders[network];
1247
+ const contractMethod = ContractMethod.multiSwap;
1248
+ const side = SwapSide.SELL;
1249
+
1250
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1251
+ await testE2E(
1252
+ tokens[tokenASymbol],
1253
+ tokens[tokenBSymbol],
1254
+ holders[tokenASymbol],
1255
+ tokenAAmount,
1256
+ side,
1257
+ dexKeys,
1258
+ contractMethod,
1259
+ network,
1260
+ provider,
1261
+ undefined,
1262
+ undefined,
1263
+ undefined,
1264
+ slippage,
1265
+ 2000,
1266
+ );
1267
+ });
1268
+ });
1269
+ });
1270
+ });
1271
+
1272
+ // describe('Arbitrum', () => {
1273
+ // const network = Network.ARBITRUM;
1274
+ // describe('MultiSwap', () => {
1275
+ // const priceRoute = {
1276
+ // blockNumber: 184603981,
1277
+ // network: 42161,
1278
+ // srcToken: '0x8b0e6f19ee57089f7649a455d89d7bc6314d04e8',
1279
+ // srcDecimals: 18,
1280
+ // srcAmount: '10000000000000000000',
1281
+ // destToken: '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8',
1282
+ // destDecimals: 18,
1283
+ // destAmount: '58376015865102035852',
1284
+ // bestRoute: [
1285
+ // {
1286
+ // percent: 100,
1287
+ // swaps: [
1288
+ // {
1289
+ // srcToken: '0x8b0e6f19ee57089f7649a455d89d7bc6314d04e8',
1290
+ // srcDecimals: 18,
1291
+ // destToken: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
1292
+ // destDecimals: 6,
1293
+ // swapExchanges: [
1294
+ // {
1295
+ // exchange: 'Camelot',
1296
+ // srcAmount: '10000000000000000000',
1297
+ // destAmount: '160519565',
1298
+ // percent: 100,
1299
+ // poolAddresses: ['0x410c879c62f22794bD5eE98e2EE01490F6d47A6b'],
1300
+ // data: {
1301
+ // router: '0x1Be46c7A40906c19d91d07B3AE69Ef5893268F25',
1302
+ // path: [
1303
+ // '0x8b0e6f19ee57089f7649a455d89d7bc6314d04e8',
1304
+ // '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
1305
+ // ],
1306
+ // factory: '0x6EcCab422D763aC031210895C81787E87B43A652',
1307
+ // initCode:
1308
+ // '0xa856464ae65f7619087bc369daaf7e387dae1e5af69cfa7935850ebf754b04c1',
1309
+ // feeFactor: 100000,
1310
+ // isFeeTokenInRoute: false,
1311
+ // pools: [
1312
+ // {
1313
+ // address: '0x410c879c62f22794bD5eE98e2EE01490F6d47A6b',
1314
+ // fee: 500,
1315
+ // direction: true,
1316
+ // },
1317
+ // ],
1318
+ // gasUSD: '0.323201',
1319
+ // },
1320
+ // },
1321
+ // ],
1322
+ // },
1323
+ // {
1324
+ // srcToken: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
1325
+ // srcDecimals: 6,
1326
+ // destToken: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
1327
+ // destDecimals: 18,
1328
+ // swapExchanges: [
1329
+ // {
1330
+ // exchange: 'Camelot',
1331
+ // srcAmount: '160519565',
1332
+ // destAmount: '51771474390335981',
1333
+ // percent: 100,
1334
+ // poolAddresses: ['0x84652bb2539513BAf36e225c930Fdd8eaa63CE27'],
1335
+ // data: {
1336
+ // router: '0x1Be46c7A40906c19d91d07B3AE69Ef5893268F25',
1337
+ // path: [
1338
+ // '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
1339
+ // '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
1340
+ // ],
1341
+ // factory: '0x6EcCab422D763aC031210895C81787E87B43A652',
1342
+ // initCode:
1343
+ // '0xa856464ae65f7619087bc369daaf7e387dae1e5af69cfa7935850ebf754b04c1',
1344
+ // feeFactor: 100000,
1345
+ // isFeeTokenInRoute: false,
1346
+ // pools: [
1347
+ // {
1348
+ // address: '0x84652bb2539513BAf36e225c930Fdd8eaa63CE27',
1349
+ // fee: 300,
1350
+ // direction: false,
1351
+ // },
1352
+ // ],
1353
+ // gasUSD: '0.323201',
1354
+ // },
1355
+ // },
1356
+ // ],
1357
+ // },
1358
+ // {
1359
+ // srcToken: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
1360
+ // srcDecimals: 18,
1361
+ // destToken: '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8',
1362
+ // destDecimals: 18,
1363
+ // swapExchanges: [
1364
+ // {
1365
+ // exchange: 'CamelotV3',
1366
+ // srcAmount: '51771474390335981',
1367
+ // destAmount: '58376015865102035852',
1368
+ // percent: 100,
1369
+ // poolAddresses: ['0xe461f84c3fe6bcdd1162eb0ef4284f3bb6e4cad3'],
1370
+ // data: {
1371
+ // feeOnTransfer: false,
1372
+ // path: [
1373
+ // {
1374
+ // tokenIn: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
1375
+ // tokenOut: '0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8',
1376
+ // },
1377
+ // ],
1378
+ // gasUSD: '0.290559',
1379
+ // },
1380
+ // },
1381
+ // ],
1382
+ // },
1383
+ // ],
1384
+ // },
1385
+ // ],
1386
+ // gasCostUSD: '1.757908',
1387
+ // gasCost: '598300',
1388
+ // others: [],
1389
+ // side: 'SELL',
1390
+ // tokenTransferProxy: '0x216b4b4ba9f3e719726886d34a177484278bfcae',
1391
+ // contractAddress: '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57',
1392
+ // contractMethod: 'multiSwap',
1393
+ // partnerFee: 0,
1394
+ // srcUSD: '160.9000000000',
1395
+ // destUSD: '159.3665233117',
1396
+ // partner: 'Camelot',
1397
+ // maxImpactReached: false,
1398
+ // hmac: 'c53e8a540a60a7d05aa50865d306f8d5458243a1',
1399
+ // } as unknown as OptimalRate;
1400
+ // describe('DMT-> USDC.e -> WETH -> PENDLE via Camelot and CamelotV3', () => {
1401
+ // const dexKeys = ['Camelot', 'CamelotV3'];
1402
+ // const provider = new StaticJsonRpcProvider(
1403
+ // generateConfig(network).privateHttpProvider,
1404
+ // network,
1405
+ // );
1406
+ // const slippage = undefined;
1407
+ //
1408
+ // const tokenASymbol: string = 'DMT';
1409
+ // const tokenBSymbol: string = 'PENDLE';
1410
+ //
1411
+ // const tokenAAmount: string = '10000000000000000000';
1412
+ //
1413
+ // const tokens = Tokens[network];
1414
+ // const holders = Holders[network];
1415
+ // const contractMethod = ContractMethod.multiSwap;
1416
+ // const side = SwapSide.SELL;
1417
+ //
1418
+ // it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
1419
+ // await testE2E(
1420
+ // tokens[tokenASymbol],
1421
+ // tokens[tokenBSymbol],
1422
+ // holders[tokenASymbol],
1423
+ // tokenAAmount,
1424
+ // side,
1425
+ // dexKeys,
1426
+ // contractMethod,
1427
+ // network,
1428
+ // provider,
1429
+ // undefined,
1430
+ // undefined,
1431
+ // undefined,
1432
+ // slippage,
1433
+ // 2000,
1434
+ // );
1435
+ // });
1436
+ // });
1437
+ // });
1438
+ // });
1439
+ });