@paraswap/dex-lib 2.28.9-take-surplus.0 → 2.28.9-take-surplus.1

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 (330) hide show
  1. package/build/abi/RamsesV2StateMulticall.abi.json +891 -0
  2. package/build/abi/aerodrome/aerodrome-pool-factory.json +586 -0
  3. package/build/abi/algebra/AlgebraFactory-v1_1.abi.json +250 -0
  4. package/build/abi/api3-proxy.json +53 -0
  5. package/build/abi/api3-server-v1.json +463 -0
  6. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
  7. package/build/abi/pancakeswap-v3/PancakeswapV3Factory.abi.json +300 -0
  8. package/build/abi/quick-perps/fast-price-events.json +70 -0
  9. package/build/abi/quick-perps/fast-price-feed.json +741 -0
  10. package/build/abi/quick-perps/reader.json +313 -0
  11. package/build/abi/quick-perps/vault-price-feed.json +323 -0
  12. package/build/abi/quick-perps/vault.json +1953 -0
  13. package/build/abi/quickPerps/fast-price-events.json +70 -0
  14. package/build/abi/quickPerps/fast-price-feed.json +748 -0
  15. package/build/abi/quickPerps/reader.json +313 -0
  16. package/build/abi/quickPerps/vault-price-feed.json +477 -0
  17. package/build/abi/quickPerps/vault.json +1953 -0
  18. package/build/abi/ramses-v2/RamsesV2Pool.abi.json +1599 -0
  19. package/build/abi/uniswap-v3/UniswapV3Factory.abi.json +148 -0
  20. package/build/abi/uniswap-v3/UniswapV3QuoterV2.abi.json +155 -0
  21. package/build/composed-event-subscriber.js +8 -2
  22. package/build/composed-event-subscriber.js.map +1 -1
  23. package/build/config.d.ts +0 -1
  24. package/build/config.js +75 -14
  25. package/build/config.js.map +1 -1
  26. package/build/constants.d.ts +2 -1
  27. package/build/constants.js +1 -0
  28. package/build/constants.js.map +1 -1
  29. package/build/dex/algebra/algebra-factory.d.ts +25 -0
  30. package/build/dex/algebra/algebra-factory.js +43 -0
  31. package/build/dex/algebra/algebra-factory.js.map +1 -0
  32. package/build/dex/algebra/algebra-pool-v1_1.d.ts +16 -2
  33. package/build/dex/algebra/algebra-pool-v1_1.js +166 -4
  34. package/build/dex/algebra/algebra-pool-v1_1.js.map +1 -1
  35. package/build/dex/algebra/algebra.d.ts +4 -1
  36. package/build/dex/algebra/algebra.js +42 -21
  37. package/build/dex/algebra/algebra.js.map +1 -1
  38. package/build/dex/algebra/config.js +1 -0
  39. package/build/dex/algebra/config.js.map +1 -1
  40. package/build/dex/algebra/lib/TickTable.js +51 -40
  41. package/build/dex/algebra/lib/TickTable.js.map +1 -1
  42. package/build/dex/algebra/types.d.ts +5 -2
  43. package/build/dex/algebra/utils.d.ts +3 -1
  44. package/build/dex/algebra/utils.js +59 -1
  45. package/build/dex/algebra/utils.js.map +1 -1
  46. package/build/dex/balancer-v2/balancer-v2.js +79 -6
  47. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  48. package/build/dex/balancer-v2/config.js +10 -2
  49. package/build/dex/balancer-v2/config.js.map +1 -1
  50. package/build/dex/balancer-v2/optimizer.js +38 -51
  51. package/build/dex/balancer-v2/optimizer.js.map +1 -1
  52. package/build/dex/balancer-v2/types.d.ts +0 -4
  53. package/build/dex/balancer-v2/types.js.map +1 -1
  54. package/build/dex/curve-v1/config.js +40 -38
  55. package/build/dex/curve-v1/config.js.map +1 -1
  56. package/build/dex/curve-v1-factory/config.js +17 -9
  57. package/build/dex/curve-v1-factory/config.js.map +1 -1
  58. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +1 -1
  59. package/build/dex/curve-v1-factory/curve-v1-factory.js +205 -182
  60. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  61. package/build/dex/curve-v1-factory/curve-v1-pool-manager.d.ts +2 -1
  62. package/build/dex/curve-v1-factory/curve-v1-pool-manager.js +8 -2
  63. package/build/dex/curve-v1-factory/curve-v1-pool-manager.js.map +1 -1
  64. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js +1 -0
  65. package/build/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.js.map +1 -1
  66. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js +1 -0
  67. package/build/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.js.map +1 -1
  68. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js +2 -1
  69. package/build/dex/curve-v1-factory/price-handlers/functions/_rates.js.map +1 -1
  70. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js +1 -0
  71. package/build/dex/curve-v1-factory/price-handlers/functions/_xp.js.map +1 -1
  72. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js +1 -0
  73. package/build/dex/curve-v1-factory/price-handlers/functions/_xp_mem.js.map +1 -1
  74. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js +61 -14
  75. package/build/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.js.map +1 -1
  76. package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js +1 -0
  77. package/build/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.js.map +1 -1
  78. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js +10 -0
  79. package/build/dex/curve-v1-factory/price-handlers/functions/constants.js.map +1 -1
  80. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js +1 -0
  81. package/build/dex/curve-v1-factory/price-handlers/functions/get_D.js.map +1 -1
  82. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js +1 -0
  83. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_mem.js.map +1 -1
  84. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js +1 -0
  85. package/build/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.js.map +1 -1
  86. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js +1 -0
  87. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy.js.map +1 -1
  88. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js +1 -0
  89. package/build/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.js.map +1 -1
  90. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js +1 -0
  91. package/build/dex/curve-v1-factory/price-handlers/functions/get_y.js.map +1 -1
  92. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js +1 -0
  93. package/build/dex/curve-v1-factory/price-handlers/functions/get_y_D.js.map +1 -1
  94. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js +11 -4
  95. package/build/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.js.map +1 -1
  96. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.d.ts +1 -1
  97. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js +2 -2
  98. package/build/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.js.map +1 -1
  99. package/build/dex/curve-v1-factory/types.d.ts +4 -1
  100. package/build/dex/curve-v1-factory/types.js +1 -0
  101. package/build/dex/curve-v1-factory/types.js.map +1 -1
  102. package/build/dex/generic-rfq/generic-rfq.d.ts +2 -1
  103. package/build/dex/generic-rfq/generic-rfq.js +9 -5
  104. package/build/dex/generic-rfq/generic-rfq.js.map +1 -1
  105. package/build/dex/generic-rfq/rate-fetcher.d.ts +1 -1
  106. package/build/dex/generic-rfq/rate-fetcher.js +2 -1
  107. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  108. package/build/dex/generic-rfq/types.d.ts +1 -0
  109. package/build/dex/generic-rfq/types.js.map +1 -1
  110. package/build/dex/hashflow/hashflow.d.ts +1 -0
  111. package/build/dex/hashflow/hashflow.js +1 -0
  112. package/build/dex/hashflow/hashflow.js.map +1 -1
  113. package/build/dex/idex.d.ts +1 -0
  114. package/build/dex/index.d.ts +1 -0
  115. package/build/dex/index.js +21 -0
  116. package/build/dex/index.js.map +1 -1
  117. package/build/dex/maverick-v1/config.js +9 -0
  118. package/build/dex/maverick-v1/config.js.map +1 -1
  119. package/build/dex/maverick-v1/maverick-v1.js +11 -2
  120. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  121. package/build/dex/maverick-v1/scripts/event-sequence.d.ts +1 -0
  122. package/build/dex/maverick-v1/scripts/event-sequence.js +110 -0
  123. package/build/dex/maverick-v1/scripts/event-sequence.js.map +1 -0
  124. package/build/dex/pancakeswap-v3/config.js +17 -0
  125. package/build/dex/pancakeswap-v3/config.js.map +1 -1
  126. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.d.ts +26 -0
  127. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js +44 -0
  128. package/build/dex/pancakeswap-v3/pancakeswap-v3-factory.js.map +1 -0
  129. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +3 -0
  130. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +26 -2
  131. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  132. package/build/dex/quick-perps/config.d.ts +11 -0
  133. package/build/dex/quick-perps/config.js +27 -0
  134. package/build/dex/quick-perps/config.js.map +1 -0
  135. package/build/dex/quick-perps/fast-price-feed.d.ts +26 -0
  136. package/build/dex/quick-perps/fast-price-feed.js +176 -0
  137. package/build/dex/quick-perps/fast-price-feed.js.map +1 -0
  138. package/build/dex/quick-perps/pool.d.ts +21 -0
  139. package/build/dex/quick-perps/pool.js +225 -0
  140. package/build/dex/quick-perps/pool.js.map +1 -0
  141. package/build/dex/quick-perps/quick-perps.d.ts +52 -0
  142. package/build/dex/quick-perps/quick-perps.js +211 -0
  143. package/build/dex/quick-perps/quick-perps.js.map +1 -0
  144. package/build/dex/quick-perps/types.d.ts +98 -0
  145. package/build/dex/quick-perps/types.js +3 -0
  146. package/build/dex/quick-perps/types.js.map +1 -0
  147. package/build/dex/quick-perps/usdq.d.ts +15 -0
  148. package/build/dex/quick-perps/usdq.js +61 -0
  149. package/build/dex/quick-perps/usdq.js.map +1 -0
  150. package/build/dex/quick-perps/vault-price-feed.d.ts +43 -0
  151. package/build/dex/quick-perps/vault-price-feed.js +194 -0
  152. package/build/dex/quick-perps/vault-price-feed.js.map +1 -0
  153. package/build/dex/quick-perps/vault-utils.d.ts +8 -0
  154. package/build/dex/quick-perps/vault-utils.js +41 -0
  155. package/build/dex/quick-perps/vault-utils.js.map +1 -0
  156. package/build/dex/quick-perps/vault.d.ts +46 -0
  157. package/build/dex/quick-perps/vault.js +166 -0
  158. package/build/dex/quick-perps/vault.js.map +1 -0
  159. package/build/dex/solidly/config.js +52 -2
  160. package/build/dex/solidly/config.js.map +1 -1
  161. package/build/dex/solidly/forks-override/aerodrome.d.ts +14 -0
  162. package/build/dex/solidly/forks-override/aerodrome.js +48 -0
  163. package/build/dex/solidly/forks-override/aerodrome.js.map +1 -0
  164. package/build/dex/solidly/forks-override/equalizer.d.ts +20 -0
  165. package/build/dex/solidly/forks-override/equalizer.js +46 -0
  166. package/build/dex/solidly/forks-override/equalizer.js.map +1 -0
  167. package/build/dex/solidly/forks-override/ramses.d.ts +44 -0
  168. package/build/dex/solidly/forks-override/ramses.js +144 -0
  169. package/build/dex/solidly/forks-override/ramses.js.map +1 -0
  170. package/build/dex/solidly/forks-override/velodromeV2.d.ts +20 -0
  171. package/build/dex/solidly/forks-override/velodromeV2.js +50 -0
  172. package/build/dex/solidly/forks-override/velodromeV2.js.map +1 -0
  173. package/build/dex/solidly/solidly.js +4 -0
  174. package/build/dex/solidly/solidly.js.map +1 -1
  175. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +24 -0
  176. package/build/dex/uniswap-v2/nomiswap-v2.js +44 -0
  177. package/build/dex/uniswap-v2/nomiswap-v2.js.map +1 -0
  178. package/build/dex/uniswap-v3/config.js +166 -0
  179. package/build/dex/uniswap-v3/config.js.map +1 -1
  180. package/build/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.d.ts +19 -0
  181. package/build/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.js +99 -0
  182. package/build/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.js.map +1 -0
  183. package/build/dex/uniswap-v3/forks/ramses-v2/utils.d.ts +4 -0
  184. package/build/dex/uniswap-v3/forks/ramses-v2/utils.js +63 -0
  185. package/build/dex/uniswap-v3/forks/ramses-v2/utils.js.map +1 -0
  186. package/build/dex/uniswap-v3/types.d.ts +10 -1
  187. package/build/dex/uniswap-v3/types.js.map +1 -1
  188. package/build/dex/uniswap-v3/uniswap-v3-factory.d.ts +26 -0
  189. package/build/dex/uniswap-v3/uniswap-v3-factory.js +44 -0
  190. package/build/dex/uniswap-v3/uniswap-v3-factory.js.map +1 -0
  191. package/build/dex/uniswap-v3/uniswap-v3-pool.d.ts +8 -6
  192. package/build/dex/uniswap-v3/uniswap-v3-pool.js +5 -2
  193. package/build/dex/uniswap-v3/uniswap-v3-pool.js.map +1 -1
  194. package/build/dex/uniswap-v3/uniswap-v3.d.ts +7 -4
  195. package/build/dex/uniswap-v3/uniswap-v3.js +51 -10
  196. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  197. package/build/dex/weth/config.js +3 -0
  198. package/build/dex/weth/config.js.map +1 -1
  199. package/build/dex/woo-fi-v2/config.js +13 -0
  200. package/build/dex/woo-fi-v2/config.js.map +1 -1
  201. package/build/dex-helper/dummy-dex-helper.js +7 -1
  202. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  203. package/build/dex-helper/icache.d.ts +1 -0
  204. package/build/lib/api3-feed.d.ts +30 -0
  205. package/build/lib/api3-feed.js +100 -0
  206. package/build/lib/api3-feed.js.map +1 -0
  207. package/build/lib/decoders.d.ts +3 -0
  208. package/build/lib/decoders.js +9 -1
  209. package/build/lib/decoders.js.map +1 -1
  210. package/build/stateful-event-subscriber.d.ts +1 -0
  211. package/build/stateful-event-subscriber.js +6 -0
  212. package/build/stateful-event-subscriber.js.map +1 -1
  213. package/build/types.d.ts +2 -0
  214. package/build/workers.d.ts +0 -0
  215. package/build/workers.js +2 -0
  216. package/build/workers.js.map +1 -0
  217. package/package.json +1 -1
  218. package/src/abi/RamsesV2Pool.abi.json +1554 -0
  219. package/src/abi/RamsesV2Quoter.abi.json +274 -0
  220. package/src/abi/RamsesV2StateMulticall.abi.json +891 -0
  221. package/src/abi/aerodrome/aerodrome-pool-factory.json +586 -0
  222. package/src/abi/algebra/AlgebraFactory-v1_1.abi.json +250 -0
  223. package/src/abi/api3-proxy.json +53 -0
  224. package/src/abi/api3-server-v1.json +463 -0
  225. package/src/abi/nomiswap-v2/nomiswap-v2-pool.json +773 -0
  226. package/src/abi/pancakeswap-v3/PancakeswapV3Factory.abi.json +300 -0
  227. package/src/abi/quick-perps/fast-price-events.json +70 -0
  228. package/src/abi/quick-perps/fast-price-feed.json +741 -0
  229. package/src/abi/quick-perps/reader.json +313 -0
  230. package/src/abi/quick-perps/vault-price-feed.json +323 -0
  231. package/src/abi/quick-perps/vault.json +1953 -0
  232. package/src/abi/ramses-v2/RamsesV2Pool.abi.json +1599 -0
  233. package/src/composed-event-subscriber.ts +16 -11
  234. package/src/config.ts +80 -14
  235. package/src/constants.ts +1 -0
  236. package/src/dex/algebra/algebra-factory.ts +70 -0
  237. package/src/dex/algebra/algebra-integration.test.ts +316 -16
  238. package/src/dex/algebra/algebra-pool-v1_1.ts +259 -8
  239. package/src/dex/algebra/algebra.ts +73 -22
  240. package/src/dex/algebra/config.ts +1 -0
  241. package/src/dex/algebra/lib/TickTable.ts +75 -74
  242. package/src/dex/algebra/types.ts +6 -2
  243. package/src/dex/algebra/utils.ts +83 -2
  244. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +133 -4
  245. package/src/dex/balancer-v2/balancer-v2.ts +87 -6
  246. package/src/dex/balancer-v2/config.ts +11 -2
  247. package/src/dex/balancer-v2/optimizer.ts +49 -62
  248. package/src/dex/balancer-v2/types.ts +0 -4
  249. package/src/dex/curve-v1/config.ts +40 -38
  250. package/src/dex/curve-v1-factory/config.ts +17 -9
  251. package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +19 -0
  252. package/src/dex/curve-v1-factory/curve-v1-factory-integration.test.ts +165 -45
  253. package/src/dex/curve-v1-factory/curve-v1-factory.ts +477 -415
  254. package/src/dex/curve-v1-factory/curve-v1-pool-manager.ts +15 -2
  255. package/src/dex/curve-v1-factory/price-handlers/functions/_calc_withdraw_one_coin.ts +1 -0
  256. package/src/dex/curve-v1-factory/price-handlers/functions/_dynamic_fee.ts +1 -0
  257. package/src/dex/curve-v1-factory/price-handlers/functions/_rates.ts +2 -1
  258. package/src/dex/curve-v1-factory/price-handlers/functions/_xp.ts +1 -0
  259. package/src/dex/curve-v1-factory/price-handlers/functions/_xp_mem.ts +1 -0
  260. package/src/dex/curve-v1-factory/price-handlers/functions/calc_token_amount.ts +71 -13
  261. package/src/dex/curve-v1-factory/price-handlers/functions/calc_withdraw_one_coin.ts +1 -0
  262. package/src/dex/curve-v1-factory/price-handlers/functions/constants.ts +11 -0
  263. package/src/dex/curve-v1-factory/price-handlers/functions/get_D.ts +2 -0
  264. package/src/dex/curve-v1-factory/price-handlers/functions/get_D_mem.ts +1 -0
  265. package/src/dex/curve-v1-factory/price-handlers/functions/get_D_precisions.ts +1 -0
  266. package/src/dex/curve-v1-factory/price-handlers/functions/get_dy.ts +1 -0
  267. package/src/dex/curve-v1-factory/price-handlers/functions/get_dy_underlying.ts +1 -0
  268. package/src/dex/curve-v1-factory/price-handlers/functions/get_y.ts +1 -0
  269. package/src/dex/curve-v1-factory/price-handlers/functions/get_y_D.ts +1 -0
  270. package/src/dex/curve-v1-factory/state-polling-pools/custom-pool-polling.ts +13 -5
  271. package/src/dex/curve-v1-factory/state-polling-pools/factory-pool-polling.ts +2 -1
  272. package/src/dex/curve-v1-factory/types.ts +3 -1
  273. package/src/dex/generic-rfq/example-api.test.ts +1 -1
  274. package/src/dex/generic-rfq/generic-rfq.ts +12 -4
  275. package/src/dex/generic-rfq/rate-fetcher.ts +4 -2
  276. package/src/dex/generic-rfq/types.ts +1 -0
  277. package/src/dex/hashflow/hashflow-e2e.test.ts +36 -3
  278. package/src/dex/hashflow/hashflow.ts +2 -1
  279. package/src/dex/idex.ts +1 -0
  280. package/src/dex/index.ts +21 -0
  281. package/src/dex/maverick-v1/config.ts +10 -0
  282. package/src/dex/maverick-v1/maverick-v1-e2e.test.ts +115 -1
  283. package/src/dex/maverick-v1/maverick-v1.ts +12 -2
  284. package/src/dex/pancakeswap-v3/config.ts +19 -0
  285. package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +114 -0
  286. package/src/dex/pancakeswap-v3/pancakeswap-v3-factory.ts +73 -0
  287. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +50 -2
  288. package/src/dex/quick-perps/config.ts +31 -0
  289. package/src/dex/quick-perps/fast-price-feed.ts +279 -0
  290. package/src/dex/quick-perps/pool.ts +407 -0
  291. package/src/dex/quick-perps/quick-perps-e2e.test.ts +65 -0
  292. package/src/dex/quick-perps/quick-perps-events.test.ts +100 -0
  293. package/src/dex/quick-perps/quick-perps-integration.test.ts +153 -0
  294. package/src/dex/quick-perps/quick-perps.ts +302 -0
  295. package/src/dex/quick-perps/types.ts +97 -0
  296. package/src/dex/quick-perps/usdq.ts +83 -0
  297. package/src/dex/quick-perps/vault-price-feed.ts +322 -0
  298. package/src/dex/quick-perps/vault-utils.ts +53 -0
  299. package/src/dex/quick-perps/vault.ts +290 -0
  300. package/src/dex/solidly/config.ts +58 -2
  301. package/src/dex/solidly/forks-override/aerodrome.ts +53 -0
  302. package/src/dex/solidly/forks-override/equalizer.ts +58 -0
  303. package/src/dex/solidly/forks-override/ramses.ts +253 -0
  304. package/src/dex/solidly/forks-override/velodromeV2.ts +63 -0
  305. package/src/dex/solidly/solidly-e2e.test.ts +313 -1
  306. package/src/dex/solidly/solidly-integration.test.ts +540 -41
  307. package/src/dex/solidly/solidly.ts +5 -0
  308. package/src/dex/uniswap-v2/nomiswap-v2.ts +63 -0
  309. package/src/dex/uniswap-v2/uniswap-v2-e2e-bsc.test.ts +120 -1
  310. package/src/dex/uniswap-v3/config.ts +174 -0
  311. package/src/dex/uniswap-v3/forks/ramses-v2/ramses-v2-pool.ts +156 -0
  312. package/src/dex/uniswap-v3/forks/ramses-v2/utils.ts +72 -0
  313. package/src/dex/uniswap-v3/types.ts +14 -1
  314. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +1071 -346
  315. package/src/dex/uniswap-v3/uniswap-v3-factory.ts +73 -0
  316. package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +787 -14
  317. package/src/dex/uniswap-v3/uniswap-v3-pool.ts +13 -5
  318. package/src/dex/uniswap-v3/uniswap-v3.ts +87 -20
  319. package/src/dex/weth/config.ts +3 -0
  320. package/src/dex/woo-fi-v2/config.ts +13 -0
  321. package/src/dex/woo-fi-v2/woo-fi-v2-e2e.test.ts +64 -0
  322. package/src/dex-helper/dummy-dex-helper.ts +8 -1
  323. package/src/dex-helper/icache.ts +2 -0
  324. package/src/lib/api3-feed.ts +175 -0
  325. package/src/lib/decoders.ts +13 -0
  326. package/src/stateful-event-subscriber.ts +8 -0
  327. package/src/types.ts +2 -0
  328. package/tests/constants-e2e.ts +102 -6
  329. package/tests/tenderly-simulation.ts +48 -4
  330. package/tests/utils-e2e.ts +21 -11
@@ -11,403 +11,1128 @@ import { Network, ContractMethod, SwapSide } from '../../constants';
11
11
  import { StaticJsonRpcProvider } from '@ethersproject/providers';
12
12
  import { generateConfig } from '../../config';
13
13
 
14
- describe('UniswapV3 E2E', () => {
15
- const dexKey = 'UniswapV3';
16
-
17
- describe('UniswapV3 MAINNET', () => {
18
- const network = Network.MAINNET;
19
- const tokens = Tokens[network];
20
- const holders = Holders[network];
21
- const provider = new StaticJsonRpcProvider(
22
- generateConfig(network).privateHttpProvider,
23
- network,
24
- );
14
+ function testForNetwork(
15
+ network: Network,
16
+ dexKey: string,
17
+ tokenASymbol: string,
18
+ tokenBSymbol: string,
19
+ tokenAAmount: string,
20
+ tokenBAmount: string,
21
+ nativeTokenAmount: string,
22
+ slippage?: number | undefined,
23
+ ) {
24
+ const provider = new StaticJsonRpcProvider(
25
+ generateConfig(network).privateHttpProvider,
26
+ network,
27
+ );
28
+ const tokens = Tokens[network];
29
+ const holders = Holders[network];
30
+ const nativeTokenSymbol = NativeTokenSymbols[network];
25
31
 
26
- it('BUY DAI -> USDC', async () => {
27
- await testE2E(
28
- tokens['DAI'],
29
- tokens['USDC'],
30
- holders['DAI'],
31
- '100000000000',
32
- SwapSide.BUY,
33
- dexKey,
32
+ const sideToContractMethods = new Map([
33
+ [
34
+ SwapSide.SELL,
35
+ [
36
+ ContractMethod.simpleSwap,
37
+ ContractMethod.multiSwap,
38
+ ContractMethod.megaSwap,
39
+ ContractMethod.directUniV3Swap,
40
+ ],
41
+ ],
42
+ [
43
+ SwapSide.BUY,
44
+ [
34
45
  ContractMethod.simpleBuy,
46
+ ContractMethod.buy,
47
+ ContractMethod.directUniV3Buy,
48
+ ],
49
+ ],
50
+ ]);
51
+
52
+ describe(`${network}`, () => {
53
+ sideToContractMethods.forEach((contractMethods, side) =>
54
+ describe(`${side}`, () => {
55
+ contractMethods.forEach((contractMethod: ContractMethod) => {
56
+ describe(`${contractMethod}`, () => {
57
+ it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
58
+ await testE2E(
59
+ tokens[nativeTokenSymbol],
60
+ tokens[tokenASymbol],
61
+ holders[nativeTokenSymbol],
62
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
63
+ side,
64
+ dexKey,
65
+ contractMethod,
66
+ network,
67
+ provider,
68
+ undefined,
69
+ undefined,
70
+ undefined,
71
+ slippage,
72
+ );
73
+ });
74
+ it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
75
+ await testE2E(
76
+ tokens[tokenASymbol],
77
+ tokens[nativeTokenSymbol],
78
+ holders[tokenASymbol],
79
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
80
+ side,
81
+ dexKey,
82
+ contractMethod,
83
+ network,
84
+ provider,
85
+ undefined,
86
+ undefined,
87
+ undefined,
88
+ slippage,
89
+ );
90
+ });
91
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
92
+ await testE2E(
93
+ tokens[tokenASymbol],
94
+ tokens[tokenBSymbol],
95
+ holders[tokenASymbol],
96
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
97
+ side,
98
+ dexKey,
99
+ contractMethod,
100
+ network,
101
+ provider,
102
+ undefined,
103
+ undefined,
104
+ undefined,
105
+ slippage,
106
+ );
107
+ });
108
+ });
109
+ });
110
+ }),
111
+ );
112
+ });
113
+ }
114
+
115
+ describe('UniswapV3 E2E', () => {
116
+ describe('UniswapV3', () => {
117
+ const dexKey = 'UniswapV3';
118
+
119
+ describe('UniswapV3 MAINNET', () => {
120
+ const network = Network.MAINNET;
121
+ const tokens = Tokens[network];
122
+ const holders = Holders[network];
123
+ const provider = new StaticJsonRpcProvider(
124
+ generateConfig(network).privateHttpProvider,
35
125
  network,
36
- provider,
37
126
  );
127
+
128
+ it('BUY DAI -> USDC', async () => {
129
+ await testE2E(
130
+ tokens['DAI'],
131
+ tokens['USDC'],
132
+ holders['DAI'],
133
+ '100000000000',
134
+ SwapSide.BUY,
135
+ dexKey,
136
+ ContractMethod.simpleBuy,
137
+ network,
138
+ provider,
139
+ );
140
+ });
141
+ it('SELL WETH -> SHIBA', async () => {
142
+ await testE2E(
143
+ tokens['WETH'],
144
+ tokens['SHIBA'],
145
+ holders['WETH'],
146
+ '1000000000000000000',
147
+ SwapSide.SELL,
148
+ dexKey,
149
+ ContractMethod.simpleSwap,
150
+ network,
151
+ provider,
152
+ );
153
+ });
154
+
155
+ it('directSwap SELL WETH -> USDC', async () => {
156
+ await testE2E(
157
+ tokens['WETH'],
158
+ tokens['USDC'],
159
+ holders['WETH'],
160
+ '1000000000000000000',
161
+ SwapSide.SELL,
162
+ dexKey,
163
+ ContractMethod.directUniV3Swap,
164
+ network,
165
+ provider,
166
+ );
167
+ });
38
168
  });
39
- it('SELL WETH -> SHIBA', async () => {
40
- await testE2E(
41
- tokens['WETH'],
42
- tokens['SHIBA'],
43
- holders['WETH'],
44
- '1000000000000000000',
45
- SwapSide.SELL,
46
- dexKey,
47
- ContractMethod.simpleSwap,
169
+
170
+ describe('UniswapV3 POLYGON', () => {
171
+ const network = Network.POLYGON;
172
+ const tokens = Tokens[network];
173
+ const holders = Holders[network];
174
+ const provider = new StaticJsonRpcProvider(
175
+ generateConfig(network).privateHttpProvider,
48
176
  network,
49
- provider,
177
+ );
178
+
179
+ const tokenASymbol: string = 'USDC';
180
+ const tokenBSymbol: string = 'WETH';
181
+ const nativeTokenSymbol = NativeTokenSymbols[network];
182
+
183
+ const tokenAAmount: string = '11000000';
184
+ const tokenBAmount: string = '11000000000000000000';
185
+ const nativeTokenAmount = '11000000000000000000';
186
+
187
+ const sideToContractMethods = new Map([
188
+ [
189
+ SwapSide.SELL,
190
+ [
191
+ ContractMethod.simpleSwap,
192
+ ContractMethod.multiSwap,
193
+ ContractMethod.megaSwap,
194
+ ContractMethod.directUniV3Swap,
195
+ ],
196
+ ],
197
+ [
198
+ SwapSide.BUY,
199
+ [
200
+ ContractMethod.simpleBuy,
201
+ ContractMethod.buy,
202
+ ContractMethod.directUniV3Buy,
203
+ ],
204
+ ],
205
+ ]);
206
+
207
+ sideToContractMethods.forEach((contractMethods, side) =>
208
+ contractMethods.forEach((contractMethod: ContractMethod) => {
209
+ describe(`${contractMethod}`, () => {
210
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
211
+ await testE2E(
212
+ tokens[nativeTokenSymbol],
213
+ tokens[tokenASymbol],
214
+ holders[nativeTokenSymbol],
215
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
216
+ side,
217
+ dexKey,
218
+ contractMethod,
219
+ network,
220
+ provider,
221
+ );
222
+ });
223
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
224
+ await testE2E(
225
+ tokens[tokenASymbol],
226
+ tokens[nativeTokenSymbol],
227
+ holders[tokenASymbol],
228
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
229
+ side,
230
+ dexKey,
231
+ contractMethod,
232
+ network,
233
+ provider,
234
+ );
235
+ });
236
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
237
+ await testE2E(
238
+ tokens[tokenASymbol],
239
+ tokens[tokenBSymbol],
240
+ holders[tokenASymbol],
241
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
242
+ side,
243
+ dexKey,
244
+ contractMethod,
245
+ network,
246
+ provider,
247
+ );
248
+ });
249
+ });
250
+ }),
50
251
  );
51
252
  });
52
253
 
53
- it('directSwap SELL WETH -> USDC', async () => {
54
- await testE2E(
55
- tokens['WETH'],
56
- tokens['USDC'],
57
- holders['WETH'],
58
- '1000000000000000000',
59
- SwapSide.SELL,
60
- dexKey,
61
- ContractMethod.directUniV3Swap,
254
+ describe('UniswapV3 BSC', () => {
255
+ const network = Network.BSC;
256
+ const tokens = Tokens[network];
257
+ const holders = Holders[network];
258
+ const provider = new StaticJsonRpcProvider(
259
+ generateConfig(network).privateHttpProvider,
62
260
  network,
63
- provider,
261
+ );
262
+
263
+ const tokenASymbol: string = 'BUSD';
264
+ const tokenBSymbol: string = 'WBNB';
265
+ const nativeTokenSymbol = NativeTokenSymbols[network];
266
+
267
+ const tokenAAmount: string = '100000000000000000000';
268
+ const tokenBAmount: string = '1000000000000000000';
269
+ const nativeTokenAmount = '1000000000000000000';
270
+
271
+ const sideToContractMethods = new Map([
272
+ [
273
+ SwapSide.SELL,
274
+ [
275
+ ContractMethod.simpleSwap,
276
+ ContractMethod.multiSwap,
277
+ ContractMethod.megaSwap,
278
+ ],
279
+ ],
280
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
281
+ ]);
282
+
283
+ sideToContractMethods.forEach((contractMethods, side) =>
284
+ contractMethods.forEach((contractMethod: ContractMethod) => {
285
+ describe(`${contractMethod}`, () => {
286
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
287
+ await testE2E(
288
+ tokens[nativeTokenSymbol],
289
+ tokens[tokenASymbol],
290
+ holders[nativeTokenSymbol],
291
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
292
+ side,
293
+ dexKey,
294
+ contractMethod,
295
+ network,
296
+ provider,
297
+ );
298
+ });
299
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
300
+ await testE2E(
301
+ tokens[tokenASymbol],
302
+ tokens[nativeTokenSymbol],
303
+ holders[tokenASymbol],
304
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
305
+ side,
306
+ dexKey,
307
+ contractMethod,
308
+ network,
309
+ provider,
310
+ );
311
+ });
312
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
313
+ await testE2E(
314
+ tokens[tokenASymbol],
315
+ tokens[tokenBSymbol],
316
+ holders[tokenASymbol],
317
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
318
+ side,
319
+ dexKey,
320
+ contractMethod,
321
+ network,
322
+ provider,
323
+ );
324
+ });
325
+ });
326
+ }),
64
327
  );
65
328
  });
66
- });
67
329
 
68
- describe('UniswapV3 POLYGON', () => {
69
- const network = Network.POLYGON;
70
- const tokens = Tokens[network];
71
- const holders = Holders[network];
72
- const provider = new StaticJsonRpcProvider(
73
- generateConfig(network).privateHttpProvider,
74
- network,
75
- );
330
+ describe('UniswapV3 Optimism', () => {
331
+ const network = Network.OPTIMISM;
332
+ const tokens = Tokens[network];
333
+ const holders = Holders[network];
334
+ const provider = new StaticJsonRpcProvider(
335
+ generateConfig(network).privateHttpProvider,
336
+ network,
337
+ );
76
338
 
77
- const tokenASymbol: string = 'USDC';
78
- const tokenBSymbol: string = 'WETH';
79
- const nativeTokenSymbol = NativeTokenSymbols[network];
339
+ const tokenASymbol: string = 'OP';
340
+ const tokenBSymbol: string = 'ETH';
341
+ const nativeTokenSymbol = NativeTokenSymbols[network];
80
342
 
81
- const tokenAAmount: string = '11000000';
82
- const tokenBAmount: string = '11000000000000000000';
83
- const nativeTokenAmount = '11000000000000000000';
343
+ const tokenAAmount: string = '1000000000000000000';
344
+ const tokenBAmount: string = '1000000000000000000';
345
+ const nativeTokenAmount = '1000000000000000000';
84
346
 
85
- const sideToContractMethods = new Map([
86
- [
87
- SwapSide.SELL,
347
+ const sideToContractMethods = new Map([
88
348
  [
89
- ContractMethod.simpleSwap,
90
- ContractMethod.multiSwap,
91
- ContractMethod.megaSwap,
92
- ContractMethod.directUniV3Swap,
349
+ SwapSide.SELL,
350
+ [
351
+ ContractMethod.simpleSwap,
352
+ ContractMethod.multiSwap,
353
+ ContractMethod.megaSwap,
354
+ ],
93
355
  ],
94
- ],
95
- [
96
- SwapSide.BUY,
356
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
357
+ ]);
358
+
359
+ sideToContractMethods.forEach((contractMethods, side) =>
360
+ contractMethods.forEach((contractMethod: ContractMethod) => {
361
+ describe(`${contractMethod}`, () => {
362
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
363
+ await testE2E(
364
+ tokens[nativeTokenSymbol],
365
+ tokens[tokenASymbol],
366
+ holders[nativeTokenSymbol],
367
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
368
+ side,
369
+ dexKey,
370
+ contractMethod,
371
+ network,
372
+ provider,
373
+ );
374
+ });
375
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
376
+ await testE2E(
377
+ tokens[tokenASymbol],
378
+ tokens[nativeTokenSymbol],
379
+ holders[tokenASymbol],
380
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
381
+ side,
382
+ dexKey,
383
+ contractMethod,
384
+ network,
385
+ provider,
386
+ );
387
+ });
388
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
389
+ await testE2E(
390
+ tokens[tokenASymbol],
391
+ tokens[tokenBSymbol],
392
+ holders[tokenASymbol],
393
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
394
+ side,
395
+ dexKey,
396
+ contractMethod,
397
+ network,
398
+ provider,
399
+ );
400
+ });
401
+ });
402
+ }),
403
+ );
404
+ });
405
+
406
+ describe('UniswapV3 Base', () => {
407
+ const network = Network.BASE;
408
+ const tokens = Tokens[network];
409
+ const holders = Holders[network];
410
+ const provider = new StaticJsonRpcProvider(
411
+ generateConfig(network).privateHttpProvider,
412
+ network,
413
+ );
414
+
415
+ const tokenASymbol: string = 'PRIME';
416
+ const tokenBSymbol: string = 'WETH';
417
+ const nativeTokenSymbol = NativeTokenSymbols[network];
418
+
419
+ const tokenAAmount: string = '1000000000000000000';
420
+ const tokenBAmount: string = '1000000000000000000';
421
+ const nativeTokenAmount = '1000000000000000000';
422
+
423
+ const sideToContractMethods = new Map([
97
424
  [
98
- ContractMethod.simpleBuy,
99
- ContractMethod.buy,
100
- ContractMethod.directUniV3Buy,
425
+ SwapSide.SELL,
426
+ [
427
+ ContractMethod.simpleSwap,
428
+ ContractMethod.multiSwap,
429
+ ContractMethod.megaSwap,
430
+ ],
101
431
  ],
102
- ],
103
- ]);
432
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
433
+ ]);
104
434
 
105
- sideToContractMethods.forEach((contractMethods, side) =>
106
- contractMethods.forEach((contractMethod: ContractMethod) => {
107
- describe(`${contractMethod}`, () => {
108
- it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
109
- await testE2E(
110
- tokens[nativeTokenSymbol],
111
- tokens[tokenASymbol],
112
- holders[nativeTokenSymbol],
113
- side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
114
- side,
115
- dexKey,
116
- contractMethod,
117
- network,
118
- provider,
119
- );
120
- });
121
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
122
- await testE2E(
123
- tokens[tokenASymbol],
124
- tokens[nativeTokenSymbol],
125
- holders[tokenASymbol],
126
- side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
127
- side,
128
- dexKey,
129
- contractMethod,
130
- network,
131
- provider,
132
- );
435
+ sideToContractMethods.forEach((contractMethods, side) =>
436
+ contractMethods.forEach((contractMethod: ContractMethod) => {
437
+ describe(`${contractMethod}`, () => {
438
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
439
+ await testE2E(
440
+ tokens[nativeTokenSymbol],
441
+ tokens[tokenASymbol],
442
+ holders[nativeTokenSymbol],
443
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
444
+ side,
445
+ dexKey,
446
+ contractMethod,
447
+ network,
448
+ provider,
449
+ );
450
+ });
451
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
452
+ await testE2E(
453
+ tokens[tokenASymbol],
454
+ tokens[nativeTokenSymbol],
455
+ holders[tokenASymbol],
456
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
457
+ side,
458
+ dexKey,
459
+ contractMethod,
460
+ network,
461
+ provider,
462
+ );
463
+ });
464
+ it(`${network} ${side} ${contractMethod} ${tokenBSymbol} -> ${tokenASymbol}`, async () => {
465
+ await testE2E(
466
+ tokens[tokenBSymbol],
467
+ tokens[tokenASymbol],
468
+ holders[tokenASymbol],
469
+ side === SwapSide.SELL ? tokenBAmount : tokenAAmount,
470
+ side,
471
+ dexKey,
472
+ contractMethod,
473
+ network,
474
+ provider,
475
+ );
476
+ });
477
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
478
+ await testE2E(
479
+ tokens[tokenASymbol],
480
+ tokens[tokenBSymbol],
481
+ holders[tokenASymbol],
482
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
483
+ side,
484
+ dexKey,
485
+ contractMethod,
486
+ network,
487
+ provider,
488
+ );
489
+ });
133
490
  });
134
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
135
- await testE2E(
136
- tokens[tokenASymbol],
137
- tokens[tokenBSymbol],
138
- holders[tokenASymbol],
139
- side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
140
- side,
141
- dexKey,
142
- contractMethod,
143
- network,
144
- provider,
145
- );
491
+ }),
492
+ );
493
+ });
494
+
495
+ describe('UniswapV3 Avalanche', () => {
496
+ const network = Network.AVALANCHE;
497
+ const tokens = Tokens[network];
498
+ const holders = Holders[network];
499
+ const provider = new StaticJsonRpcProvider(
500
+ generateConfig(network).privateHttpProvider,
501
+ network,
502
+ );
503
+
504
+ const sideToContractMethods = new Map([
505
+ [
506
+ SwapSide.SELL,
507
+ [
508
+ ContractMethod.simpleSwap,
509
+ ContractMethod.multiSwap,
510
+ ContractMethod.megaSwap,
511
+ ],
512
+ ],
513
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
514
+ ]);
515
+
516
+ const pairs: { name: string; sellAmount: string; buyAmount: string }[][] =
517
+ [
518
+ [
519
+ {
520
+ name: 'AVAX',
521
+ sellAmount: '1000000000000000000',
522
+ buyAmount: '500000',
523
+ },
524
+ {
525
+ name: 'USDT',
526
+ sellAmount: '1000000',
527
+ buyAmount: '10000000000000000000',
528
+ },
529
+ ],
530
+ [
531
+ {
532
+ name: 'AVAX',
533
+ sellAmount: '1000000000000000000',
534
+ buyAmount: '500000',
535
+ },
536
+ {
537
+ name: 'USDC',
538
+ sellAmount: '1000000',
539
+ buyAmount: '1000000000000000000',
540
+ },
541
+ ],
542
+ [
543
+ {
544
+ name: 'WAVAX',
545
+ sellAmount: '1000000000000000000',
546
+ buyAmount: '500000',
547
+ },
548
+ {
549
+ name: 'USDC',
550
+ sellAmount: '1000000',
551
+ buyAmount: '20000000000000000',
552
+ },
553
+ ],
554
+ [
555
+ {
556
+ name: 'WAVAX',
557
+ sellAmount: '1000000000000000000',
558
+ buyAmount: '10000000',
559
+ },
560
+ { name: 'USDT', sellAmount: '1000000', buyAmount: '2000000000000' },
561
+ ],
562
+ [
563
+ { name: 'USDC', sellAmount: '1000000', buyAmount: '100000000' },
564
+ { name: 'USDT', sellAmount: '100000000', buyAmount: '100000000' },
565
+ ],
566
+ ];
567
+
568
+ sideToContractMethods.forEach((contractMethods, side) =>
569
+ describe(`${side}`, () => {
570
+ contractMethods.forEach((contractMethod: ContractMethod) => {
571
+ pairs.forEach(pair => {
572
+ describe(`${contractMethod}`, () => {
573
+ it(`${pair[0].name} -> ${pair[1].name}`, async () => {
574
+ await testE2E(
575
+ tokens[pair[0].name],
576
+ tokens[pair[1].name],
577
+ holders[pair[0].name],
578
+ side === SwapSide.SELL
579
+ ? pair[0].sellAmount
580
+ : pair[0].buyAmount,
581
+ side,
582
+ dexKey,
583
+ contractMethod,
584
+ network,
585
+ provider,
586
+ );
587
+ });
588
+ it(`${pair[1].name} -> ${pair[0].name}`, async () => {
589
+ await testE2E(
590
+ tokens[pair[1].name],
591
+ tokens[pair[0].name],
592
+ holders[pair[1].name],
593
+ side === SwapSide.SELL
594
+ ? pair[1].sellAmount
595
+ : pair[1].buyAmount,
596
+ side,
597
+ dexKey,
598
+ contractMethod,
599
+ network,
600
+ provider,
601
+ );
602
+ });
603
+ });
604
+ });
146
605
  });
147
- });
148
- }),
149
- );
606
+ }),
607
+ );
608
+ });
150
609
  });
151
610
 
152
- describe('UniswapV3 BSC', () => {
153
- const network = Network.BSC;
154
- const tokens = Tokens[network];
155
- const holders = Holders[network];
156
- const provider = new StaticJsonRpcProvider(
157
- generateConfig(network).privateHttpProvider,
158
- network,
159
- );
611
+ describe('RamsesV2', () => {
612
+ const dexKey = 'RamsesV2';
160
613
 
161
- const tokenASymbol: string = 'BUSD';
162
- const tokenBSymbol: string = 'WBNB';
163
- const nativeTokenSymbol = NativeTokenSymbols[network];
614
+ describe('Arbitrum', () => {
615
+ const network = Network.ARBITRUM;
616
+ const tokens = Tokens[network];
617
+ const holders = Holders[network];
618
+ const provider = new StaticJsonRpcProvider(
619
+ generateConfig(network).privateHttpProvider,
620
+ network,
621
+ );
164
622
 
165
- const tokenAAmount: string = '100000000000000000000';
166
- const tokenBAmount: string = '1000000000000000000';
167
- const nativeTokenAmount = '1000000000000000000';
623
+ const tokenASymbol: string = 'USDCe';
624
+ const tokenBSymbol: string = 'USDT';
625
+ const nativeTokenSymbol = NativeTokenSymbols[network];
168
626
 
169
- const sideToContractMethods = new Map([
170
- [
171
- SwapSide.SELL,
627
+ const tokenAAmount: string = '1100000';
628
+ const tokenBAmount: string = '1000000';
629
+ const nativeTokenAmount = '1100000000000';
630
+
631
+ const sideToContractMethods = new Map([
172
632
  [
173
- ContractMethod.simpleSwap,
174
- ContractMethod.multiSwap,
175
- ContractMethod.megaSwap,
633
+ SwapSide.SELL,
634
+ [
635
+ ContractMethod.simpleSwap,
636
+ ContractMethod.multiSwap,
637
+ ContractMethod.megaSwap,
638
+ ContractMethod.directUniV3Swap,
639
+ ],
176
640
  ],
177
- ],
178
- [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
179
- ]);
641
+ [
642
+ SwapSide.BUY,
643
+ [
644
+ ContractMethod.simpleBuy,
645
+ ContractMethod.buy,
646
+ ContractMethod.directUniV3Buy,
647
+ ],
648
+ ],
649
+ ]);
180
650
 
181
- sideToContractMethods.forEach((contractMethods, side) =>
182
- contractMethods.forEach((contractMethod: ContractMethod) => {
183
- describe(`${contractMethod}`, () => {
184
- it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
185
- await testE2E(
186
- tokens[nativeTokenSymbol],
187
- tokens[tokenASymbol],
188
- holders[nativeTokenSymbol],
189
- side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
190
- side,
191
- dexKey,
192
- contractMethod,
193
- network,
194
- provider,
195
- );
196
- });
197
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
198
- await testE2E(
199
- tokens[tokenASymbol],
200
- tokens[nativeTokenSymbol],
201
- holders[tokenASymbol],
202
- side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
203
- side,
204
- dexKey,
205
- contractMethod,
206
- network,
207
- provider,
208
- );
209
- });
210
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
211
- await testE2E(
212
- tokens[tokenASymbol],
213
- tokens[tokenBSymbol],
214
- holders[tokenASymbol],
215
- side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
216
- side,
217
- dexKey,
218
- contractMethod,
219
- network,
220
- provider,
221
- );
651
+ sideToContractMethods.forEach((contractMethods, side) =>
652
+ contractMethods.forEach((contractMethod: ContractMethod) => {
653
+ describe(`${contractMethod}`, () => {
654
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
655
+ await testE2E(
656
+ tokens[nativeTokenSymbol],
657
+ tokens[tokenASymbol],
658
+ holders[nativeTokenSymbol],
659
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
660
+ side,
661
+ dexKey,
662
+ contractMethod,
663
+ network,
664
+ provider,
665
+ );
666
+ });
667
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
668
+ await testE2E(
669
+ tokens[tokenASymbol],
670
+ tokens[nativeTokenSymbol],
671
+ holders[tokenASymbol],
672
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
673
+ side,
674
+ dexKey,
675
+ contractMethod,
676
+ network,
677
+ provider,
678
+ );
679
+ });
680
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
681
+ await testE2E(
682
+ tokens[tokenASymbol],
683
+ tokens[tokenBSymbol],
684
+ holders[tokenASymbol],
685
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
686
+ side,
687
+ dexKey,
688
+ contractMethod,
689
+ network,
690
+ provider,
691
+ );
692
+ });
222
693
  });
223
- });
224
- }),
225
- );
694
+ }),
695
+ );
696
+ });
226
697
  });
227
698
 
228
- describe('UniswapV3 Optimism', () => {
229
- const network = Network.OPTIMISM;
230
- const tokens = Tokens[network];
231
- const holders = Holders[network];
232
- const provider = new StaticJsonRpcProvider(
233
- generateConfig(network).privateHttpProvider,
234
- network,
235
- );
699
+ describe('ChronosV3', () => {
700
+ const dexKey = 'ChronosV3';
701
+ describe('Arbitrum', () => {
702
+ const network = Network.ARBITRUM;
703
+ const tokens = Tokens[network];
704
+ const holders = Holders[network];
705
+ const provider = new StaticJsonRpcProvider(
706
+ generateConfig(network).privateHttpProvider,
707
+ network,
708
+ );
236
709
 
237
- const tokenASymbol: string = 'OP';
238
- const tokenBSymbol: string = 'ETH';
239
- const nativeTokenSymbol = NativeTokenSymbols[network];
710
+ const tokenASymbol: string = 'USDCe';
711
+ const tokenBSymbol: string = 'USDT';
712
+ const nativeTokenSymbol = NativeTokenSymbols[network];
240
713
 
241
- const tokenAAmount: string = '1000000000000000000';
242
- const tokenBAmount: string = '1000000000000000000';
243
- const nativeTokenAmount = '1000000000000000000';
714
+ const tokenAAmount: string = '2000000';
715
+ const tokenBAmount: string = '2000000';
716
+ const nativeTokenAmount = '100000000000000000';
244
717
 
245
- const sideToContractMethods = new Map([
246
- [
247
- SwapSide.SELL,
718
+ const sideToContractMethods = new Map([
248
719
  [
249
- ContractMethod.simpleSwap,
250
- ContractMethod.multiSwap,
251
- ContractMethod.megaSwap,
720
+ SwapSide.SELL,
721
+ [
722
+ ContractMethod.simpleSwap,
723
+ ContractMethod.multiSwap,
724
+ ContractMethod.megaSwap,
725
+ ContractMethod.directUniV3Swap,
726
+ ],
252
727
  ],
253
- ],
254
- [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
255
- ]);
728
+ [
729
+ SwapSide.BUY,
730
+ [
731
+ ContractMethod.simpleBuy,
732
+ ContractMethod.buy,
733
+ ContractMethod.directUniV3Buy,
734
+ ],
735
+ ],
736
+ ]);
256
737
 
257
- sideToContractMethods.forEach((contractMethods, side) =>
258
- contractMethods.forEach((contractMethod: ContractMethod) => {
259
- describe(`${contractMethod}`, () => {
260
- it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
261
- await testE2E(
262
- tokens[nativeTokenSymbol],
263
- tokens[tokenASymbol],
264
- holders[nativeTokenSymbol],
265
- side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
266
- side,
267
- dexKey,
268
- contractMethod,
269
- network,
270
- provider,
271
- );
272
- });
273
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
274
- await testE2E(
275
- tokens[tokenASymbol],
276
- tokens[nativeTokenSymbol],
277
- holders[tokenASymbol],
278
- side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
279
- side,
280
- dexKey,
281
- contractMethod,
282
- network,
283
- provider,
284
- );
285
- });
286
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
287
- await testE2E(
288
- tokens[tokenASymbol],
289
- tokens[tokenBSymbol],
290
- holders[tokenASymbol],
291
- side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
292
- side,
293
- dexKey,
294
- contractMethod,
295
- network,
296
- provider,
297
- );
738
+ sideToContractMethods.forEach((contractMethods, side) =>
739
+ contractMethods.forEach((contractMethod: ContractMethod) => {
740
+ describe(`${contractMethod}`, () => {
741
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
742
+ await testE2E(
743
+ tokens[nativeTokenSymbol],
744
+ tokens[tokenASymbol],
745
+ holders[nativeTokenSymbol],
746
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
747
+ side,
748
+ dexKey,
749
+ contractMethod,
750
+ network,
751
+ provider,
752
+ );
753
+ });
754
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
755
+ await testE2E(
756
+ tokens[tokenASymbol],
757
+ tokens[nativeTokenSymbol],
758
+ holders[tokenASymbol],
759
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
760
+ side,
761
+ dexKey,
762
+ contractMethod,
763
+ network,
764
+ provider,
765
+ );
766
+ });
767
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
768
+ await testE2E(
769
+ tokens[tokenASymbol],
770
+ tokens[tokenBSymbol],
771
+ holders[tokenASymbol],
772
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
773
+ side,
774
+ dexKey,
775
+ contractMethod,
776
+ network,
777
+ provider,
778
+ );
779
+ });
298
780
  });
299
- });
300
- }),
301
- );
781
+ }),
782
+ );
783
+ });
302
784
  });
303
785
 
304
- describe('UniswapV3 Avalanche', () => {
305
- const network = Network.AVALANCHE;
306
- const tokens = Tokens[network];
307
- const holders = Holders[network];
308
- const provider = new StaticJsonRpcProvider(
309
- generateConfig(network).privateHttpProvider,
310
- network,
311
- );
786
+ describe('SushiSwapV3 E2E', () => {
787
+ const dexKey = 'SushiSwapV3';
312
788
 
313
- const sideToContractMethods = new Map([
314
- [
315
- SwapSide.SELL,
789
+ describe('MAINNET', () => {
790
+ const network = Network.MAINNET;
791
+
792
+ const tokenASymbol: string = 'USDC';
793
+ const tokenBSymbol: string = 'USDT';
794
+
795
+ const tokenAAmount: string = '111110000';
796
+ const tokenBAmount: string = '1100000000';
797
+ const nativeTokenAmount = '11000000000000000';
798
+
799
+ testForNetwork(
800
+ network,
801
+ dexKey,
802
+ tokenASymbol,
803
+ tokenBSymbol,
804
+ tokenAAmount,
805
+ tokenBAmount,
806
+ nativeTokenAmount,
807
+ );
808
+ });
809
+
810
+ describe('ARBITRUM', () => {
811
+ const network = Network.ARBITRUM;
812
+
813
+ const tokenASymbol: string = 'USDC';
814
+ const tokenBSymbol: string = 'USDCe';
815
+
816
+ const tokenAAmount: string = '10000000';
817
+ const tokenBAmount: string = '10000000';
818
+ const nativeTokenAmount = '900000000000000';
819
+
820
+ testForNetwork(
821
+ network,
822
+ dexKey,
823
+ tokenASymbol,
824
+ tokenBSymbol,
825
+ tokenAAmount,
826
+ tokenBAmount,
827
+ nativeTokenAmount,
828
+ );
829
+ });
830
+
831
+ describe('POLYGON', () => {
832
+ const network = Network.POLYGON;
833
+
834
+ const tokenASymbol: string = 'USDC';
835
+ const tokenBSymbol: string = 'USDT';
836
+
837
+ const tokenAAmount: string = '21111000';
838
+ const tokenBAmount: string = '200000000';
839
+ const nativeTokenAmount = '110000000000000000';
840
+
841
+ testForNetwork(
842
+ network,
843
+ dexKey,
844
+ tokenASymbol,
845
+ tokenBSymbol,
846
+ tokenAAmount,
847
+ tokenBAmount,
848
+ nativeTokenAmount,
849
+ );
850
+ });
851
+
852
+ describe('BSC', () => {
853
+ const network = Network.BSC;
854
+ const tokens = Tokens[network];
855
+ const holders = Holders[network];
856
+ const provider = new StaticJsonRpcProvider(
857
+ generateConfig(network).privateHttpProvider,
858
+ network,
859
+ );
860
+
861
+ const sideToContractMethods = new Map([
316
862
  [
317
- ContractMethod.simpleSwap,
318
- ContractMethod.multiSwap,
319
- ContractMethod.megaSwap,
863
+ SwapSide.SELL,
864
+ [
865
+ ContractMethod.simpleSwap,
866
+ ContractMethod.multiSwap,
867
+ ContractMethod.megaSwap,
868
+ ContractMethod.directUniV3Swap,
869
+ ],
320
870
  ],
321
- ],
322
- [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
323
- ]);
871
+ [
872
+ SwapSide.BUY,
873
+ [
874
+ ContractMethod.simpleBuy,
875
+ ContractMethod.buy,
876
+ ContractMethod.directUniV3Buy,
877
+ ],
878
+ ],
879
+ ]);
324
880
 
325
- const pairs: { name: string; sellAmount: string; buyAmount: string }[][] = [
326
- [
327
- {
328
- name: 'AVAX',
329
- sellAmount: '1000000000000000000',
330
- buyAmount: '500000',
331
- },
332
- {
333
- name: 'USDT',
334
- sellAmount: '1000000',
335
- buyAmount: '10000000000000000000',
336
- },
337
- ],
338
- [
339
- {
340
- name: 'AVAX',
341
- sellAmount: '1000000000000000000',
342
- buyAmount: '500000',
343
- },
344
- {
345
- name: 'USDC',
346
- sellAmount: '1000000',
347
- buyAmount: '1000000000000000000',
348
- },
349
- ],
350
- [
351
- {
352
- name: 'WAVAX',
353
- sellAmount: '1000000000000000000',
354
- buyAmount: '500000',
355
- },
356
- { name: 'USDC', sellAmount: '1000000', buyAmount: '20000000000000000' },
357
- ],
358
- [
359
- {
360
- name: 'WAVAX',
361
- sellAmount: '1000000000000000000',
362
- buyAmount: '10000000',
363
- },
364
- { name: 'USDT', sellAmount: '1000000', buyAmount: '2000000000000' },
365
- ],
366
- [
367
- { name: 'USDC', sellAmount: '1000000', buyAmount: '100000000' },
368
- { name: 'USDT', sellAmount: '100000000', buyAmount: '100000000' },
369
- ],
370
- ];
881
+ const pairs: { name: string; sellAmount: string; buyAmount: string }[][] =
882
+ [
883
+ [
884
+ {
885
+ name: 'USDC',
886
+ sellAmount: '100000000000000000000',
887
+ buyAmount: '100000000000000000000',
888
+ },
889
+ {
890
+ name: 'USDT',
891
+ sellAmount: '100000000000000000000',
892
+ buyAmount: '100000000000000000000',
893
+ },
894
+ ],
895
+ [
896
+ {
897
+ name: 'BNB',
898
+ sellAmount: '1000000000000000000',
899
+ buyAmount: '10000000000000000000',
900
+ },
901
+ {
902
+ name: 'USDT',
903
+ sellAmount: '1000000000000000000000',
904
+ buyAmount: '20000000000000000',
905
+ },
906
+ ],
907
+ ];
371
908
 
372
- sideToContractMethods.forEach((contractMethods, side) =>
373
- describe(`${side}`, () => {
374
- contractMethods.forEach((contractMethod: ContractMethod) => {
375
- pairs.forEach(pair => {
376
- describe(`${contractMethod}`, () => {
377
- it(`${pair[0].name} -> ${pair[1].name}`, async () => {
378
- await testE2E(
379
- tokens[pair[0].name],
380
- tokens[pair[1].name],
381
- holders[pair[0].name],
382
- side === SwapSide.SELL
383
- ? pair[0].sellAmount
384
- : pair[0].buyAmount,
385
- side,
386
- dexKey,
387
- contractMethod,
388
- network,
389
- provider,
390
- );
909
+ sideToContractMethods.forEach((contractMethods, side) =>
910
+ describe(`${side}`, () => {
911
+ contractMethods.forEach((contractMethod: ContractMethod) => {
912
+ pairs.forEach(pair => {
913
+ describe(`${contractMethod}`, () => {
914
+ it(`${pair[0].name} -> ${pair[1].name}`, async () => {
915
+ await testE2E(
916
+ tokens[pair[0].name],
917
+ tokens[pair[1].name],
918
+ holders[pair[0].name],
919
+ side === SwapSide.SELL
920
+ ? pair[0].sellAmount
921
+ : pair[0].buyAmount,
922
+ side,
923
+ dexKey,
924
+ contractMethod,
925
+ network,
926
+ provider,
927
+ );
928
+ });
929
+ it(`${pair[1].name} -> ${pair[0].name}`, async () => {
930
+ await testE2E(
931
+ tokens[pair[1].name],
932
+ tokens[pair[0].name],
933
+ holders[pair[1].name],
934
+ side === SwapSide.SELL
935
+ ? pair[1].sellAmount
936
+ : pair[1].buyAmount,
937
+ side,
938
+ dexKey,
939
+ contractMethod,
940
+ network,
941
+ provider,
942
+ );
943
+ });
391
944
  });
392
- it(`${pair[1].name} -> ${pair[0].name}`, async () => {
393
- await testE2E(
394
- tokens[pair[1].name],
395
- tokens[pair[0].name],
396
- holders[pair[1].name],
397
- side === SwapSide.SELL
398
- ? pair[1].sellAmount
399
- : pair[1].buyAmount,
400
- side,
401
- dexKey,
402
- contractMethod,
403
- network,
404
- provider,
405
- );
945
+ });
946
+ });
947
+ }),
948
+ );
949
+ });
950
+
951
+ describe('AVALANCHE', () => {
952
+ const network = Network.AVALANCHE;
953
+
954
+ const tokenASymbol: string = 'USDT';
955
+ const tokenBSymbol: string = 'USDC';
956
+
957
+ const tokenAAmount: string = '111110';
958
+ const tokenBAmount: string = '100000';
959
+ const nativeTokenAmount = '11000000000000000';
960
+
961
+ testForNetwork(
962
+ network,
963
+ dexKey,
964
+ tokenASymbol,
965
+ tokenBSymbol,
966
+ tokenAAmount,
967
+ tokenBAmount,
968
+ nativeTokenAmount,
969
+ );
970
+ });
971
+
972
+ describe('FANTOM', () => {
973
+ const network = Network.FANTOM;
974
+ const tokens = Tokens[network];
975
+ const holders = Holders[network];
976
+ const provider = new StaticJsonRpcProvider(
977
+ generateConfig(network).privateHttpProvider,
978
+ network,
979
+ );
980
+
981
+ const sideToContractMethods = new Map([
982
+ [
983
+ SwapSide.SELL,
984
+ [
985
+ ContractMethod.simpleSwap,
986
+ ContractMethod.multiSwap,
987
+ ContractMethod.megaSwap,
988
+ ContractMethod.directUniV3Swap,
989
+ ],
990
+ ],
991
+ [
992
+ SwapSide.BUY,
993
+ [
994
+ ContractMethod.simpleBuy,
995
+ ContractMethod.buy,
996
+ ContractMethod.directUniV3Buy,
997
+ ],
998
+ ],
999
+ ]);
1000
+
1001
+ const pairs: { name: string; sellAmount: string; buyAmount: string }[][] =
1002
+ [
1003
+ [
1004
+ {
1005
+ name: 'FTM',
1006
+ sellAmount: '100000000000000000',
1007
+ buyAmount: '100000000',
1008
+ },
1009
+ {
1010
+ name: 'USDC',
1011
+ sellAmount: '100000000',
1012
+ buyAmount: '100000000000000000',
1013
+ },
1014
+ ],
1015
+ [
1016
+ {
1017
+ name: 'WFTM',
1018
+ sellAmount: '100000000000000',
1019
+ buyAmount: '1000000000000000',
1020
+ },
1021
+ {
1022
+ name: 'WETH',
1023
+ sellAmount: '1000000000000000',
1024
+ buyAmount: '100000000000000',
1025
+ },
1026
+ ],
1027
+ ];
1028
+
1029
+ sideToContractMethods.forEach((contractMethods, side) =>
1030
+ describe(`${side}`, () => {
1031
+ contractMethods.forEach((contractMethod: ContractMethod) => {
1032
+ pairs.forEach(pair => {
1033
+ describe(`${contractMethod}`, () => {
1034
+ it(`${pair[0].name} -> ${pair[1].name}`, async () => {
1035
+ await testE2E(
1036
+ tokens[pair[0].name],
1037
+ tokens[pair[1].name],
1038
+ holders[pair[0].name],
1039
+ side === SwapSide.SELL
1040
+ ? pair[0].sellAmount
1041
+ : pair[0].buyAmount,
1042
+ side,
1043
+ dexKey,
1044
+ contractMethod,
1045
+ network,
1046
+ provider,
1047
+ );
1048
+ });
1049
+ it(`${pair[1].name} -> ${pair[0].name}`, async () => {
1050
+ await testE2E(
1051
+ tokens[pair[1].name],
1052
+ tokens[pair[0].name],
1053
+ holders[pair[1].name],
1054
+ side === SwapSide.SELL
1055
+ ? pair[1].sellAmount
1056
+ : pair[1].buyAmount,
1057
+ side,
1058
+ dexKey,
1059
+ contractMethod,
1060
+ network,
1061
+ provider,
1062
+ );
1063
+ });
406
1064
  });
407
1065
  });
408
1066
  });
409
- });
410
- }),
411
- );
1067
+ }),
1068
+ );
1069
+ });
1070
+
1071
+ describe('OPTIMISM', () => {
1072
+ const network = Network.OPTIMISM;
1073
+
1074
+ const tokenASymbol: string = 'USDC';
1075
+ const tokenBSymbol: string = 'USDT';
1076
+
1077
+ const tokenAAmount: string = '111110000';
1078
+ const tokenBAmount: string = '10000000';
1079
+ const nativeTokenAmount = '11000000000000000';
1080
+
1081
+ testForNetwork(
1082
+ network,
1083
+ dexKey,
1084
+ tokenASymbol,
1085
+ tokenBSymbol,
1086
+ tokenAAmount,
1087
+ tokenBAmount,
1088
+ nativeTokenAmount,
1089
+ );
1090
+ });
1091
+
1092
+ describe('BASE', () => {
1093
+ const network = Network.BASE;
1094
+
1095
+ const tokenASymbol: string = 'USDbC';
1096
+ const tokenBSymbol: string = 'DAI';
1097
+
1098
+ const tokenAAmount: string = '111110000';
1099
+ const tokenBAmount: string = '110000000000000000';
1100
+ const nativeTokenAmount = '1100000000000000000';
1101
+
1102
+ testForNetwork(
1103
+ network,
1104
+ dexKey,
1105
+ tokenASymbol,
1106
+ tokenBSymbol,
1107
+ tokenAAmount,
1108
+ tokenBAmount,
1109
+ nativeTokenAmount,
1110
+ );
1111
+ });
1112
+ });
1113
+
1114
+ describe('Retro', () => {
1115
+ const dexKey = 'Retro';
1116
+
1117
+ describe('POLYGON', () => {
1118
+ const network = Network.POLYGON;
1119
+
1120
+ const tokenASymbol: string = 'USDC';
1121
+ const tokenBSymbol: string = 'USDT';
1122
+
1123
+ const tokenAAmount: string = '1000000000';
1124
+ const tokenBAmount: string = '100000000';
1125
+ const nativeTokenAmount = '1100000000000000000';
1126
+
1127
+ testForNetwork(
1128
+ network,
1129
+ dexKey,
1130
+ tokenASymbol,
1131
+ tokenBSymbol,
1132
+ tokenAAmount,
1133
+ tokenBAmount,
1134
+ nativeTokenAmount,
1135
+ );
1136
+ });
412
1137
  });
413
1138
  });