@paraswap/dex-lib 4.1.9 → 4.1.10-ekubo

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 (372) hide show
  1. package/build/abi/AaveV1_lending_pool.json +27 -0
  2. package/build/abi/Aave_GSM.json +751 -0
  3. package/build/abi/Balancer.json +257 -0
  4. package/build/abi/BalancerV2.json +1179 -0
  5. package/build/abi/RamsesV2Pool.abi.json +1554 -0
  6. package/build/abi/RamsesV2Quoter.abi.json +274 -0
  7. package/build/abi/USDM.json +807 -0
  8. package/build/abi/UniswapV2Router.json +397 -0
  9. package/build/abi/angle-transmuter/ChainlinkAccessControlledOffchainAggregator.json +1246 -0
  10. package/build/abi/angle-transmuter/ChainlinkEACAggregatorProxy.json +509 -0
  11. package/build/abi/curve-v1/CurveBUSDv2.abi.json +1356 -0
  12. package/build/abi/curve-v1/CurveTokenV1.json +305 -0
  13. package/build/abi/curve-v1/CurveTokenV2.json +318 -0
  14. package/build/abi/curve-v1/CurveV1StableNg.json +1452 -0
  15. package/build/abi/curve-v1/CurveV2Swap.json +700 -0
  16. package/build/abi/curve-v1/FactoryCryptoRegistry.json +316 -0
  17. package/build/abi/curve-v1/FactoryRegistry.json +508 -0
  18. package/build/abi/curve-v1/StableSwapAave.json +1152 -0
  19. package/build/abi/curve-v1/StableSwapBUSD.json +814 -0
  20. package/build/abi/curve-v1/StableSwapCompound.json +814 -0
  21. package/build/abi/curve-v1/StableSwapIDLE.json +1253 -0
  22. package/build/abi/curve-v1/StableSwapPax.json +865 -0
  23. package/build/abi/curve-v1/StableSwapSnow.json +900 -0
  24. package/build/abi/curve-v1/StableSwapUSDN.json +1004 -0
  25. package/build/abi/curve-v1/StableSwapUSDT.json +814 -0
  26. package/build/abi/curve-v1/StableSwapY.json +814 -0
  27. package/build/abi/ekubo/core.json +1266 -0
  28. package/build/abi/ekubo/data-fetcher.json +161 -0
  29. package/build/abi/ekubo/router.json +803 -0
  30. package/build/abi/inception/inception-ineth-pool.json +1062 -0
  31. package/build/abi/inception/inception-ineth.json +609 -0
  32. package/build/abi/inception/inception-ratio-feed.json +329 -0
  33. package/build/abi/inception/inception-vault.json +991 -0
  34. package/build/abi/kyberdmm/kyber-storage.abi.json +824 -0
  35. package/build/abi/kyberdmm.abi.json +1148 -0
  36. package/build/abi/maverick-v2/MaverickV2Quoter.json +278 -0
  37. package/build/abi/nerve/nerve-metapool.json +790 -0
  38. package/build/abi/platypus/asset.json +490 -0
  39. package/build/abi/platypus/avax-pool.json +820 -0
  40. package/build/abi/platypus/oracle.json +119 -0
  41. package/build/abi/platypus/pool.json +677 -0
  42. package/build/abi/smardex/all/smardex-router.json +648 -0
  43. package/build/abi/smardex/layer-1/smardex-factory.json +242 -0
  44. package/build/abi/smardex/layer-1/smardex-pool.json +506 -0
  45. package/build/abi/smardex/layer-2/smardex-factory.json +185 -0
  46. package/build/abi/smardex/layer-2/smardex-pool.json +578 -0
  47. package/build/abi/swaap-v1/pool.json +1346 -0
  48. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +193 -0
  49. package/build/abi/velodrome-slipstream/VelodromeSlipstreamQuoterV2.abi.json +267 -0
  50. package/build/dex/aave-v1/aave-v1.d.ts +34 -0
  51. package/build/dex/aave-v1/aave-v1.js +180 -0
  52. package/build/dex/aave-v1/aave-v1.js.map +1 -0
  53. package/build/dex/aave-v1/config.d.ts +11 -0
  54. package/build/dex/aave-v1/config.js +20 -0
  55. package/build/dex/aave-v1/config.js.map +1 -0
  56. package/build/dex/aave-v1/tokens-mainnet.json +134 -0
  57. package/build/dex/aave-v1/tokens.d.ts +3 -0
  58. package/build/dex/aave-v1/tokens.js +50 -0
  59. package/build/dex/aave-v1/tokens.js.map +1 -0
  60. package/build/dex/aave-v1/types.d.ts +12 -0
  61. package/build/dex/aave-v1/types.js +3 -0
  62. package/build/dex/aave-v1/types.js.map +1 -0
  63. package/build/dex/aave-v3-stata/config.js +8 -8
  64. package/build/dex/aave-v3-stata/config.js.map +1 -1
  65. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.js +2 -2
  66. package/build/dex/aave-v3-stata-v2/aave-v3-stata-v2.js.map +1 -1
  67. package/build/dex/aave-v3-stata-v2/config.js +31 -24
  68. package/build/dex/aave-v3-stata-v2/config.js.map +1 -1
  69. package/build/dex/aave-v3-stata-v2/types.d.ts +3 -2
  70. package/build/dex/aave-v3-stata-v2/types.js.map +1 -1
  71. package/build/dex/aave-v3-stata-v2/utils.d.ts +2 -2
  72. package/build/dex/aave-v3-stata-v2/utils.js +7 -6
  73. package/build/dex/aave-v3-stata-v2/utils.js.map +1 -1
  74. package/build/dex/balancer-v1/balancer-pools.json +33333 -0
  75. package/build/dex/bebop/websocket-fetcher.d.ts +35 -0
  76. package/build/dex/bebop/websocket-fetcher.js +87 -0
  77. package/build/dex/bebop/websocket-fetcher.js.map +1 -0
  78. package/build/dex/ekubo/config.d.ts +3 -0
  79. package/build/dex/ekubo/config.js +16 -0
  80. package/build/dex/ekubo/config.js.map +1 -0
  81. package/build/dex/ekubo/ekubo.d.ts +49 -0
  82. package/build/dex/ekubo/ekubo.js +419 -0
  83. package/build/dex/ekubo/ekubo.js.map +1 -0
  84. package/build/dex/ekubo/pools/base-pool.d.ts +47 -0
  85. package/build/dex/ekubo/pools/base-pool.js +184 -0
  86. package/build/dex/ekubo/pools/base-pool.js.map +1 -0
  87. package/build/dex/ekubo/pools/math/constants.d.ts +3 -0
  88. package/build/dex/ekubo/pools/math/constants.js +7 -0
  89. package/build/dex/ekubo/pools/math/constants.js.map +1 -0
  90. package/build/dex/ekubo/pools/math/delta.d.ts +2 -0
  91. package/build/dex/ekubo/pools/math/delta.js +51 -0
  92. package/build/dex/ekubo/pools/math/delta.js.map +1 -0
  93. package/build/dex/ekubo/pools/math/price.d.ts +7 -0
  94. package/build/dex/ekubo/pools/math/price.js +116 -0
  95. package/build/dex/ekubo/pools/math/price.js.map +1 -0
  96. package/build/dex/ekubo/pools/math/swap.d.ts +18 -0
  97. package/build/dex/ekubo/pools/math/swap.js +128 -0
  98. package/build/dex/ekubo/pools/math/swap.js.map +1 -0
  99. package/build/dex/ekubo/pools/math/tick.d.ts +7 -0
  100. package/build/dex/ekubo/pools/math/tick.js +112 -0
  101. package/build/dex/ekubo/pools/math/tick.js.map +1 -0
  102. package/build/dex/ekubo/pools/oracle-pool.d.ts +10 -0
  103. package/build/dex/ekubo/pools/oracle-pool.js +19 -0
  104. package/build/dex/ekubo/pools/oracle-pool.js.map +1 -0
  105. package/build/dex/ekubo/types.d.ts +88 -0
  106. package/build/dex/ekubo/types.js +238 -0
  107. package/build/dex/ekubo/types.js.map +1 -0
  108. package/build/dex/ekubo/utils.d.ts +6 -0
  109. package/build/dex/ekubo/utils.js +30 -0
  110. package/build/dex/ekubo/utils.js.map +1 -0
  111. package/build/dex/idle-dao/idle-dao-pool.d.ts +56 -0
  112. package/build/dex/idle-dao/idle-dao-pool.js +176 -0
  113. package/build/dex/idle-dao/idle-dao-pool.js.map +1 -0
  114. package/build/dex/idle-dao/idle-dao-pooling-pool.d.ts +16 -0
  115. package/build/dex/idle-dao/idle-dao-pooling-pool.js +57 -0
  116. package/build/dex/idle-dao/idle-dao-pooling-pool.js.map +1 -0
  117. package/build/dex/idle-dao/scripts.d.ts +9 -0
  118. package/build/dex/idle-dao/scripts.js +552 -0
  119. package/build/dex/idle-dao/scripts.js.map +1 -0
  120. package/build/dex/inception/config.d.ts +4 -0
  121. package/build/dex/inception/config.js +109 -0
  122. package/build/dex/inception/config.js.map +1 -0
  123. package/build/dex/inception/inception-event-pool.d.ts +16 -0
  124. package/build/dex/inception/inception-event-pool.js +51 -0
  125. package/build/dex/inception/inception-event-pool.js.map +1 -0
  126. package/build/dex/inception/inception-native.d.ts +43 -0
  127. package/build/dex/inception/inception-native.js +131 -0
  128. package/build/dex/inception/inception-native.js.map +1 -0
  129. package/build/dex/inception/inception-pool.d.ts +18 -0
  130. package/build/dex/inception/inception-pool.js +32 -0
  131. package/build/dex/inception/inception-pool.js.map +1 -0
  132. package/build/dex/inception/inception-price-feed.d.ts +19 -0
  133. package/build/dex/inception/inception-price-feed.js +51 -0
  134. package/build/dex/inception/inception-price-feed.js.map +1 -0
  135. package/build/dex/inception/inception.d.ts +43 -0
  136. package/build/dex/inception/inception.js +204 -0
  137. package/build/dex/inception/inception.js.map +1 -0
  138. package/build/dex/inception/tokens.d.ts +9 -0
  139. package/build/dex/inception/tokens.js +28 -0
  140. package/build/dex/inception/tokens.js.map +1 -0
  141. package/build/dex/inception/types.d.ts +22 -0
  142. package/build/dex/inception/types.js +3 -0
  143. package/build/dex/inception/types.js.map +1 -0
  144. package/build/dex/inception/utils.d.ts +6 -0
  145. package/build/dex/inception/utils.js +37 -0
  146. package/build/dex/inception/utils.js.map +1 -0
  147. package/build/dex/index.js +2 -0
  148. package/build/dex/index.js.map +1 -1
  149. package/build/dex/platypus/asset.d.ts +14 -0
  150. package/build/dex/platypus/asset.js +97 -0
  151. package/build/dex/platypus/asset.js.map +1 -0
  152. package/build/dex/platypus/config.d.ts +11 -0
  153. package/build/dex/platypus/config.js +69 -0
  154. package/build/dex/platypus/config.js.map +1 -0
  155. package/build/dex/platypus/platypus.d.ts +63 -0
  156. package/build/dex/platypus/platypus.js +473 -0
  157. package/build/dex/platypus/platypus.js.map +1 -0
  158. package/build/dex/platypus/pool-avax.d.ts +8 -0
  159. package/build/dex/platypus/pool-avax.js +54 -0
  160. package/build/dex/platypus/pool-avax.js.map +1 -0
  161. package/build/dex/platypus/pool-base.d.ts +19 -0
  162. package/build/dex/platypus/pool-base.js +86 -0
  163. package/build/dex/platypus/pool-base.js.map +1 -0
  164. package/build/dex/platypus/pool-pure.d.ts +8 -0
  165. package/build/dex/platypus/pool-pure.js +37 -0
  166. package/build/dex/platypus/pool-pure.js.map +1 -0
  167. package/build/dex/platypus/pool-subscriber.d.ts +14 -0
  168. package/build/dex/platypus/pool-subscriber.js +167 -0
  169. package/build/dex/platypus/pool-subscriber.js.map +1 -0
  170. package/build/dex/platypus/pool.d.ts +8 -0
  171. package/build/dex/platypus/pool.js +58 -0
  172. package/build/dex/platypus/pool.js.map +1 -0
  173. package/build/dex/platypus/types.d.ts +92 -0
  174. package/build/dex/platypus/types.js +10 -0
  175. package/build/dex/platypus/types.js.map +1 -0
  176. package/build/dex/quickswap/spiritswap-v3.d.ts +6 -0
  177. package/build/dex/quickswap/spiritswap-v3.js +19 -0
  178. package/build/dex/quickswap/spiritswap-v3.js.map +1 -0
  179. package/build/dex/smardex/config.d.ts +4 -0
  180. package/build/dex/smardex/config.js +64 -0
  181. package/build/dex/smardex/config.js.map +1 -0
  182. package/build/dex/smardex/constants.d.ts +18 -0
  183. package/build/dex/smardex/constants.js +33 -0
  184. package/build/dex/smardex/constants.js.map +1 -0
  185. package/build/dex/smardex/sdk/constants.d.ts +6 -0
  186. package/build/dex/smardex/sdk/constants.js +13 -0
  187. package/build/dex/smardex/sdk/constants.js.map +1 -0
  188. package/build/dex/smardex/sdk/core.d.ts +113 -0
  189. package/build/dex/smardex/sdk/core.js +499 -0
  190. package/build/dex/smardex/sdk/core.js.map +1 -0
  191. package/build/dex/smardex/sdk/errors.d.ts +15 -0
  192. package/build/dex/smardex/sdk/errors.js +22 -0
  193. package/build/dex/smardex/sdk/errors.js.map +1 -0
  194. package/build/dex/smardex/sdk/types.d.ts +62 -0
  195. package/build/dex/smardex/sdk/types.js +3 -0
  196. package/build/dex/smardex/sdk/types.js.map +1 -0
  197. package/build/dex/smardex/sdk/utils.d.ts +44 -0
  198. package/build/dex/smardex/sdk/utils.js +133 -0
  199. package/build/dex/smardex/sdk/utils.js.map +1 -0
  200. package/build/dex/smardex/smardex-event-pool.d.ts +28 -0
  201. package/build/dex/smardex/smardex-event-pool.js +119 -0
  202. package/build/dex/smardex/smardex-event-pool.js.map +1 -0
  203. package/build/dex/smardex/smardex.d.ts +65 -0
  204. package/build/dex/smardex/smardex.js +519 -0
  205. package/build/dex/smardex/smardex.js.map +1 -0
  206. package/build/dex/smardex/types.d.ts +55 -0
  207. package/build/dex/smardex/types.js +3 -0
  208. package/build/dex/smardex/types.js.map +1 -0
  209. package/build/dex/solidly/forks-override/cone.d.ts +22 -0
  210. package/build/dex/solidly/forks-override/cone.js +53 -0
  211. package/build/dex/solidly/forks-override/cone.js.map +1 -0
  212. package/build/dex/solidly/forks-override/solisnek.d.ts +8 -0
  213. package/build/dex/solidly/forks-override/solisnek.js +15 -0
  214. package/build/dex/solidly/forks-override/solisnek.js.map +1 -0
  215. package/build/dex/swaap-v1/config.d.ts +17 -0
  216. package/build/dex/swaap-v1/config.js +56 -0
  217. package/build/dex/swaap-v1/config.js.map +1 -0
  218. package/build/dex/swaap-v1/constants.d.ts +6 -0
  219. package/build/dex/swaap-v1/constants.js +17 -0
  220. package/build/dex/swaap-v1/constants.js.map +1 -0
  221. package/build/dex/swaap-v1/libraries/ChainlinkUtils.d.ts +25 -0
  222. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js +62 -0
  223. package/build/dex/swaap-v1/libraries/ChainlinkUtils.js.map +1 -0
  224. package/build/dex/swaap-v1/libraries/Const.d.ts +18 -0
  225. package/build/dex/swaap-v1/libraries/Const.js +26 -0
  226. package/build/dex/swaap-v1/libraries/Const.js.map +1 -0
  227. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.d.ts +77 -0
  228. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js +316 -0
  229. package/build/dex/swaap-v1/libraries/GeometricBrownianMotion.js.map +1 -0
  230. package/build/dex/swaap-v1/libraries/LogExpMath.d.ts +75 -0
  231. package/build/dex/swaap-v1/libraries/LogExpMath.js +418 -0
  232. package/build/dex/swaap-v1/libraries/LogExpMath.js.map +1 -0
  233. package/build/dex/swaap-v1/libraries/MathMMM.d.ts +185 -0
  234. package/build/dex/swaap-v1/libraries/MathMMM.js +453 -0
  235. package/build/dex/swaap-v1/libraries/MathMMM.js.map +1 -0
  236. package/build/dex/swaap-v1/libraries/Num.d.ts +31 -0
  237. package/build/dex/swaap-v1/libraries/Num.js +167 -0
  238. package/build/dex/swaap-v1/libraries/Num.js.map +1 -0
  239. package/build/dex/swaap-v1/libraries/PoolQuotations.d.ts +23 -0
  240. package/build/dex/swaap-v1/libraries/PoolQuotations.js +131 -0
  241. package/build/dex/swaap-v1/libraries/PoolQuotations.js.map +1 -0
  242. package/build/dex/swaap-v1/libraries/Struct.d.ts +56 -0
  243. package/build/dex/swaap-v1/libraries/Struct.js +3 -0
  244. package/build/dex/swaap-v1/libraries/Struct.js.map +1 -0
  245. package/build/dex/swaap-v1/swaap-v1-pool.d.ts +45 -0
  246. package/build/dex/swaap-v1/swaap-v1-pool.js +656 -0
  247. package/build/dex/swaap-v1/swaap-v1-pool.js.map +1 -0
  248. package/build/dex/swaap-v1/swaap-v1.d.ts +62 -0
  249. package/build/dex/swaap-v1/swaap-v1.js +379 -0
  250. package/build/dex/swaap-v1/swaap-v1.js.map +1 -0
  251. package/build/dex/swaap-v1/types.d.ts +106 -0
  252. package/build/dex/swaap-v1/types.js +9 -0
  253. package/build/dex/swaap-v1/types.js.map +1 -0
  254. package/build/dex/zerox/index.d.ts +1 -1
  255. package/build/dex/zerox/index.js.map +1 -1
  256. package/build/dex-helper/dummy-dex-helper.js +3 -0
  257. package/build/dex-helper/dummy-dex-helper.js.map +1 -1
  258. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +16 -0
  259. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +16 -0
  260. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +16 -0
  261. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +16 -0
  262. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-dai-usdc-eth.json +16 -0
  263. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-eth-usdc-dai.json +16 -0
  264. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +16 -0
  265. package/build/executor/fixtures/executor01/exchange-params/price-route-multiswap-sushiv3-usdt-usdc-dai.json +16 -0
  266. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-eth-usdc.json +9 -0
  267. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-eth.json +9 -0
  268. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-balancerv1-usdc-wbtc.json +9 -0
  269. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-eth-steth.json +9 -0
  270. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-steth-eth.json +9 -0
  271. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-curvev1-usdc-usdt.json +9 -0
  272. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-eth-usdc.json +9 -0
  273. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-eth.json +9 -0
  274. package/build/executor/fixtures/executor01/exchange-params/price-route-simpleSwap-univ3-usdc-usdt.json +9 -0
  275. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +12 -0
  276. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +7 -0
  277. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +7 -0
  278. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-dai-usdc-eth.json +7 -0
  279. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-eth-usdc-dai.json +7 -0
  280. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +12 -0
  281. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-eth-usdc.json +7 -0
  282. package/build/executor/fixtures/executor01/maybe-weth-calldata/price-route-simpleSwap-univ3-usdc-eth.json +7 -0
  283. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-curvev1-eth-usdc-gusd.json +78 -0
  284. package/build/executor/fixtures/executor01/routes/price-route-multiswap-balancerv1-sushiv3-wbtc-eth-sushi.json +81 -0
  285. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-eth-usdc-gusd.json +78 -0
  286. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-curvev1-gusd-usdc-eth.json +78 -0
  287. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-dai-usdc-eth.json +81 -0
  288. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-eth-usdc-dai.json +81 -0
  289. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdc-eth-wbtc.json +81 -0
  290. package/build/executor/fixtures/executor01/routes/price-route-multiswap-sushiv3-usdt-usdc-dai.json +81 -0
  291. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-eth-usdc.json +64 -0
  292. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-eth.json +85 -0
  293. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-balancerv1-usdc-wbtc.json +64 -0
  294. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-eth-steth.json +52 -0
  295. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-steth-eth.json +52 -0
  296. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-curvev1-usdc-usdt.json +52 -0
  297. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-eth-usdc.json +55 -0
  298. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-eth.json +55 -0
  299. package/build/executor/fixtures/executor01/routes/price-route-simpleSwap-univ3-usdc-usdt.json +55 -0
  300. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +23 -0
  301. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +37 -0
  302. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +23 -0
  303. package/build/executor/fixtures/executor02/exchange-params/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +23 -0
  304. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +51 -0
  305. package/build/executor/fixtures/executor02/exchange-params/price-route-multiswap-univ3-usdt-dai-eth.json +58 -0
  306. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +23 -0
  307. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +23 -0
  308. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +9 -0
  309. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +16 -0
  310. package/build/executor/fixtures/executor02/exchange-params/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +23 -0
  311. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +12 -0
  312. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +7 -0
  313. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +12 -0
  314. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +12 -0
  315. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +7 -0
  316. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-multiswap-univ3-usdt-dai-eth.json +7 -0
  317. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +7 -0
  318. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +7 -0
  319. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +7 -0
  320. package/build/executor/fixtures/executor02/maybe-weth-calldata/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +7 -0
  321. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-balancerv1-sushiv3-univ3-bal-eth-sushi.json +130 -0
  322. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-maverickv1-sushiv3-univ3-eth-usdc-mav.json +136 -0
  323. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-sushi-eth-wbtc.json +100 -0
  324. package/build/executor/fixtures/executor02/routes/price-route-multiSwap-univ3-sushiv3-wbtc-eth-sushi.json +100 -0
  325. package/build/executor/fixtures/executor02/routes/price-route-multiswap-curvev1-univ3-dai-usdc-eth.json +166 -0
  326. package/build/executor/fixtures/executor02/routes/price-route-multiswap-univ3-usdt-dai-eth.json +190 -0
  327. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-eth-usdc.json +114 -0
  328. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-balancerv1-usdc-eth.json +114 -0
  329. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-eth-sushi.json +55 -0
  330. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-sushiv3-univ3-sushi-eth.json +73 -0
  331. package/build/executor/fixtures/executor02/routes/price-route-simpleSwap-univ3-curvev1-usdt-dai.json +82 -0
  332. package/package.json +2 -2
  333. package/src/abi/ekubo/core.json +1266 -0
  334. package/src/abi/ekubo/data-fetcher.json +161 -0
  335. package/src/abi/ekubo/router.json +803 -0
  336. package/src/dex/aave-v3-stata/config.ts +8 -8
  337. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2-e2e.test.ts +5 -5
  338. package/src/dex/aave-v3-stata-v2/aave-v3-stata-v2.ts +2 -2
  339. package/src/dex/aave-v3-stata-v2/config.ts +31 -24
  340. package/src/dex/aave-v3-stata-v2/types.ts +3 -2
  341. package/src/dex/aave-v3-stata-v2/utils.ts +18 -10
  342. package/src/dex/ekubo/config.ts +15 -0
  343. package/src/dex/ekubo/ekubo-e2e.test.ts +124 -0
  344. package/src/dex/ekubo/ekubo-events.test.ts +209 -0
  345. package/src/dex/ekubo/ekubo-integration.test.ts +243 -0
  346. package/src/dex/ekubo/ekubo.ts +657 -0
  347. package/src/dex/ekubo/pools/base-pool.ts +267 -0
  348. package/src/dex/ekubo/pools/math/constants.ts +5 -0
  349. package/src/dex/ekubo/pools/math/delta.test.ts +131 -0
  350. package/src/dex/ekubo/pools/math/delta.ts +68 -0
  351. package/src/dex/ekubo/pools/math/price.test.ts +54 -0
  352. package/src/dex/ekubo/pools/math/price.ts +129 -0
  353. package/src/dex/ekubo/pools/math/swap.test.ts +215 -0
  354. package/src/dex/ekubo/pools/math/swap.ts +161 -0
  355. package/src/dex/ekubo/pools/math/tick.test.ts +72 -0
  356. package/src/dex/ekubo/pools/math/tick.ts +120 -0
  357. package/src/dex/ekubo/pools/oracle-pool.ts +46 -0
  358. package/src/dex/ekubo/types.test.ts +552 -0
  359. package/src/dex/ekubo/types.ts +408 -0
  360. package/src/dex/ekubo/utils.ts +34 -0
  361. package/src/dex/index.ts +2 -0
  362. package/src/dex-helper/dummy-dex-helper.ts +10 -0
  363. package/tests/constants-e2e.ts +15 -0
  364. package/tests/utils-e2e.ts +0 -1
  365. package/.idea/codeStyles/Project.xml +0 -59
  366. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  367. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  368. package/.idea/modules.xml +0 -8
  369. package/.idea/paraswap-dex-lib.iml +0 -12
  370. package/.idea/prettier.xml +0 -7
  371. package/.idea/vcs.xml +0 -6
  372. package/scripts/get-uniswap-v3-dexes.ts +0 -64
@@ -0,0 +1,552 @@
1
+ import { MAX_TICK, MIN_TICK } from './pools/math/tick';
2
+ import { PoolState, Tick } from './types';
3
+
4
+ const positiveLiquidity = 10n;
5
+
6
+ const checkedTickNumberBounds: [number, number] = [-2, 2];
7
+ const [minCheckedTickNumber, maxCheckedTickNumber] = checkedTickNumberBounds;
8
+ const [minCheckedTickUninitialized, maxCheckedTickUninitialized]: [Tick, Tick] =
9
+ [
10
+ {
11
+ number: minCheckedTickNumber,
12
+ liquidityDelta: 0n,
13
+ },
14
+ {
15
+ number: maxCheckedTickNumber,
16
+ liquidityDelta: 0n,
17
+ },
18
+ ];
19
+ const [betweenMinAndActiveTickNumber, betweenActiveAndMaxTickNumber] = [-1, 1];
20
+ const activeTickNumber = 0;
21
+
22
+ function poolState(
23
+ activeTickIndex: number | null,
24
+ liquidity: bigint,
25
+ sortedTicks: Tick[],
26
+ ): PoolState.Object {
27
+ return {
28
+ activeTick: activeTickNumber,
29
+ activeTickIndex,
30
+ checkedTicksBounds: checkedTickNumberBounds,
31
+ liquidity,
32
+ sortedTicks,
33
+ sqrtRatio: 0n, // Irrelevant for these tests
34
+ };
35
+ }
36
+
37
+ describe('addLiquidityCutoffs', () => {
38
+ test('empty ticks', () => {
39
+ const state = poolState(null, 0n, []);
40
+
41
+ PoolState.addLiquidityCutoffs(state);
42
+
43
+ expect(state.sortedTicks).toStrictEqual([
44
+ minCheckedTickUninitialized,
45
+ maxCheckedTickUninitialized,
46
+ ]);
47
+ expect(state.activeTickIndex).toStrictEqual(0);
48
+ });
49
+
50
+ describe('positive liquidity delta', () => {
51
+ const liquidityDelta = positiveLiquidity;
52
+
53
+ test('initialized active tick', () => {
54
+ const activeTickInitialized = {
55
+ number: activeTickNumber,
56
+ liquidityDelta,
57
+ };
58
+ const sortedTicks = [structuredClone(activeTickInitialized)];
59
+
60
+ const state = poolState(0, positiveLiquidity, sortedTicks);
61
+
62
+ PoolState.addLiquidityCutoffs(state);
63
+
64
+ expect(sortedTicks).toEqual([
65
+ minCheckedTickUninitialized,
66
+ activeTickInitialized,
67
+ {
68
+ number: maxCheckedTickNumber,
69
+ liquidityDelta: -liquidityDelta,
70
+ },
71
+ ]);
72
+ expect(state.activeTickIndex).toStrictEqual(1);
73
+ });
74
+
75
+ test('initialized minCheckedTick', () => {
76
+ const minCheckedTickInitialized = {
77
+ number: minCheckedTickNumber,
78
+ liquidityDelta: liquidityDelta,
79
+ };
80
+ const sortedTicks: Tick[] = [structuredClone(minCheckedTickInitialized)];
81
+
82
+ const state = poolState(0, liquidityDelta, sortedTicks);
83
+
84
+ PoolState.addLiquidityCutoffs(state);
85
+
86
+ expect(sortedTicks).toEqual([
87
+ minCheckedTickInitialized,
88
+ {
89
+ number: maxCheckedTickNumber,
90
+ liquidityDelta: -liquidityDelta,
91
+ },
92
+ ]);
93
+ expect(state.activeTickIndex).toStrictEqual(0);
94
+ });
95
+
96
+ test('initialized maxCheckedTick', () => {
97
+ const maxCheckedTickInitialized = {
98
+ number: maxCheckedTickNumber,
99
+ liquidityDelta: liquidityDelta,
100
+ };
101
+ const sortedTicks: Tick[] = [maxCheckedTickInitialized];
102
+
103
+ const state = poolState(null, 0n, sortedTicks);
104
+
105
+ PoolState.addLiquidityCutoffs(state);
106
+
107
+ expect(sortedTicks).toEqual([
108
+ minCheckedTickUninitialized,
109
+ maxCheckedTickUninitialized,
110
+ ]);
111
+ expect(state.activeTickIndex).toStrictEqual(0);
112
+ });
113
+
114
+ test('initialized minCheckedTick < tick < activeTick', () => {
115
+ const tickInitialized = {
116
+ number: betweenMinAndActiveTickNumber,
117
+ liquidityDelta: liquidityDelta,
118
+ };
119
+ const sortedTicks: Tick[] = [structuredClone(tickInitialized)];
120
+
121
+ const state = poolState(0, liquidityDelta, sortedTicks);
122
+
123
+ PoolState.addLiquidityCutoffs(state);
124
+
125
+ expect(sortedTicks).toEqual([
126
+ minCheckedTickUninitialized,
127
+ tickInitialized,
128
+ {
129
+ number: maxCheckedTickNumber,
130
+ liquidityDelta: -liquidityDelta,
131
+ },
132
+ ]);
133
+ expect(state.activeTickIndex).toStrictEqual(1);
134
+ });
135
+
136
+ test('initialized activeTick < tick < maxCheckedTick', () => {
137
+ const tickInitialized = {
138
+ number: betweenActiveAndMaxTickNumber,
139
+ liquidityDelta: liquidityDelta,
140
+ };
141
+ const sortedTicks: Tick[] = [structuredClone(tickInitialized)];
142
+
143
+ const state = poolState(null, 0n, sortedTicks);
144
+
145
+ PoolState.addLiquidityCutoffs(state);
146
+
147
+ expect(sortedTicks).toEqual([
148
+ minCheckedTickUninitialized,
149
+ tickInitialized,
150
+ {
151
+ number: maxCheckedTickNumber,
152
+ liquidityDelta: -liquidityDelta,
153
+ },
154
+ ]);
155
+ expect(state.activeTickIndex).toStrictEqual(0);
156
+ });
157
+ });
158
+
159
+ describe('negative liquidity delta', () => {
160
+ const liquidityDelta = -positiveLiquidity;
161
+
162
+ test('initialized active tick', () => {
163
+ const activeTickInitialized = {
164
+ number: activeTickNumber,
165
+ liquidityDelta: liquidityDelta,
166
+ };
167
+ const sortedTicks: Tick[] = [structuredClone(activeTickInitialized)];
168
+
169
+ const state = poolState(0, 0n, sortedTicks);
170
+
171
+ PoolState.addLiquidityCutoffs(state);
172
+
173
+ expect(sortedTicks).toEqual([
174
+ {
175
+ number: minCheckedTickNumber,
176
+ liquidityDelta: -liquidityDelta,
177
+ },
178
+ activeTickInitialized,
179
+ maxCheckedTickUninitialized,
180
+ ]);
181
+ expect(state.activeTickIndex).toStrictEqual(1);
182
+ });
183
+
184
+ test('initialized minCheckedTick', () => {
185
+ const minCheckedTickInitialized = {
186
+ number: minCheckedTickNumber,
187
+ liquidityDelta: liquidityDelta,
188
+ };
189
+ const sortedTicks: Tick[] = [structuredClone(minCheckedTickInitialized)];
190
+
191
+ const state = poolState(0, 0n, sortedTicks);
192
+
193
+ PoolState.addLiquidityCutoffs(state);
194
+
195
+ expect(sortedTicks).toEqual([
196
+ minCheckedTickUninitialized,
197
+ maxCheckedTickUninitialized,
198
+ ]);
199
+ expect(state.activeTickIndex).toStrictEqual(0);
200
+ });
201
+
202
+ test('initialized maxCheckedTick', () => {
203
+ const maxCheckedTickInitialized = {
204
+ number: maxCheckedTickNumber,
205
+ liquidityDelta: liquidityDelta,
206
+ };
207
+ const sortedTicks: Tick[] = [structuredClone(maxCheckedTickInitialized)];
208
+
209
+ const state = poolState(null, -liquidityDelta, sortedTicks);
210
+
211
+ PoolState.addLiquidityCutoffs(state);
212
+
213
+ expect(sortedTicks).toEqual([
214
+ {
215
+ number: minCheckedTickNumber,
216
+ liquidityDelta: -liquidityDelta,
217
+ },
218
+ maxCheckedTickInitialized,
219
+ ]);
220
+ expect(state.activeTickIndex).toStrictEqual(0);
221
+ });
222
+
223
+ test('initialized minCheckedTick < tick < activeTick', () => {
224
+ const tickInitialized = {
225
+ number: betweenMinAndActiveTickNumber,
226
+ liquidityDelta: liquidityDelta,
227
+ };
228
+ const sortedTicks: Tick[] = [structuredClone(tickInitialized)];
229
+
230
+ const state = poolState(0, 0n, sortedTicks);
231
+
232
+ PoolState.addLiquidityCutoffs(state);
233
+
234
+ expect(sortedTicks).toEqual([
235
+ {
236
+ number: minCheckedTickNumber,
237
+ liquidityDelta: -liquidityDelta,
238
+ },
239
+ tickInitialized,
240
+ maxCheckedTickUninitialized,
241
+ ]);
242
+ expect(state.activeTickIndex).toStrictEqual(1);
243
+ });
244
+
245
+ test('initialized activeTick < tick < maxCheckedTick', () => {
246
+ const tickInitialized = {
247
+ number: betweenActiveAndMaxTickNumber,
248
+ liquidityDelta: liquidityDelta,
249
+ };
250
+ const sortedTicks: Tick[] = [structuredClone(tickInitialized)];
251
+
252
+ const state = poolState(null, -liquidityDelta, sortedTicks);
253
+
254
+ PoolState.addLiquidityCutoffs(state);
255
+
256
+ expect(sortedTicks).toEqual([
257
+ {
258
+ number: minCheckedTickNumber,
259
+ liquidityDelta: -liquidityDelta,
260
+ },
261
+ tickInitialized,
262
+ maxCheckedTickUninitialized,
263
+ ]);
264
+ expect(state.activeTickIndex).toStrictEqual(0);
265
+ });
266
+ });
267
+ });
268
+
269
+ describe('fromPositionUpdatedEvent', () => {
270
+ describe('empty ticks', () => {
271
+ const stateBefore = poolState(0, 0n, [
272
+ minCheckedTickUninitialized,
273
+ maxCheckedTickUninitialized,
274
+ ]);
275
+
276
+ test('between checked bounds', () => {
277
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
278
+ stateBefore,
279
+ [betweenMinAndActiveTickNumber, betweenActiveAndMaxTickNumber],
280
+ positiveLiquidity,
281
+ );
282
+
283
+ expect(stateAfter?.sortedTicks).toEqual([
284
+ minCheckedTickUninitialized,
285
+ {
286
+ number: betweenMinAndActiveTickNumber,
287
+ liquidityDelta: positiveLiquidity,
288
+ },
289
+ {
290
+ number: betweenActiveAndMaxTickNumber,
291
+ liquidityDelta: -positiveLiquidity,
292
+ },
293
+ maxCheckedTickUninitialized,
294
+ ]);
295
+ expect(stateAfter?.activeTickIndex).toStrictEqual(1);
296
+ expect(stateAfter?.liquidity).toStrictEqual(positiveLiquidity);
297
+ });
298
+
299
+ test('upper in checked bounds', () => {
300
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
301
+ stateBefore,
302
+ [MIN_TICK, betweenActiveAndMaxTickNumber],
303
+ positiveLiquidity,
304
+ );
305
+
306
+ expect(stateAfter?.sortedTicks).toEqual([
307
+ {
308
+ number: minCheckedTickNumber,
309
+ liquidityDelta: positiveLiquidity,
310
+ },
311
+ {
312
+ number: betweenActiveAndMaxTickNumber,
313
+ liquidityDelta: -positiveLiquidity,
314
+ },
315
+ maxCheckedTickUninitialized,
316
+ ]);
317
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
318
+ expect(stateAfter?.liquidity).toStrictEqual(positiveLiquidity);
319
+ });
320
+
321
+ test('lower in checked bounds', () => {
322
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
323
+ stateBefore,
324
+ [betweenMinAndActiveTickNumber, MAX_TICK],
325
+ positiveLiquidity,
326
+ );
327
+
328
+ expect(stateAfter?.sortedTicks).toEqual([
329
+ minCheckedTickUninitialized,
330
+ {
331
+ number: betweenMinAndActiveTickNumber,
332
+ liquidityDelta: positiveLiquidity,
333
+ },
334
+ {
335
+ number: maxCheckedTickNumber,
336
+ liquidityDelta: -positiveLiquidity,
337
+ },
338
+ ]);
339
+ expect(stateAfter?.activeTickIndex).toStrictEqual(1);
340
+ expect(stateAfter?.liquidity).toStrictEqual(positiveLiquidity);
341
+ });
342
+
343
+ test('below checked bounds', () => {
344
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
345
+ stateBefore,
346
+ [MIN_TICK, MIN_TICK + 1],
347
+ positiveLiquidity,
348
+ );
349
+
350
+ expect(stateAfter?.sortedTicks).toEqual([
351
+ minCheckedTickUninitialized,
352
+ maxCheckedTickUninitialized,
353
+ ]);
354
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
355
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
356
+ });
357
+
358
+ test('above checked bounds', () => {
359
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
360
+ stateBefore,
361
+ [MAX_TICK - 1, MAX_TICK],
362
+ positiveLiquidity,
363
+ );
364
+
365
+ expect(stateAfter?.sortedTicks).toEqual([
366
+ minCheckedTickUninitialized,
367
+ maxCheckedTickUninitialized,
368
+ ]);
369
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
370
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
371
+ });
372
+
373
+ test('referenced lower bound', () => {
374
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
375
+ stateBefore,
376
+ [MIN_TICK, minCheckedTickNumber],
377
+ positiveLiquidity,
378
+ );
379
+
380
+ expect(stateAfter?.sortedTicks).toEqual([
381
+ minCheckedTickUninitialized,
382
+ maxCheckedTickUninitialized,
383
+ ]);
384
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
385
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
386
+ });
387
+
388
+ test('referenced upper bound', () => {
389
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
390
+ stateBefore,
391
+ [maxCheckedTickNumber, MAX_TICK],
392
+ positiveLiquidity,
393
+ );
394
+
395
+ expect(stateAfter?.sortedTicks).toEqual([
396
+ minCheckedTickUninitialized,
397
+ maxCheckedTickUninitialized,
398
+ ]);
399
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
400
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
401
+ });
402
+ });
403
+
404
+ describe('active tick initialized', () => {
405
+ const stateBefore = poolState(1, positiveLiquidity, [
406
+ minCheckedTickUninitialized,
407
+ {
408
+ number: activeTickNumber,
409
+ liquidityDelta: positiveLiquidity,
410
+ },
411
+ {
412
+ number: maxCheckedTickNumber,
413
+ liquidityDelta: -positiveLiquidity,
414
+ },
415
+ ]);
416
+
417
+ test('modify delta', () => {
418
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
419
+ stateBefore,
420
+ [activeTickNumber, MAX_TICK],
421
+ -positiveLiquidity / 2n,
422
+ );
423
+
424
+ expect(stateAfter?.sortedTicks).toEqual([
425
+ minCheckedTickUninitialized,
426
+ {
427
+ number: activeTickNumber,
428
+ liquidityDelta: positiveLiquidity / 2n,
429
+ },
430
+ {
431
+ number: maxCheckedTickNumber,
432
+ liquidityDelta: -positiveLiquidity / 2n,
433
+ },
434
+ ]);
435
+ expect(stateAfter?.activeTickIndex).toStrictEqual(1);
436
+ expect(stateAfter?.liquidity).toStrictEqual(positiveLiquidity / 2n);
437
+ });
438
+
439
+ test('close position', () => {
440
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
441
+ stateBefore,
442
+ [activeTickNumber, MAX_TICK],
443
+ -positiveLiquidity,
444
+ );
445
+
446
+ expect(stateAfter?.sortedTicks).toEqual([
447
+ minCheckedTickUninitialized,
448
+ maxCheckedTickUninitialized,
449
+ ]);
450
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
451
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
452
+ });
453
+ });
454
+
455
+ describe('minCheckedTick initialized', () => {
456
+ const stateBefore = poolState(0, positiveLiquidity, [
457
+ {
458
+ number: minCheckedTickNumber,
459
+ liquidityDelta: positiveLiquidity,
460
+ },
461
+ {
462
+ number: maxCheckedTickNumber,
463
+ liquidityDelta: -positiveLiquidity,
464
+ },
465
+ ]);
466
+
467
+ test('modify delta', () => {
468
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
469
+ stateBefore,
470
+ [minCheckedTickNumber, MAX_TICK],
471
+ -positiveLiquidity / 2n,
472
+ );
473
+
474
+ expect(stateAfter?.sortedTicks).toEqual([
475
+ {
476
+ number: minCheckedTickNumber,
477
+ liquidityDelta: positiveLiquidity / 2n,
478
+ },
479
+ {
480
+ number: maxCheckedTickNumber,
481
+ liquidityDelta: -positiveLiquidity / 2n,
482
+ },
483
+ ]);
484
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
485
+ expect(stateAfter?.liquidity).toStrictEqual(positiveLiquidity / 2n);
486
+ });
487
+
488
+ test('close position', () => {
489
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
490
+ stateBefore,
491
+ [minCheckedTickNumber, MAX_TICK],
492
+ -positiveLiquidity,
493
+ );
494
+
495
+ expect(stateAfter?.sortedTicks).toEqual([
496
+ minCheckedTickUninitialized,
497
+ maxCheckedTickUninitialized,
498
+ ]);
499
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
500
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
501
+ });
502
+ });
503
+
504
+ describe('maxCheckedTick initialized', () => {
505
+ const stateBefore = poolState(0, positiveLiquidity, [
506
+ {
507
+ number: minCheckedTickNumber,
508
+ liquidityDelta: positiveLiquidity,
509
+ },
510
+ {
511
+ number: maxCheckedTickNumber,
512
+ liquidityDelta: -positiveLiquidity,
513
+ },
514
+ ]);
515
+
516
+ test('modify delta', () => {
517
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
518
+ stateBefore,
519
+ [MIN_TICK, maxCheckedTickNumber],
520
+ -positiveLiquidity / 2n,
521
+ );
522
+
523
+ expect(stateAfter?.sortedTicks).toEqual([
524
+ {
525
+ number: minCheckedTickNumber,
526
+ liquidityDelta: positiveLiquidity / 2n,
527
+ },
528
+ {
529
+ number: maxCheckedTickNumber,
530
+ liquidityDelta: -positiveLiquidity / 2n,
531
+ },
532
+ ]);
533
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
534
+ expect(stateAfter?.liquidity).toStrictEqual(positiveLiquidity / 2n);
535
+ });
536
+
537
+ test('close position', () => {
538
+ const stateAfter = PoolState.fromPositionUpdatedEvent(
539
+ stateBefore,
540
+ [MIN_TICK, maxCheckedTickNumber],
541
+ -positiveLiquidity,
542
+ );
543
+
544
+ expect(stateAfter?.sortedTicks).toEqual([
545
+ minCheckedTickUninitialized,
546
+ maxCheckedTickUninitialized,
547
+ ]);
548
+ expect(stateAfter?.activeTickIndex).toStrictEqual(0);
549
+ expect(stateAfter?.liquidity).toStrictEqual(0n);
550
+ });
551
+ });
552
+ });