@paraswap/dex-lib 4.1.15-0 → 4.1.15

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 (250) hide show
  1. package/.idea/aws.xml +17 -0
  2. package/.idea/codeStyles/Project.xml +19 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.idea/misc.xml +6 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/paraswap-dex-lib.iml +9 -0
  7. package/.idea/prettier.xml +7 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/build/abi/integral/factory.json +333 -0
  10. package/build/abi/integral/oracle.json +501 -0
  11. package/build/abi/{inception/inception-ineth-pool.json → integral/pool.json} +522 -543
  12. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  13. package/build/abi/uniswap-v4/pool-manager.abi.json +1366 -0
  14. package/build/abi/uniswap-v4/state-view.abi.json +365 -0
  15. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  16. package/build/dex/aave-v1/aave-v1.js +0 -23
  17. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  18. package/build/dex/fluid-dex/fluid-dex-generate-pool.d.ts +49 -0
  19. package/build/dex/fluid-dex/fluid-dex-generate-pool.js +104 -0
  20. package/build/dex/fluid-dex/fluid-dex-generate-pool.js.map +1 -0
  21. package/build/dex/integral/config.d.ts +4 -0
  22. package/build/dex/integral/config.js +20 -0
  23. package/build/dex/integral/config.js.map +1 -0
  24. package/build/dex/integral/context.d.ts +40 -0
  25. package/build/dex/integral/context.js +158 -0
  26. package/build/dex/integral/context.js.map +1 -0
  27. package/build/dex/integral/integral-factory.d.ts +24 -0
  28. package/build/dex/integral/integral-factory.js +95 -0
  29. package/build/dex/integral/integral-factory.js.map +1 -0
  30. package/build/dex/integral/integral-pool.d.ts +50 -0
  31. package/build/dex/integral/integral-pool.js +149 -0
  32. package/build/dex/integral/integral-pool.js.map +1 -0
  33. package/build/dex/integral/integral-pricing.d.ts +18 -0
  34. package/build/dex/integral/integral-pricing.js +114 -0
  35. package/build/dex/integral/integral-pricing.js.map +1 -0
  36. package/build/dex/integral/integral-relayer.d.ts +42 -0
  37. package/build/dex/integral/integral-relayer.js +192 -0
  38. package/build/dex/integral/integral-relayer.js.map +1 -0
  39. package/build/dex/integral/integral-token.d.ts +27 -0
  40. package/build/dex/integral/integral-token.js +59 -0
  41. package/build/dex/integral/integral-token.js.map +1 -0
  42. package/build/dex/integral/integral.d.ts +41 -0
  43. package/build/dex/integral/integral.js +376 -0
  44. package/build/dex/integral/integral.js.map +1 -0
  45. package/build/dex/integral/types.d.ts +85 -0
  46. package/build/dex/integral/types.js +9 -0
  47. package/build/dex/integral/types.js.map +1 -0
  48. package/build/dex/integral/utils-e2e.d.ts +9 -0
  49. package/build/dex/integral/utils-e2e.js +131 -0
  50. package/build/dex/integral/utils-e2e.js.map +1 -0
  51. package/build/dex/integral/utils.d.ts +17 -0
  52. package/build/dex/integral/utils.js +94 -0
  53. package/build/dex/integral/utils.js.map +1 -0
  54. package/build/dex/jarvis.d.ts +1 -2
  55. package/build/dex/jarvis.js +0 -58
  56. package/build/dex/jarvis.js.map +1 -1
  57. package/build/dex/{usual-m-usd0 → m-token}/config.d.ts +2 -2
  58. package/build/dex/m-token/config.js +19 -0
  59. package/build/dex/m-token/config.js.map +1 -0
  60. package/build/dex/m-token/m-token.d.ts +29 -0
  61. package/build/dex/m-token/m-token.js +145 -0
  62. package/build/dex/m-token/m-token.js.map +1 -0
  63. package/build/dex/m-token/m-wrapped-m.d.ts +17 -0
  64. package/build/dex/m-token/m-wrapped-m.js +50 -0
  65. package/build/dex/m-token/m-wrapped-m.js.map +1 -0
  66. package/build/dex/m-token/types.d.ts +12 -0
  67. package/build/dex/{inception → m-token}/types.js.map +1 -1
  68. package/build/dex/maverick-v2/maverick-v2-pool.js +2 -2
  69. package/build/dex/maverick-v2/maverick-v2-pool.js.map +1 -1
  70. package/build/dex/platypus/platypus.d.ts +1 -2
  71. package/build/dex/platypus/platypus.js +0 -45
  72. package/build/dex/platypus/platypus.js.map +1 -1
  73. package/build/dex/spark/spark-psm.js +2 -2
  74. package/build/dex/spark/spark-psm.js.map +1 -1
  75. package/build/dex/spark/spark.js +1 -1
  76. package/build/dex/spark/spark.js.map +1 -1
  77. package/build/dex/spark/susds-psm.d.ts +49 -0
  78. package/build/dex/spark/susds-psm.js +245 -0
  79. package/build/dex/spark/susds-psm.js.map +1 -0
  80. package/build/dex/stable-pool.js +8 -1
  81. package/build/dex/stable-pool.js.map +1 -1
  82. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  83. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  84. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  85. package/build/dex/trader-joe-v2.1/optimizer.d.ts +2 -0
  86. package/build/dex/trader-joe-v2.1/optimizer.js +47 -0
  87. package/build/dex/trader-joe-v2.1/optimizer.js.map +1 -0
  88. package/build/dex/uniswap-v4/config.js +43 -0
  89. package/build/dex/uniswap-v4/config.js.map +1 -1
  90. package/build/dex/uniswap-v4/constants.d.ts +7 -0
  91. package/build/dex/uniswap-v4/constants.js +18 -0
  92. package/build/dex/uniswap-v4/constants.js.map +1 -0
  93. package/build/dex/uniswap-v4/contract-math/BitMath.d.ts +4 -0
  94. package/build/dex/uniswap-v4/contract-math/BitMath.js +53 -0
  95. package/build/dex/uniswap-v4/contract-math/BitMath.js.map +1 -0
  96. package/build/dex/uniswap-v4/contract-math/FixedPoint128.d.ts +3 -0
  97. package/build/dex/uniswap-v4/contract-math/FixedPoint128.js +8 -0
  98. package/build/dex/uniswap-v4/contract-math/FixedPoint128.js.map +1 -0
  99. package/build/dex/uniswap-v4/contract-math/FixedPoint96.d.ts +4 -0
  100. package/build/dex/uniswap-v4/contract-math/FixedPoint96.js +9 -0
  101. package/build/dex/uniswap-v4/contract-math/FixedPoint96.js.map +1 -0
  102. package/build/dex/uniswap-v4/contract-math/FullMath.d.ts +4 -0
  103. package/build/dex/uniswap-v4/contract-math/FullMath.js +19 -0
  104. package/build/dex/uniswap-v4/contract-math/FullMath.js.map +1 -0
  105. package/build/dex/uniswap-v4/contract-math/LiquidityMath.d.ts +3 -0
  106. package/build/dex/uniswap-v4/contract-math/LiquidityMath.js +18 -0
  107. package/build/dex/uniswap-v4/contract-math/LiquidityMath.js.map +1 -0
  108. package/build/dex/uniswap-v4/contract-math/Position.d.ts +9 -0
  109. package/build/dex/uniswap-v4/contract-math/Position.js +39 -0
  110. package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -0
  111. package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.d.ts +11 -0
  112. package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.js +80 -0
  113. package/build/dex/uniswap-v4/contract-math/SqrtPriceMath.js.map +1 -0
  114. package/build/dex/uniswap-v4/contract-math/SwapMath.d.ts +8 -0
  115. package/build/dex/uniswap-v4/contract-math/SwapMath.js +70 -0
  116. package/build/dex/uniswap-v4/contract-math/SwapMath.js.map +1 -0
  117. package/build/dex/uniswap-v4/contract-math/Tick.d.ts +9 -0
  118. package/build/dex/uniswap-v4/contract-math/Tick.js +40 -0
  119. package/build/dex/uniswap-v4/contract-math/Tick.js.map +1 -0
  120. package/build/dex/uniswap-v4/contract-math/TickBitMap.d.ts +8 -0
  121. package/build/dex/uniswap-v4/contract-math/TickBitMap.js +40 -0
  122. package/build/dex/uniswap-v4/contract-math/TickBitMap.js.map +1 -0
  123. package/build/dex/uniswap-v4/contract-math/TickMath.d.ts +9 -0
  124. package/build/dex/uniswap-v4/contract-math/TickMath.js +164 -0
  125. package/build/dex/uniswap-v4/contract-math/TickMath.js.map +1 -0
  126. package/build/dex/uniswap-v4/contract-math/UnsafeMath.d.ts +4 -0
  127. package/build/dex/uniswap-v4/contract-math/UnsafeMath.js +16 -0
  128. package/build/dex/uniswap-v4/contract-math/UnsafeMath.js.map +1 -0
  129. package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.d.ts +8 -0
  130. package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.js +11 -0
  131. package/build/dex/uniswap-v4/contract-math/uniswap-v4-math.js.map +1 -0
  132. package/build/dex/uniswap-v4/contract-math/uniswap-v4-pool-math.d.ts +15 -0
  133. package/build/dex/uniswap-v4/contract-math/uniswap-v4-pool-math.js +108 -0
  134. package/build/dex/uniswap-v4/contract-math/uniswap-v4-pool-math.js.map +1 -0
  135. package/build/dex/uniswap-v4/contract-math/utils.d.ts +4 -0
  136. package/build/dex/uniswap-v4/contract-math/utils.js +23 -0
  137. package/build/dex/uniswap-v4/contract-math/utils.js.map +1 -0
  138. package/build/dex/uniswap-v4/encoder.js +12 -2
  139. package/build/dex/uniswap-v4/encoder.js.map +1 -1
  140. package/build/dex/uniswap-v4/subgraph.d.ts +5 -0
  141. package/build/dex/uniswap-v4/subgraph.js +80 -0
  142. package/build/dex/uniswap-v4/subgraph.js.map +1 -0
  143. package/build/dex/uniswap-v4/types.d.ts +72 -4
  144. package/build/dex/uniswap-v4/uniswap-v4-pool-manager.d.ts +33 -0
  145. package/build/dex/uniswap-v4/uniswap-v4-pool-manager.js +260 -0
  146. package/build/dex/uniswap-v4/uniswap-v4-pool-manager.js.map +1 -0
  147. package/build/dex/uniswap-v4/uniswap-v4.d.ts +6 -6
  148. package/build/dex/uniswap-v4/uniswap-v4.js +29 -47
  149. package/build/dex/uniswap-v4/uniswap-v4.js.map +1 -1
  150. package/build/dex/uniswap-v4/utils.d.ts +2 -0
  151. package/build/dex/uniswap-v4/utils.js +15 -0
  152. package/build/dex/uniswap-v4/utils.js.map +1 -0
  153. package/build/dex/zerox/index.d.ts +26 -4
  154. package/build/dex/zerox/index.js +42 -50
  155. package/build/dex/zerox/index.js.map +1 -1
  156. package/build/dex/zerox/types.d.ts +0 -29
  157. package/build/dex/zerox/types.js +1 -8
  158. package/build/dex/zerox/types.js.map +1 -1
  159. package/package.json +1 -1
  160. package/src/dex/maverick-v2/maverick-v2-pool.ts +2 -2
  161. package/src/dex/spark/spark-psm.ts +2 -2
  162. package/src/dex/spark/spark.ts +1 -1
  163. package/.vscode/launch.json +0 -53
  164. package/.vscode/settings.json +0 -2
  165. package/.vscode/tasks.json +0 -15
  166. package/build/abi/inception/inception-ratio-feed.json +0 -329
  167. package/build/abi/inception/inception-vault.json +0 -991
  168. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  169. package/build/abi/usual-m-smart-m/usualM.abi.json +0 -483
  170. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  171. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  172. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  173. package/build/dex/balancer-v3/abi/balancerBatchRouter.d.ts +0 -729
  174. package/build/dex/balancer-v3/abi/balancerBatchRouter.js +0 -732
  175. package/build/dex/balancer-v3/abi/balancerBatchRouter.js.map +0 -1
  176. package/build/dex/balancer-v3/abi/balancerRouter.d.ts +0 -1406
  177. package/build/dex/balancer-v3/abi/balancerRouter.js +0 -1175
  178. package/build/dex/balancer-v3/abi/balancerRouter.js.map +0 -1
  179. package/build/dex/balancer-v3/abi/vaultExtension.V3.d.ts +0 -2081
  180. package/build/dex/balancer-v3/abi/vaultExtension.V3.js +0 -1851
  181. package/build/dex/balancer-v3/abi/vaultExtension.V3.js.map +0 -1
  182. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.d.ts +0 -34
  183. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js +0 -406
  184. package/build/dex/balancer-v3/balancer-v3-sepolia-pools.js.map +0 -1
  185. package/build/dex/balancer-v3/gyroECLPPool.d.ts +0 -11
  186. package/build/dex/balancer-v3/gyroECLPPool.js +0 -6
  187. package/build/dex/balancer-v3/gyroECLPPool.js.map +0 -1
  188. package/build/dex/balancer-v3/utils.d.ts +0 -2
  189. package/build/dex/balancer-v3/utils.js +0 -11
  190. package/build/dex/balancer-v3/utils.js.map +0 -1
  191. package/build/dex/erc4626/scripts/validate-state.d.ts +0 -0
  192. package/build/dex/erc4626/scripts/validate-state.js +0 -146
  193. package/build/dex/erc4626/scripts/validate-state.js.map +0 -1
  194. package/build/dex/inception/config.d.ts +0 -4
  195. package/build/dex/inception/config.js +0 -109
  196. package/build/dex/inception/config.js.map +0 -1
  197. package/build/dex/inception/inception-event-pool.d.ts +0 -16
  198. package/build/dex/inception/inception-event-pool.js +0 -49
  199. package/build/dex/inception/inception-event-pool.js.map +0 -1
  200. package/build/dex/inception/inception.d.ts +0 -43
  201. package/build/dex/inception/inception.js +0 -180
  202. package/build/dex/inception/inception.js.map +0 -1
  203. package/build/dex/inception/tokens.d.ts +0 -9
  204. package/build/dex/inception/tokens.js +0 -28
  205. package/build/dex/inception/tokens.js.map +0 -1
  206. package/build/dex/inception/types.d.ts +0 -22
  207. package/build/dex/inception/utils.d.ts +0 -7
  208. package/build/dex/inception/utils.js +0 -58
  209. package/build/dex/inception/utils.js.map +0 -1
  210. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  211. package/build/dex/maker-psm/scripts/validate-state.d.ts +0 -0
  212. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  213. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  214. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  215. package/build/dex/solidly-v3/scripts/check-event-pool-event.d.ts +0 -1
  216. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  217. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  218. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  219. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  220. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  221. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  222. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  223. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  224. package/build/dex/uniswap-v3/uniswap-v3-pricing.d.ts +0 -4
  225. package/build/dex/uniswap-v3/uniswap-v3-pricing.js +0 -43
  226. package/build/dex/uniswap-v3/uniswap-v3-pricing.js.map +0 -1
  227. package/build/dex/uniswap-v3/uniswap-v3-worker.d.ts +0 -1
  228. package/build/dex/uniswap-v3/uniswap-v3-worker.js +0 -10
  229. package/build/dex/uniswap-v3/uniswap-v3-worker.js.map +0 -1
  230. package/build/dex/usual/usual-m-smart-m.d.ts +0 -17
  231. package/build/dex/usual/usual-m-smart-m.js +0 -50
  232. package/build/dex/usual/usual-m-smart-m.js.map +0 -1
  233. package/build/dex/usual-m-smart-m/config.d.ts +0 -3
  234. package/build/dex/usual-m-smart-m/config.js +0 -13
  235. package/build/dex/usual-m-smart-m/config.js.map +0 -1
  236. package/build/dex/usual-m-smart-m/types.d.ts +0 -7
  237. package/build/dex/usual-m-smart-m/types.js +0 -3
  238. package/build/dex/usual-m-smart-m/types.js.map +0 -1
  239. package/build/dex/usual-m-smart-m/usual-m-smart-m.d.ts +0 -35
  240. package/build/dex/usual-m-smart-m/usual-m-smart-m.js +0 -161
  241. package/build/dex/usual-m-smart-m/usual-m-smart-m.js.map +0 -1
  242. package/build/dex/usual-m-usd0/config.js +0 -14
  243. package/build/dex/usual-m-usd0/config.js.map +0 -1
  244. package/build/dex/usual-m-usd0/types.d.ts +0 -8
  245. package/build/dex/usual-m-usd0/types.js +0 -3
  246. package/build/dex/usual-m-usd0/types.js.map +0 -1
  247. package/build/dex/usual-m-usd0/usual-m-usd0.d.ts +0 -35
  248. package/build/dex/usual-m-usd0/usual-m-usd0.js +0 -159
  249. package/build/dex/usual-m-usd0/usual-m-usd0.js.map +0 -1
  250. /package/build/dex/{inception → m-token}/types.js +0 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.querySinglePoolFromSubgraphById = querySinglePoolFromSubgraphById;
4
+ exports.queryOnePageForAllAvailablePoolsFromSubgraph = queryOnePageForAllAvailablePoolsFromSubgraph;
5
+ const constants_1 = require("./constants");
6
+ async function querySinglePoolFromSubgraphById(dexHelper, subgraphUrl, blockNumber, id) {
7
+ const ticksLimit = 200;
8
+ const poolQuery = `query {
9
+ pools(
10
+ block: { number: ${blockNumber} },
11
+ where: {id: "${id}"}
12
+ ) {
13
+ id
14
+ fee: feeTier
15
+ tickSpacing
16
+ token0 {
17
+ address: id
18
+ }
19
+ token1 {
20
+ address: id
21
+ }
22
+ hooks
23
+ }
24
+ }`;
25
+ // tick
26
+ // ticks(first: ${ticksLimit}) {
27
+ // id
28
+ // liquidityGross
29
+ // liquidityNet
30
+ // tickIdx
31
+ // }
32
+ const { data } = await dexHelper.httpRequest.querySubgraph(subgraphUrl, {
33
+ query: poolQuery,
34
+ variables: {},
35
+ }, { timeout: constants_1.SUBGRAPH_TIMEOUT });
36
+ return data.pools[0] || null;
37
+ }
38
+ async function queryOnePageForAllAvailablePoolsFromSubgraph(dexHelper, logger, dexKey, subgraphUrl, blockNumber, skip, limit, latestBlock = false) {
39
+ const ticksLimit = 300;
40
+ const poolsQuery = `query ($skip: Int!) {
41
+ pools(
42
+ ${latestBlock ? '' : `block: { number: ${blockNumber} }`}
43
+ orderBy: volumeUSD
44
+ orderDirection: desc
45
+ skip: $skip
46
+ first: ${limit}
47
+ ) {
48
+ id
49
+ fee: feeTier
50
+ tickSpacing
51
+ token0 {
52
+ address: id
53
+ }
54
+ token1 {
55
+ address: id
56
+ }
57
+ hooks
58
+ tick
59
+ ticks(first: ${ticksLimit}) {
60
+ id
61
+ liquidityGross
62
+ liquidityNet
63
+ tickIdx
64
+ }
65
+ }
66
+ }`;
67
+ // console.log('poolsQuery: ', poolsQuery);
68
+ const res = await dexHelper.httpRequest.querySubgraph(subgraphUrl, {
69
+ query: poolsQuery,
70
+ variables: { skip: skip },
71
+ }, { timeout: constants_1.SUBGRAPH_TIMEOUT });
72
+ if (res.errors &&
73
+ res.errors.length &&
74
+ res.errors[0].message.includes('missing block')) {
75
+ logger.info(`${dexKey}: subgraph fallback to the latest block...`);
76
+ return queryOnePageForAllAvailablePoolsFromSubgraph(dexHelper, logger, dexKey, subgraphUrl, blockNumber, skip, limit, true);
77
+ }
78
+ return res.data.pools;
79
+ }
80
+ //# sourceMappingURL=subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/dex/uniswap-v4/subgraph.ts"],"names":[],"mappings":";;AAKA,0EAgDC;AAED,oGA2EC;AAjID,2CAA+C;AAIxC,KAAK,UAAU,+BAA+B,CACnD,SAAqB,EACrB,WAAmB,EACnB,WAAmB,EACnB,EAAU;IAEV,MAAM,UAAU,GAAG,GAAG,CAAC;IAEvB,MAAM,SAAS,GAAG;;2BAEO,WAAW;uBACf,EAAE;;;;;;;;;;;;;IAarB,CAAC;IAEH,cAAc;IACd,uCAAuC;IACvC,eAAe;IACf,2BAA2B;IAC3B,yBAAyB;IACzB,oBAAoB;IACpB,YAAY;IAEZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAKxD,WAAW,EACX;QACE,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,EAAE;KACd,EACD,EAAE,OAAO,EAAE,4BAAgB,EAAE,CAC9B,CAAC;IAEF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,4CAA4C,CAChE,SAAqB,EACrB,MAAc,EACd,MAAc,EACd,WAAmB,EACnB,WAAmB,EACnB,IAAY,EACZ,KAAa,EACb,WAAW,GAAG,KAAK;IAEnB,MAAM,UAAU,GAAG,GAAG,CAAC;IAEvB,MAAM,UAAU,GAAG;;UAEX,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,WAAW,IAAI;;;;iBAI/C,KAAK;;;;;;;;;;;;;uBAaC,UAAU;;;;;;;MAO3B,CAAC;IAEL,2CAA2C;IAE3C,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,aAAa,CAMnD,WAAW,EACX;QACE,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KAC1B,EACD,EAAE,OAAO,EAAE,4BAAgB,EAAE,CAC9B,CAAC;IAEF,IACE,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,MAAM,CAAC,MAAM;QACjB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAC/C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,4CAA4C,CAAC,CAAC;QACnE,OAAO,4CAA4C,CACjD,SAAS,EACT,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,EACX,IAAI,EACJ,KAAK,EACL,IAAI,CACL,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,CAAC"}
@@ -1,10 +1,63 @@
1
- import { Address } from '../../types';
1
+ import { Address, NumberAsString } from '../../types';
2
+ export type ModifyLiquidityParams = {
3
+ liquidityDelta: bigint;
4
+ tickLower: bigint;
5
+ tickUpper: bigint;
6
+ owner: string;
7
+ tickSpacing: bigint;
8
+ salt: string;
9
+ };
10
+ export type ModifyLiquidityState = {
11
+ flippedLower: boolean;
12
+ liquidityGrossAfterLower: bigint;
13
+ flippedUpper: boolean;
14
+ liquidityGrossAfterUpper: bigint;
15
+ };
16
+ export type TickInfo = {
17
+ liquidityGross: bigint;
18
+ liquidityNet: bigint;
19
+ feeGrowthOutside0X128?: bigint;
20
+ feeGrowthOutside1X128?: bigint;
21
+ };
22
+ export type PositionState = {
23
+ liquidity: bigint;
24
+ feeGrowthInside0LastX128: bigint;
25
+ feeGrowthInside1LastX128: bigint;
26
+ };
27
+ export type Tick = {
28
+ id: string;
29
+ tickIdx: string;
30
+ liquidityGross: string;
31
+ liquidityNet: string;
32
+ };
33
+ export type PoolManagerState = {
34
+ _pools: PoolState[];
35
+ };
2
36
  export type PoolState = {
3
37
  id: string;
4
- token0: Address;
5
- token1: Address;
38
+ token0: string;
39
+ token1: string;
40
+ fee: string;
41
+ hooks: string;
42
+ feeGrowthGlobal0X128?: bigint;
43
+ feeGrowthGlobal1X128?: bigint;
44
+ liquidity?: bigint;
45
+ slot0?: Slot0;
46
+ tick: number;
6
47
  tickSpacing: number;
48
+ ticks: Record<NumberAsString, TickInfo>;
49
+ tickBitmap?: Record<NumberAsString, bigint>;
50
+ positions?: Record<string, PositionState>;
51
+ };
52
+ export type FeeGrowthGlobals = {
53
+ feeGrowthGlobal0: bigint;
54
+ feeGrowthGlobal1: bigint;
55
+ };
56
+ export type Slot0 = {
57
+ sqrtPriceX96: bigint;
7
58
  tick: number;
59
+ protocolFee: number;
60
+ lpFee: number;
8
61
  };
9
62
  export type UniswapV4Data = {
10
63
  exchange: Address;
@@ -15,16 +68,31 @@ export type Pool = {
15
68
  id: string;
16
69
  key: PoolKey;
17
70
  };
71
+ export type SubgraphPool = {
72
+ id: string;
73
+ fee: string;
74
+ hooks: string;
75
+ token0: {
76
+ address: string;
77
+ };
78
+ token1: {
79
+ address: string;
80
+ };
81
+ tick: number;
82
+ tickSpacing: number;
83
+ ticks: Tick[];
84
+ };
18
85
  export type DexParams = {
19
86
  poolManager: Address;
20
87
  quoter: Address;
21
88
  router: Address;
22
89
  subgraphURL: string;
90
+ stateView: string;
23
91
  };
24
92
  export type PoolKey = {
25
93
  currency0: Address;
26
94
  currency1: Address;
27
95
  fee: string;
28
- tickSpacing: string;
96
+ tickSpacing: number;
29
97
  hooks: Address;
30
98
  };
@@ -0,0 +1,33 @@
1
+ import { InitializeStateOptions, StatefulEventSubscriber } from '../../stateful-event-subscriber';
2
+ import { DexParams, FeeGrowthGlobals, Pool, PoolManagerState, Slot0 } from './types';
3
+ import { Address, Log, Logger } from '../../types';
4
+ import { BlockHeader } from 'web3-eth';
5
+ import { Interface } from 'ethers/lib/utils';
6
+ import { IDexHelper } from '../../dex-helper';
7
+ import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
8
+ import { LogDescription } from '@ethersproject/abi/lib.esm';
9
+ import { MultiCallParams } from '../../lib/multi-wrapper';
10
+ export declare class UniswapV4PoolManager extends StatefulEventSubscriber<PoolManagerState> {
11
+ readonly dexHelper: IDexHelper;
12
+ private readonly network;
13
+ private readonly config;
14
+ protected logger: Logger;
15
+ handlers: {
16
+ [event: string]: (event: any, pool: PoolManagerState, log: Log, blockHeader: Readonly<BlockHeader>) => AsyncOrSync<PoolManagerState>;
17
+ };
18
+ logDecoder: (log: Log) => any;
19
+ stateViewIface: Interface;
20
+ poolManagerIface: Interface;
21
+ private poolsCacheKey;
22
+ constructor(dexHelper: IDexHelper, parentName: string, network: number, config: DexParams, logger: Logger, mapKey?: string);
23
+ initialize(blockNumber: number, options?: InitializeStateOptions<PoolManagerState>): Promise<void>;
24
+ protected processLog(state: PoolManagerState, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): Promise<DeepReadonly<PoolManagerState>>;
25
+ getAvailablePoolsForPair(srcToken: Address, destToken: Address, blockNumber: number): Pool[];
26
+ private queryAllAvailablePools;
27
+ protected _getStateRequestCallDataPerPool(poolId: string): MultiCallParams<bigint | Slot0 | FeeGrowthGlobals>[];
28
+ generateState(blockNumber: number): Promise<PoolManagerState>;
29
+ handleInitializeEvent(event: LogDescription, state: PoolManagerState, log: Log): Promise<PoolManagerState>;
30
+ handleSwapEvent(event: any, state: PoolManagerState, log: Log, blockHeader: BlockHeader): PoolManagerState;
31
+ handleDonateEvent(event: any, state: PoolManagerState, log: Log, blockHeader: BlockHeader): PoolManagerState;
32
+ handleModifyLiquidityEvent(event: any, state: PoolManagerState, log: Log, blockHeader: BlockHeader): PoolManagerState;
33
+ }
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UniswapV4PoolManager = void 0;
7
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
8
+ const state_view_abi_json_1 = __importDefault(require("../../abi/uniswap-v4/state-view.abi.json"));
9
+ const pool_manager_abi_json_1 = __importDefault(require("../../abi/uniswap-v4/pool-manager.abi.json"));
10
+ const utils_1 = require("ethers/lib/utils");
11
+ const subgraph_1 = require("./subgraph");
12
+ const utils_2 = require("../../utils");
13
+ const constants_1 = require("../../constants");
14
+ const constants_2 = require("./constants");
15
+ const ethers_1 = require("ethers");
16
+ const utils_3 = require("./utils");
17
+ const decoders_1 = require("../../lib/decoders");
18
+ const uniswap_v4_pool_math_1 = require("./contract-math/uniswap-v4-pool-math");
19
+ class UniswapV4PoolManager extends stateful_event_subscriber_1.StatefulEventSubscriber {
20
+ dexHelper;
21
+ network;
22
+ config;
23
+ logger;
24
+ handlers = {};
25
+ logDecoder;
26
+ stateViewIface;
27
+ poolManagerIface;
28
+ poolsCacheKey = 'pools_states';
29
+ constructor(dexHelper, parentName, network, config, logger, mapKey = '') {
30
+ super(parentName, `${parentName} PoolManager`, dexHelper, logger, true, mapKey);
31
+ this.dexHelper = dexHelper;
32
+ this.network = network;
33
+ this.config = config;
34
+ this.logger = logger;
35
+ this.stateViewIface = new utils_1.Interface(state_view_abi_json_1.default);
36
+ this.poolManagerIface = new utils_1.Interface(pool_manager_abi_json_1.default);
37
+ this.addressesSubscribed = [this.config.poolManager];
38
+ this.logDecoder = (log) => this.poolManagerIface.parseLog(log);
39
+ // Add handlers
40
+ this.handlers['Initialize'] = this.handleInitializeEvent.bind(this);
41
+ this.handlers['Swap'] = this.handleSwapEvent.bind(this);
42
+ this.handlers['Donate'] = this.handleDonateEvent.bind(this);
43
+ this.handlers['ModifyLiquidity'] =
44
+ this.handleModifyLiquidityEvent.bind(this);
45
+ }
46
+ async initialize(blockNumber, options) {
47
+ await super.initialize(blockNumber, options);
48
+ }
49
+ async processLog(state, log, blockHeader) {
50
+ const event = this.logDecoder(log);
51
+ if (event.name in this.handlers) {
52
+ await this.handlers[event.name](event, state, log, blockHeader);
53
+ }
54
+ return state;
55
+ }
56
+ getAvailablePoolsForPair(srcToken, destToken, blockNumber) {
57
+ const isEthSrc = (0, utils_2.isETHAddress)(srcToken);
58
+ const isEthDest = (0, utils_2.isETHAddress)(destToken);
59
+ const src = isEthSrc ? constants_1.NULL_ADDRESS : srcToken.toLowerCase();
60
+ const dest = isEthDest ? constants_1.NULL_ADDRESS : destToken.toLowerCase();
61
+ const state = this.getState(blockNumber);
62
+ if (!state) {
63
+ ethers_1.logger.info(`${this.name} PoolManager: state was not found blocknumber: ${blockNumber}`);
64
+ return [];
65
+ }
66
+ const poolStates = state._pools.filter(pool => (pool.token0 === src && pool.token1 === dest) ||
67
+ (pool.token0 === dest && pool.token1 === src));
68
+ return poolStates.map(state => ({
69
+ id: state.id,
70
+ key: {
71
+ currency0: state.token0,
72
+ currency1: state.token1,
73
+ fee: state.fee,
74
+ tickSpacing: state.tickSpacing,
75
+ hooks: state.hooks,
76
+ },
77
+ }));
78
+ }
79
+ async queryAllAvailablePools(blockNumber) {
80
+ const cachedPools = await this.dexHelper.cache.getAndCacheLocally(this.parentName, this.network, this.poolsCacheKey, constants_2.POOL_CACHE_REFRESH_INTERVAL);
81
+ if (cachedPools) {
82
+ const pools = JSON.parse(cachedPools);
83
+ return pools;
84
+ }
85
+ let pools = [];
86
+ let curPage = 0;
87
+ const limit = 1000;
88
+ let currentSubgraphPools = await (0, subgraph_1.queryOnePageForAllAvailablePoolsFromSubgraph)(this.dexHelper, this.logger, this.parentName, this.config.subgraphURL, blockNumber, curPage * limit, limit);
89
+ pools = pools.concat(currentSubgraphPools);
90
+ while (currentSubgraphPools.length === limit) {
91
+ curPage++;
92
+ currentSubgraphPools = await (0, subgraph_1.queryOnePageForAllAvailablePoolsFromSubgraph)(this.dexHelper, this.logger, this.parentName, this.config.subgraphURL, blockNumber, curPage * limit, limit);
93
+ pools = pools.concat(currentSubgraphPools);
94
+ }
95
+ console.log('pools 0', pools[0]);
96
+ this.dexHelper.cache.setexAndCacheLocally(this.parentName, this.network, this.poolsCacheKey, constants_2.POOL_CACHE_REFRESH_INTERVAL, JSON.stringify(pools));
97
+ return pools;
98
+ }
99
+ _getStateRequestCallDataPerPool(poolId) {
100
+ const callData = [
101
+ {
102
+ target: this.config.stateView,
103
+ callData: this.stateViewIface.encodeFunctionData('getLiquidity', [
104
+ poolId,
105
+ ]),
106
+ decodeFunction: decoders_1.uint256ToBigInt,
107
+ },
108
+ {
109
+ target: this.config.stateView,
110
+ callData: this.stateViewIface.encodeFunctionData('getSlot0', [poolId]),
111
+ decodeFunction: (result) => {
112
+ const [, toDecode] = (0, decoders_1.extractSuccessAndValue)(result);
113
+ const decoded = this.stateViewIface.decodeFunctionResult('getSlot0', toDecode);
114
+ return {
115
+ sqrtPriceX96: BigInt(decoded[0]),
116
+ tick: decoded[1],
117
+ protocolFee: decoded[2],
118
+ lpFee: decoded[3],
119
+ };
120
+ },
121
+ },
122
+ {
123
+ target: this.config.stateView,
124
+ callData: this.stateViewIface.encodeFunctionData('getFeeGrowthGlobals', [poolId]),
125
+ decodeFunction: (result) => {
126
+ const [, toDecode] = (0, decoders_1.extractSuccessAndValue)(result);
127
+ const decoded = this.stateViewIface.decodeFunctionResult('getFeeGrowthGlobals', toDecode);
128
+ return {
129
+ feeGrowthGlobal0: BigInt(decoded[0]),
130
+ feeGrowthGlobal1: BigInt(decoded[1]),
131
+ };
132
+ },
133
+ },
134
+ ];
135
+ return callData;
136
+ }
137
+ async generateState(blockNumber) {
138
+ let pools = await this.queryAllAvailablePools(blockNumber);
139
+ pools = pools.filter(pool => pool.id ===
140
+ '0x20c3a15e34e5d88aeba004b0753af69e4f6bea80eae2263f7a92e919cd33cc56'.toLowerCase() ||
141
+ pool.id ===
142
+ '0x32c53756fb0b730fa9daa03418f4e4bd47ea2dce4a23f0794788f3802ed34478'.toLowerCase());
143
+ const callData = pools.reduce((memo, pool) => {
144
+ const calldata = this._getStateRequestCallDataPerPool(pool.id);
145
+ memo = memo.concat(calldata);
146
+ return memo;
147
+ }, []);
148
+ const results = await this.dexHelper.multiWrapper.tryAggregate(false, callData, blockNumber, this.dexHelper.multiWrapper.defaultBatchSize, false);
149
+ // console.log('results: ', results);
150
+ const combinedResults = results.reduce((memo, curItem, curIndex) => {
151
+ const isLiquidityResult = curIndex % 3 === 0;
152
+ const isFeeGrowthResult = curIndex % 2 === 0;
153
+ if (isLiquidityResult) {
154
+ memo.push({
155
+ liquidity: curItem.returnData,
156
+ });
157
+ }
158
+ else if (isFeeGrowthResult) {
159
+ const prevIndex = memo.length - 1;
160
+ memo[prevIndex].feeGrowthGlobals =
161
+ curItem.returnData;
162
+ }
163
+ else {
164
+ const prevIndex = memo.length - 1;
165
+ memo[prevIndex].slot0 = curItem.returnData;
166
+ }
167
+ return memo;
168
+ }, []);
169
+ const poolsStates = pools.map((pool, index) => ({
170
+ id: pool.id,
171
+ token0: pool.token0.address,
172
+ token1: pool.token1.address,
173
+ fee: pool.fee,
174
+ hooks: pool.hooks,
175
+ feeGrowthGlobal0X128: combinedResults[index]?.feeGrowthGlobals?.feeGrowthGlobal0,
176
+ feeGrowthGlobal1X128: combinedResults[index]?.feeGrowthGlobals?.feeGrowthGlobal1,
177
+ liquidity: combinedResults[index].liquidity,
178
+ slot0: combinedResults[index].slot0,
179
+ tick: pool.tick,
180
+ tickSpacing: pool.tickSpacing,
181
+ ticks: pool.ticks.reduce((memo, tick) => {
182
+ memo[tick.tickIdx] = {
183
+ liquidityGross: BigInt(tick.liquidityGross),
184
+ liquidityNet: BigInt(tick.liquidityNet),
185
+ };
186
+ return memo;
187
+ }, {}),
188
+ }));
189
+ const resPool = poolsStates.find(pool => pool.id.toLowerCase() ===
190
+ '0x20c3a15e34e5d88aeba004b0753af69e4f6bea80eae2263f7a92e919cd33cc56'.toLowerCase());
191
+ console.log('block number: ', blockNumber);
192
+ console.log('poolsStates[0]: ', poolsStates[0]);
193
+ // console.log('resPool slot0: ', resPool?.slot0);
194
+ console.log('------------------------------------');
195
+ return {
196
+ _pools: poolsStates.sort(utils_3.sortPools),
197
+ };
198
+ }
199
+ async handleInitializeEvent(event, state, log) {
200
+ const id = event.args.id.toLowerCase();
201
+ const subgraphPool = await (0, subgraph_1.querySinglePoolFromSubgraphById)(this.dexHelper, this.config.subgraphURL, log.blockNumber, id);
202
+ if (subgraphPool) {
203
+ const callData = this._getStateRequestCallDataPerPool(subgraphPool.id);
204
+ const results = await this.dexHelper.multiWrapper.tryAggregate(false, callData, log.blockNumber, this.dexHelper.multiWrapper.defaultBatchSize, false);
205
+ const newPool = {
206
+ id: subgraphPool.id,
207
+ token0: subgraphPool.token0.address,
208
+ token1: subgraphPool.token1.address,
209
+ fee: subgraphPool.fee,
210
+ tickSpacing: subgraphPool.tickSpacing,
211
+ hooks: subgraphPool.hooks,
212
+ liquidity: results[0].returnData,
213
+ slot0: results[1].returnData,
214
+ // tick: parseInt(subgraphPool.tick),
215
+ // ticks: subgraphPool.ticks,
216
+ };
217
+ const pools = state._pools;
218
+ pools.push(newPool);
219
+ state = {
220
+ ...state,
221
+ _pools: pools.sort(utils_3.sortPools),
222
+ };
223
+ }
224
+ return state;
225
+ // return this.generateState(log.blockNumber); // since Initialize is rare event we could dp like this
226
+ }
227
+ handleSwapEvent(event, state, log, blockHeader) {
228
+ this.logger.info(`handle Swap event`);
229
+ return state;
230
+ }
231
+ handleDonateEvent(event, state, log, blockHeader) {
232
+ this.logger.info(`handle Donate event`);
233
+ return state;
234
+ }
235
+ handleModifyLiquidityEvent(event, state, log, blockHeader) {
236
+ const id = event.args.id.toLowerCase();
237
+ const poolState = state._pools.find(pool => pool.id.toLowerCase() === id.toLowerCase());
238
+ if (!poolState) {
239
+ this.logger.info(`${this.parentName}: State for pool ${id} is not found...`);
240
+ return state;
241
+ }
242
+ const owner = event.args.sender.toLowerCase();
243
+ const tickLower = parseInt(event.args.tickLower);
244
+ const tickUpper = parseInt(event.args.tickUpper);
245
+ const liquidityDelta = BigInt(event.args.liquidityDelta);
246
+ const salt = event.args.salt.toLowerCase();
247
+ uniswap_v4_pool_math_1.uniswapV4PoolMath.modifyLiquidity(poolState, {
248
+ owner,
249
+ tickLower,
250
+ tickSpacing: poolState.tickSpacing,
251
+ tickUpper,
252
+ liquidityDelta,
253
+ salt,
254
+ });
255
+ console.log('event.args: ', event.args);
256
+ return state;
257
+ }
258
+ }
259
+ exports.UniswapV4PoolManager = UniswapV4PoolManager;
260
+ //# sourceMappingURL=uniswap-v4-pool-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-v4-pool-manager.js","sourceRoot":"","sources":["../../../src/dex/uniswap-v4/uniswap-v4-pool-manager.ts"],"names":[],"mappings":"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"}
@@ -10,19 +10,20 @@ import { Interface } from '@ethersproject/abi';
10
10
  export declare class UniswapV4 extends SimpleExchange implements IDex<UniswapV4Data> {
11
11
  protected network: Network;
12
12
  protected dexHelper: IDexHelper;
13
- protected router: string;
14
- protected quoter: string;
15
- protected poolManager: string;
16
- protected subgraph: string;
13
+ protected routerAddress: string;
14
+ protected quoterAddress: string;
15
+ protected poolManagerAddress: string;
17
16
  readonly hasConstantPriceLargeAmounts = false;
18
17
  needWrapNative: boolean;
19
18
  logger: Logger;
20
19
  protected quoterIface: Interface;
20
+ private poolManager;
21
21
  static dexKeysWithNetwork: {
22
22
  key: string;
23
23
  networks: Network[];
24
24
  }[];
25
- constructor(network: Network, dexKey: string, dexHelper: IDexHelper, router?: string, quoter?: string, poolManager?: string, subgraph?: string);
25
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, routerAddress?: string, quoterAddress?: string, poolManagerAddress?: string);
26
+ initializePricing(blockNumber: number): Promise<void>;
26
27
  getPoolIdentifiers(from: Token, to: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
27
28
  getPricesVolume(from: Token, to: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<ExchangePrices<UniswapV4Data> | null>;
28
29
  getCalldataGasCost(poolPrices: PoolPrices<UniswapV4Data>): number | number[];
@@ -31,7 +32,6 @@ export declare class UniswapV4 extends SimpleExchange implements IDex<UniswapV4D
31
32
  index: number;
32
33
  }[] | null;
33
34
  getTopPoolsForToken(tokenAddress: Address, count: number): Promise<PoolLiquidity[]>;
34
- getAvailablePools(srcToken: Address, destToken: Address): Promise<Pool[]>;
35
35
  queryPrice(zeroForOne: boolean, amounts: bigint[], pool: Pool): Promise<bigint[]>;
36
36
  getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: UniswapV4Data, side: SwapSide): DexExchangeParam;
37
37
  getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: UniswapV4Data, side: SwapSide): AdapterExchangeParam;