@paraswap/dex-lib 2.42.19 → 2.42.20-hashflow-v3

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 (254) hide show
  1. package/build/abi/hashflow/HashflowRouter.abi.json +816 -246
  2. package/build/abi/kyberswap-elastic/IAntiSnipAttackPositionManager.json +1276 -0
  3. package/build/abi/kyberswap-elastic/IFactory.json +550 -0
  4. package/build/abi/kyberswap-elastic/IPool.json +1042 -0
  5. package/build/abi/kyberswap-elastic/IQuoterV2.json +226 -0
  6. package/build/abi/kyberswap-elastic/IRouter.json +239 -0
  7. package/build/abi/kyberswap-elastic/TicksFeesReader.json +142 -0
  8. package/build/abi/wombat/asset.json +769 -0
  9. package/build/abi/wombat/bmw.json +1247 -0
  10. package/build/abi/wombat/pool.json +1364 -0
  11. package/build/config.js +1 -1
  12. package/build/dex/algebra/algebra.d.ts +5 -6
  13. package/build/dex/algebra/algebra.js +36 -89
  14. package/build/dex/algebra/algebra.js.map +1 -1
  15. package/build/dex/algebra/config.js +1 -1
  16. package/build/dex/algebra/types.d.ts +0 -10
  17. package/build/dex/algebra/types.js +0 -7
  18. package/build/dex/algebra/types.js.map +1 -1
  19. package/build/dex/baseswap-v3/baseswap-v3-factory.d.ts +26 -0
  20. package/build/dex/baseswap-v3/baseswap-v3-factory.js +44 -0
  21. package/build/dex/baseswap-v3/baseswap-v3-factory.js.map +1 -0
  22. package/build/dex/baseswap-v3/baseswap-v3-pool.d.ts +46 -0
  23. package/build/dex/baseswap-v3/baseswap-v3-pool.js +312 -0
  24. package/build/dex/baseswap-v3/baseswap-v3-pool.js.map +1 -0
  25. package/build/dex/baseswap-v3/baseswap-v3.d.ts +71 -0
  26. package/build/dex/baseswap-v3/baseswap-v3.js +752 -0
  27. package/build/dex/baseswap-v3/baseswap-v3.js.map +1 -0
  28. package/build/dex/baseswap-v3/config.d.ts +9 -0
  29. package/build/dex/baseswap-v3/config.js +48 -0
  30. package/build/dex/baseswap-v3/config.js.map +1 -0
  31. package/build/dex/baseswap-v3/constants.d.ts +28 -0
  32. package/build/dex/baseswap-v3/constants.js +35 -0
  33. package/build/dex/baseswap-v3/constants.js.map +1 -0
  34. package/build/dex/baseswap-v3/contract-math/BitMath.d.ts +4 -0
  35. package/build/dex/baseswap-v3/contract-math/BitMath.js +93 -0
  36. package/build/dex/baseswap-v3/contract-math/BitMath.js.map +1 -0
  37. package/build/dex/baseswap-v3/contract-math/FixedPoint128.d.ts +3 -0
  38. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js +8 -0
  39. package/build/dex/baseswap-v3/contract-math/FixedPoint128.js.map +1 -0
  40. package/build/dex/baseswap-v3/contract-math/FixedPoint96.d.ts +4 -0
  41. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js +9 -0
  42. package/build/dex/baseswap-v3/contract-math/FixedPoint96.js.map +1 -0
  43. package/build/dex/baseswap-v3/contract-math/FullMath.d.ts +4 -0
  44. package/build/dex/baseswap-v3/contract-math/FullMath.js +19 -0
  45. package/build/dex/baseswap-v3/contract-math/FullMath.js.map +1 -0
  46. package/build/dex/baseswap-v3/contract-math/LiquidityMath.d.ts +3 -0
  47. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js +22 -0
  48. package/build/dex/baseswap-v3/contract-math/LiquidityMath.js.map +1 -0
  49. package/build/dex/baseswap-v3/contract-math/Oracle.d.ts +10 -0
  50. package/build/dex/baseswap-v3/contract-math/Oracle.js +133 -0
  51. package/build/dex/baseswap-v3/contract-math/Oracle.js.map +1 -0
  52. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.d.ts +10 -0
  53. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js +91 -0
  54. package/build/dex/baseswap-v3/contract-math/SqrtPriceMath.js.map +1 -0
  55. package/build/dex/baseswap-v3/contract-math/SwapMath.d.ts +8 -0
  56. package/build/dex/baseswap-v3/contract-math/SwapMath.js +70 -0
  57. package/build/dex/baseswap-v3/contract-math/SwapMath.js.map +1 -0
  58. package/build/dex/baseswap-v3/contract-math/Tick.d.ts +7 -0
  59. package/build/dex/baseswap-v3/contract-math/Tick.js +45 -0
  60. package/build/dex/baseswap-v3/contract-math/Tick.js.map +1 -0
  61. package/build/dex/baseswap-v3/contract-math/TickBitMap.d.ts +7 -0
  62. package/build/dex/baseswap-v3/contract-math/TickBitMap.js +84 -0
  63. package/build/dex/baseswap-v3/contract-math/TickBitMap.js.map +1 -0
  64. package/build/dex/baseswap-v3/contract-math/TickMath.d.ts +8 -0
  65. package/build/dex/baseswap-v3/contract-math/TickMath.js +162 -0
  66. package/build/dex/baseswap-v3/contract-math/TickMath.js.map +1 -0
  67. package/build/dex/baseswap-v3/contract-math/UnsafeMath.d.ts +3 -0
  68. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js +10 -0
  69. package/build/dex/baseswap-v3/contract-math/UnsafeMath.js.map +1 -0
  70. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.d.ts +37 -0
  71. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js +393 -0
  72. package/build/dex/baseswap-v3/contract-math/uniswap-v3-math.js.map +1 -0
  73. package/build/dex/baseswap-v3/contract-math/utils.d.ts +7 -0
  74. package/build/dex/baseswap-v3/contract-math/utils.js +42 -0
  75. package/build/dex/baseswap-v3/contract-math/utils.js.map +1 -0
  76. package/build/dex/baseswap-v3/types.d.ts +164 -0
  77. package/build/dex/baseswap-v3/types.js +9 -0
  78. package/build/dex/baseswap-v3/types.js.map +1 -0
  79. package/build/dex/baseswap-v3/utils.d.ts +6 -0
  80. package/build/dex/baseswap-v3/utils.js +65 -0
  81. package/build/dex/baseswap-v3/utils.js.map +1 -0
  82. package/build/dex/hashflow/config.d.ts +1 -1
  83. package/build/dex/hashflow/config.js +6 -6
  84. package/build/dex/hashflow/config.js.map +1 -1
  85. package/build/dex/hashflow/hashflow.d.ts +7 -7
  86. package/build/dex/hashflow/hashflow.js +47 -54
  87. package/build/dex/hashflow/hashflow.js.map +1 -1
  88. package/build/dex/hashflow/rate-fetcher.d.ts +1 -1
  89. package/build/dex/hashflow/rate-fetcher.js +2 -4
  90. package/build/dex/hashflow/rate-fetcher.js.map +1 -1
  91. package/build/dex/hashflow/types.d.ts +5 -6
  92. package/build/dex/hashflow/types.js.map +1 -1
  93. package/build/dex/hashflow/validators.js +11 -4
  94. package/build/dex/hashflow/validators.js.map +1 -1
  95. package/build/dex/hello/config.d.ts +4 -0
  96. package/build/dex/hello/config.js +15 -0
  97. package/build/dex/hello/config.js.map +1 -0
  98. package/build/dex/hello/hello-pool.d.ts +39 -0
  99. package/build/dex/hello/hello-pool.js +64 -0
  100. package/build/dex/hello/hello-pool.js.map +1 -0
  101. package/build/dex/hello/hello.d.ts +37 -0
  102. package/build/dex/hello/hello.js +126 -0
  103. package/build/dex/hello/hello.js.map +1 -0
  104. package/build/dex/hello/types.d.ts +6 -0
  105. package/build/dex/hello/types.js +3 -0
  106. package/build/dex/hello/types.js.map +1 -0
  107. package/build/dex/kyberswap-elastic/config.d.ts +4 -0
  108. package/build/dex/kyberswap-elastic/config.js +80 -0
  109. package/build/dex/kyberswap-elastic/config.js.map +1 -0
  110. package/build/dex/kyberswap-elastic/constants.d.ts +17 -0
  111. package/build/dex/kyberswap-elastic/constants.js +42 -0
  112. package/build/dex/kyberswap-elastic/constants.js.map +1 -0
  113. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.d.ts +4 -0
  114. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js +9 -0
  115. package/build/dex/kyberswap-elastic/contract-math/FixedPoint96.js.map +1 -0
  116. package/build/dex/kyberswap-elastic/contract-math/FullMath.d.ts +5 -0
  117. package/build/dex/kyberswap-elastic/contract-math/FullMath.js +22 -0
  118. package/build/dex/kyberswap-elastic/contract-math/FullMath.js.map +1 -0
  119. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.d.ts +3 -0
  120. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js +12 -0
  121. package/build/dex/kyberswap-elastic/contract-math/LiqDeltaMath.js.map +1 -0
  122. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.d.ts +3 -0
  123. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js +22 -0
  124. package/build/dex/kyberswap-elastic/contract-math/LiquidityMath.js.map +1 -0
  125. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.d.ts +5 -0
  126. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js +25 -0
  127. package/build/dex/kyberswap-elastic/contract-math/QtyDeltaMath.js.map +1 -0
  128. package/build/dex/kyberswap-elastic/contract-math/QuadMath.d.ts +4 -0
  129. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js +27 -0
  130. package/build/dex/kyberswap-elastic/contract-math/QuadMath.js.map +1 -0
  131. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.d.ts +3 -0
  132. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js +14 -0
  133. package/build/dex/kyberswap-elastic/contract-math/ReinvestmentMath.js.map +1 -0
  134. package/build/dex/kyberswap-elastic/contract-math/SafeCast.d.ts +8 -0
  135. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js +30 -0
  136. package/build/dex/kyberswap-elastic/contract-math/SafeCast.js.map +1 -0
  137. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.d.ts +10 -0
  138. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js +91 -0
  139. package/build/dex/kyberswap-elastic/contract-math/SqrtPriceMath.js.map +1 -0
  140. package/build/dex/kyberswap-elastic/contract-math/SwapMath.d.ts +13 -0
  141. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js +188 -0
  142. package/build/dex/kyberswap-elastic/contract-math/SwapMath.js.map +1 -0
  143. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.d.ts +6 -0
  144. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js +41 -0
  145. package/build/dex/kyberswap-elastic/contract-math/TickLinkedList.js.map +1 -0
  146. package/build/dex/kyberswap-elastic/contract-math/TickMath.d.ts +9 -0
  147. package/build/dex/kyberswap-elastic/contract-math/TickMath.js +165 -0
  148. package/build/dex/kyberswap-elastic/contract-math/TickMath.js.map +1 -0
  149. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.d.ts +3 -0
  150. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js +10 -0
  151. package/build/dex/kyberswap-elastic/contract-math/UnsafeMath.js.map +1 -0
  152. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.d.ts +28 -0
  153. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js +502 -0
  154. package/build/dex/kyberswap-elastic/contract-math/kyberswap-elastic-math.js.map +1 -0
  155. package/build/dex/kyberswap-elastic/contract-math/utils.d.ts +3 -0
  156. package/build/dex/kyberswap-elastic/contract-math/utils.js +16 -0
  157. package/build/dex/kyberswap-elastic/contract-math/utils.js.map +1 -0
  158. package/build/dex/kyberswap-elastic/errors.d.ts +2 -0
  159. package/build/dex/kyberswap-elastic/errors.js +6 -0
  160. package/build/dex/kyberswap-elastic/errors.js.map +1 -0
  161. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.d.ts +80 -0
  162. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js +458 -0
  163. package/build/dex/kyberswap-elastic/kyberswap-elastic-pool.js.map +1 -0
  164. package/build/dex/kyberswap-elastic/kyberswap-elastic.d.ts +53 -0
  165. package/build/dex/kyberswap-elastic/kyberswap-elastic.js +610 -0
  166. package/build/dex/kyberswap-elastic/kyberswap-elastic.js.map +1 -0
  167. package/build/dex/kyberswap-elastic/types.d.ts +134 -0
  168. package/build/dex/kyberswap-elastic/types.js +9 -0
  169. package/build/dex/kyberswap-elastic/types.js.map +1 -0
  170. package/build/dex/kyberswap-elastic/utils/decoders.d.ts +9 -0
  171. package/build/dex/kyberswap-elastic/utils/decoders.js +78 -0
  172. package/build/dex/kyberswap-elastic/utils/decoders.js.map +1 -0
  173. package/build/dex/morphex/config.d.ts +11 -0
  174. package/build/dex/morphex/config.js +43 -0
  175. package/build/dex/morphex/config.js.map +1 -0
  176. package/build/dex/morphex/morphex.d.ts +25 -0
  177. package/build/dex/morphex/morphex.js +19 -0
  178. package/build/dex/morphex/morphex.js.map +1 -0
  179. package/build/dex/my-test-dex/config.d.ts +4 -0
  180. package/build/dex/my-test-dex/config.js +15 -0
  181. package/build/dex/my-test-dex/config.js.map +1 -0
  182. package/build/dex/my-test-dex/my-test-dex-pool.d.ts +39 -0
  183. package/build/dex/my-test-dex/my-test-dex-pool.js +64 -0
  184. package/build/dex/my-test-dex/my-test-dex-pool.js.map +1 -0
  185. package/build/dex/my-test-dex/my-test-dex.d.ts +37 -0
  186. package/build/dex/my-test-dex/my-test-dex.js +126 -0
  187. package/build/dex/my-test-dex/my-test-dex.js.map +1 -0
  188. package/build/dex/my-test-dex/types.d.ts +6 -0
  189. package/build/dex/my-test-dex/types.js +3 -0
  190. package/build/dex/my-test-dex/types.js.map +1 -0
  191. package/build/dex/solidly/forks-override/fvm.d.ts +20 -0
  192. package/build/dex/solidly/forks-override/fvm.js +42 -0
  193. package/build/dex/solidly/forks-override/fvm.js.map +1 -0
  194. package/build/dex/swaap-v2/constants.d.ts +2 -1
  195. package/build/dex/swaap-v2/constants.js +3 -2
  196. package/build/dex/swaap-v2/constants.js.map +1 -1
  197. package/build/dex/swaap-v2/stable-coins.d.ts +5 -0
  198. package/build/dex/swaap-v2/stable-coins.js +26 -0
  199. package/build/dex/swaap-v2/stable-coins.js.map +1 -0
  200. package/build/dex/swaap-v2/swaap-v2.js +4 -1
  201. package/build/dex/swaap-v2/swaap-v2.js.map +1 -1
  202. package/build/dex/swaap-v2/utils.d.ts +2 -0
  203. package/build/dex/swaap-v2/utils.js +11 -1
  204. package/build/dex/swaap-v2/utils.js.map +1 -1
  205. package/build/dex/wombat/config.d.ts +4 -0
  206. package/build/dex/wombat/config.js +99 -0
  207. package/build/dex/wombat/config.js.map +1 -0
  208. package/build/dex/wombat/types.d.ts +33 -0
  209. package/build/dex/wombat/types.js +3 -0
  210. package/build/dex/wombat/types.js.map +1 -0
  211. package/build/dex/wombat/utils.d.ts +9 -0
  212. package/build/dex/wombat/utils.js +66 -0
  213. package/build/dex/wombat/utils.js.map +1 -0
  214. package/build/dex/wombat/wombat-bmw.d.ts +40 -0
  215. package/build/dex/wombat/wombat-bmw.js +147 -0
  216. package/build/dex/wombat/wombat-bmw.js.map +1 -0
  217. package/build/dex/wombat/wombat-pool.d.ts +22 -0
  218. package/build/dex/wombat/wombat-pool.js +161 -0
  219. package/build/dex/wombat/wombat-pool.js.map +1 -0
  220. package/build/dex/wombat/wombat-quoter.d.ts +16 -0
  221. package/build/dex/wombat/wombat-quoter.js +176 -0
  222. package/build/dex/wombat/wombat-quoter.js.map +1 -0
  223. package/build/dex/wombat/wombat.d.ts +55 -0
  224. package/build/dex/wombat/wombat.js +290 -0
  225. package/build/dex/wombat/wombat.js.map +1 -0
  226. package/build/lib/fetcher/fetcher.d.ts +1 -1
  227. package/build/lib/fetcher/fetcher.js.map +1 -1
  228. package/package.json +2 -2
  229. package/src/abi/hashflow/HashflowRouter.abi.json +816 -246
  230. package/src/config.ts +1 -1
  231. package/src/dex/algebra/algebra-e2e.test.ts +13 -84
  232. package/src/dex/algebra/algebra.ts +49 -150
  233. package/src/dex/algebra/config.ts +1 -1
  234. package/src/dex/algebra/types.ts +0 -12
  235. package/src/dex/hashflow/config.ts +8 -8
  236. package/src/dex/hashflow/hashflow-e2e.test.ts +4 -4
  237. package/src/dex/hashflow/hashflow-integration.test.ts +9 -6
  238. package/src/dex/hashflow/hashflow.ts +70 -87
  239. package/src/dex/hashflow/rate-fetcher.ts +6 -8
  240. package/src/dex/hashflow/types.ts +5 -6
  241. package/src/dex/hashflow/validators.ts +11 -4
  242. package/src/dex/swaap-v2/constants.ts +3 -1
  243. package/src/dex/swaap-v2/stable-coins.ts +25 -0
  244. package/src/dex/swaap-v2/swaap-v2.ts +17 -3
  245. package/src/dex/swaap-v2/utils.ts +18 -1
  246. package/src/lib/fetcher/fetcher.ts +2 -2
  247. package/tests/constants-e2e.ts +1 -6
  248. package/tests/tenderly-simulation.ts +5 -2
  249. package/.vscode/launch.json +0 -39
  250. package/.vscode/settings.json +0 -2
  251. package/.vscode/tasks.json +0 -15
  252. package/build/abi/algebra/SwapRouter.json +0 -281
  253. package/find-diff-tests.sh +0 -75
  254. package/src/abi/algebra/SwapRouter.json +0 -281
package/src/config.ts CHANGED
@@ -281,7 +281,7 @@ const baseConfigs: { [network: number]: BaseConfig } = {
281
281
  process.env[`HASHFLOW_DISABLED_MMS_42161`]?.split(',') || [],
282
282
  adapterAddresses: {
283
283
  ArbitrumAdapter01: '0xD8134ACfc9c71Ab51452b5bA23A31354F4739032',
284
- ArbitrumAdapter02: '0x7b0c7f946c845bb0d43ad41ece7027e1fc11bea7',
284
+ ArbitrumAdapter02: '0x248009f6F78b5AcD5EA2fc86d56b77A7AeEe2eFc',
285
285
  ArbitrumBuyAdapter: '0xEECA9223063bD13e8ca77ed9e39a07f2BD1923E6',
286
286
  },
287
287
  uniswapV2ExchangeRouterAddress:
@@ -11,7 +11,6 @@ import {
11
11
  import { Network, ContractMethod, SwapSide } from '../../constants';
12
12
  import { StaticJsonRpcProvider } from '@ethersproject/providers';
13
13
  import { generateConfig } from '../../config';
14
- import { TransferFeeParams } from '../../types';
15
14
 
16
15
  /*
17
16
  README
@@ -60,12 +59,6 @@ function testForNetwork(
60
59
  tokenAAmount: string,
61
60
  tokenBAmount: string,
62
61
  nativeTokenAmount: string,
63
- transferFees: TransferFeeParams = {
64
- srcFee: 0,
65
- destFee: 0,
66
- srcDexFee: 0,
67
- destDexFee: 0,
68
- },
69
62
  ) {
70
63
  const provider = new StaticJsonRpcProvider(
71
64
  generateConfig(network).privateHttpProvider,
@@ -87,7 +80,6 @@ function testForNetwork(
87
80
  ],
88
81
  // TODO: If buy is not supported remove the buy contract methods
89
82
  [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
90
- // [SwapSide.BUY, [ContractMethod.simpleBuy]],
91
83
  ]);
92
84
 
93
85
  describe(`${network}`, () => {
@@ -95,81 +87,43 @@ function testForNetwork(
95
87
  describe(`${side}`, () => {
96
88
  contractMethods.forEach((contractMethod: ContractMethod) => {
97
89
  describe(`${contractMethod}`, () => {
98
- // if src token is tax token and BUY side, then should fail (skip)
99
- if (!!transferFees?.srcDexFee && side === SwapSide.BUY) return;
100
-
101
- it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
90
+ it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
102
91
  await testE2E(
92
+ tokens[nativeTokenSymbol],
103
93
  tokens[tokenASymbol],
104
- tokens[tokenBSymbol],
105
- holders[tokenASymbol],
106
- side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
94
+ holders[nativeTokenSymbol],
95
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
107
96
  side,
108
97
  dexKey,
109
98
  contractMethod,
110
99
  network,
111
100
  provider,
112
- undefined,
113
- undefined,
114
- transferFees,
115
101
  );
116
102
  });
117
- it(`${tokenBSymbol} -> ${tokenASymbol}`, async () => {
103
+ it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
118
104
  await testE2E(
119
- tokens[tokenBSymbol],
120
105
  tokens[tokenASymbol],
121
- holders[tokenBSymbol],
122
- side === SwapSide.SELL ? tokenBAmount : tokenAAmount,
123
- side,
124
- dexKey,
125
- contractMethod,
126
- network,
127
- provider,
128
- undefined,
129
- undefined,
130
- // switch src and dest fee when tax token is dest token
131
- {
132
- ...transferFees,
133
- srcDexFee: transferFees.destDexFee,
134
- destDexFee: transferFees.srcDexFee,
135
- },
136
- );
137
- });
138
- it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
139
- await testE2E(
140
106
  tokens[nativeTokenSymbol],
141
- tokens[tokenASymbol],
142
- holders[nativeTokenSymbol],
143
- side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
107
+ holders[tokenASymbol],
108
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
144
109
  side,
145
110
  dexKey,
146
111
  contractMethod,
147
112
  network,
148
113
  provider,
149
- undefined,
150
- undefined,
151
- // switch src and dest fee when tax token is dest token
152
- {
153
- ...transferFees,
154
- srcDexFee: transferFees.destDexFee,
155
- destDexFee: transferFees.srcDexFee,
156
- },
157
114
  );
158
115
  });
159
- it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
116
+ it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
160
117
  await testE2E(
161
118
  tokens[tokenASymbol],
162
- tokens[nativeTokenSymbol],
119
+ tokens[tokenBSymbol],
163
120
  holders[tokenASymbol],
164
- side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
121
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
165
122
  side,
166
123
  dexKey,
167
124
  contractMethod,
168
125
  network,
169
126
  provider,
170
- undefined,
171
- undefined,
172
- transferFees,
173
127
  );
174
128
  });
175
129
  });
@@ -250,35 +204,10 @@ describe('Algebra', () => {
250
204
 
251
205
  describe('CamelotV3', () => {
252
206
  const dexKey = 'CamelotV3';
253
- const network = Network.ARBITRUM;
254
-
255
- describe('Arbitrum: Tax Tokens', () => {
256
- const tokenASymbol: string = 'RDPX';
257
- const tokenBSymbol: string = 'WETH';
258
-
259
- const tokenAAmount: string = '100000000000000000000';
260
- const tokenBAmount: string = '100000000000000000';
261
- const nativeTokenAmount = '1000000000000000000';
262
-
263
- testForNetwork(
264
- network,
265
- dexKey,
266
- tokenASymbol,
267
- tokenBSymbol,
268
- tokenAAmount,
269
- tokenBAmount,
270
- nativeTokenAmount,
271
- {
272
- srcFee: 0,
273
- destFee: 0,
274
- srcDexFee: 1000,
275
- destDexFee: 0,
276
- },
277
- );
278
- });
279
207
 
280
- describe('Arbitrum: Non-Tax tokens', () => {
281
- const tokenASymbol: string = 'USDCe';
208
+ describe('Arbitrum', () => {
209
+ const network = Network.ARBITRUM;
210
+ const tokenASymbol: string = 'USDC';
282
211
  const tokenBSymbol: string = 'USDT';
283
212
 
284
213
  const tokenAAmount: string = '1000000000';
@@ -4,34 +4,21 @@ import { AbiItem } from 'web3-utils';
4
4
  import { pack } from '@ethersproject/solidity';
5
5
  import _ from 'lodash';
6
6
  import {
7
+ Token,
8
+ Address,
7
9
  ExchangePrices,
8
10
  PoolPrices,
9
11
  AdapterExchangeParam,
10
12
  SimpleExchangeParam,
11
- Logger,
12
- TransferFeeParams,
13
- Address,
14
13
  PoolLiquidity,
15
- Token,
14
+ Logger,
16
15
  } from '../../types';
17
16
  import { SwapSide, Network, CACHE_PREFIX } from '../../constants';
18
17
  import * as CALLDATA_GAS_COST from '../../calldata-gas-cost';
19
- import {
20
- _require,
21
- getBigIntPow,
22
- getDexKeysWithNetwork,
23
- interpolate,
24
- isDestTokenTransferFeeToBeExchanged,
25
- isSrcTokenTransferFeeToBeExchanged,
26
- } from '../../utils';
18
+ import { getBigIntPow, getDexKeysWithNetwork, interpolate } from '../../utils';
27
19
  import { IDex } from '../../dex/idex';
28
20
  import { IDexHelper } from '../../dex-helper/idex-helper';
29
- import {
30
- AlgebraData,
31
- AlgebraFunctions,
32
- DexParams,
33
- IAlgebraPoolState,
34
- } from './types';
21
+ import { AlgebraData, DexParams, IAlgebraPoolState } from './types';
35
22
  import {
36
23
  SimpleExchange,
37
24
  getLocalDeadlineAsFriendlyPlaceholder,
@@ -39,16 +26,19 @@ import {
39
26
  import { AlgebraConfig, Adapters } from './config';
40
27
  import { Contract } from 'web3-eth-contract';
41
28
  import { Interface } from 'ethers/lib/utils';
42
- import SwapRouter from '../../abi/algebra/SwapRouter.json';
29
+ import UniswapV3RouterABI from '../../abi/uniswap-v3/UniswapV3Router.abi.json';
43
30
  import AlgebraQuoterABI from '../../abi/algebra/AlgebraQuoter.abi.json';
44
31
  import UniswapV3MultiABI from '../../abi/uniswap-v3/UniswapMulti.abi.json';
45
32
  import AlgebraStateMulticallABI from '../../abi/algebra/AlgebraStateMulticall.abi.json';
46
- import { OutputResult } from '../uniswap-v3/types';
33
+ import {
34
+ OutputResult,
35
+ UniswapV3Functions,
36
+ UniswapV3SimpleSwapParams,
37
+ } from '../uniswap-v3/types';
47
38
  import { AlgebraMath } from './lib/AlgebraMath';
48
39
  import { AlgebraEventPoolV1_1 } from './algebra-pool-v1_1';
49
40
  import { AlgebraEventPoolV1_9 } from './algebra-pool-v1_9';
50
41
  import { AlgebraFactory, OnPoolCreatedCallback } from './algebra-factory';
51
- import { applyTransferFee } from '../../lib/token-transfer-fee';
52
42
 
53
43
  type PoolPairsInfo = {
54
44
  token0: Address;
@@ -71,7 +61,7 @@ type IAlgebraEventPool = AlgebraEventPoolV1_1 | AlgebraEventPoolV1_9;
71
61
 
72
62
  export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
73
63
  private readonly factory: AlgebraFactory;
74
- readonly isFeeOnTransferSupported: boolean = true;
64
+ readonly isFeeOnTransferSupported: boolean = false;
75
65
  protected eventPools: Record<string, IAlgebraEventPool | null> = {};
76
66
 
77
67
  private newlyCreatedPoolKeys: Set<string> = new Set();
@@ -95,15 +85,12 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
95
85
  | typeof AlgebraEventPoolV1_1
96
86
  | typeof AlgebraEventPoolV1_9;
97
87
 
98
- readonly SRC_TOKEN_DEX_TRANSFERS = 1;
99
- readonly DEST_TOKEN_DEX_TRANSFERS = 1;
100
-
101
88
  constructor(
102
89
  protected network: Network,
103
90
  dexKey: string,
104
91
  protected dexHelper: IDexHelper,
105
92
  protected adapters = Adapters[network] || {},
106
- readonly routerIface = new Interface(SwapRouter),
93
+ readonly routerIface = new Interface(UniswapV3RouterABI), // same abi as uniswapV3
107
94
  readonly quoterIface = new Interface(AlgebraQuoterABI),
108
95
  readonly config = AlgebraConfig[dexKey][network],
109
96
  ) {
@@ -422,12 +409,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
422
409
  amounts: bigint[],
423
410
  side: SwapSide,
424
411
  pool: IAlgebraEventPool,
425
- transferFees: TransferFeeParams = {
426
- srcFee: 0,
427
- destFee: 0,
428
- srcDexFee: 0,
429
- destDexFee: 0,
430
- },
431
412
  ): Promise<ExchangePrices<AlgebraData> | null> {
432
413
  if (!this.config.forceRPC) {
433
414
  this.logger.warn(
@@ -435,11 +416,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
435
416
  );
436
417
  }
437
418
 
438
- const _isSrcTokenTransferFeeToBeExchanged =
439
- isSrcTokenTransferFeeToBeExchanged(transferFees);
440
- const _isDestTokenTransferFeeToBeExchanged =
441
- isDestTokenTransferFeeToBeExchanged(transferFees);
442
-
443
419
  const unitVolume = getBigIntPow(
444
420
  (side === SwapSide.SELL ? from : to).decimals,
445
421
  );
@@ -454,16 +430,7 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
454
430
  ),
455
431
  );
456
432
 
457
- const _amountsWithFee = _isSrcTokenTransferFeeToBeExchanged
458
- ? applyTransferFee(
459
- _amounts,
460
- side,
461
- transferFees.srcDexFee,
462
- this.SRC_TOKEN_DEX_TRANSFERS,
463
- )
464
- : _amounts;
465
-
466
- const calldata = _amountsWithFee.map(_amount => ({
433
+ const calldata = _amounts.map(_amount => ({
467
434
  target: this.config.quoter,
468
435
  gasLimit: ALGEBRA_QUOTE_GASLIMIT,
469
436
  callData:
@@ -504,22 +471,12 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
504
471
  : Math.round(totalGasCost / totalSuccessFullSwaps);
505
472
 
506
473
  let i = 0;
507
- const _rates = _amountsWithFee.map(() => decode(i++));
508
-
509
- const _ratesWithFee = _isDestTokenTransferFeeToBeExchanged
510
- ? applyTransferFee(
511
- _rates,
512
- side,
513
- transferFees.destDexFee,
514
- this.DEST_TOKEN_DEX_TRANSFERS,
515
- )
516
- : _rates;
517
-
518
- const unit: bigint = _ratesWithFee[0];
474
+ const _rates = _amounts.map(() => decode(i++));
475
+ const unit: bigint = _rates[0];
519
476
 
520
477
  const prices = interpolate(
521
- _amountsWithFee.slice(1),
522
- _ratesWithFee.slice(1),
478
+ _amounts.slice(1),
479
+ _rates.slice(1),
523
480
  amounts,
524
481
  side,
525
482
  );
@@ -529,7 +486,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
529
486
  prices,
530
487
  unit,
531
488
  data: {
532
- feeOnTransfer: _isSrcTokenTransferFeeToBeExchanged,
533
489
  path: [
534
490
  {
535
491
  tokenIn: from.address,
@@ -552,12 +508,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
552
508
  side: SwapSide,
553
509
  blockNumber: number,
554
510
  limitPools?: string[],
555
- transferFees: TransferFeeParams = {
556
- srcFee: 0,
557
- destFee: 0,
558
- srcDexFee: 0,
559
- destDexFee: 0,
560
- },
561
511
  ): Promise<null | ExchangePrices<AlgebraData>> {
562
512
  try {
563
513
  const _srcToken = this.dexHelper.config.wrapETH(srcToken);
@@ -568,11 +518,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
568
518
  _destToken,
569
519
  );
570
520
 
571
- const _isSrcTokenTransferFeeToBeExchanged =
572
- isSrcTokenTransferFeeToBeExchanged(transferFees);
573
- const _isDestTokenTransferFeeToBeExchanged =
574
- isDestTokenTransferFeeToBeExchanged(transferFees);
575
-
576
521
  if (_srcAddress === _destAddress) return null;
577
522
 
578
523
  if (
@@ -581,14 +526,8 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
581
526
  return null;
582
527
 
583
528
  const pool = await this.getPool(_srcAddress, _destAddress, blockNumber);
584
- if (!pool) return null;
585
529
 
586
- if (_isSrcTokenTransferFeeToBeExchanged && side == SwapSide.BUY) {
587
- this.logger.error(
588
- `pool: ${pool.poolAddress} doesn't support buy for tax srcToken ${srcToken.address}`,
589
- );
590
- return null;
591
- }
530
+ if (!pool) return null;
592
531
 
593
532
  if (this.config.forceRPC) {
594
533
  const rpcPrice = await this.getPricingFromRpc(
@@ -597,7 +536,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
597
536
  amounts,
598
537
  side,
599
538
  pool,
600
- transferFees,
601
539
  );
602
540
 
603
541
  return rpcPrice;
@@ -632,7 +570,6 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
632
570
  amounts,
633
571
  side,
634
572
  pool,
635
- transferFees,
636
573
  );
637
574
 
638
575
  return rpcPrice;
@@ -664,26 +601,16 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
664
601
  const balanceDestToken =
665
602
  _destAddress === pool.token0 ? state.balance0 : state.balance1;
666
603
 
667
- const [unitAmountWithFee, ...amountsWithFee] =
668
- _isSrcTokenTransferFeeToBeExchanged
669
- ? applyTransferFee(
670
- [unitAmount, ..._amounts],
671
- side,
672
- transferFees.srcDexFee,
673
- this.SRC_TOKEN_DEX_TRANSFERS,
674
- )
675
- : [unitAmount, ..._amounts];
676
-
677
604
  const unitResult = this._getOutputs(
678
605
  state,
679
- [unitAmountWithFee],
606
+ [unitAmount],
680
607
  zeroForOne,
681
608
  side,
682
609
  balanceDestToken,
683
610
  );
684
611
  const pricesResult = this._getOutputs(
685
612
  state,
686
- amountsWithFee,
613
+ _amounts,
687
614
  zeroForOne,
688
615
  side,
689
616
  balanceDestToken,
@@ -694,20 +621,10 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
694
621
  return null;
695
622
  }
696
623
 
697
- const [unitResultWithFee, ...pricesResultWithFee] =
698
- _isDestTokenTransferFeeToBeExchanged
699
- ? applyTransferFee(
700
- [unitResult.outputs[0], ...pricesResult.outputs],
701
- side,
702
- transferFees.destDexFee,
703
- this.DEST_TOKEN_DEX_TRANSFERS,
704
- )
705
- : [unitResult.outputs[0], ...pricesResult.outputs];
706
-
707
- const prices = [0n, ...pricesResultWithFee];
624
+ const prices = [0n, ...pricesResult.outputs];
708
625
  const gasCost = [
709
626
  0,
710
- ...pricesResultWithFee.map((p, index) => {
627
+ ...pricesResult.outputs.map((p, index) => {
711
628
  if (p == 0n) {
712
629
  return 0;
713
630
  } else {
@@ -722,10 +639,9 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
722
639
 
723
640
  return [
724
641
  {
725
- unit: unitResultWithFee,
642
+ unit: unitResult.outputs[0],
726
643
  prices,
727
644
  data: {
728
- feeOnTransfer: _isSrcTokenTransferFeeToBeExchanged,
729
645
  path: [
730
646
  {
731
647
  tokenIn: _srcAddress,
@@ -758,20 +674,19 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
758
674
  data: AlgebraData,
759
675
  side: SwapSide,
760
676
  ): AdapterExchangeParam {
761
- let path = this._encodePath(data.path, side);
677
+ const { path: rawPath } = data;
678
+ const path = this._encodePath(rawPath, side);
762
679
 
763
680
  const payload = this.abiCoder.encodeParameter(
764
681
  {
765
682
  ParentStruct: {
766
683
  path: 'bytes',
767
684
  deadline: 'uint256',
768
- feeOnTransfer: 'bool',
769
685
  },
770
686
  },
771
687
  {
772
688
  path,
773
689
  deadline: getLocalDeadlineAsFriendlyPlaceholder(), // FIXME: more gas efficient to pass block.timestamp in adapter
774
- feeOnTransfer: data.feeOnTransfer,
775
690
  },
776
691
  );
777
692
 
@@ -815,46 +730,30 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
815
730
  data: AlgebraData,
816
731
  side: SwapSide,
817
732
  ): Promise<SimpleExchangeParam> {
818
- let swapFunction;
819
- let swapParams;
820
-
821
- if (data.feeOnTransfer) {
822
- swapFunction = AlgebraFunctions.exactInputWithFeeToken;
823
- swapParams = {
824
- limitSqrtPrice: '0',
825
- recipient: this.augustusAddress,
826
- deadline: getLocalDeadlineAsFriendlyPlaceholder(),
827
- amountIn: srcAmount,
828
- amountOutMinimum: destAmount,
829
- tokenIn: data.path[0].tokenIn,
830
- tokenOut: data.path[0].tokenOut,
831
- };
832
- } else {
833
- swapFunction =
834
- side === SwapSide.SELL
835
- ? AlgebraFunctions.exactInput
836
- : AlgebraFunctions.exactOutput;
837
- const path = this._encodePath(data.path, side);
838
- swapParams =
839
- side === SwapSide.SELL
840
- ? {
841
- recipient: this.augustusAddress,
842
- deadline: getLocalDeadlineAsFriendlyPlaceholder(),
843
- amountIn: srcAmount,
844
- amountOutMinimum: destAmount,
845
- path,
846
- }
847
- : {
848
- recipient: this.augustusAddress,
849
- deadline: getLocalDeadlineAsFriendlyPlaceholder(),
850
- amountOut: destAmount,
851
- amountInMaximum: srcAmount,
852
- path,
853
- };
854
- }
855
-
733
+ const swapFunction =
734
+ side === SwapSide.SELL
735
+ ? UniswapV3Functions.exactInput
736
+ : UniswapV3Functions.exactOutput;
737
+
738
+ const path = this._encodePath(data.path, side);
739
+ const swapFunctionParams: UniswapV3SimpleSwapParams =
740
+ side === SwapSide.SELL
741
+ ? {
742
+ recipient: this.augustusAddress,
743
+ deadline: getLocalDeadlineAsFriendlyPlaceholder(),
744
+ amountIn: srcAmount,
745
+ amountOutMinimum: destAmount,
746
+ path,
747
+ }
748
+ : {
749
+ recipient: this.augustusAddress,
750
+ deadline: getLocalDeadlineAsFriendlyPlaceholder(),
751
+ amountOut: destAmount,
752
+ amountInMaximum: srcAmount,
753
+ path,
754
+ };
856
755
  const swapData = this.routerIface.encodeFunctionData(swapFunction, [
857
- swapParams,
756
+ swapFunctionParams,
858
757
  ]);
859
758
 
860
759
  return this.buildSimpleParamWithoutWETHConversion(
@@ -98,7 +98,7 @@ export const Adapters: Record<number, AdapterMappings> = {
98
98
  [SwapSide.BUY]: [{ name: 'PolygonZkEvmBuyAdapter', index: 1 }],
99
99
  },
100
100
  [Network.ARBITRUM]: {
101
- [SwapSide.SELL]: [{ name: 'ArbitrumAdapter02', index: 7 }],
101
+ [SwapSide.SELL]: [{ name: 'ArbitrumAdapter01', index: 3 }],
102
102
  [SwapSide.BUY]: [{ name: 'ArbitrumBuyAdapter', index: 2 }],
103
103
  },
104
104
  [Network.OPTIMISM]: {
@@ -58,21 +58,9 @@ export type AlgebraData = {
58
58
  tokenIn: Address;
59
59
  tokenOut: Address;
60
60
  }[];
61
- feeOnTransfer: boolean;
62
61
  isApproved?: boolean;
63
62
  };
64
63
 
65
- export type AlgebraDataWithFee = {
66
- tokenIn: Address;
67
- tokenOut: Address;
68
- };
69
-
70
- export enum AlgebraFunctions {
71
- exactInput = 'exactInput',
72
- exactOutput = 'exactOutput',
73
- exactInputWithFeeToken = 'exactInputSingleSupportingFeeOnTransferTokens',
74
- }
75
-
76
64
  export type DexParams = {
77
65
  router: Address;
78
66
  quoter: Address;
@@ -1,26 +1,26 @@
1
- import { DexParams } from './types';
2
- import { DexConfigMap, AdapterMappings } from '../../types';
3
1
  import { Network, SwapSide } from '../../constants';
2
+ import { AdapterMappings, DexConfigMap } from '../../types';
3
+ import { DexParams } from './types';
4
4
 
5
5
  export const HashflowConfig: DexConfigMap<DexParams> = {
6
6
  Hashflow: {
7
7
  [Network.MAINNET]: {
8
- routerAddress: '0xf6a94dfd0e6ea9ddfdffe4762ad4236576136613',
8
+ routerAddress: '0x55084eE0fEf03f14a305cd24286359A35D735151',
9
9
  },
10
10
  [Network.POLYGON]: {
11
- routerAddress: '0x72550597dc0b2e0bec24e116add353599eff2e35',
11
+ routerAddress: '0x55084eE0fEf03f14a305cd24286359A35D735151',
12
12
  },
13
13
  [Network.BSC]: {
14
- routerAddress: '0x0acffb0fb2cddd9bd35d03d359f3d899e32facc9',
14
+ routerAddress: '0x55084eE0fEf03f14a305cd24286359A35D735151',
15
15
  },
16
16
  [Network.ARBITRUM]: {
17
- routerAddress: '0x1f772fa3bc263160ea09bb16ce1a6b8fc0fab36a',
17
+ routerAddress: '0x55084eE0fEf03f14a305cd24286359A35D735151',
18
18
  },
19
19
  [Network.AVALANCHE]: {
20
- routerAddress: '0x64d2f9f44fe26c157d552ae7eaa613ca6587b59e',
20
+ routerAddress: '0x55084eE0fEf03f14a305cd24286359A35D735151',
21
21
  },
22
22
  [Network.OPTIMISM]: {
23
- routerAddress: '0xb3999f658c0391d94a37f7ff328f3fec942bcadc',
23
+ routerAddress: '0xCa310B1B942A30Ff4b40a5E1b69AB4607eC79Bc1',
24
24
  },
25
25
  },
26
26
  };
@@ -1,15 +1,15 @@
1
1
  import dotenv from 'dotenv';
2
2
  dotenv.config();
3
3
 
4
- import { testE2E } from '../../../tests/utils-e2e';
4
+ import { StaticJsonRpcProvider } from '@ethersproject/providers';
5
5
  import {
6
- Tokens,
7
6
  Holders,
8
7
  NativeTokenSymbols,
8
+ Tokens,
9
9
  } from '../../../tests/constants-e2e';
10
- import { Network, ContractMethod, SwapSide } from '../../constants';
11
- import { StaticJsonRpcProvider } from '@ethersproject/providers';
10
+ import { testE2E } from '../../../tests/utils-e2e';
12
11
  import { generateConfig } from '../../config';
12
+ import { ContractMethod, Network, SwapSide } from '../../constants';
13
13
 
14
14
  // Give time for rate fetcher to fill the cache
15
15
  const sleepMs = 3000;
@@ -2,16 +2,17 @@
2
2
  import dotenv from 'dotenv';
3
3
  dotenv.config();
4
4
 
5
- import { DummyDexHelper } from '../../dex-helper/index';
6
- import { Network, SwapSide } from '../../constants';
7
- import { BI_POWS } from '../../bigint-constants';
8
- import { Hashflow } from './hashflow';
5
+ import { Tokens } from '../../../tests/constants-e2e';
9
6
  import {
7
+ checkConstantPoolPrices,
10
8
  checkPoolPrices,
11
9
  checkPoolsLiquidity,
12
- checkConstantPoolPrices,
10
+ sleep,
13
11
  } from '../../../tests/utils';
14
- import { Tokens } from '../../../tests/constants-e2e';
12
+ import { BI_POWS } from '../../bigint-constants';
13
+ import { Network, SwapSide } from '../../constants';
14
+ import { DummyDexHelper } from '../../dex-helper/index';
15
+ import { Hashflow } from './hashflow';
15
16
 
16
17
  async function testPricingOnNetwork(
17
18
  hashflow: Hashflow,
@@ -104,6 +105,8 @@ describe('Hashflow', function () {
104
105
  beforeAll(async () => {
105
106
  blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
106
107
  hashflow = new Hashflow(network, dexKey, dexHelper);
108
+ await hashflow.initializePricing(0);
109
+ await sleep(5000);
107
110
  });
108
111
 
109
112
  it('getPoolIdentifiers and getPricesVolume SELL', async function () {