@paraswap/dex-lib 2.48.2 → 2.48.3

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 (326) hide show
  1. package/build/abi/Redstone.json +739 -0
  2. package/build/abi/angle/stagToken.json +963 -0
  3. package/build/abi/angle-transmuter/Pyth.json +1534 -0
  4. package/build/abi/angle-transmuter/Transmuter.json +1719 -0
  5. package/build/abi/pharaoh/PharaohPool.abi.json +1582 -0
  6. package/build/abi/smardex/smardex-factory.json +185 -0
  7. package/build/abi/smardex/smardex-pool.json +578 -0
  8. package/build/abi/smardex/smardex-router.json +648 -0
  9. package/build/abi/trader-joe-v2_1/FactoryABI.json +1208 -0
  10. package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
  11. package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
  12. package/build/abi/trader-joe-v2_1/StateMulticall.json +193 -0
  13. package/build/abi/wombat/pool.json +1289 -0
  14. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +53 -0
  15. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +175 -0
  16. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +1 -0
  17. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +42 -0
  18. package/build/dex/angle-staked-stable/angle-staked-stable.js +232 -0
  19. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -0
  20. package/build/dex/{sushiswap-v3 → angle-staked-stable}/config.d.ts +2 -2
  21. package/build/dex/angle-staked-stable/config.js +26 -0
  22. package/build/dex/angle-staked-stable/config.js.map +1 -0
  23. package/build/dex/angle-staked-stable/types.d.ts +15 -0
  24. package/build/dex/angle-staked-stable/types.js.map +1 -0
  25. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +43 -0
  26. package/build/dex/angle-transmuter/angle-transmuter-pool.js +309 -0
  27. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -0
  28. package/build/dex/{lighter-v1/lighter-v1.d.ts → angle-transmuter/angle-transmuter.d.ts} +18 -17
  29. package/build/dex/angle-transmuter/angle-transmuter.js +233 -0
  30. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -0
  31. package/build/dex/angle-transmuter/backedOracle.d.ts +19 -0
  32. package/build/dex/angle-transmuter/backedOracle.js +56 -0
  33. package/build/dex/angle-transmuter/backedOracle.js.map +1 -0
  34. package/build/dex/{woo-fi → angle-transmuter}/config.d.ts +1 -1
  35. package/build/dex/angle-transmuter/config.js +20 -0
  36. package/build/dex/angle-transmuter/config.js.map +1 -0
  37. package/build/dex/angle-transmuter/constants.d.ts +4 -0
  38. package/build/dex/angle-transmuter/constants.js +8 -0
  39. package/build/dex/angle-transmuter/constants.js.map +1 -0
  40. package/build/dex/angle-transmuter/pyth.d.ts +19 -0
  41. package/build/dex/angle-transmuter/pyth.js +71 -0
  42. package/build/dex/angle-transmuter/pyth.js.map +1 -0
  43. package/build/dex/angle-transmuter/redstone.d.ts +20 -0
  44. package/build/dex/angle-transmuter/redstone.js +73 -0
  45. package/build/dex/angle-transmuter/redstone.js.map +1 -0
  46. package/build/dex/angle-transmuter/transmuter.d.ts +50 -0
  47. package/build/dex/angle-transmuter/transmuter.js +314 -0
  48. package/build/dex/angle-transmuter/transmuter.js.map +1 -0
  49. package/build/dex/angle-transmuter/types.d.ts +144 -0
  50. package/build/dex/angle-transmuter/types.js +31 -0
  51. package/build/dex/angle-transmuter/types.js.map +1 -0
  52. package/build/dex/angle-transmuter/utils.d.ts +9 -0
  53. package/build/dex/angle-transmuter/utils.js +264 -0
  54. package/build/dex/angle-transmuter/utils.js.map +1 -0
  55. package/build/dex/smardex/subgraph-queries.d.ts +1 -0
  56. package/build/dex/smardex/subgraph-queries.js +17 -0
  57. package/build/dex/smardex/subgraph-queries.js.map +1 -0
  58. package/build/dex/smardex/usd-reserves.d.ts +23 -0
  59. package/build/dex/smardex/usd-reserves.js +86 -0
  60. package/build/dex/smardex/usd-reserves.js.map +1 -0
  61. package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -1
  62. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +4 -4
  63. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -1
  64. package/build/dex/{lighter-v1 → trader-joe-v2-1-2}/config.d.ts +1 -1
  65. package/build/dex/trader-joe-v2-1-2/config.js +47 -0
  66. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  67. package/build/dex/trader-joe-v2-1-2/constants.d.ts +20 -0
  68. package/build/dex/trader-joe-v2-1-2/constants.js +22 -0
  69. package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
  70. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +37 -0
  71. package/build/dex/trader-joe-v2-1-2/math/index.js +291 -0
  72. package/build/dex/trader-joe-v2-1-2/math/index.js.map +1 -0
  73. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
  74. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +248 -0
  75. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  76. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +53 -0
  77. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +307 -0
  78. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  79. package/build/dex/trader-joe-v2-1-2/types.d.ts +82 -0
  80. package/build/dex/trader-joe-v2-1-2/types.js +9 -0
  81. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  82. package/build/dex/{ramses-v2 → trader-joe-v2_1}/config.d.ts +1 -1
  83. package/build/dex/trader-joe-v2_1/config.js +47 -0
  84. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  85. package/build/dex/trader-joe-v2_1/constants.d.ts +20 -0
  86. package/build/dex/trader-joe-v2_1/constants.js +22 -0
  87. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  88. package/build/dex/trader-joe-v2_1/math/index.d.ts +37 -0
  89. package/build/dex/trader-joe-v2_1/math/index.js +291 -0
  90. package/build/dex/trader-joe-v2_1/math/index.js.map +1 -0
  91. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  92. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
  93. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  94. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +60 -0
  95. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +247 -0
  96. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +1 -0
  97. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +53 -0
  98. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +307 -0
  99. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +1 -0
  100. package/build/dex/trader-joe-v2_1/types.d.ts +82 -0
  101. package/build/dex/trader-joe-v2_1/types.js +9 -0
  102. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  103. package/build/dex/uniswap-v3/config.js +20 -1
  104. package/build/dex/uniswap-v3/config.js.map +1 -1
  105. package/build/dex/uniswap-v3/uniswap-v3.js +1 -0
  106. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  107. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  108. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  109. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  110. package/build/dex-helper/Cache.d.ts +31 -0
  111. package/build/dex-helper/Cache.js +106 -0
  112. package/build/dex-helper/Cache.js.map +1 -0
  113. package/build/dex-helper/RedisBatcher.d.ts +20 -0
  114. package/build/dex-helper/RedisBatcher.js +75 -0
  115. package/build/dex-helper/RedisBatcher.js.map +1 -0
  116. package/build/dex-helper/RedisWrapper.d.ts +37 -0
  117. package/build/dex-helper/RedisWrapper.js +165 -0
  118. package/build/dex-helper/RedisWrapper.js.map +1 -0
  119. package/package.json +1 -1
  120. package/src/dex/solidly-v3/contract-math/Tick.ts +1 -4
  121. package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +6 -14
  122. package/src/dex/solidly-v3/solidly-v3-events.test.ts +9 -7
  123. package/src/dex/uniswap-v3/config.ts +22 -1
  124. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +25 -0
  125. package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +147 -0
  126. package/src/dex/uniswap-v3/uniswap-v3.ts +1 -0
  127. package/.idea/aws.xml +0 -17
  128. package/.idea/codeStyles/Project.xml +0 -19
  129. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  130. package/.idea/misc.xml +0 -6
  131. package/.idea/modules.xml +0 -8
  132. package/.idea/paraswap-dex-lib.iml +0 -9
  133. package/.idea/prettier.xml +0 -7
  134. package/.idea/vcs.xml +0 -6
  135. package/build/abi/AugustusV6.abi.json +0 -395
  136. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  137. package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
  138. package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
  139. package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
  140. package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
  141. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  142. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
  143. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  144. package/build/abi/wBETH.json +0 -1527
  145. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  146. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  147. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  148. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  149. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  150. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  151. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  152. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  153. package/build/dex/algebra/algebra-pool.d.ts +0 -114
  154. package/build/dex/algebra/algebra-pool.js +0 -448
  155. package/build/dex/algebra/algebra-pool.js.map +0 -1
  156. package/build/dex/balancer-v2/Gyro3Pool.d.ts +0 -43
  157. package/build/dex/balancer-v2/Gyro3Pool.js +0 -160
  158. package/build/dex/balancer-v2/Gyro3Pool.js.map +0 -1
  159. package/build/dex/balancer-v2/LinearMath.d.ts +0 -88
  160. package/build/dex/balancer-v2/LinearMath.js +0 -285
  161. package/build/dex/balancer-v2/LinearMath.js.map +0 -1
  162. package/build/dex/balancer-v2/LinearPool.d.ts +0 -81
  163. package/build/dex/balancer-v2/LinearPool.js +0 -444
  164. package/build/dex/balancer-v2/LinearPool.js.map +0 -1
  165. package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -90
  166. package/build/dex/balancer-v2/PhantomStablePool.js +0 -418
  167. package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
  168. package/build/dex/balancer-v2/StableMath.d.ts +0 -9
  169. package/build/dex/balancer-v2/StableMath.js +0 -272
  170. package/build/dex/balancer-v2/StableMath.js.map +0 -1
  171. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -140
  172. package/build/dex/balancer-v2/balancer-v2-pool.js +0 -647
  173. package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
  174. package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
  175. package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
  176. package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
  177. package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
  178. package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
  179. package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
  180. package/build/dex/lighter-v1/abi/erc20.json +0 -222
  181. package/build/dex/lighter-v1/abi/factory.json +0 -291
  182. package/build/dex/lighter-v1/abi/order_book.json +0 -594
  183. package/build/dex/lighter-v1/abi/order_book_helper.json +0 -176
  184. package/build/dex/lighter-v1/abi/router.json +0 -488
  185. package/build/dex/lighter-v1/config.js +0 -17
  186. package/build/dex/lighter-v1/config.js.map +0 -1
  187. package/build/dex/lighter-v1/constants.d.ts +0 -2
  188. package/build/dex/lighter-v1/constants.js +0 -13
  189. package/build/dex/lighter-v1/constants.js.map +0 -1
  190. package/build/dex/lighter-v1/lighter-v1-pool.d.ts +0 -57
  191. package/build/dex/lighter-v1/lighter-v1-pool.js +0 -310
  192. package/build/dex/lighter-v1/lighter-v1-pool.js.map +0 -1
  193. package/build/dex/lighter-v1/lighter-v1.js +0 -331
  194. package/build/dex/lighter-v1/lighter-v1.js.map +0 -1
  195. package/build/dex/lighter-v1/types.d.ts +0 -40
  196. package/build/dex/lighter-v1/types.js +0 -3
  197. package/build/dex/lighter-v1/types.js.map +0 -1
  198. package/build/dex/pancakeswap-v3/types.d.ts +0 -14
  199. package/build/dex/pancakeswap-v3/types.js +0 -3
  200. package/build/dex/pancakeswap-v3/types.js.map +0 -1
  201. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  202. package/build/dex/quickswap/camelot-v3.js +0 -19
  203. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  204. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  205. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  206. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  207. package/build/dex/quickswap-v3.d.ts +0 -21
  208. package/build/dex/quickswap-v3.js +0 -40
  209. package/build/dex/quickswap-v3.js.map +0 -1
  210. package/build/dex/ramses-v2/config.js +0 -28
  211. package/build/dex/ramses-v2/config.js.map +0 -1
  212. package/build/dex/ramses-v2/constants.d.ts +0 -28
  213. package/build/dex/ramses-v2/constants.js +0 -35
  214. package/build/dex/ramses-v2/constants.js.map +0 -1
  215. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
  216. package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
  217. package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
  218. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
  219. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
  220. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
  221. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
  222. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
  223. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
  224. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
  225. package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
  226. package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
  227. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
  228. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
  229. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
  230. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
  231. package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
  232. package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
  233. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
  234. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
  235. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
  236. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
  237. package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
  238. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
  239. package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
  240. package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
  241. package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
  242. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
  243. package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
  244. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
  245. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
  246. package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
  247. package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
  248. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
  249. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
  250. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
  251. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
  252. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
  253. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
  254. package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
  255. package/build/dex/ramses-v2/contract-math/utils.js +0 -16
  256. package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
  257. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
  258. package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
  259. package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
  260. package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
  261. package/build/dex/ramses-v2/ramses-v2.js +0 -690
  262. package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
  263. package/build/dex/ramses-v2/types.d.ts +0 -154
  264. package/build/dex/ramses-v2/types.js +0 -9
  265. package/build/dex/ramses-v2/types.js.map +0 -1
  266. package/build/dex/ramses-v2/utils.d.ts +0 -6
  267. package/build/dex/ramses-v2/utils.js +0 -71
  268. package/build/dex/ramses-v2/utils.js.map +0 -1
  269. package/build/dex/solidly/forks-override/fvm.d.ts +0 -20
  270. package/build/dex/solidly/forks-override/fvm.js +0 -42
  271. package/build/dex/solidly/forks-override/fvm.js.map +0 -1
  272. package/build/dex/sushiswap-v3/config.js +0 -132
  273. package/build/dex/sushiswap-v3/config.js.map +0 -1
  274. package/build/dex/sushiswap-v3/constants.d.ts +0 -4
  275. package/build/dex/sushiswap-v3/constants.js +0 -32
  276. package/build/dex/sushiswap-v3/constants.js.map +0 -1
  277. package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
  278. package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
  279. package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
  280. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
  281. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
  282. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
  283. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
  284. package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
  285. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
  286. package/build/dex/sushiswap-v3/token.d.ts +0 -6
  287. package/build/dex/sushiswap-v3/token.js +0 -23
  288. package/build/dex/sushiswap-v3/token.js.map +0 -1
  289. package/build/dex/sushiswap-v3/types.d.ts +0 -15
  290. package/build/dex/sushiswap-v3/types.js +0 -18
  291. package/build/dex/sushiswap-v3/types.js.map +0 -1
  292. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
  293. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
  294. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  295. package/build/dex/woo-fi/config.js +0 -141
  296. package/build/dex/woo-fi/config.js.map +0 -1
  297. package/build/dex/woo-fi/constants.d.ts +0 -5
  298. package/build/dex/woo-fi/constants.js +0 -20
  299. package/build/dex/woo-fi/constants.js.map +0 -1
  300. package/build/dex/woo-fi/types.d.ts +0 -48
  301. package/build/dex/woo-fi/types.js.map +0 -1
  302. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  303. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  304. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  305. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  306. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  307. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  308. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  309. package/build/dex/woo-fi/woo-fi.js +0 -480
  310. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  311. package/build/executor/Executor01BytecodeBuilder.d.ts +0 -77
  312. package/build/executor/Executor01BytecodeBuilder.js +0 -359
  313. package/build/executor/Executor01BytecodeBuilder.js.map +0 -1
  314. package/build/executor/Executor02BytecodeBuilder.d.ts +0 -12
  315. package/build/executor/Executor02BytecodeBuilder.js +0 -14
  316. package/build/executor/Executor02BytecodeBuilder.js.map +0 -1
  317. package/build/executor/ExecutorDetector.d.ts +0 -28
  318. package/build/executor/ExecutorDetector.js +0 -89
  319. package/build/executor/ExecutorDetector.js.map +0 -1
  320. package/build/executor/IExecutorBytecodeBuilder.d.ts +0 -6
  321. package/build/executor/IExecutorBytecodeBuilder.js +0 -3
  322. package/build/executor/IExecutorBytecodeBuilder.js.map +0 -1
  323. package/build/generic-swap-transaction-builder.d.ts +0 -39
  324. package/build/generic-swap-transaction-builder.js +0 -156
  325. package/build/generic-swap-transaction-builder.js.map +0 -1
  326. /package/build/dex/{woo-fi → angle-staked-stable}/types.js +0 -0
@@ -1,359 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Executor01BytecodeBuilder = void 0;
7
- const ethers_1 = require("ethers");
8
- const utils_1 = require("../utils");
9
- const erc20_json_1 = __importDefault(require("../abi/erc20.json"));
10
- const abi_1 = require("@ethersproject/abi");
11
- const { utils: { hexlify, hexDataLength, hexConcat, hexZeroPad, solidityPack }, } = ethers_1.ethers;
12
- const EXECUTOR_01_FUNCTION_CALL_DATA_TYPES = [
13
- 'bytes20',
14
- 'bytes4',
15
- 'bytes2',
16
- 'bytes2',
17
- 'bytes2',
18
- 'bytes2',
19
- 'bytes28',
20
- 'bytes', // dex calldata (bytes)
21
- ];
22
- const APPROVE_CALLDATA_DEST_TOKEN_POS = 68;
23
- const WRAP_UNWRAP_FROM_AMOUNT_POS = 4;
24
- const BYTES_28_LENGTH = 28;
25
- const BYTES_64_LENGTH = 64;
26
- const ZEROS_12_BYTES = hexZeroPad(hexlify(0), 12);
27
- const ZEROS_28_BYTES = hexZeroPad(hexlify(0), 28);
28
- const ZEROS_32_BYTES = hexZeroPad(hexlify(0), 32);
29
- var SpecialDex;
30
- (function (SpecialDex) {
31
- SpecialDex[SpecialDex["DEFAULT"] = 0] = "DEFAULT";
32
- // SWAP_ON_BALANCER_V2 = 1, // swapOnBalancerV2
33
- // SWAP_ON_MAKER_PSM = 2, // swapOnMakerPSM
34
- // SWAP_ON_SWAAP_V2 = 3, // swapOnSwaapV2
35
- SpecialDex[SpecialDex["SEND_NATIVE"] = 4] = "SEND_NATIVE";
36
- })(SpecialDex || (SpecialDex = {}));
37
- var Flag;
38
- (function (Flag) {
39
- Flag[Flag["FIFTEEN"] = 15] = "FIFTEEN";
40
- Flag[Flag["ELEVEN"] = 11] = "ELEVEN";
41
- Flag[Flag["NINE"] = 9] = "NINE";
42
- Flag[Flag["EIGHT"] = 8] = "EIGHT";
43
- Flag[Flag["SEVEN"] = 7] = "SEVEN";
44
- Flag[Flag["FIVE"] = 5] = "FIVE";
45
- Flag[Flag["FOUR"] = 4] = "FOUR";
46
- Flag[Flag["THREE"] = 3] = "THREE";
47
- Flag[Flag["ZERO"] = 0] = "ZERO";
48
- })(Flag || (Flag = {}));
49
- /**
50
- * Class to build bytecode for Executor01 (simpleSwap + multiSwap with 100% amounts on each path)
51
- */
52
- class Executor01BytecodeBuilder {
53
- constructor(dexHelper) {
54
- this.dexHelper = dexHelper;
55
- this.erc20Interface = new abi_1.Interface(erc20_json_1.default);
56
- }
57
- buildDexCallData(swap, exchangeParam, flag) {
58
- const dontCheckBalanceAfterSwap = flag % 3 === 0;
59
- const checkDestTokenBalanceAfterSwap = flag % 3 === 2;
60
- const insertFromAmount = flag % 4 === 3;
61
- let { exchangeData } = exchangeParam;
62
- let destTokenPos = 0;
63
- if (checkDestTokenBalanceAfterSwap && !dontCheckBalanceAfterSwap) {
64
- const destTokenAddr = (0, utils_1.isETHAddress)(swap.destToken)
65
- ? this.dexHelper.config.data.wrappedNativeTokenAddress.toLowerCase()
66
- : swap.destToken.toLowerCase();
67
- if (!exchangeParam.dexFuncHasDestToken) {
68
- exchangeData = hexConcat([exchangeData, ZEROS_28_BYTES, destTokenAddr]);
69
- }
70
- const destTokenAddrIndex = exchangeData
71
- .replace('0x', '')
72
- .indexOf(destTokenAddr.replace('0x', ''));
73
- destTokenPos = (destTokenAddrIndex - 24) / 2;
74
- }
75
- let fromAmountPos = 0;
76
- if (insertFromAmount) {
77
- const fromAmount = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint256'], [swap.swapExchanges[0].srcAmount]);
78
- const fromAmountIndex = exchangeData
79
- .replace('0x', '')
80
- .indexOf(fromAmount.replace('0x', ''));
81
- fromAmountPos = fromAmountIndex / 2;
82
- }
83
- return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
84
- exchangeParam.targetExchange,
85
- hexZeroPad(hexlify(hexDataLength(exchangeData) + BYTES_28_LENGTH), 4),
86
- hexZeroPad(hexlify(fromAmountPos), 2),
87
- hexZeroPad(hexlify(destTokenPos), 2),
88
- hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
89
- hexZeroPad(hexlify(flag), 2),
90
- ZEROS_28_BYTES,
91
- exchangeData, // dex calldata
92
- ]);
93
- }
94
- buildApproveCallData(approveCalldata, tokenAddr, amount, flag) {
95
- const insertFromAmount = flag % 4 === 3;
96
- const checkSrcTokenBalance = flag % 3 === 2;
97
- let fromAmountPos = 0;
98
- if (insertFromAmount) {
99
- const fromAmount = ethers_1.ethers.utils.defaultAbiCoder.encode(['uint256'], [amount]);
100
- const fromAmountIndex = approveCalldata
101
- .replace('0x', '')
102
- .indexOf(fromAmount.replace('0x', ''));
103
- fromAmountPos = fromAmountIndex / 2;
104
- }
105
- if (checkSrcTokenBalance) {
106
- approveCalldata = hexConcat([approveCalldata, ZEROS_12_BYTES, tokenAddr]);
107
- }
108
- return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
109
- tokenAddr,
110
- hexZeroPad(hexlify(hexDataLength(approveCalldata) + BYTES_28_LENGTH), 4),
111
- hexZeroPad(hexlify(fromAmountPos), 2),
112
- hexZeroPad(hexlify(APPROVE_CALLDATA_DEST_TOKEN_POS), 2),
113
- hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
114
- hexZeroPad(hexlify(flag), 2),
115
- ZEROS_28_BYTES,
116
- approveCalldata, // approve calldata
117
- ]);
118
- }
119
- buildWrapEthCallData(depositCallData, flag) {
120
- return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
121
- this.dexHelper.config.data.wrappedNativeTokenAddress,
122
- hexZeroPad(hexlify(hexDataLength(depositCallData) + BYTES_28_LENGTH), 4),
123
- hexZeroPad(hexlify(WRAP_UNWRAP_FROM_AMOUNT_POS), 2),
124
- hexZeroPad(hexlify(0), 2),
125
- hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
126
- hexZeroPad(hexlify(flag), 2),
127
- ZEROS_28_BYTES,
128
- depositCallData, // wrap calldata
129
- ]);
130
- }
131
- buildUnwrapEthCallData(withdrawCallData) {
132
- return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
133
- this.dexHelper.config.data.wrappedNativeTokenAddress,
134
- hexZeroPad(hexlify(hexDataLength(withdrawCallData) + BYTES_28_LENGTH), 4),
135
- hexZeroPad(hexlify(WRAP_UNWRAP_FROM_AMOUNT_POS), 2),
136
- hexZeroPad(hexlify(0), 2),
137
- hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
138
- hexZeroPad(hexlify(Flag.SEVEN), 2),
139
- ZEROS_28_BYTES,
140
- withdrawCallData, // unwrap calldata
141
- ]);
142
- }
143
- buildTransferCallData(transferCallData, tokenAddr) {
144
- return solidityPack(EXECUTOR_01_FUNCTION_CALL_DATA_TYPES, [
145
- tokenAddr,
146
- hexZeroPad(hexlify(hexDataLength(transferCallData) + BYTES_28_LENGTH), 4),
147
- hexZeroPad(hexlify(36), 2),
148
- hexZeroPad(hexlify(0), 2),
149
- hexZeroPad(hexlify(SpecialDex.DEFAULT), 2),
150
- hexZeroPad(hexlify(Flag.THREE), 2),
151
- ZEROS_28_BYTES,
152
- transferCallData, // unwrap calldata
153
- ]);
154
- }
155
- buildFinalSpecialFlagCalldata() {
156
- return solidityPack(['bytes20', 'bytes4', 'bytes2', 'bytes2', 'bytes2', 'bytes2', 'bytes32'], [
157
- this.dexHelper.config.data.augustusV6Address,
158
- hexZeroPad(hexlify(28 + 4), 4),
159
- hexZeroPad(hexlify(0), 2),
160
- hexZeroPad(hexlify(0), 2),
161
- hexZeroPad(hexlify(SpecialDex.SEND_NATIVE), 2),
162
- hexZeroPad(hexlify(9), 2),
163
- ZEROS_32_BYTES, // bytes28(0) + bytes4(0)
164
- ]);
165
- }
166
- /**
167
- * Executor01 Flags:
168
- * switch (flag % 4):
169
- * case 0: don't instert fromAmount
170
- * case 1: sendEth equal to fromAmount
171
- * case 2: sendEth equal to fromAmount + insert fromAmount
172
- * case 3: insert fromAmount
173
-
174
- * switch (flag % 3):
175
- * case 0: don't check balance after swap
176
- * case 1: check eth balance after swap
177
- * case 2: check desTtoken balance after swap
178
- */
179
- buildSimpleSwapFlags(priceRoute, exchangeParam, index, maybeWethCallData) {
180
- const { srcToken, destToken } = priceRoute.bestRoute[0].swaps[index];
181
- const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
182
- const isEthDest = (0, utils_1.isETHAddress)(destToken);
183
- const { dexFuncHasRecipient, needWrapNative } = exchangeParam;
184
- const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
185
- const needUnwrap = needWrapNative && isEthDest && maybeWethCallData?.withdraw;
186
- let dexFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
187
- let approveFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
188
- if (isEthSrc && !needWrap) {
189
- dexFlag = Flag.FIVE; // (flag 5 mod 4) = case 1: sendEth equal to fromAmount, (flag 5 mod 3) = case 2: check "srcToken" balance after swap
190
- }
191
- else if (isEthDest && !needUnwrap) {
192
- dexFlag = Flag.FOUR; // (flag 4 mod 4) = case 0: don't insert fromAmount, (flag 4 mod 3) = case 1: check eth balance after swap
193
- }
194
- else if (!dexFuncHasRecipient || (isEthDest && needUnwrap)) {
195
- dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
196
- }
197
- return {
198
- dexFlag,
199
- approveFlag,
200
- };
201
- }
202
- /**
203
- * Executor01 Flags:
204
- * switch (flag % 4):
205
- * case 0: don't instert fromAmount
206
- * case 1: sendEth equal to fromAmount
207
- * case 2: sendEth equal to fromAmount + insert fromAmount
208
- * case 3: insert fromAmount
209
-
210
- * switch (flag % 3):
211
- * case 0: don't check balance after swap
212
- * case 1: check eth balance after swap
213
- * case 2: check desTtoken balance after swap
214
- */
215
- buildMultiSwapFlags(priceRoute, exchangeParam, index, maybeWethCallData) {
216
- const swap = priceRoute.bestRoute[0].swaps[index];
217
- const { srcToken, destToken } = swap;
218
- const isFirstSwap = index === 0;
219
- const { dexFuncHasRecipient, needWrapNative } = exchangeParam;
220
- const isEthSrc = (0, utils_1.isETHAddress)(srcToken);
221
- const isEthDest = (0, utils_1.isETHAddress)(destToken);
222
- const needWrap = needWrapNative && isEthSrc && maybeWethCallData?.deposit;
223
- const needUnwrap = needWrapNative && isEthDest && maybeWethCallData?.withdraw;
224
- let dexFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
225
- let approveFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
226
- if (isFirstSwap) {
227
- if (isEthSrc && !needWrap) {
228
- dexFlag = Flag.FIVE; // (flag 5 mod 4) = case 1: sendEth equal to fromAmount, (flag 5 mod 3) = case 2: check "srcToken" balance after swap
229
- }
230
- else if (isEthSrc && needWrap) {
231
- dexFlag = Flag.ZERO; // (flag 0 mod 4) = case 0: don't insert fromAmount, (flag 0 mod 3) = case 0: don't check balance after swap
232
- approveFlag = Flag.ZERO;
233
- }
234
- else if (!isEthSrc && !isEthDest) {
235
- dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
236
- }
237
- else if (isEthDest && needUnwrap) {
238
- dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
239
- approveFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
240
- }
241
- else if (isEthDest && !needUnwrap) {
242
- dexFlag = Flag.FOUR; // (flag 4 mod 4) = case 0: don't insert fromAmount, (flag 4 mod 3) = case 1: check eth balance after swap
243
- }
244
- else if (!dexFuncHasRecipient) {
245
- dexFlag = Flag.EIGHT; // (flag 8 mod 4) = case 0: don't insert fromAmount, (flag 8 mod 3) = case 2: check "srcToken" balance after swap
246
- }
247
- }
248
- else {
249
- if (isEthSrc && !needWrap) {
250
- dexFlag = Flag.FIVE; // (flag 5 mod 4) = case 1: sendEth equal to fromAmount, (flag 5 mod 3) = case 2: check "srcToken" balance after swap
251
- }
252
- else if (isEthSrc && needWrap) {
253
- dexFlag = Flag.FIFTEEN; // (flag 15 mod 4) = case 3: insert fromAmount, (flag 15 mod 3) = case 0: don't check balance after swap
254
- approveFlag = Flag.FIFTEEN; // (flag 15 mod 4) = case 3: insert fromAmount, (flag 15 mod 3) = case 0: don't check balance after swap
255
- }
256
- else {
257
- dexFlag = Flag.ELEVEN; // (flag 11 mod 4) = case 3: insert fromAmount, (flag 11 mod 3) = case 2: check "srcToken" balance after swap
258
- approveFlag = Flag.ELEVEN; // (flag 11 mod 4) = case 3: insert fromAmount, (flag 11 mod 3) = case 2: check "srcToken" balance after swap
259
- }
260
- }
261
- return {
262
- dexFlag,
263
- approveFlag,
264
- };
265
- }
266
- buildFlags(priceRoute, exchangeDataList, maybeWethCallData) {
267
- const isMultiSwap = priceRoute.bestRoute[0].swaps.length > 1;
268
- const buildFlagsMethod = isMultiSwap
269
- ? this.buildMultiSwapFlags.bind(this)
270
- : this.buildSimpleSwapFlags.bind(this);
271
- const flags = exchangeDataList.reduce((acc, exchangeParam, index) => {
272
- const { dexFlag, approveFlag } = buildFlagsMethod(priceRoute, exchangeParam, index, maybeWethCallData);
273
- acc.dexes.push(dexFlag);
274
- acc.approves.push(approveFlag);
275
- return acc;
276
- }, { dexes: [], approves: [] });
277
- return {
278
- ...flags,
279
- wrap: (0, utils_1.isETHAddress)(priceRoute.srcToken) && maybeWethCallData?.deposit
280
- ? Flag.NINE
281
- : Flag.SEVEN,
282
- };
283
- }
284
- buildSingleSwapCallData(priceRoute, exchangeParams, index, flags, maybeWethCallData) {
285
- let swapCallData = '';
286
- const swap = priceRoute.bestRoute[0].swaps[index];
287
- const curExchangeParam = exchangeParams[index];
288
- const srcAmount = swap.swapExchanges[0].srcAmount;
289
- const dexCallData = this.buildDexCallData(swap, curExchangeParam, flags.dexes[index]);
290
- swapCallData = hexConcat([dexCallData]);
291
- if (!(0, utils_1.isETHAddress)(swap.srcToken) ||
292
- ((0, utils_1.isETHAddress)(swap.srcToken) && index !== 0)) {
293
- const approve = this.erc20Interface.encodeFunctionData('approve', [
294
- curExchangeParam.targetExchange,
295
- srcAmount,
296
- ]);
297
- const approveCallData = this.buildApproveCallData(approve, (0, utils_1.isETHAddress)(swap.srcToken) && index !== 0
298
- ? this.dexHelper.config.data.wrappedNativeTokenAddress
299
- : swap.srcToken, srcAmount, flags.approves[index]);
300
- swapCallData = hexConcat([approveCallData, swapCallData]);
301
- }
302
- if (curExchangeParam.needWrapNative && maybeWethCallData) {
303
- if (maybeWethCallData.deposit && (0, utils_1.isETHAddress)(swap.srcToken)) {
304
- const prevExchangeParam = exchangeParams[index - 1];
305
- if (!prevExchangeParam ||
306
- (prevExchangeParam && !prevExchangeParam.needWrapNative)) {
307
- const approveWethCalldata = this.buildApproveCallData(this.erc20Interface.encodeFunctionData('approve', [
308
- curExchangeParam.targetExchange,
309
- swap.swapExchanges[0].srcAmount,
310
- ]), this.dexHelper.config.data.wrappedNativeTokenAddress, srcAmount, flags.approves[index]);
311
- const depositCallData = this.buildWrapEthCallData(maybeWethCallData.deposit.calldata, Flag.NINE);
312
- swapCallData = hexConcat([
313
- approveWethCalldata,
314
- depositCallData,
315
- swapCallData,
316
- ]);
317
- }
318
- }
319
- if (maybeWethCallData.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) {
320
- const nextExchangeParam = exchangeParams[index + 1];
321
- if (!nextExchangeParam ||
322
- (nextExchangeParam && !nextExchangeParam.needWrapNative)) {
323
- const withdrawCallData = this.buildUnwrapEthCallData(maybeWethCallData.withdraw.calldata);
324
- swapCallData = hexConcat([swapCallData, withdrawCallData]);
325
- }
326
- }
327
- }
328
- return swapCallData;
329
- }
330
- buildByteCode(priceRoute, exchangeDataList, maybeWethCallData) {
331
- const flags = this.buildFlags(priceRoute, exchangeDataList, maybeWethCallData);
332
- let swapsCalldata = exchangeDataList.reduce((acc, exchangeParams, index) => hexConcat([
333
- acc,
334
- this.buildSingleSwapCallData(priceRoute, exchangeDataList, index, flags, maybeWethCallData),
335
- ]), '0x');
336
- if (!exchangeDataList[exchangeDataList.length - 1].dexFuncHasRecipient &&
337
- !(0, utils_1.isETHAddress)(priceRoute.destToken)) {
338
- const transferCallData = this.buildTransferCallData(this.erc20Interface.encodeFunctionData('transfer', [
339
- this.dexHelper.config.data.augustusV6Address,
340
- priceRoute.destAmount,
341
- ]), priceRoute.destToken);
342
- swapsCalldata = hexConcat([swapsCalldata, transferCallData]);
343
- }
344
- if ((maybeWethCallData?.withdraw && (0, utils_1.isETHAddress)(priceRoute.destToken)) ||
345
- (!exchangeDataList[exchangeDataList.length - 1].dexFuncHasRecipient &&
346
- (0, utils_1.isETHAddress)(priceRoute.destToken))) {
347
- const finalSpecialFlagCalldata = this.buildFinalSpecialFlagCalldata();
348
- swapsCalldata = hexConcat([swapsCalldata, finalSpecialFlagCalldata]);
349
- }
350
- return solidityPack(['bytes32', 'bytes', 'bytes'], [
351
- hexZeroPad(hexlify(32), 32),
352
- hexZeroPad(hexlify(hexDataLength(swapsCalldata) + BYTES_64_LENGTH), // 64 bytes = bytes12(0) + msg.sender
353
- 32),
354
- swapsCalldata,
355
- ]);
356
- }
357
- }
358
- exports.Executor01BytecodeBuilder = Executor01BytecodeBuilder;
359
- //# sourceMappingURL=Executor01BytecodeBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Executor01BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor01BytecodeBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { IExecutorBytecodeBuilder } from './IExecutorBytecodeBuilder';
2
- import { OptimalRate } from '@paraswap/core';
3
- import { DexExchangeParam } from '../types';
4
- import { DepositWithdrawReturn } from '../dex/weth/types';
5
- import { IDexHelper } from '../dex-helper';
6
- /**
7
- * Future class to build bytecode for Executor02
8
- */
9
- export declare class Executor02BytecodeBuilder implements IExecutorBytecodeBuilder {
10
- constructor(dexHelper: IDexHelper);
11
- buildByteCode(priceRoute: OptimalRate, exchangeDataList: DexExchangeParam[], maybeWethCallData?: DepositWithdrawReturn): string;
12
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Executor02BytecodeBuilder = void 0;
4
- /**
5
- * Future class to build bytecode for Executor02
6
- */
7
- class Executor02BytecodeBuilder {
8
- constructor(dexHelper) { }
9
- buildByteCode(priceRoute, exchangeDataList, maybeWethCallData) {
10
- return '';
11
- }
12
- }
13
- exports.Executor02BytecodeBuilder = Executor02BytecodeBuilder;
14
- //# sourceMappingURL=Executor02BytecodeBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Executor02BytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/Executor02BytecodeBuilder.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,yBAAyB;IACpC,YAAY,SAAqB,IAAG,CAAC;IAErC,aAAa,CACX,UAAuB,EACvB,gBAAoC,EACpC,iBAAyC;QAEzC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAVD,8DAUC"}
@@ -1,28 +0,0 @@
1
- import { IDexHelper } from '../dex-helper';
2
- import { Address, OptimalRate } from '@paraswap/core';
3
- import { IExecutorBytecodeBuilder } from './IExecutorBytecodeBuilder';
4
- export declare enum Executors {
5
- ONE = "Executor01"
6
- }
7
- declare enum RouteExecutionType {
8
- SINGLE_STEP = 0,
9
- HORIZONTAL_SEQUENCE = 1
10
- }
11
- export declare class ExecutorDetector {
12
- protected dexHelper: IDexHelper;
13
- private executor01BytecodeBuilder;
14
- protected routeExecutionTypeToExecutorMap: {
15
- 0: Executors;
16
- 1: Executors;
17
- };
18
- constructor(dexHelper: IDexHelper);
19
- /**
20
- * The method supports only simpleSwap and multiSwap with 100% token percent on each path (Executor01)
21
- * @param priceRoute
22
- */
23
- protected getRouteExecutionType(priceRoute: OptimalRate): RouteExecutionType;
24
- getExecutorByPriceRoute(priceRoute: OptimalRate): Executors;
25
- getAddress(executorName: Executors): Address;
26
- getBytecodeBuilder(executorName: Executors): IExecutorBytecodeBuilder;
27
- }
28
- export {};
@@ -1,89 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExecutorDetector = exports.Executors = void 0;
4
- const Executor01BytecodeBuilder_1 = require("./Executor01BytecodeBuilder");
5
- // import { Executor02BytecodeBuilder } from './Executor02BytecodeBuilder';
6
- var Executors;
7
- (function (Executors) {
8
- Executors["ONE"] = "Executor01";
9
- // TWO = 'Executor02',
10
- })(Executors = exports.Executors || (exports.Executors = {}));
11
- var RouteExecutionType;
12
- (function (RouteExecutionType) {
13
- RouteExecutionType[RouteExecutionType["SINGLE_STEP"] = 0] = "SINGLE_STEP";
14
- RouteExecutionType[RouteExecutionType["HORIZONTAL_SEQUENCE"] = 1] = "HORIZONTAL_SEQUENCE";
15
- // VERTICAL_BRANCH = 3, // megaSwap
16
- // VERTICAL_BRANCH_HORIZONTAL_SEQUENCE = 4, // megaSwap
17
- // NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE = 5, // megaSwap
18
- })(RouteExecutionType || (RouteExecutionType = {}));
19
- class ExecutorDetector {
20
- constructor(dexHelper) {
21
- this.dexHelper = dexHelper;
22
- // private executor02BytecodeBuilder: IExecutorBytecodeBuilder;
23
- this.routeExecutionTypeToExecutorMap = {
24
- [RouteExecutionType.SINGLE_STEP]: Executors.ONE,
25
- [RouteExecutionType.HORIZONTAL_SEQUENCE]: Executors.ONE,
26
- // [RouteExecutionType.VERTICAL_BRANCH]: Executors.TWO,
27
- // [RouteExecutionType.VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]: Executors.TWO,
28
- // [RouteExecutionType.NESTED_VERTICAL_BRANCH_HORIZONTAL_SEQUENCE]:
29
- // Executors.TWO,
30
- };
31
- this.executor01BytecodeBuilder = new Executor01BytecodeBuilder_1.Executor01BytecodeBuilder(this.dexHelper);
32
- // this.executor02BytecodeBuilder = new Executor02BytecodeBuilder(this.dexHelper);
33
- }
34
- /**
35
- * The method supports only simpleSwap and multiSwap with 100% token percent on each path (Executor01)
36
- * @param priceRoute
37
- */
38
- getRouteExecutionType(priceRoute) {
39
- if (priceRoute.bestRoute.length === 1 &&
40
- priceRoute.bestRoute[0].percent === 100 &&
41
- priceRoute.bestRoute[0].swaps.length === 1) {
42
- return RouteExecutionType.SINGLE_STEP;
43
- }
44
- else if (priceRoute.bestRoute.length === 1 &&
45
- priceRoute.bestRoute[0].percent === 100 &&
46
- priceRoute.bestRoute[0].swaps.length > 1) {
47
- let has100PercentOnEachPath = true;
48
- priceRoute.bestRoute[0].swaps.map(swap => {
49
- swap.swapExchanges.map(se => {
50
- if (se.percent !== 100) {
51
- has100PercentOnEachPath = false;
52
- }
53
- });
54
- });
55
- if (has100PercentOnEachPath) {
56
- return RouteExecutionType.HORIZONTAL_SEQUENCE;
57
- }
58
- }
59
- throw new Error('Route type is not supported yet');
60
- }
61
- getExecutorByPriceRoute(priceRoute) {
62
- const routeExecutionType = this.getRouteExecutionType(priceRoute);
63
- const executorName = this.routeExecutionTypeToExecutorMap[routeExecutionType];
64
- if (executorName) {
65
- return executorName;
66
- }
67
- throw new Error(`${executorName} is not implemented`);
68
- }
69
- getAddress(executorName) {
70
- if (!Object.values(Executors).includes(executorName)) {
71
- throw new Error(`${executorName} is not supported`);
72
- }
73
- return this.dexHelper.config.data.executorsAddresses[executorName];
74
- }
75
- getBytecodeBuilder(executorName) {
76
- if (!Object.values(Executors).includes(executorName)) {
77
- throw new Error(`${executorName} is not supported`);
78
- }
79
- if (executorName === Executors.ONE || true) {
80
- // for now always return Executor01
81
- return this.executor01BytecodeBuilder;
82
- }
83
- // else (executorName === Executors.TWO) {
84
- // return this.executor02BytecodeBuilder;
85
- // }
86
- }
87
- }
88
- exports.ExecutorDetector = ExecutorDetector;
89
- //# sourceMappingURL=ExecutorDetector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExecutorDetector.js","sourceRoot":"","sources":["../../src/executor/ExecutorDetector.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { OptimalRate } from '@paraswap/core';
2
- import { DexExchangeParam } from '../types';
3
- import { DepositWithdrawReturn } from '../dex/weth/types';
4
- export interface IExecutorBytecodeBuilder {
5
- buildByteCode(priceRoute: OptimalRate, exchangeDataList: DexExchangeParam[], maybeWethCallData?: DepositWithdrawReturn): string;
6
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IExecutorBytecodeBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IExecutorBytecodeBuilder.js","sourceRoot":"","sources":["../../src/executor/IExecutorBytecodeBuilder.ts"],"names":[],"mappings":""}
@@ -1,39 +0,0 @@
1
- import { Address, OptimalRate, TxObject } from './types';
2
- import { SwapSide } from './constants';
3
- import { AbiCoder, Interface } from '@ethersproject/abi';
4
- import { DexAdapterService } from './dex';
5
- import { ExecutorDetector, Executors } from './executor/ExecutorDetector';
6
- import { IExecutorBytecodeBuilder } from './executor/IExecutorBytecodeBuilder';
7
- export declare class GenericSwapTransactionBuilder {
8
- protected dexAdapterService: DexAdapterService;
9
- protected wExchangeNetworkToKey: Record<number, string>;
10
- augustusV6Interface: Interface;
11
- erc20Interface: Interface;
12
- abiCoder: AbiCoder;
13
- executorDetector: ExecutorDetector;
14
- constructor(dexAdapterService: DexAdapterService, wExchangeNetworkToKey?: Record<number, string>);
15
- protected getDepositWithdrawWethCallData(srcAmountWeth: bigint, destAmountWeth: bigint, side: SwapSide): import("./dex/weth/types").DepositWithdrawReturn | undefined;
16
- protected buildFees(referrerAddress: string | undefined, partnerAddress: string, partnerFeePercent: string, takeSurplus: boolean, side: SwapSide): [string, string];
17
- protected buildCalls(priceRoute: OptimalRate, minMaxAmount: string, executorName: Executors, bytecodeBuilder: IExecutorBytecodeBuilder): Promise<string>;
18
- protected _build(priceRoute: OptimalRate, minMaxAmount: string, userAddress: Address, referrerAddress: Address | undefined, partnerAddress: Address, partnerFeePercent: string, takeSurplus: boolean, beneficiary: Address, permit: string, deadline: string, uuid: string): Promise<{
19
- encoder: (...params: any[]) => string;
20
- params: (string | string[])[];
21
- }>;
22
- build({ priceRoute, minMaxAmount, userAddress, referrerAddress, partnerAddress, partnerFeePercent, takeSurplus, gasPrice, maxFeePerGas, maxPriorityFeePerGas, permit, deadline, uuid, beneficiary, onlyParams, }: {
23
- priceRoute: OptimalRate;
24
- minMaxAmount: string;
25
- userAddress: Address;
26
- referrerAddress?: Address;
27
- partnerAddress: Address;
28
- partnerFeePercent: string;
29
- takeSurplus?: boolean;
30
- gasPrice?: string;
31
- maxFeePerGas?: string;
32
- maxPriorityFeePerGas?: string;
33
- permit?: string;
34
- deadline: string;
35
- uuid: string;
36
- beneficiary?: Address;
37
- onlyParams?: boolean;
38
- }): Promise<TxObject>;
39
- }