@paraswap/dex-lib 3.6.1 → 3.6.2

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 (281) hide show
  1. package/.vscode/launch.json +53 -0
  2. package/.vscode/settings.json +2 -0
  3. package/.vscode/tasks.json +15 -0
  4. package/build/abi/maverick-v2/MaverickV2Pool.json +1234 -0
  5. package/build/abi/maverick-v2/MaverickV2PoolLens.json +1232 -0
  6. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  7. package/build/abi/{integral/relayer.json → wombat/pool.json} +587 -446
  8. package/build/dex/maker-psm/maker-psm.js +1 -1
  9. package/build/dex/maker-psm/maker-psm.js.map +1 -1
  10. package/build/dex/maker-psm/scripts/gem.abi.json +136 -0
  11. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  12. package/build/dex/maker-psm/scripts/validate-state.js +185 -0
  13. package/build/dex/maker-psm/scripts/validate-state.js.map +1 -0
  14. package/build/dex/maker-psm/scripts/vat.abi.json +243 -0
  15. package/build/dex/maverick-v2/config.d.ts +6 -0
  16. package/build/dex/maverick-v2/config.js +21 -0
  17. package/build/dex/maverick-v2/config.js.map +1 -0
  18. package/build/dex/maverick-v2/maverick-math/maverick-basic-math.d.ts +24 -0
  19. package/build/dex/maverick-v2/maverick-math/maverick-basic-math.js +117 -0
  20. package/build/dex/maverick-v2/maverick-math/maverick-basic-math.js.map +1 -0
  21. package/build/dex/maverick-v2/maverick-math/maverick-bin-math.d.ts +17 -0
  22. package/build/dex/maverick-v2/maverick-math/maverick-bin-math.js +114 -0
  23. package/build/dex/maverick-v2/maverick-math/maverick-bin-math.js.map +1 -0
  24. package/build/dex/maverick-v2/maverick-math/maverick-delta-math.d.ts +19 -0
  25. package/build/dex/maverick-v2/maverick-math/maverick-delta-math.js +20 -0
  26. package/build/dex/maverick-v2/maverick-math/maverick-delta-math.js.map +1 -0
  27. package/build/dex/maverick-v2/maverick-math/maverick-math.d.ts +5 -0
  28. package/build/dex/maverick-v2/maverick-math/maverick-math.js +33 -0
  29. package/build/dex/maverick-v2/maverick-math/maverick-math.js.map +1 -0
  30. package/build/dex/maverick-v2/maverick-math/maverick-pool-lib.d.ts +6 -0
  31. package/build/dex/maverick-v2/maverick-math/maverick-pool-lib.js +24 -0
  32. package/build/dex/maverick-v2/maverick-math/maverick-pool-lib.js.map +1 -0
  33. package/build/dex/maverick-v2/maverick-math/maverick-pool-math.d.ts +37 -0
  34. package/build/dex/maverick-v2/maverick-math/maverick-pool-math.js +440 -0
  35. package/build/dex/maverick-v2/maverick-math/maverick-pool-math.js.map +1 -0
  36. package/build/dex/maverick-v2/maverick-math/maverick-swap-math.d.ts +9 -0
  37. package/build/dex/maverick-v2/maverick-math/maverick-swap-math.js +102 -0
  38. package/build/dex/maverick-v2/maverick-math/maverick-swap-math.js.map +1 -0
  39. package/build/dex/maverick-v2/maverick-math/maverick-tick-math.d.ts +8 -0
  40. package/build/dex/maverick-v2/maverick-math/maverick-tick-math.js +109 -0
  41. package/build/dex/maverick-v2/maverick-math/maverick-tick-math.js.map +1 -0
  42. package/build/dex/maverick-v2/maverick-math/maverick-twa-math.d.ts +7 -0
  43. package/build/dex/maverick-v2/maverick-math/maverick-twa-math.js +35 -0
  44. package/build/dex/maverick-v2/maverick-math/maverick-twa-math.js.map +1 -0
  45. package/build/dex/maverick-v2/maverick-v2-pool.d.ts +57 -0
  46. package/build/dex/maverick-v2/maverick-v2-pool.js +184 -0
  47. package/build/dex/maverick-v2/maverick-v2-pool.js.map +1 -0
  48. package/build/dex/maverick-v2/maverick-v2.d.ts +47 -0
  49. package/build/dex/maverick-v2/maverick-v2.js +294 -0
  50. package/build/dex/maverick-v2/maverick-v2.js.map +1 -0
  51. package/build/dex/maverick-v2/types.d.ts +144 -0
  52. package/build/dex/{woo-fi → maverick-v2}/types.js.map +1 -1
  53. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +1 -0
  54. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +53 -0
  55. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +1 -0
  56. package/build/dex/stable-pool.js +1 -8
  57. package/build/dex/stable-pool.js.map +1 -1
  58. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +17 -0
  59. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +64 -0
  60. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +1 -0
  61. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  62. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +79 -0
  63. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  64. package/package.json +1 -1
  65. package/src/dex/maker-psm/maker-psm.ts +2 -3
  66. package/src/dex/maker-psm/scripts/gem.abi.json +136 -0
  67. package/src/dex/maker-psm/scripts/validate-state.ts +221 -0
  68. package/src/dex/maker-psm/scripts/vat.abi.json +243 -0
  69. package/.idea/aws.xml +0 -17
  70. package/.idea/codeStyles/Project.xml +0 -19
  71. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  72. package/.idea/misc.xml +0 -6
  73. package/.idea/modules.xml +0 -8
  74. package/.idea/paraswap-dex-lib.iml +0 -9
  75. package/.idea/prettier.xml +0 -7
  76. package/.idea/vcs.xml +0 -6
  77. package/build/abi/AugustusV6.abi.json +0 -395
  78. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  79. package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
  80. package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
  81. package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
  82. package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
  83. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  84. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3QuoterV2.abi.json +0 -285
  85. package/build/abi/uniswap-v3/pancakeswap-v3/PancakeswapV3Router.abi.json +0 -583
  86. package/build/abi/wBETH.json +0 -1527
  87. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  88. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  89. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  90. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  91. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  92. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  93. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  94. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  95. package/build/dex/algebra/algebra-pool.d.ts +0 -114
  96. package/build/dex/algebra/algebra-pool.js +0 -448
  97. package/build/dex/algebra/algebra-pool.js.map +0 -1
  98. package/build/dex/balancer-v2/Gyro3Pool.d.ts +0 -43
  99. package/build/dex/balancer-v2/Gyro3Pool.js +0 -160
  100. package/build/dex/balancer-v2/Gyro3Pool.js.map +0 -1
  101. package/build/dex/balancer-v2/LinearMath.d.ts +0 -88
  102. package/build/dex/balancer-v2/LinearMath.js +0 -285
  103. package/build/dex/balancer-v2/LinearMath.js.map +0 -1
  104. package/build/dex/balancer-v2/LinearPool.d.ts +0 -81
  105. package/build/dex/balancer-v2/LinearPool.js +0 -444
  106. package/build/dex/balancer-v2/LinearPool.js.map +0 -1
  107. package/build/dex/balancer-v2/PhantomStablePool.d.ts +0 -90
  108. package/build/dex/balancer-v2/PhantomStablePool.js +0 -418
  109. package/build/dex/balancer-v2/PhantomStablePool.js.map +0 -1
  110. package/build/dex/balancer-v2/StableMath.d.ts +0 -9
  111. package/build/dex/balancer-v2/StableMath.js +0 -272
  112. package/build/dex/balancer-v2/StableMath.js.map +0 -1
  113. package/build/dex/balancer-v2/balancer-v2-pool.d.ts +0 -140
  114. package/build/dex/balancer-v2/balancer-v2-pool.js +0 -647
  115. package/build/dex/balancer-v2/balancer-v2-pool.js.map +0 -1
  116. package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
  117. package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
  118. package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
  119. package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
  120. package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
  121. package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
  122. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.d.ts +0 -4
  123. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js +0 -80
  124. package/build/dex/curve-v1-factory/price-handlers/functions/get_dx.js.map +0 -1
  125. package/build/dex/curve-v1-stable-ng/config.d.ts +0 -5
  126. package/build/dex/curve-v1-stable-ng/config.js +0 -268
  127. package/build/dex/curve-v1-stable-ng/config.js.map +0 -1
  128. package/build/dex/curve-v1-stable-ng/curve-v1-stable-ng.d.ts +0 -18
  129. package/build/dex/curve-v1-stable-ng/curve-v1-stable-ng.js +0 -23
  130. package/build/dex/curve-v1-stable-ng/curve-v1-stable-ng.js.map +0 -1
  131. package/build/dex/integral/config.d.ts +0 -4
  132. package/build/dex/integral/config.js +0 -18
  133. package/build/dex/integral/config.js.map +0 -1
  134. package/build/dex/integral/integral-pool.d.ts +0 -39
  135. package/build/dex/integral/integral-pool.js +0 -67
  136. package/build/dex/integral/integral-pool.js.map +0 -1
  137. package/build/dex/integral/integral.d.ts +0 -48
  138. package/build/dex/integral/integral.js +0 -402
  139. package/build/dex/integral/integral.js.map +0 -1
  140. package/build/dex/integral/types.d.ts +0 -25
  141. package/build/dex/integral/types.js +0 -9
  142. package/build/dex/integral/types.js.map +0 -1
  143. package/build/dex/lighter-v1/abi/erc20.json +0 -222
  144. package/build/dex/lighter-v1/abi/factory.json +0 -291
  145. package/build/dex/lighter-v1/abi/order_book.json +0 -594
  146. package/build/dex/lighter-v1/abi/order_book_helper.json +0 -176
  147. package/build/dex/lighter-v1/abi/router.json +0 -488
  148. package/build/dex/lighter-v1/config.d.ts +0 -4
  149. package/build/dex/lighter-v1/config.js +0 -17
  150. package/build/dex/lighter-v1/config.js.map +0 -1
  151. package/build/dex/lighter-v1/constants.d.ts +0 -2
  152. package/build/dex/lighter-v1/constants.js +0 -13
  153. package/build/dex/lighter-v1/constants.js.map +0 -1
  154. package/build/dex/lighter-v1/lighter-v1-pool.d.ts +0 -57
  155. package/build/dex/lighter-v1/lighter-v1-pool.js +0 -310
  156. package/build/dex/lighter-v1/lighter-v1-pool.js.map +0 -1
  157. package/build/dex/lighter-v1/lighter-v1.d.ts +0 -45
  158. package/build/dex/lighter-v1/lighter-v1.js +0 -331
  159. package/build/dex/lighter-v1/lighter-v1.js.map +0 -1
  160. package/build/dex/lighter-v1/types.d.ts +0 -40
  161. package/build/dex/lighter-v1/types.js.map +0 -1
  162. package/build/dex/pancakeswap-v3/types.d.ts +0 -14
  163. package/build/dex/pancakeswap-v3/types.js +0 -3
  164. package/build/dex/pancakeswap-v3/types.js.map +0 -1
  165. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  166. package/build/dex/quickswap/camelot-v3.js +0 -19
  167. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  168. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  169. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  170. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  171. package/build/dex/quickswap-v3.d.ts +0 -21
  172. package/build/dex/quickswap-v3.js +0 -40
  173. package/build/dex/quickswap-v3.js.map +0 -1
  174. package/build/dex/ramses-v2/config.d.ts +0 -4
  175. package/build/dex/ramses-v2/config.js +0 -28
  176. package/build/dex/ramses-v2/config.js.map +0 -1
  177. package/build/dex/ramses-v2/constants.d.ts +0 -28
  178. package/build/dex/ramses-v2/constants.js +0 -35
  179. package/build/dex/ramses-v2/constants.js.map +0 -1
  180. package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
  181. package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
  182. package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
  183. package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
  184. package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
  185. package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
  186. package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
  187. package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
  188. package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
  189. package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
  190. package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
  191. package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
  192. package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
  193. package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
  194. package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
  195. package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
  196. package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
  197. package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
  198. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
  199. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
  200. package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
  201. package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
  202. package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
  203. package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
  204. package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
  205. package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
  206. package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
  207. package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
  208. package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
  209. package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
  210. package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
  211. package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
  212. package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
  213. package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
  214. package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
  215. package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
  216. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
  217. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
  218. package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
  219. package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
  220. package/build/dex/ramses-v2/contract-math/utils.js +0 -16
  221. package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
  222. package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
  223. package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
  224. package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
  225. package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
  226. package/build/dex/ramses-v2/ramses-v2.js +0 -690
  227. package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
  228. package/build/dex/ramses-v2/types.d.ts +0 -154
  229. package/build/dex/ramses-v2/types.js +0 -9
  230. package/build/dex/ramses-v2/types.js.map +0 -1
  231. package/build/dex/ramses-v2/utils.d.ts +0 -6
  232. package/build/dex/ramses-v2/utils.js +0 -71
  233. package/build/dex/ramses-v2/utils.js.map +0 -1
  234. package/build/dex/solidly/forks-override/fvm.d.ts +0 -20
  235. package/build/dex/solidly/forks-override/fvm.js +0 -42
  236. package/build/dex/solidly/forks-override/fvm.js.map +0 -1
  237. package/build/dex/sushiswap-v3/config.d.ts +0 -4
  238. package/build/dex/sushiswap-v3/config.js +0 -132
  239. package/build/dex/sushiswap-v3/config.js.map +0 -1
  240. package/build/dex/sushiswap-v3/constants.d.ts +0 -4
  241. package/build/dex/sushiswap-v3/constants.js +0 -32
  242. package/build/dex/sushiswap-v3/constants.js.map +0 -1
  243. package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
  244. package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
  245. package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
  246. package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
  247. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
  248. package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
  249. package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
  250. package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
  251. package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
  252. package/build/dex/sushiswap-v3/token.d.ts +0 -6
  253. package/build/dex/sushiswap-v3/token.js +0 -23
  254. package/build/dex/sushiswap-v3/token.js.map +0 -1
  255. package/build/dex/sushiswap-v3/types.d.ts +0 -15
  256. package/build/dex/sushiswap-v3/types.js +0 -18
  257. package/build/dex/sushiswap-v3/types.js.map +0 -1
  258. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.d.ts +0 -12
  259. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js +0 -23
  260. package/build/dex/uniswap-v3/forks/pancakeswap-v3/pancakeswap-v3.js.map +0 -1
  261. package/build/dex/woo-fi/config.d.ts +0 -4
  262. package/build/dex/woo-fi/config.js +0 -141
  263. package/build/dex/woo-fi/config.js.map +0 -1
  264. package/build/dex/woo-fi/constants.d.ts +0 -5
  265. package/build/dex/woo-fi/constants.js +0 -20
  266. package/build/dex/woo-fi/constants.js.map +0 -1
  267. package/build/dex/woo-fi/types.d.ts +0 -48
  268. package/build/dex/woo-fi/types.js +0 -3
  269. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  270. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  271. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  272. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  273. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  274. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  275. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  276. package/build/dex/woo-fi/woo-fi.js +0 -480
  277. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  278. package/build/executor/IExecutorBytecodeBuilder.d.ts +0 -6
  279. package/build/executor/IExecutorBytecodeBuilder.js +0 -3
  280. package/build/executor/IExecutorBytecodeBuilder.js.map +0 -1
  281. /package/build/dex/{lighter-v1 → maverick-v2}/types.js +0 -0
@@ -1,114 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { DeepReadonly } from 'ts-essentials';
3
- import { Address, BlockHeader, Log, Logger } from '../../types';
4
- import {
5
- InitializeStateOptions,
6
- StatefulEventSubscriber,
7
- } from '../../stateful-event-subscriber';
8
- import { IDexHelper } from '../../dex-helper/idex-helper';
9
- import { PoolState } from './types';
10
- import { Contract } from 'web3-eth-contract';
11
- import { DecodedStateMultiCallResultWithRelativeBitmaps } from './types';
12
- export declare class AlgebraEventPool extends StatefulEventSubscriber<PoolState> {
13
- readonly dexHelper: IDexHelper;
14
- readonly stateMultiContract: Contract;
15
- readonly erc20Interface: Interface;
16
- protected readonly factoryAddress: Address;
17
- readonly poolInitCodeHash: string;
18
- readonly poolDeployer: string;
19
- handlers: {
20
- [event: string]: (
21
- event: any,
22
- state: DeepReadonly<PoolState>,
23
- log: Readonly<Log>,
24
- blockHeader: BlockHeader,
25
- ) => DeepReadonly<PoolState> | null;
26
- };
27
- logDecoder: (log: Log) => any;
28
- addressesSubscribed: string[];
29
- private _poolAddress?;
30
- readonly token0: Address;
31
- readonly token1: Address;
32
- readonly poolIface: Interface;
33
- initFailed: boolean;
34
- initRetryAttemptCount: number;
35
- constructor(
36
- dexHelper: IDexHelper,
37
- parentName: string,
38
- stateMultiContract: Contract,
39
- erc20Interface: Interface,
40
- factoryAddress: Address,
41
- token0: Address,
42
- token1: Address,
43
- logger: Logger,
44
- mapKey: string | undefined,
45
- poolInitCodeHash: string,
46
- poolDeployer: string,
47
- );
48
- get poolAddress(): Address;
49
- set poolAddress(address: Address);
50
- initialize(
51
- blockNumber: number,
52
- options?: InitializeStateOptions<PoolState>,
53
- ): Promise<void>;
54
- protected processBlockLogs(
55
- state: DeepReadonly<PoolState>,
56
- logs: Readonly<Log>[],
57
- blockHeader: Readonly<BlockHeader>,
58
- ): Promise<DeepReadonly<PoolState> | null>;
59
- protected processLog(
60
- state: DeepReadonly<PoolState>,
61
- log: Readonly<Log>,
62
- blockHeader: Readonly<BlockHeader>,
63
- ): DeepReadonly<PoolState> | null;
64
- getBitmapRangeToRequest(): bigint;
65
- private _fetchPoolStateSingleStep;
66
- private _fetchPoolStateMultiStep;
67
- _fetchInitStateMultiStrategies(
68
- blockNumber: number,
69
- ): Promise<[bigint, bigint, DecodedStateMultiCallResultWithRelativeBitmaps]>;
70
- generateState(blockNumber: number): Promise<Readonly<PoolState>>;
71
- handleSwapEvent(
72
- event: any,
73
- pool: PoolState,
74
- log: Log,
75
- blockHeader: BlockHeader,
76
- ): PoolState;
77
- handleMintEvent(
78
- event: any,
79
- pool: PoolState,
80
- log: Log,
81
- blockHeader: BlockHeader,
82
- ): PoolState;
83
- handleBurnEvent(
84
- event: any,
85
- pool: PoolState,
86
- log: Log,
87
- blockHeader: BlockHeader,
88
- ): PoolState;
89
- handleNewFee(
90
- event: any,
91
- pool: PoolState,
92
- log: Log,
93
- blockHeader: BlockHeader,
94
- ): PoolState;
95
- handleCollectEvent(
96
- event: any,
97
- pool: PoolState,
98
- log: Log,
99
- blockHeader: BlockHeader,
100
- ): PoolState;
101
- handleFlashEvent(
102
- event: any,
103
- pool: PoolState,
104
- log: Log,
105
- blockHeader: BlockHeader,
106
- ): PoolState;
107
- handleCommunityFee(
108
- event: any,
109
- pool: PoolState,
110
- log: Log,
111
- blockHeader: BlockHeader,
112
- ): PoolState;
113
- private _computePoolAddress;
114
- }
@@ -1,448 +0,0 @@
1
- 'use strict';
2
- var __importDefault =
3
- (this && this.__importDefault) ||
4
- function (mod) {
5
- return mod && mod.__esModule ? mod : { default: mod };
6
- };
7
- Object.defineProperty(exports, '__esModule', { value: true });
8
- exports.AlgebraEventPool = void 0;
9
- const lodash_1 = __importDefault(require('lodash'));
10
- const abi_1 = require('@ethersproject/abi');
11
- const ts_essentials_1 = require('ts-essentials');
12
- const utils_1 = require('../../utils');
13
- const stateful_event_subscriber_1 = require('../../stateful-event-subscriber');
14
- const ethers_1 = require('ethers');
15
- const AlgebraPool_abi_json_1 = __importDefault(
16
- require('../../abi/algebra/AlgebraPool.abi.json'),
17
- );
18
- const constants_1 = require('../uniswap-v3/constants');
19
- const decoders_1 = require('../../lib/decoders');
20
- const utils_2 = require('./utils');
21
- const AlgebraMath_1 = require('./lib/AlgebraMath');
22
- const TickBitMap_1 = require('../uniswap-v3/contract-math/TickBitMap');
23
- const utils_3 = require('../uniswap-v3/contract-math/utils');
24
- const Constants_1 = require('./lib/Constants');
25
- const constants_2 = require('../../constants');
26
- class AlgebraEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
27
- constructor(
28
- dexHelper,
29
- parentName,
30
- stateMultiContract,
31
- erc20Interface,
32
- factoryAddress,
33
- token0,
34
- token1,
35
- logger,
36
- mapKey = '',
37
- poolInitCodeHash,
38
- poolDeployer,
39
- ) {
40
- super(parentName, `${token0}_${token1}`, dexHelper, logger, true, mapKey);
41
- this.dexHelper = dexHelper;
42
- this.stateMultiContract = stateMultiContract;
43
- this.erc20Interface = erc20Interface;
44
- this.factoryAddress = factoryAddress;
45
- this.poolInitCodeHash = poolInitCodeHash;
46
- this.poolDeployer = poolDeployer;
47
- this.handlers = {};
48
- this.poolIface = new abi_1.Interface(AlgebraPool_abi_json_1.default);
49
- this.initFailed = false;
50
- this.initRetryAttemptCount = 0;
51
- this.token0 = token0.toLowerCase();
52
- this.token1 = token1.toLowerCase();
53
- this.logDecoder = log => this.poolIface.parseLog(log);
54
- this.addressesSubscribed = new Array(1);
55
- this.handlers['Fee'] = this.handleNewFee.bind(this);
56
- this.handlers['Swap'] = this.handleSwapEvent.bind(this);
57
- this.handlers['Mint'] = this.handleMintEvent.bind(this);
58
- this.handlers['Burn'] = this.handleBurnEvent.bind(this);
59
- this.handlers['Flash'] = this.handleFlashEvent.bind(this);
60
- this.handlers['Collect'] = this.handleCollectEvent.bind(this);
61
- this.handlers['CommunityFee'] = this.handleCommunityFee.bind(this);
62
- }
63
- get poolAddress() {
64
- if (this._poolAddress === undefined) {
65
- this._poolAddress = this._computePoolAddress(this.token0, this.token1);
66
- }
67
- return this._poolAddress;
68
- }
69
- set poolAddress(address) {
70
- this._poolAddress = address.toLowerCase();
71
- }
72
- async initialize(blockNumber, options) {
73
- await super.initialize(blockNumber, options);
74
- }
75
- async processBlockLogs(state, logs, blockHeader) {
76
- const newState = await super.processBlockLogs(state, logs, blockHeader);
77
- if (newState && !newState.isValid) {
78
- return await this.generateState(blockHeader.number);
79
- }
80
- return newState;
81
- }
82
- processLog(state, log, blockHeader) {
83
- try {
84
- const event = this.logDecoder(log);
85
- if (event.name in this.handlers) {
86
- // Because we have observations in array which is mutable by nature, there is a
87
- // ts compile error: https://stackoverflow.com/questions/53412934/disable-allowing-assigning-readonly-types-to-non-readonly-types
88
- // And there is no good workaround, so turn off the type checker for this line
89
- const _state = lodash_1.default.cloneDeep(state);
90
- try {
91
- const newState = this.handlers[event.name](
92
- event,
93
- _state,
94
- log,
95
- blockHeader,
96
- );
97
- return newState;
98
- } catch (e) {
99
- if (
100
- e instanceof Error &&
101
- e.message.endsWith(constants_1.OUT_OF_RANGE_ERROR_POSTFIX)
102
- ) {
103
- this.logger.warn(
104
- `${this.parentName}: Pool ${this.poolAddress} on ${
105
- this.dexHelper.config.data.network
106
- } is out of TickBitmap requested range. Re-query the state. ${JSON.stringify(
107
- event,
108
- )}`,
109
- e,
110
- );
111
- } else {
112
- this.logger.error(
113
- `${this.parentName}: Pool ${this.poolAddress}, ` +
114
- `network=${this.dexHelper.config.data.network}: Unexpected ` +
115
- `error while handling event on blockNumber=${blockHeader.number}, ` +
116
- `blockHash=${blockHeader.hash} and parentHash=${
117
- blockHeader.parentHash
118
- } for QuickSwapV3, ${JSON.stringify(event)}`,
119
- e,
120
- );
121
- }
122
- _state.isValid = false;
123
- return _state;
124
- }
125
- }
126
- } catch (e) {
127
- (0, utils_1.catchParseLogError)(e, this.logger);
128
- }
129
- return null; // ignore unrecognized event
130
- }
131
- getBitmapRangeToRequest() {
132
- return constants_1.TICK_BITMAP_TO_USE + constants_1.TICK_BITMAP_BUFFER;
133
- }
134
- async _fetchPoolStateSingleStep(blockNumber) {
135
- const callData = [
136
- {
137
- target: this.token0,
138
- callData: this.erc20Interface.encodeFunctionData('balanceOf', [
139
- this.poolAddress,
140
- ]),
141
- decodeFunction: decoders_1.uint256ToBigInt,
142
- },
143
- {
144
- target: this.token1,
145
- callData: this.erc20Interface.encodeFunctionData('balanceOf', [
146
- this.poolAddress,
147
- ]),
148
- decodeFunction: decoders_1.uint256ToBigInt,
149
- },
150
- {
151
- target: this.stateMultiContract.options.address,
152
- callData: this.stateMultiContract.methods
153
- .getFullStateWithRelativeBitmaps(
154
- this.factoryAddress,
155
- this.token0,
156
- this.token1,
157
- this.getBitmapRangeToRequest(),
158
- this.getBitmapRangeToRequest(),
159
- )
160
- .encodeABI(),
161
- decodeFunction: utils_2.decodeStateMultiCallResultWithRelativeBitmaps,
162
- },
163
- ];
164
- const [resBalance0, resBalance1, resState] =
165
- await this.dexHelper.multiWrapper.tryAggregate(
166
- false,
167
- callData,
168
- blockNumber,
169
- this.dexHelper.multiWrapper.defaultBatchSize,
170
- false,
171
- );
172
- (0, ts_essentials_1.assert)(resState.success, 'Pool does not exist');
173
- const [balance0, balance1, _state] = [
174
- resBalance0.returnData,
175
- resBalance1.returnData,
176
- resState.returnData,
177
- ];
178
- return [balance0, balance1, _state];
179
- }
180
- async _fetchPoolStateMultiStep(blockNumber) {
181
- const balancesAndGlobalStateCalldata = [
182
- {
183
- target: this.token0,
184
- callData: this.erc20Interface.encodeFunctionData('balanceOf', [
185
- this.poolAddress,
186
- ]),
187
- decodeFunction: decoders_1.uint256ToBigInt,
188
- },
189
- {
190
- target: this.token1,
191
- callData: this.erc20Interface.encodeFunctionData('balanceOf', [
192
- this.poolAddress,
193
- ]),
194
- decodeFunction: decoders_1.uint256ToBigInt,
195
- },
196
- {
197
- target: this.stateMultiContract.options.address,
198
- callData: this.stateMultiContract.methods
199
- .getFullStateWithoutTicks(
200
- this.factoryAddress,
201
- this.token0,
202
- this.token1,
203
- 0,
204
- 0,
205
- )
206
- .encodeABI(),
207
- decodeFunction: utils_2.decodeStateMultiCallResultWithRelativeBitmaps,
208
- },
209
- ];
210
- const [resBalance0, resBalance1, stateWithoutTicksAndTickBitmap] =
211
- await this.dexHelper.multiWrapper.tryAggregate(
212
- false,
213
- balancesAndGlobalStateCalldata,
214
- blockNumber,
215
- this.dexHelper.multiWrapper.defaultBatchSize,
216
- false,
217
- );
218
- (0, ts_essentials_1.assert)(
219
- stateWithoutTicksAndTickBitmap.success,
220
- 'Pool does not exist',
221
- );
222
- const [balance0, balance1, _stateWithoutTicksAndTickBitmap] = [
223
- resBalance0.returnData,
224
- resBalance1.returnData,
225
- stateWithoutTicksAndTickBitmap.returnData,
226
- ];
227
- const {
228
- globalState: { tick },
229
- } = _stateWithoutTicksAndTickBitmap;
230
- const currentBitmapIndex = (0, utils_1.int16)(
231
- (BigInt(tick) / Constants_1.Constants.TICK_SPACING) >> 8n,
232
- );
233
- const buffer = this.getBitmapRangeToRequest();
234
- const startBitMapIndex = currentBitmapIndex - buffer;
235
- const endBitMapIndex = currentBitmapIndex + buffer;
236
- const allBitMapIndices = Array.from(
237
- { length: 2 * Number(buffer) + 1 },
238
- () => startBitMapIndex + endBitMapIndex,
239
- );
240
- const ticksAndBitMaps = await Promise.all(
241
- allBitMapIndices.map(relativeTick => {
242
- return this.stateMultiContract.methods
243
- .getAdditionalBitmapWithTicks(
244
- this.factoryAddress,
245
- this.token0,
246
- this.token1,
247
- relativeTick,
248
- relativeTick,
249
- )
250
- .call();
251
- }),
252
- );
253
- const _state = {
254
- ..._stateWithoutTicksAndTickBitmap,
255
- tickBitmap: ticksAndBitMaps.flatMap(v => v[0]),
256
- ticks: ticksAndBitMaps.flatMap(v => v[1]),
257
- };
258
- return [balance0, balance1, _state];
259
- }
260
- async _fetchInitStateMultiStrategies(blockNumber) {
261
- try {
262
- return await this._fetchPoolStateSingleStep(blockNumber);
263
- } catch (e) {
264
- if (e instanceof Error && e.message.includes('Pool does not exist'))
265
- throw e;
266
- if (this.dexHelper.config.data.network != constants_2.Network.ZKEVM)
267
- throw e;
268
- return this._fetchPoolStateMultiStep(blockNumber);
269
- }
270
- }
271
- async generateState(blockNumber) {
272
- const [balance0, balance1, _state] =
273
- await this._fetchInitStateMultiStrategies(blockNumber);
274
- const tickBitmap = {};
275
- const ticks = {};
276
- (0, utils_3._reduceTickBitmap)(tickBitmap, _state.tickBitmap);
277
- (0, utils_3._reduceTicks)(ticks, _state.ticks);
278
- const globalState = {
279
- communityFeeToken0: (0, utils_1.bigIntify)(
280
- _state.globalState.communityFeeToken0,
281
- ),
282
- communityFeeToken1: (0, utils_1.bigIntify)(
283
- _state.globalState.communityFeeToken1,
284
- ),
285
- fee: (0, utils_1.bigIntify)(_state.globalState.fee),
286
- price: (0, utils_1.bigIntify)(_state.globalState.price),
287
- tick: (0, utils_1.bigIntify)(_state.globalState.tick),
288
- };
289
- const currentTick = globalState.tick;
290
- const startTickBitmap = TickBitMap_1.TickBitMap.position(
291
- BigInt(currentTick) / Constants_1.Constants.TICK_SPACING,
292
- )[0];
293
- return {
294
- pool: _state.pool,
295
- blockTimestamp: (0, utils_1.bigIntify)(_state.blockTimestamp),
296
- globalState,
297
- liquidity: (0, utils_1.bigIntify)(_state.liquidity),
298
- tickSpacing: Constants_1.Constants.TICK_SPACING,
299
- maxLiquidityPerTick: Constants_1.Constants.MAX_LIQUIDITY_PER_TICK,
300
- tickBitmap,
301
- ticks,
302
- startTickBitmap,
303
- isValid: true,
304
- balance0,
305
- balance1,
306
- };
307
- }
308
- handleSwapEvent(event, pool, log, blockHeader) {
309
- const newSqrtPriceX96 = (0, utils_1.bigIntify)(event.args.price);
310
- const amount0 = (0, utils_1.bigIntify)(event.args.amount0);
311
- const amount1 = (0, utils_1.bigIntify)(event.args.amount1);
312
- const newTick = (0, utils_1.bigIntify)(event.args.tick);
313
- const newLiquidity = (0, utils_1.bigIntify)(event.args.liquidity);
314
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
315
- if (amount0 <= 0n && amount1 <= 0n) {
316
- this.logger.error(
317
- `${this.parentName}: amount0 <= 0n && amount1 <= 0n for ` +
318
- `${this.poolAddress} and ${blockHeader.number}. Check why it happened`,
319
- );
320
- pool.isValid = false;
321
- return pool;
322
- } else {
323
- const zeroForOne = amount0 > 0n;
324
- const [, , , , , communityFee] =
325
- AlgebraMath_1.AlgebraMath._calculateSwapAndLock(
326
- pool,
327
- zeroForOne,
328
- newSqrtPriceX96,
329
- newTick,
330
- newLiquidity,
331
- );
332
- if (zeroForOne) {
333
- if (amount1 < 0n) {
334
- pool.balance1 -= BigInt.asUintN(256, -amount1);
335
- } else {
336
- this.logger.error(
337
- `In swapEvent for pool ${pool.pool} received incorrect values ${zeroForOne} and ${amount1}`,
338
- );
339
- pool.isValid = false;
340
- }
341
- // This is not correct fully, because pool may get more tokens then it needs, but
342
- // it is not accounted in internal state, it should be good enough
343
- pool.balance0 += BigInt.asUintN(256, amount0);
344
- } else {
345
- if (amount0 < 0n) {
346
- pool.balance0 -= BigInt.asUintN(256, -amount0);
347
- } else {
348
- this.logger.error(
349
- `In swapEvent for pool ${pool.pool} received incorrect values ${zeroForOne} and ${amount0}`,
350
- );
351
- pool.isValid = false;
352
- }
353
- pool.balance1 += BigInt.asUintN(256, amount1);
354
- }
355
- if (communityFee > 0n) {
356
- // _payCommunityFee
357
- if (zeroForOne) {
358
- pool.balance0 -= communityFee;
359
- } else {
360
- pool.balance1 -= communityFee;
361
- }
362
- }
363
- return pool;
364
- }
365
- }
366
- handleMintEvent(event, pool, log, blockHeader) {
367
- const bottomTick = (0, utils_1.bigIntify)(event.args.bottomTick);
368
- const topTick = (0, utils_1.bigIntify)(event.args.topTick);
369
- const liquidityActual = (0, utils_1.bigIntify)(event.args.liquidityAmount);
370
- const amount0 = (0, utils_1.bigIntify)(event.args.amount0);
371
- const amount1 = (0, utils_1.bigIntify)(event.args.amount1);
372
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
373
- AlgebraMath_1.AlgebraMath._updatePositionTicksAndFees(
374
- pool,
375
- bottomTick,
376
- topTick,
377
- liquidityActual,
378
- );
379
- pool.balance0 += amount0;
380
- pool.balance1 += amount1;
381
- return pool;
382
- }
383
- handleBurnEvent(event, pool, log, blockHeader) {
384
- const bottomTick = (0, utils_1.bigIntify)(event.args.bottomTick);
385
- const topTick = (0, utils_1.bigIntify)(event.args.topTick);
386
- const amount = (0, utils_1.bigIntify)(event.args.liquidityAmount);
387
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
388
- AlgebraMath_1.AlgebraMath._updatePositionTicksAndFees(
389
- pool,
390
- bottomTick,
391
- topTick,
392
- -BigInt.asIntN(128, BigInt.asIntN(256, amount)),
393
- );
394
- // no balance change
395
- return pool;
396
- }
397
- handleNewFee(event, pool, log, blockHeader) {
398
- const fee = (0, utils_1.bigIntify)(event.args.fee);
399
- pool.globalState.fee = fee;
400
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
401
- return pool;
402
- }
403
- handleCollectEvent(event, pool, log, blockHeader) {
404
- const amount0 = (0, utils_1.bigIntify)(event.args.amount0);
405
- const amount1 = (0, utils_1.bigIntify)(event.args.amount1);
406
- pool.balance0 -= amount0;
407
- pool.balance1 -= amount1;
408
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
409
- return pool;
410
- }
411
- handleFlashEvent(event, pool, log, blockHeader) {
412
- const paid0 = (0, utils_1.bigIntify)(event.args.paid0);
413
- const paid1 = (0, utils_1.bigIntify)(event.args.paid1);
414
- pool.balance0 += paid0;
415
- pool.balance1 += paid1;
416
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
417
- return pool;
418
- }
419
- handleCommunityFee(event, pool, log, blockHeader) {
420
- const communityFeeToken0 = (0, utils_1.bigIntify)(
421
- event.ags.communityFee0New,
422
- );
423
- const communityFeeToken1 = (0, utils_1.bigIntify)(
424
- event.ags.communityFee1New,
425
- );
426
- pool.globalState.communityFeeToken0 = communityFeeToken0;
427
- pool.globalState.communityFeeToken1 = communityFeeToken1;
428
- pool.blockTimestamp = (0, utils_1.bigIntify)(blockHeader.timestamp);
429
- return pool;
430
- }
431
- _computePoolAddress(token0, token1) {
432
- // https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/PoolAddress.sol
433
- if (token0 > token1) [token0, token1] = [token1, token0];
434
- const encodedKey = ethers_1.ethers.utils.keccak256(
435
- ethers_1.ethers.utils.defaultAbiCoder.encode(
436
- ['address', 'address'],
437
- [token0, token1],
438
- ),
439
- );
440
- return ethers_1.ethers.utils.getCreate2Address(
441
- this.poolDeployer,
442
- encodedKey,
443
- this.poolInitCodeHash,
444
- );
445
- }
446
- }
447
- exports.AlgebraEventPool = AlgebraEventPool;
448
- //# sourceMappingURL=algebra-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"algebra-pool.js","sourceRoot":"","sources":["../../../src/dex/algebra/algebra-pool.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,4CAA+C;AAC/C,iDAAqD;AAErD,uCAAmE;AACnE,+EAGyC;AAOzC,mCAAgC;AAEhC,kGAAgE;AAEhE,uDAIiC;AACjC,iDAAqD;AAErD,mCAAwE;AACxE,mDAAgD;AAChD,uEAAoE;AACpE,6DAG2C;AAC3C,+CAA4C;AAC5C,+CAA0C;AAE1C,MAAa,gBAAiB,SAAQ,mDAAkC;IAuBtE,YACW,SAAqB,EAC9B,UAAkB,EACT,kBAA4B,EAC5B,cAAyB,EACf,cAAuB,EAC1C,MAAe,EACf,MAAe,EACf,MAAc,EACd,SAAiB,EAAE,EACV,gBAAwB,EACxB,YAAoB;QAE7B,KAAK,CAAC,UAAU,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAZjE,cAAS,GAAT,SAAS,CAAY;QAErB,uBAAkB,GAAlB,kBAAkB,CAAU;QAC5B,mBAAc,GAAd,cAAc,CAAW;QACf,mBAAc,GAAd,cAAc,CAAS;QAKjC,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,iBAAY,GAAZ,YAAY,CAAQ;QAjC/B,aAAQ,GAOJ,EAAE,CAAC;QAUS,cAAS,GAAG,IAAI,eAAS,CAAC,8BAAU,CAAC,CAAC;QAE/C,eAAU,GAAG,KAAK,CAAC;QACnB,0BAAqB,GAAG,CAAC,CAAC;QAgB/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAEnC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,CAAU,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,WAAW;QACb,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACxE;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,CAAC,OAAgB;QAC9B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,OAA2C;QAE3C,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC9B,KAA8B,EAC9B,IAAqB,EACrB,WAAkC;QAElC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACxE,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YACjC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACrD;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAES,UAAU,CAClB,KAA8B,EAC9B,GAAkB,EAClB,WAAkC;QAElC,IAAI;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC/B,+EAA+E;gBAC/E,iIAAiI;gBACjI,8EAA8E;gBAC9E,MAAM,MAAM,GAAG,gBAAC,CAAC,SAAS,CAAC,KAAK,CAAc,CAAC;gBAC/C,IAAI;oBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACxC,KAAK,EACL,MAAM,EACN,GAAG,EACH,WAAW,CACZ,CAAC;oBACF,OAAO,QAAQ,CAAC;iBACjB;gBAAC,OAAO,CAAC,EAAE;oBACV,IACE,CAAC,YAAY,KAAK;wBAClB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,sCAA0B,CAAC,EAC9C;wBACA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,WAAW,OAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAC7B,8DAA8D,IAAI,CAAC,SAAS,CAC1E,KAAK,CACN,EAAE,EACH,CAAC,CACF,CAAC;qBACH;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,GAAG,IAAI,CAAC,UAAU,UAAU,IAAI,CAAC,WAAW,IAAI;4BAC9C,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe;4BAC5D,6CAA6C,WAAW,CAAC,MAAM,IAAI;4BACnE,aAAa,WAAW,CAAC,IAAI,mBAC3B,WAAW,CAAC,UACd,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAC9C,CAAC,CACF,CAAC;qBACH;oBACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;oBACvB,OAAO,MAAM,CAAC;iBACf;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,0BAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,CAAC,4BAA4B;IAC3C,CAAC;IAED,uBAAuB;QACrB,OAAO,8BAAkB,GAAG,8BAAkB,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,WAAmB;QAEnB,MAAM,QAAQ,GAER;YACJ;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBAC5D,IAAI,CAAC,WAAW;iBACjB,CAAC;gBACF,cAAc,EAAE,0BAAe;aAChC;YACD;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBAC5D,IAAI,CAAC,WAAW;iBACjB,CAAC;gBACF,cAAc,EAAE,0BAAe;aAChC;YACD;gBACE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO;gBAC/C,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO;qBACtC,+BAA+B,CAC9B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,uBAAuB,EAAE,EAC9B,IAAI,CAAC,uBAAuB,EAAE,CAC/B;qBACA,SAAS,EAAE;gBACd,cAAc,EAAE,qDAA6C;aAC9D;SACF,CAAC;QAEF,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,GACxC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAG5C,KAAK,EACL,QAAQ,EACR,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAC5C,KAAK,CACN,CAAC;QAEJ,IAAA,sBAAM,EAAC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAEhD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG;YACnC,WAAW,CAAC,UAAU;YACtB,WAAW,CAAC,UAAU;YACtB,QAAQ,CAAC,UAAU;SACgD,CAAC;QAEtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,WAAmB;QAEnB,MAAM,8BAA8B,GAE9B;YACJ;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBAC5D,IAAI,CAAC,WAAW;iBACjB,CAAC;gBACF,cAAc,EAAE,0BAAe;aAChC;YACD;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBAC5D,IAAI,CAAC,WAAW;iBACjB,CAAC;gBACF,cAAc,EAAE,0BAAe;aAChC;YACD;gBACE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO;gBAC/C,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO;qBACtC,wBAAwB,CACvB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,CAAC,EACD,CAAC,CACF;qBACA,SAAS,EAAE;gBACd,cAAc,EAAE,qDAA6C;aAC9D;SACF,CAAC;QAEF,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,8BAA8B,CAAC,GAC9D,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAG5C,KAAK,EACL,8BAA8B,EAC9B,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAC5C,KAAK,CACN,CAAC;QAEJ,IAAA,sBAAM,EAAC,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAEtE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,+BAA+B,CAAC,GAAG;YAC5D,WAAW,CAAC,UAAU;YACtB,WAAW,CAAC,UAAU;YACtB,8BAA8B,CAAC,UAAU;SAC0B,CAAC;QAEtE,MAAM,EACJ,WAAW,EAAE,EAAE,IAAI,EAAE,GACtB,GAAG,+BAA+B,CAAC;QACpC,MAAM,kBAAkB,GAAG,IAAA,aAAK,EAC9B,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAC9C,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,MAAM,CAAC;QACrD,MAAM,cAAc,GAAG,kBAAkB,GAAG,MAAM,CAAC;QACnD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAClC,GAAG,EAAE,CAAC,gBAAgB,GAAG,cAAc,CACxC,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO;iBACnC,4BAA4B,CAC3B,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,YAAY,CACb;iBACA,IAAI,EAGN,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,GAAmD;YAC7D,GAAG,+BAA+B;YAClC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1C,CAAC;QAEF,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,8BAA8B,CAClC,WAAmB;QAEnB,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;SAC1D;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;gBACjE,MAAM,CAAC,CAAC;YAEV,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,mBAAO,CAAC,KAAK;gBAAE,MAAM,CAAC,CAAC;YAEjE,OAAO,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;SACnD;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,GAChC,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,IAAA,yBAAiB,EAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACjD,IAAA,oBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,WAAW,GAA6B;YAC5C,kBAAkB,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACpE,kBAAkB,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACpE,GAAG,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;YACtC,KAAK,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;YAC1C,IAAI,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;SACzC,CAAC;QACF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;QACrC,MAAM,eAAe,GAAG,uBAAU,CAAC,QAAQ,CACzC,MAAM,CAAC,WAAW,CAAC,GAAG,qBAAS,CAAC,YAAY,CAC7C,CAAC,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,cAAc,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,cAAc,CAAC;YAChD,WAAW;YACX,SAAS,EAAE,IAAA,iBAAS,EAAC,MAAM,CAAC,SAAS,CAAC;YACtC,WAAW,EAAE,qBAAS,CAAC,YAAY;YACnC,mBAAmB,EAAE,qBAAS,CAAC,sBAAsB;YACrD,UAAU;YACV,KAAK;YACL,eAAe;YACf,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,eAAe,CACb,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,eAAe,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,GAAG,IAAI,CAAC,UAAU,uCAAuC;gBACvD,GAAG,IAAI,CAAC,WAAW,QAAQ,WAAW,CAAC,MAAM,yBAAyB,CACzE,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,OAAO,IAAI,CAAC;SACb;aAAM;YACL,MAAM,UAAU,GAAG,OAAO,GAAG,EAAE,CAAC;YAEhC,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,AAAD,EAAG,AAAD,EAAG,YAAY,CAAC,GAAG,yBAAW,CAAC,qBAAqB,CAChE,IAAI,EACJ,UAAU,EACV,eAAe,EACf,OAAO,EACP,YAAY,CACb,CAAC;YAEF,IAAI,UAAU,EAAE;gBACd,IAAI,OAAO,GAAG,EAAE,EAAE;oBAChB,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;iBAChD;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yBAAyB,IAAI,CAAC,IAAI,8BAA8B,UAAU,QAAQ,OAAO,EAAE,CAC5F,CAAC;oBACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;iBACtB;gBACD,iFAAiF;gBACjF,kEAAkE;gBAClE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;aAC/C;iBAAM;gBACL,IAAI,OAAO,GAAG,EAAE,EAAE;oBAChB,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;iBAChD;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yBAAyB,IAAI,CAAC,IAAI,8BAA8B,UAAU,QAAQ,OAAO,EAAE,CAC5F,CAAC;oBACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;iBACtB;gBACD,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;aAC/C;YAED,IAAI,YAAY,GAAG,EAAE,EAAE;gBACrB,mBAAmB;gBACnB,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;iBAC/B;qBAAM;oBACL,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;iBAC/B;aACF;YAED,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IACD,eAAe,CACb,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,UAAU,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,yBAAW,CAAC,2BAA2B,CACrC,IAAI,EACJ,UAAU,EACV,OAAO,EACP,eAAe,CAChB,CAAC;QAEF,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACzB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QAEzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe,CACb,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,UAAU,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,yBAAW,CAAC,2BAA2B,CACrC,IAAI,EACJ,UAAU,EACV,OAAO,EACP,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAChD,CAAC;QAEF,oBAAoB;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CACV,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAChB,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACzB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CACd,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAChB,KAAU,EACV,IAAe,EACf,GAAQ,EACR,WAAwB;QAExB,MAAM,kBAAkB,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACjE,MAAM,kBAAkB,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEjE,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAEzD,IAAI,CAAC,cAAc,GAAG,IAAA,iBAAS,EAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,MAAe,EAAE,MAAe;QAC1D,wFAAwF;QACxF,IAAI,MAAM,GAAG,MAAM;YAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CACvC,eAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CACjC,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB,CAAC,MAAM,EAAE,MAAM,CAAC,CACjB,CACF,CAAC;QAEF,OAAO,eAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,IAAI,CAAC,YAAY,EACjB,UAAU,EACV,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACJ,CAAC;CACF;AA1hBD,4CA0hBC"}
@@ -1,43 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { BigNumber } from '@ethersproject/bignumber';
3
- import { BasePool } from './balancer-v2-pool';
4
- import { SwapSide } from '../../constants';
5
- import { callData, SubgraphPoolBase, PoolState } from './types';
6
- export declare type Gyro3PoolPairData = {
7
- balances: BigNumber[];
8
- indexIn: number;
9
- indexOut: number;
10
- swapFee: bigint;
11
- balanceTertiary: BigNumber;
12
- decimalsTertiary: number;
13
- scalingFactors: bigint[];
14
- root3Alpha: BigNumber;
15
- };
16
- export declare class Gyro3Pool extends BasePool {
17
- vaultAddress: string;
18
- vaultInterface: Interface;
19
- poolInterface: Interface;
20
- constructor(vaultAddress: string, vaultInterface: Interface);
21
- parsePoolPairData(
22
- pool: SubgraphPoolBase,
23
- poolState: PoolState,
24
- tokenIn: string,
25
- tokenOut: string,
26
- ): Gyro3PoolPairData;
27
- getSwapMaxAmount(poolPairData: Gyro3PoolPairData, side: SwapSide): bigint;
28
- getOnChainCalls(pool: SubgraphPoolBase): callData[];
29
- decodeOnChainCalls(
30
- pool: SubgraphPoolBase,
31
- data: {
32
- success: boolean;
33
- returnData: any;
34
- }[],
35
- startIndex: number,
36
- ): [
37
- {
38
- [address: string]: PoolState;
39
- },
40
- number,
41
- ];
42
- onSell(amounts: bigint[], poolPairData: Gyro3PoolPairData): bigint[];
43
- }