@paraswap/dex-lib 2.42.23 → 2.42.24

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 (351) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/AugustusV6.abi.json +395 -0
  10. package/build/abi/algebra/AlgebraPool.abi.json +727 -0
  11. package/build/abi/curve-v1/StableSwapFRXETH.json +889 -0
  12. package/build/abi/curve-v1/StableSwapWBETH.json +1223 -0
  13. package/build/abi/sushiswap-v3/QuoterV2.json +267 -0
  14. package/build/abi/sushiswap-v3/RouterProcessor3.json +289 -0
  15. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +193 -0
  16. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +285 -0
  17. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +583 -0
  18. package/build/abi/wBETH.json +1527 -0
  19. package/build/abi/woo-fi/WooFeeManager.abi.json +318 -0
  20. package/build/abi/woo-fi/WooPP.abi.json +548 -0
  21. package/build/abi/woo-fi/Wooracle.abi.json +260 -0
  22. package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
  23. package/build/dex/aave-v3/tokens/avalanche.json +74 -0
  24. package/build/dex/aave-v3/tokens/fantom.json +62 -0
  25. package/build/dex/aave-v3/tokens/optimism.json +50 -0
  26. package/build/dex/aave-v3/tokens/polygon.json +116 -0
  27. package/build/dex/algebra/algebra-pool.d.ts +114 -0
  28. package/build/dex/algebra/algebra-pool.js +448 -0
  29. package/build/dex/algebra/algebra-pool.js.map +1 -0
  30. package/build/dex/balancer-v2/Gyro3Pool.d.ts +43 -0
  31. package/build/dex/balancer-v2/Gyro3Pool.js +160 -0
  32. package/build/dex/balancer-v2/Gyro3Pool.js.map +1 -0
  33. package/build/dex/balancer-v2/LinearMath.d.ts +88 -0
  34. package/build/dex/balancer-v2/LinearMath.js +285 -0
  35. package/build/dex/balancer-v2/LinearMath.js.map +1 -0
  36. package/build/dex/balancer-v2/LinearPool.d.ts +81 -0
  37. package/build/dex/balancer-v2/LinearPool.js +444 -0
  38. package/build/dex/balancer-v2/LinearPool.js.map +1 -0
  39. package/build/dex/balancer-v2/PhantomStablePool.d.ts +90 -0
  40. package/build/dex/balancer-v2/PhantomStablePool.js +418 -0
  41. package/build/dex/balancer-v2/PhantomStablePool.js.map +1 -0
  42. package/build/dex/balancer-v2/StableMath.d.ts +9 -0
  43. package/build/dex/balancer-v2/StableMath.js +272 -0
  44. package/build/dex/balancer-v2/StableMath.js.map +1 -0
  45. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +140 -0
  46. package/build/dex/balancer-v2/balancer-v2-pool.js +647 -0
  47. package/build/dex/balancer-v2/balancer-v2-pool.js.map +1 -0
  48. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +33 -0
  49. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +128 -0
  50. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -0
  51. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +34 -0
  52. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +151 -0
  53. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -0
  54. package/build/dex/curve-v1/pools/frxETHpool.d.ts +7 -0
  55. package/build/dex/curve-v1/pools/frxETHpool.js +27 -0
  56. package/build/dex/curve-v1/pools/frxETHpool.js.map +1 -0
  57. package/build/dex/curve-v1/pools/wbETHpool.d.ts +29 -0
  58. package/build/dex/curve-v1/pools/wbETHpool.js +408 -0
  59. package/build/dex/curve-v1/pools/wbETHpool.js.map +1 -0
  60. package/build/dex/dexalot/constants.js +1 -1
  61. package/build/dex/lighter-v1/abi/erc20.json +222 -0
  62. package/build/dex/lighter-v1/abi/factory.json +291 -0
  63. package/build/dex/lighter-v1/abi/order_book.json +594 -0
  64. package/build/dex/lighter-v1/abi/order_book_helper.json +176 -0
  65. package/build/dex/lighter-v1/abi/router.json +488 -0
  66. package/build/dex/{my-test-dex → lighter-v1}/config.d.ts +1 -1
  67. package/build/dex/lighter-v1/config.js +17 -0
  68. package/build/dex/lighter-v1/config.js.map +1 -0
  69. package/build/dex/lighter-v1/constants.d.ts +2 -0
  70. package/build/dex/lighter-v1/constants.js +13 -0
  71. package/build/dex/lighter-v1/constants.js.map +1 -0
  72. package/build/dex/{my-test-dex/my-test-dex-pool.d.ts → lighter-v1/lighter-v1-pool.d.ts} +24 -6
  73. package/build/dex/lighter-v1/lighter-v1-pool.js +310 -0
  74. package/build/dex/lighter-v1/lighter-v1-pool.js.map +1 -0
  75. package/build/dex/{my-test-dex/my-test-dex.d.ts → lighter-v1/lighter-v1.d.ts} +18 -10
  76. package/build/dex/lighter-v1/lighter-v1.js +331 -0
  77. package/build/dex/lighter-v1/lighter-v1.js.map +1 -0
  78. package/build/dex/lighter-v1/types.d.ts +40 -0
  79. package/build/dex/{hello → lighter-v1}/types.js.map +1 -1
  80. package/build/dex/pancakeswap-v3/types.d.ts +14 -0
  81. package/build/dex/{my-test-dex → pancakeswap-v3}/types.js.map +1 -1
  82. package/build/dex/quickswap/camelot-v3.d.ts +6 -0
  83. package/build/dex/quickswap/camelot-v3.js +19 -0
  84. package/build/dex/quickswap/camelot-v3.js.map +1 -0
  85. package/build/dex/quickswap/zyberswap-v3.d.ts +6 -0
  86. package/build/dex/quickswap/zyberswap-v3.js +19 -0
  87. package/build/dex/quickswap/zyberswap-v3.js.map +1 -0
  88. package/build/dex/quickswap-v3.d.ts +21 -0
  89. package/build/dex/quickswap-v3.js +40 -0
  90. package/build/dex/quickswap-v3.js.map +1 -0
  91. package/build/dex/{wombat → ramses-v2}/config.d.ts +1 -1
  92. package/build/dex/ramses-v2/config.js +28 -0
  93. package/build/dex/ramses-v2/config.js.map +1 -0
  94. package/build/dex/{baseswap-v3 → ramses-v2}/constants.d.ts +1 -1
  95. package/build/dex/{baseswap-v3 → ramses-v2}/constants.js +1 -1
  96. package/build/dex/ramses-v2/constants.js.map +1 -0
  97. package/build/dex/ramses-v2/contract-math/BitMath.js.map +1 -0
  98. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +1 -0
  99. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +1 -0
  100. package/build/dex/ramses-v2/contract-math/FullMath.js.map +1 -0
  101. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +1 -0
  102. package/build/dex/ramses-v2/contract-math/Oracle.js.map +1 -0
  103. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +1 -0
  104. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +1 -0
  105. package/build/dex/ramses-v2/contract-math/Tick.d.ts +7 -0
  106. package/build/dex/ramses-v2/contract-math/Tick.js.map +1 -0
  107. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +8 -0
  108. package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/TickBitMap.js +3 -0
  109. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +1 -0
  110. package/build/dex/ramses-v2/contract-math/TickMath.js.map +1 -0
  111. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +1 -0
  112. package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/uniswap-v3-math.d.ts +0 -19
  113. package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/uniswap-v3-math.js +1 -2
  114. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +1 -0
  115. package/build/dex/ramses-v2/contract-math/utils.js.map +1 -0
  116. package/build/dex/{baseswap-v3/baseswap-v3-pool.d.ts → ramses-v2/ramses-v2-pool.d.ts} +7 -11
  117. package/build/dex/{baseswap-v3/baseswap-v3-pool.js → ramses-v2/ramses-v2-pool.js} +7 -12
  118. package/build/dex/ramses-v2/ramses-v2-pool.js.map +1 -0
  119. package/build/dex/{baseswap-v3/baseswap-v3.d.ts → ramses-v2/ramses-v2.d.ts} +16 -26
  120. package/build/dex/{baseswap-v3/baseswap-v3.js → ramses-v2/ramses-v2.js} +82 -144
  121. package/build/dex/ramses-v2/ramses-v2.js.map +1 -0
  122. package/build/dex/{baseswap-v3 → ramses-v2}/types.d.ts +7 -17
  123. package/build/dex/ramses-v2/types.js +9 -0
  124. package/build/dex/ramses-v2/types.js.map +1 -0
  125. package/build/dex/{baseswap-v3 → ramses-v2}/utils.js +7 -1
  126. package/build/dex/ramses-v2/utils.js.map +1 -0
  127. package/build/dex/{kyberswap-elastic → sushiswap-v3}/config.d.ts +2 -2
  128. package/build/dex/sushiswap-v3/config.js +132 -0
  129. package/build/dex/sushiswap-v3/config.js.map +1 -0
  130. package/build/dex/sushiswap-v3/constants.d.ts +4 -0
  131. package/build/dex/sushiswap-v3/constants.js +32 -0
  132. package/build/dex/sushiswap-v3/constants.js.map +1 -0
  133. package/build/dex/{kyberswap-elastic/kyberswap-elastic.d.ts → sushiswap-v3/sushiswap-v3-original.d.ts} +31 -28
  134. package/build/dex/{kyberswap-elastic/kyberswap-elastic.js → sushiswap-v3/sushiswap-v3-original.js} +257 -269
  135. package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +1 -0
  136. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +1 -0
  137. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +6 -0
  138. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +1 -0
  139. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +21 -0
  140. package/build/dex/sushiswap-v3/sushiswap-v3.js +58 -0
  141. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +1 -0
  142. package/build/dex/sushiswap-v3/token.d.ts +6 -0
  143. package/build/dex/sushiswap-v3/token.js +23 -0
  144. package/build/dex/sushiswap-v3/token.js.map +1 -0
  145. package/build/dex/sushiswap-v3/types.d.ts +15 -0
  146. package/build/dex/sushiswap-v3/types.js +18 -0
  147. package/build/dex/sushiswap-v3/types.js.map +1 -0
  148. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +12 -0
  149. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +23 -0
  150. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +1 -0
  151. package/build/dex/{hello → woo-fi}/config.d.ts +1 -1
  152. package/build/dex/woo-fi/config.js +141 -0
  153. package/build/dex/woo-fi/config.js.map +1 -0
  154. package/build/dex/woo-fi/constants.d.ts +5 -0
  155. package/build/dex/woo-fi/constants.js +20 -0
  156. package/build/dex/woo-fi/constants.js.map +1 -0
  157. package/build/dex/woo-fi/types.d.ts +48 -0
  158. package/build/dex/{wombat → woo-fi}/types.js.map +1 -1
  159. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +14 -0
  160. package/build/dex/woo-fi/woo-fi-decimal-math.js +42 -0
  161. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +1 -0
  162. package/build/dex/woo-fi/woo-fi-math.d.ts +31 -0
  163. package/build/dex/woo-fi/woo-fi-math.js +300 -0
  164. package/build/dex/woo-fi/woo-fi-math.js.map +1 -0
  165. package/build/dex/woo-fi/woo-fi.d.ts +65 -0
  166. package/build/dex/woo-fi/woo-fi.js +480 -0
  167. package/build/dex/woo-fi/woo-fi.js.map +1 -0
  168. package/build/executor/Executor01BytecodeBuilder.d.ts +77 -0
  169. package/build/executor/Executor01BytecodeBuilder.js +359 -0
  170. package/build/executor/Executor01BytecodeBuilder.js.map +1 -0
  171. package/build/executor/Executor02BytecodeBuilder.d.ts +12 -0
  172. package/build/executor/Executor02BytecodeBuilder.js +14 -0
  173. package/build/executor/Executor02BytecodeBuilder.js.map +1 -0
  174. package/build/executor/ExecutorDetector.d.ts +28 -0
  175. package/build/executor/ExecutorDetector.js +89 -0
  176. package/build/executor/ExecutorDetector.js.map +1 -0
  177. package/build/executor/IExecutorBytecodeBuilder.d.ts +6 -0
  178. package/build/executor/IExecutorBytecodeBuilder.js +3 -0
  179. package/build/executor/IExecutorBytecodeBuilder.js.map +1 -0
  180. package/build/generic-swap-transaction-builder.d.ts +39 -0
  181. package/build/generic-swap-transaction-builder.js +156 -0
  182. package/build/generic-swap-transaction-builder.js.map +1 -0
  183. package/package.json +1 -1
  184. package/src/dex/dexalot/constants.ts +1 -1
  185. package/build/abi/kyberswap-elastic/IAntiSnipAttackPositionManager.json +0 -1276
  186. package/build/abi/kyberswap-elastic/IFactory.json +0 -550
  187. package/build/abi/kyberswap-elastic/IPool.json +0 -1042
  188. package/build/abi/kyberswap-elastic/IQuoterV2.json +0 -226
  189. package/build/abi/kyberswap-elastic/IRouter.json +0 -239
  190. package/build/abi/kyberswap-elastic/TicksFeesReader.json +0 -142
  191. package/build/abi/wombat/asset.json +0 -769
  192. package/build/abi/wombat/bmw.json +0 -1247
  193. package/build/abi/wombat/pool.json +0 -1364
  194. package/build/dex/baseswap-v3/baseswap-v3-factory.d.ts +0 -26
  195. package/build/dex/baseswap-v3/baseswap-v3-factory.js +0 -44
  196. package/build/dex/baseswap-v3/baseswap-v3-factory.js.map +0 -1
  197. package/build/dex/baseswap-v3/baseswap-v3-pool.js.map +0 -1
  198. package/build/dex/baseswap-v3/baseswap-v3.js.map +0 -1
  199. package/build/dex/baseswap-v3/config.d.ts +0 -9
  200. package/build/dex/baseswap-v3/config.js +0 -48
  201. package/build/dex/baseswap-v3/config.js.map +0 -1
  202. package/build/dex/baseswap-v3/constants.js.map +0 -1
  203. package/build/dex/baseswap-v3/contract-math/BitMath.js.map +0 -1
  204. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js.map +0 -1
  205. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js.map +0 -1
  206. package/build/dex/baseswap-v3/contract-math/FullMath.js.map +0 -1
  207. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js.map +0 -1
  208. package/build/dex/baseswap-v3/contract-math/Oracle.js.map +0 -1
  209. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js.map +0 -1
  210. package/build/dex/baseswap-v3/contract-math/SwapMath.js.map +0 -1
  211. package/build/dex/baseswap-v3/contract-math/Tick.d.ts +0 -7
  212. package/build/dex/baseswap-v3/contract-math/Tick.js.map +0 -1
  213. package/build/dex/baseswap-v3/contract-math/TickBitMap.d.ts +0 -7
  214. package/build/dex/baseswap-v3/contract-math/TickBitMap.js.map +0 -1
  215. package/build/dex/baseswap-v3/contract-math/TickMath.js.map +0 -1
  216. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js.map +0 -1
  217. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js.map +0 -1
  218. package/build/dex/baseswap-v3/contract-math/utils.d.ts +0 -7
  219. package/build/dex/baseswap-v3/contract-math/utils.js +0 -42
  220. package/build/dex/baseswap-v3/contract-math/utils.js.map +0 -1
  221. package/build/dex/baseswap-v3/types.js +0 -9
  222. package/build/dex/baseswap-v3/types.js.map +0 -1
  223. package/build/dex/baseswap-v3/utils.js.map +0 -1
  224. package/build/dex/hello/config.js +0 -15
  225. package/build/dex/hello/config.js.map +0 -1
  226. package/build/dex/hello/hello-pool.d.ts +0 -39
  227. package/build/dex/hello/hello-pool.js +0 -64
  228. package/build/dex/hello/hello-pool.js.map +0 -1
  229. package/build/dex/hello/hello.d.ts +0 -37
  230. package/build/dex/hello/hello.js +0 -126
  231. package/build/dex/hello/hello.js.map +0 -1
  232. package/build/dex/hello/types.d.ts +0 -6
  233. package/build/dex/kyberswap-elastic/config.js +0 -80
  234. package/build/dex/kyberswap-elastic/config.js.map +0 -1
  235. package/build/dex/kyberswap-elastic/constants.d.ts +0 -17
  236. package/build/dex/kyberswap-elastic/constants.js +0 -42
  237. package/build/dex/kyberswap-elastic/constants.js.map +0 -1
  238. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.d.ts +0 -4
  239. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js +0 -9
  240. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js.map +0 -1
  241. package/build/dex/kyberswap-elastic/contract-math/FullMath.d.ts +0 -5
  242. package/build/dex/kyberswap-elastic/contract-math/FullMath.js +0 -22
  243. package/build/dex/kyberswap-elastic/contract-math/FullMath.js.map +0 -1
  244. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.d.ts +0 -3
  245. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js +0 -12
  246. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js.map +0 -1
  247. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.d.ts +0 -3
  248. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js +0 -22
  249. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js.map +0 -1
  250. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.d.ts +0 -5
  251. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js +0 -25
  252. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js.map +0 -1
  253. package/build/dex/kyberswap-elastic/contract-math/QuadMath.d.ts +0 -4
  254. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js +0 -27
  255. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js.map +0 -1
  256. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.d.ts +0 -3
  257. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js +0 -14
  258. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js.map +0 -1
  259. package/build/dex/kyberswap-elastic/contract-math/SafeCast.d.ts +0 -8
  260. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js +0 -30
  261. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js.map +0 -1
  262. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.d.ts +0 -10
  263. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js +0 -91
  264. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js.map +0 -1
  265. package/build/dex/kyberswap-elastic/contract-math/SwapMath.d.ts +0 -13
  266. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js +0 -188
  267. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js.map +0 -1
  268. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.d.ts +0 -6
  269. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js +0 -41
  270. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js.map +0 -1
  271. package/build/dex/kyberswap-elastic/contract-math/TickMath.d.ts +0 -9
  272. package/build/dex/kyberswap-elastic/contract-math/TickMath.js +0 -165
  273. package/build/dex/kyberswap-elastic/contract-math/TickMath.js.map +0 -1
  274. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.d.ts +0 -3
  275. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js +0 -10
  276. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js.map +0 -1
  277. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.d.ts +0 -28
  278. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js +0 -502
  279. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js.map +0 -1
  280. package/build/dex/kyberswap-elastic/contract-math/utils.js.map +0 -1
  281. package/build/dex/kyberswap-elastic/errors.d.ts +0 -2
  282. package/build/dex/kyberswap-elastic/errors.js +0 -6
  283. package/build/dex/kyberswap-elastic/errors.js.map +0 -1
  284. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.d.ts +0 -80
  285. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js +0 -458
  286. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js.map +0 -1
  287. package/build/dex/kyberswap-elastic/kyberswap-elastic.js.map +0 -1
  288. package/build/dex/kyberswap-elastic/types.d.ts +0 -134
  289. package/build/dex/kyberswap-elastic/types.js +0 -9
  290. package/build/dex/kyberswap-elastic/types.js.map +0 -1
  291. package/build/dex/kyberswap-elastic/utils/decoders.d.ts +0 -9
  292. package/build/dex/kyberswap-elastic/utils/decoders.js +0 -78
  293. package/build/dex/kyberswap-elastic/utils/decoders.js.map +0 -1
  294. package/build/dex/morphex/config.d.ts +0 -11
  295. package/build/dex/morphex/config.js +0 -43
  296. package/build/dex/morphex/config.js.map +0 -1
  297. package/build/dex/morphex/morphex.d.ts +0 -25
  298. package/build/dex/morphex/morphex.js +0 -19
  299. package/build/dex/morphex/morphex.js.map +0 -1
  300. package/build/dex/my-test-dex/config.js +0 -15
  301. package/build/dex/my-test-dex/config.js.map +0 -1
  302. package/build/dex/my-test-dex/my-test-dex-pool.js +0 -64
  303. package/build/dex/my-test-dex/my-test-dex-pool.js.map +0 -1
  304. package/build/dex/my-test-dex/my-test-dex.js +0 -126
  305. package/build/dex/my-test-dex/my-test-dex.js.map +0 -1
  306. package/build/dex/my-test-dex/types.d.ts +0 -6
  307. package/build/dex/wombat/config.js +0 -99
  308. package/build/dex/wombat/config.js.map +0 -1
  309. package/build/dex/wombat/types.d.ts +0 -33
  310. package/build/dex/wombat/utils.d.ts +0 -9
  311. package/build/dex/wombat/utils.js +0 -66
  312. package/build/dex/wombat/utils.js.map +0 -1
  313. package/build/dex/wombat/wombat-bmw.d.ts +0 -40
  314. package/build/dex/wombat/wombat-bmw.js +0 -147
  315. package/build/dex/wombat/wombat-bmw.js.map +0 -1
  316. package/build/dex/wombat/wombat-pool.d.ts +0 -22
  317. package/build/dex/wombat/wombat-pool.js +0 -161
  318. package/build/dex/wombat/wombat-pool.js.map +0 -1
  319. package/build/dex/wombat/wombat-quoter.d.ts +0 -16
  320. package/build/dex/wombat/wombat-quoter.js +0 -176
  321. package/build/dex/wombat/wombat-quoter.js.map +0 -1
  322. package/build/dex/wombat/wombat.d.ts +0 -55
  323. package/build/dex/wombat/wombat.js +0 -290
  324. package/build/dex/wombat/wombat.js.map +0 -1
  325. /package/build/dex/{hello → lighter-v1}/types.js +0 -0
  326. /package/build/dex/{my-test-dex → pancakeswap-v3}/types.js +0 -0
  327. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/BitMath.d.ts +0 -0
  328. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/BitMath.js +0 -0
  329. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/FixedPoint128.d.ts +0 -0
  330. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/FixedPoint128.js +0 -0
  331. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/FixedPoint96.d.ts +0 -0
  332. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/FixedPoint96.js +0 -0
  333. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/FullMath.d.ts +0 -0
  334. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/FullMath.js +0 -0
  335. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/LiquidityMath.d.ts +0 -0
  336. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/LiquidityMath.js +0 -0
  337. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/Oracle.d.ts +0 -0
  338. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/Oracle.js +0 -0
  339. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/SqrtPriceMath.d.ts +0 -0
  340. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/SqrtPriceMath.js +0 -0
  341. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/SwapMath.d.ts +0 -0
  342. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/SwapMath.js +0 -0
  343. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/Tick.js +0 -0
  344. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/TickMath.d.ts +0 -0
  345. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/TickMath.js +0 -0
  346. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/UnsafeMath.d.ts +0 -0
  347. /package/build/dex/{baseswap-v3 → ramses-v2}/contract-math/UnsafeMath.js +0 -0
  348. /package/build/dex/{kyberswap-elastic → ramses-v2}/contract-math/utils.d.ts +0 -0
  349. /package/build/dex/{kyberswap-elastic → ramses-v2}/contract-math/utils.js +0 -0
  350. /package/build/dex/{baseswap-v3 → ramses-v2}/utils.d.ts +0 -0
  351. /package/build/dex/{wombat → woo-fi}/types.js +0 -0
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WooFiMath = void 0;
4
+ const woo_fi_decimal_math_1 = require("./woo-fi-decimal-math");
5
+ const bigint_constants_1 = require("../../bigint-constants");
6
+ const utils_1 = require("../../utils");
7
+ const constants_1 = require("./constants");
8
+ const constants_2 = require("../../constants");
9
+ function handleMathError(e, logger) {
10
+ if (e instanceof Error && e.message.startsWith('WooGuardian:')) {
11
+ logger.warn('WooFi Guardian check Error:', e);
12
+ return;
13
+ }
14
+ logger.error('Unexpected error in WooFi math:', e);
15
+ }
16
+ class WooFiMath {
17
+ constructor(logger, _quoteToken) {
18
+ this.logger = logger;
19
+ this._quoteToken = _quoteToken;
20
+ // dMath = decimalMath
21
+ this.dMath = woo_fi_decimal_math_1.wooFiDecimalMath;
22
+ this._MIN_INPUT_DEFAULT = bigint_constants_1.BI_POWS[16]; // 0.01 xToken
23
+ this._MAX_INPUT_DEFAULT = bigint_constants_1.BI_POWS[20]; // 100 xToken
24
+ this.state = constants_1.NULL_STATE;
25
+ }
26
+ querySellBase(baseToken, baseAmounts) {
27
+ try {
28
+ const _baseAmounts = baseAmounts.map(baseAmount => {
29
+ try {
30
+ this._checkInputAmount(baseToken, baseAmount);
31
+ return baseAmount;
32
+ }
33
+ catch (e) {
34
+ if (e instanceof Error &&
35
+ e.message.includes('WooGuardian: inputAmount')) {
36
+ return 0n;
37
+ }
38
+ throw e;
39
+ }
40
+ });
41
+ this._autoUpdate(this._quoteToken, baseToken);
42
+ const quoteAmounts = this._getQuoteAmountSellBase(baseToken, _baseAmounts);
43
+ const feeRate = this.state.feeRates[baseToken];
44
+ return this._takeFee(quoteAmounts, feeRate);
45
+ }
46
+ catch (e) {
47
+ handleMathError(e, this.logger);
48
+ return null;
49
+ }
50
+ }
51
+ querySellQuote(baseToken, quoteAmounts) {
52
+ try {
53
+ let _quoteAmounts = quoteAmounts.map(quoteAmount => {
54
+ try {
55
+ this._checkInputAmount(this._quoteToken, quoteAmount);
56
+ return quoteAmount;
57
+ }
58
+ catch (e) {
59
+ if (e instanceof Error &&
60
+ e.message.startsWith('Error message: WooGuardian: inputAmount')) {
61
+ return 0n;
62
+ }
63
+ throw e;
64
+ }
65
+ });
66
+ this._autoUpdate(this._quoteToken, baseToken);
67
+ const feeRate = this.state.feeRates[baseToken];
68
+ _quoteAmounts = this._takeFee(_quoteAmounts, feeRate);
69
+ return this._getBaseAmountSellQuote(baseToken, _quoteAmounts);
70
+ }
71
+ catch (e) {
72
+ handleMathError(e, this.logger);
73
+ return null;
74
+ }
75
+ }
76
+ _takeFee(amounts, feeRate) {
77
+ return amounts.map(amount => {
78
+ const lpFee = this.dMath.mulCeil(amount, feeRate);
79
+ return amount === 0n ? 0n : amount - lpFee;
80
+ });
81
+ }
82
+ _getQuoteAmountSellBase(baseToken, baseAmounts) {
83
+ const quoteInfo = this.state.tokenInfos[this._quoteToken];
84
+ const baseInfo = this.state.tokenInfos[baseToken];
85
+ let { priceNow: p, spreadNow: s, coeffNow: k, } = this.state.tokenStates[baseToken];
86
+ this.checkSwapPrice(p, baseToken, this._quoteToken);
87
+ // price: p * (1 - s / 2)
88
+ p = this.dMath.mulFloor(p, this.dMath.ONE - this.dMath.divCeil(s, this.dMath.TWO));
89
+ const { baseBought, quoteBought } = this._getBoughtAmount(baseInfo, quoteInfo, p, k, true);
90
+ return baseAmounts.map(baseAmount => {
91
+ if (baseAmount === 0n)
92
+ return 0n;
93
+ let quoteAmount;
94
+ if (baseBought > 0n) {
95
+ const quoteSold = this._getQuoteAmountLowBaseSide(p, k, baseInfo.R, baseBought);
96
+ if (baseAmount > baseBought) {
97
+ const newBaseSold = baseAmount - baseBought;
98
+ quoteAmount =
99
+ quoteSold +
100
+ this._getQuoteAmountLowQuoteSide(p, k, this.dMath.ONE, newBaseSold);
101
+ }
102
+ else {
103
+ const newBaseBought = baseBought - baseAmount;
104
+ quoteAmount =
105
+ quoteSold -
106
+ this._getQuoteAmountLowBaseSide(p, k, baseInfo.R, newBaseBought);
107
+ }
108
+ }
109
+ else {
110
+ const baseSold = this._getBaseAmountLowQuoteSide(p, k, this.dMath.ONE, quoteBought);
111
+ const newBaseSold = baseAmount + baseSold;
112
+ const newQuoteBought = this._getQuoteAmountLowQuoteSide(p, k, this.dMath.ONE, newBaseSold);
113
+ quoteAmount =
114
+ newQuoteBought > quoteBought ? newQuoteBought - quoteBought : 0n;
115
+ }
116
+ this._checkSwapAmount(baseToken, this._quoteToken, baseAmount, quoteAmount);
117
+ if (quoteAmount > this.state.wooPPBalances[this._quoteToken]) {
118
+ // require(quoteAmount <= IERC20(quoteToken).balanceOf(address(this)), 'WooPP: INSUFF_QUOTE');
119
+ return 0n;
120
+ }
121
+ return quoteAmount;
122
+ });
123
+ }
124
+ _getBaseAmountSellQuote(baseToken, quoteAmounts) {
125
+ const quoteInfo = this.state.tokenInfos[this._quoteToken];
126
+ const baseInfo = this.state.tokenInfos[baseToken];
127
+ let { priceNow: p, spreadNow: s, coeffNow: k, } = this.state.tokenStates[baseToken];
128
+ this.checkSwapPrice(p, baseToken, this._quoteToken);
129
+ // price: p * (1 + s / 2)
130
+ p = this.dMath.mulCeil(p, this.dMath.ONE + this.dMath.divCeil(s, this.dMath.TWO));
131
+ const { baseBought, quoteBought } = this._getBoughtAmount(baseInfo, quoteInfo, p, k, false);
132
+ return quoteAmounts.map(quoteAmount => {
133
+ if (quoteAmount === 0n)
134
+ return 0n;
135
+ let baseAmount;
136
+ if (quoteBought > 0) {
137
+ const baseSold = this._getBaseAmountLowQuoteSide(p, k, baseInfo.R, quoteBought);
138
+ if (quoteAmount > quoteBought) {
139
+ const newQuoteSold = quoteAmount - quoteBought;
140
+ baseAmount =
141
+ baseSold +
142
+ this._getBaseAmountLowBaseSide(p, k, this.dMath.ONE, newQuoteSold);
143
+ }
144
+ else {
145
+ const newQuoteBought = quoteBought - quoteAmount;
146
+ baseAmount =
147
+ baseSold -
148
+ this._getBaseAmountLowQuoteSide(p, k, baseInfo.R, newQuoteBought);
149
+ }
150
+ }
151
+ else {
152
+ const quoteSold = this._getQuoteAmountLowBaseSide(p, k, this.dMath.ONE, baseBought);
153
+ const newQuoteSold = quoteAmount + quoteSold;
154
+ const newBaseBought = this._getBaseAmountLowBaseSide(p, k, this.dMath.ONE, newQuoteSold);
155
+ baseAmount =
156
+ newBaseBought > baseBought ? newBaseBought - baseBought : 0n;
157
+ }
158
+ this._checkSwapAmount(this._quoteToken, baseToken, quoteAmount, baseAmount);
159
+ if (baseAmount > this.state.wooPPBalances[baseToken]) {
160
+ // require(baseAmount <= IERC20(baseToken).balanceOf(address(this)), 'WooPP: INSUFF_BASE');
161
+ return 0n;
162
+ }
163
+ return baseAmount;
164
+ });
165
+ }
166
+ _getBoughtAmount(baseInfo, quoteInfo, p, k, isSellBase) {
167
+ let baseBought = 0n;
168
+ let quoteBought = 0n;
169
+ let baseSold = 0n;
170
+ if (baseInfo.reserve < baseInfo.target) {
171
+ baseBought = baseInfo.target - baseInfo.reserve;
172
+ }
173
+ else {
174
+ baseSold = baseInfo.reserve - baseInfo.target;
175
+ }
176
+ let quoteSold = 0n;
177
+ if (quoteInfo.reserve < quoteInfo.target) {
178
+ quoteBought = quoteInfo.target - quoteInfo.reserve;
179
+ }
180
+ else {
181
+ quoteSold = quoteInfo.reserve - quoteInfo.target;
182
+ }
183
+ if (this.dMath.mulCeil(baseSold, p) > quoteSold) {
184
+ baseSold = baseSold - this.dMath.divFloor(quoteSold, p);
185
+ quoteSold = 0n;
186
+ }
187
+ else {
188
+ quoteSold = quoteSold - this.dMath.mulCeil(baseSold, p);
189
+ baseSold = 0n;
190
+ }
191
+ const virtualBaseBought = this._getBaseAmountLowBaseSide(p, k, this.dMath.ONE, quoteSold);
192
+ if (isSellBase === virtualBaseBought < baseBought) {
193
+ baseBought = virtualBaseBought;
194
+ }
195
+ const virtualQuoteBought = this._getQuoteAmountLowQuoteSide(p, k, this.dMath.ONE, baseSold);
196
+ if (isSellBase === virtualQuoteBought > quoteBought) {
197
+ quoteBought = virtualQuoteBought;
198
+ }
199
+ return { baseBought, quoteBought };
200
+ }
201
+ _getBaseAmountLowBaseSide(p, k, r, quoteAmount) {
202
+ // priceFactor = 1 + k * quoteAmount * r;
203
+ const priceFactor = this.dMath.ONE +
204
+ this.dMath.mulCeil(this.dMath.mulCeil(k, quoteAmount), r);
205
+ // quoteAmount / p / priceFactor;
206
+ return this.dMath.divFloor(this.dMath.divFloor(quoteAmount, p), priceFactor);
207
+ }
208
+ _getQuoteAmountLowQuoteSide(p, k, r, baseAmount) {
209
+ // priceFactor = 1 + k * baseAmount * p * r;
210
+ const priceFactor = this.dMath.ONE +
211
+ this.dMath.mulCeil(this.dMath.mulCeil(this.dMath.mulCeil(k, baseAmount), p), r);
212
+ // baseAmount * p / priceFactor;
213
+ return this.dMath.divFloor(this.dMath.mulFloor(baseAmount, p), priceFactor);
214
+ }
215
+ _getBaseAmountLowQuoteSide(p, k, r, quoteAmount) {
216
+ // priceFactor = (1 - k * quoteAmount * r);
217
+ const priceFactor = this.dMath.ONE -
218
+ this.dMath.mulFloor(this.dMath.mulFloor(k, quoteAmount), r);
219
+ // quoteAmount / p / priceFactor;
220
+ return this.dMath.divFloor(this.dMath.divFloor(quoteAmount, p), priceFactor);
221
+ }
222
+ _getQuoteAmountLowBaseSide(p, k, r, baseAmount) {
223
+ // priceFactor = 1 - k * baseAmount * p * r;
224
+ const priceFactor = this.dMath.ONE -
225
+ this.dMath.mulFloor(this.dMath.mulFloor(this.dMath.mulFloor(k, baseAmount), p), r);
226
+ // baseAmount * p / priceFactor;
227
+ return this.dMath.divFloor(this.dMath.mulFloor(baseAmount, p), priceFactor);
228
+ }
229
+ _autoUpdate(quoteTokenAddress, baseTokenAddress) {
230
+ const quoteInfo = this.state.tokenInfos[quoteTokenAddress];
231
+ const baseInfo = this.state.tokenInfos[baseTokenAddress];
232
+ if (this.state.oracleTimestamp !== baseInfo.lastResetTimestamp) {
233
+ baseInfo.target =
234
+ baseInfo.threshold > baseInfo.reserve
235
+ ? baseInfo.threshold
236
+ : baseInfo.reserve;
237
+ baseInfo.lastResetTimestamp = this.state.oracleTimestamp;
238
+ }
239
+ if (this.state.oracleTimestamp !== quoteInfo.lastResetTimestamp) {
240
+ quoteInfo.target =
241
+ quoteInfo.threshold > quoteInfo.reserve
242
+ ? quoteInfo.threshold
243
+ : quoteInfo.reserve;
244
+ quoteInfo.lastResetTimestamp = this.state.oracleTimestamp;
245
+ }
246
+ }
247
+ _checkInputAmount(token, inputAmount) {
248
+ (0, utils_1._require)(inputAmount < bigint_constants_1.BI_MAX_UINT96, `WooGuardian: inputAmount_uint96_OVERFLOW in _checkInputAmount for ${token}`);
249
+ const info = this.state.guardian.refInfos[token];
250
+ const minInputAmount = info.minInputAmount != 0n ? info.minInputAmount : this._MIN_INPUT_DEFAULT;
251
+ const maxInputAmount = info.maxInputAmount != 0n ? info.maxInputAmount : this._MAX_INPUT_DEFAULT;
252
+ (0, utils_1._require)(inputAmount >= minInputAmount, `WooGuardian: inputAmount_LTM in _checkInputAmount for ${token}`);
253
+ (0, utils_1._require)(inputAmount <= maxInputAmount, `WooGuardian: inputAmount_GTM in _checkInputAmount for ${token}`);
254
+ }
255
+ _checkSwapAmount(fromToken, toToken, fromAmount, toAmount) {
256
+ if (this.state.guardian.refInfos[fromToken].chainlinkRefOracle ===
257
+ constants_2.NULL_ADDRESS ||
258
+ this.state.guardian.refInfos[toToken].chainlinkRefOracle === constants_2.NULL_ADDRESS) {
259
+ return;
260
+ }
261
+ const refPrice = this._refPrice(fromToken, toToken);
262
+ const refToAmount = this.dMath.mulFloor(fromAmount, refPrice);
263
+ const bound = this._boundForTokens(fromToken, toToken);
264
+ (0, utils_1._require)(this.dMath.mulFloor(refToAmount, bigint_constants_1.BI_POWS[18] - bound) <= toAmount &&
265
+ toAmount <= this.dMath.mulCeil(refToAmount, bigint_constants_1.BI_POWS[18] + bound), `WooGuardian: TO_AMOUNT_UNRELIABLE in _checkSwapAmount for ${toToken}`);
266
+ }
267
+ checkSwapPrice(price, fromToken, toToken) {
268
+ if (this.state.guardian.refInfos[fromToken].chainlinkRefOracle ===
269
+ constants_2.NULL_ADDRESS ||
270
+ this.state.guardian.refInfos[toToken].chainlinkRefOracle === constants_2.NULL_ADDRESS) {
271
+ return;
272
+ }
273
+ const refPrice = this._refPrice(fromToken, toToken);
274
+ const bound = this._boundForTokens(fromToken, toToken);
275
+ (0, utils_1._require)(this.dMath.mulFloor(refPrice, bigint_constants_1.BI_POWS[18] - bound) <= price &&
276
+ price <= this.dMath.mulCeil(refPrice, bigint_constants_1.BI_POWS[18] + bound), `WooGuardian: PRICE_UNRELIABLE in checkSwapPrice fromToken=${fromToken} and toToken=${toToken}`);
277
+ }
278
+ _refPrice(fromToken, toToken) {
279
+ const baseInfo = this.state.guardian.refInfos[fromToken];
280
+ const quoteInfo = this.state.guardian.refInfos[toToken];
281
+ (0, utils_1._require)(baseInfo.chainlinkRefOracle !== constants_2.NULL_ADDRESS, `WooGuardian: fromToken_RefOracle_INVALID: ${fromToken}`);
282
+ (0, utils_1._require)(quoteInfo.chainlinkRefOracle !== constants_2.NULL_ADDRESS, `WooGuardian: toToken_RefOracle_INVALID: ${toToken}`);
283
+ const { answer: rawBaseRefPrice } = this.state.chainlink.latestRoundDatas[baseInfo.chainlinkRefOracle];
284
+ (0, utils_1._require)(rawBaseRefPrice >= 0, `WooGuardian: INVALID_CHAINLINK_PRICE in _refPrice for ${fromToken}`);
285
+ const { answer: rawQuoteRefPrice } = this.state.chainlink.latestRoundDatas[quoteInfo.chainlinkRefOracle];
286
+ (0, utils_1._require)(rawQuoteRefPrice >= 0, `WooGuardian: INVALID_CHAINLINK_QUOTE_PRICE in _refPrice for ${toToken}`);
287
+ const baseRefPrice = rawBaseRefPrice * baseInfo.refPriceFixCoeff;
288
+ const quoteRefPrice = rawQuoteRefPrice * quoteInfo.refPriceFixCoeff;
289
+ return this.dMath.divFloor(baseRefPrice, quoteRefPrice);
290
+ }
291
+ _boundForTokens(token1, token2) {
292
+ const info1 = this.state.guardian.refInfos[token1];
293
+ const bound1 = info1.bound !== 0n ? info1.bound : this.state.guardian.globalBound;
294
+ const info2 = this.state.guardian.refInfos[token2];
295
+ const bound2 = info2.bound != 0n ? info2.bound : this.state.guardian.globalBound;
296
+ return bound1 > bound2 ? bound1 : bound2;
297
+ }
298
+ }
299
+ exports.WooFiMath = WooFiMath;
300
+ //# sourceMappingURL=woo-fi-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"woo-fi-math.js","sourceRoot":"","sources":["../../../src/dex/woo-fi/woo-fi-math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { Interface, Result } from '@ethersproject/abi';
2
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
+ import { SwapSide, Network } from '../../constants';
4
+ import { IDex } from '../../dex/idex';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { DexParams, PoolState, WooFiData } from './types';
7
+ import { SimpleExchange } from '../simple-exchange';
8
+ import { WooFiMath } from './woo-fi-math';
9
+ export declare class WooFi extends SimpleExchange implements IDex<WooFiData> {
10
+ protected network: Network;
11
+ protected dexHelper: IDexHelper;
12
+ protected adapters: import("../../types").AdapterMappings;
13
+ readonly config: DexParams;
14
+ readonly math: WooFiMath;
15
+ latestState: PoolState | null;
16
+ latestBlockNumber: number;
17
+ vaultUSDBalance: number;
18
+ tokenByAddress: Record<Address, Token>;
19
+ private _refInfos;
20
+ private _encodedStateRequestCalldata?;
21
+ static readonly ifaces: {
22
+ PP: Interface;
23
+ fee: Interface;
24
+ oracle: Interface;
25
+ guardian: Interface;
26
+ chainlink: Interface;
27
+ erc20BalanceOf: Interface;
28
+ };
29
+ readonly hasConstantPriceLargeAmounts = false;
30
+ readonly needWrapNative = true;
31
+ readonly isFeeOnTransferSupported = false;
32
+ readonly quoteTokenAddress: Address;
33
+ static dexKeysWithNetwork: {
34
+ key: string;
35
+ networks: Network[];
36
+ }[];
37
+ logger: Logger;
38
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings, config?: DexParams);
39
+ private _toLowerForAllConfigAddresses;
40
+ private _getRefInfos;
41
+ get baseTokens(): Token[];
42
+ get isRefInfosEmpty(): boolean;
43
+ protected _fillTokenInfoState(state: PoolState, address: string, values: Result): void;
44
+ private _readChanLinkResponse;
45
+ protected _getStateRequestCallData(): {
46
+ target: string;
47
+ callData: string;
48
+ }[];
49
+ private _fetchStateForBlockNumber;
50
+ initializePricing(blockNumber: number): Promise<void>;
51
+ getAdapters(side: SwapSide): {
52
+ name: string;
53
+ index: number;
54
+ }[] | null;
55
+ getIdentifier(isSrcQuote: boolean): string;
56
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
57
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<WooFiData>>;
58
+ getCalldataGasCost(poolPrices: PoolPrices<WooFiData>): number | number[];
59
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: WooFiData, side: SwapSide): AdapterExchangeParam;
60
+ getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: WooFiData, side: SwapSide): Promise<SimpleExchangeParam>;
61
+ updatePoolState(): Promise<void>;
62
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
63
+ getState(blockNumber?: number): Promise<PoolState>;
64
+ private _identifyQuote;
65
+ }