@paraswap/dex-lib 4.7.13 → 4.7.14-os-arm.0

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 (233) hide show
  1. package/build/abi/PendleRouterStatic.json +19 -0
  2. package/build/abi/{MStableAsset.json → apex-defi/ApexDefiFactory.abi.json} +992 -788
  3. package/build/abi/{BProtocol.json → apex-defi/ApexDefiRouter.abi.json} +539 -574
  4. package/build/abi/apex-defi/ApexDefiToken.abi.json +229 -0
  5. package/build/abi/apex-defi/ApexDefiWrapper.abi.json +92 -0
  6. package/build/abi/{OneInchLp.json → apex-defi/ApexDefiWrapperFactory.abi.json} +577 -774
  7. package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +796 -0
  8. package/build/abi/pendle/pendle-deployer.abi.json +520 -0
  9. package/build/abi/pendle/pendle-oracle.abi.json +413 -0
  10. package/build/abi/pharaoh-v3/PharaohV3Factory.abi.json +349 -0
  11. package/build/abi/pharaoh-v3/PharaohV3Pool.abi.json +802 -0
  12. package/build/abi/pharaoh-v3/PharaohV3StateMulticall.abi.json +781 -0
  13. package/build/abi/ring-v2/few-wrapped-token.json +587 -0
  14. package/build/abi/ring-v2/ring-v2-factory.json +125 -0
  15. package/build/abi/ring-v2/ring-v2-pool.json +461 -0
  16. package/build/abi/ring-v2/ring-v2-router.json +332 -0
  17. package/build/abi/stabull/stabull-curve.json +738 -0
  18. package/build/abi/stabull/stabull-router.json +76 -0
  19. package/build/abi/uniswap-v4/hooks/SpotDynamicFeeManager.json +26 -0
  20. package/build/abi/uniswap-v4/hooks/SpotHook.json +54 -0
  21. package/build/abi/uniswap-v4/hooks/SpotPolicyManager.json +45 -0
  22. package/build/abi/uniswap-v4/hooks/cabalcoin-hook.abi.json +682 -0
  23. package/build/abi/uniswap-v4/hooks/fee-hook.abi.json +1335 -0
  24. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.d.ts +29 -0
  25. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js +153 -0
  26. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js.map +1 -0
  27. package/build/dex/{usual-bond/usual-bond.d.ts → aave-pt-to-underlying/aave-pt-to-underlying.d.ts} +23 -18
  28. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js +323 -0
  29. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js.map +1 -0
  30. package/build/dex/aave-pt-to-underlying/config.d.ts +3 -0
  31. package/build/dex/aave-pt-to-underlying/config.js +24 -0
  32. package/build/dex/aave-pt-to-underlying/config.js.map +1 -0
  33. package/build/dex/aave-pt-to-underlying/constants.d.ts +2 -0
  34. package/build/dex/aave-pt-to-underlying/constants.js +6 -0
  35. package/build/dex/aave-pt-to-underlying/constants.js.map +1 -0
  36. package/build/dex/aave-pt-to-underlying/types.d.ts +24 -0
  37. package/build/dex/aave-pt-to-underlying/types.js.map +1 -0
  38. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.d.ts +39 -0
  39. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js +244 -0
  40. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js.map +1 -0
  41. package/build/dex/aave-pt-to-usdc/config.d.ts +3 -0
  42. package/build/dex/aave-pt-to-usdc/config.js +47 -0
  43. package/build/dex/aave-pt-to-usdc/config.js.map +1 -0
  44. package/build/dex/aave-pt-to-usdc/constants.d.ts +2 -0
  45. package/build/dex/aave-pt-to-usdc/constants.js +6 -0
  46. package/build/dex/aave-pt-to-usdc/constants.js.map +1 -0
  47. package/build/dex/aave-pt-to-usdc/types.d.ts +22 -0
  48. package/build/dex/aave-pt-to-usdc/types.js.map +1 -0
  49. package/build/dex/apex-defi/apex-defi-factory.d.ts +26 -0
  50. package/build/dex/apex-defi/apex-defi-factory.js +53 -0
  51. package/build/dex/apex-defi/apex-defi-factory.js.map +1 -0
  52. package/build/dex/apex-defi/apex-defi-pool.d.ts +55 -0
  53. package/build/dex/apex-defi/apex-defi-pool.js +247 -0
  54. package/build/dex/apex-defi/apex-defi-pool.js.map +1 -0
  55. package/build/dex/apex-defi/apex-defi-wrapper-factory.d.ts +57 -0
  56. package/build/dex/apex-defi/apex-defi-wrapper-factory.js +250 -0
  57. package/build/dex/apex-defi/apex-defi-wrapper-factory.js.map +1 -0
  58. package/build/dex/apex-defi/apex-defi.d.ts +97 -0
  59. package/build/dex/apex-defi/apex-defi.js +1021 -0
  60. package/build/dex/apex-defi/apex-defi.js.map +1 -0
  61. package/build/dex/apex-defi/config.d.ts +4 -0
  62. package/build/dex/apex-defi/config.js +138 -0
  63. package/build/dex/apex-defi/config.js.map +1 -0
  64. package/build/dex/apex-defi/types.d.ts +32 -0
  65. package/build/dex/apex-defi/types.js +3 -0
  66. package/build/dex/{usual-bond → apex-defi}/types.js.map +1 -1
  67. package/build/dex/apex-defi/utils.d.ts +46 -0
  68. package/build/dex/apex-defi/utils.js +133 -0
  69. package/build/dex/apex-defi/utils.js.map +1 -0
  70. package/build/dex/curve-v1-factory/constants.js.map +1 -1
  71. package/build/dex/maker-psm/maker-psm-event-pool.d.ts +43 -0
  72. package/build/dex/maker-psm/maker-psm-event-pool.js +132 -0
  73. package/build/dex/maker-psm/maker-psm-event-pool.js.map +1 -0
  74. package/build/dex/miro-migrator/miro-migrator-state.d.ts +27 -0
  75. package/build/dex/miro-migrator/miro-migrator-state.js +89 -0
  76. package/build/dex/miro-migrator/miro-migrator-state.js.map +1 -0
  77. package/build/dex/oswap/config.js +10 -0
  78. package/build/dex/oswap/config.js.map +1 -1
  79. package/build/dex/oswap/oswap.js +1 -1
  80. package/build/dex/oswap/oswap.js.map +1 -1
  81. package/build/dex/{usual-bond → stabull}/config.d.ts +1 -1
  82. package/build/dex/stabull/config.js +177 -0
  83. package/build/dex/stabull/config.js.map +1 -0
  84. package/build/dex/{se-vlr/se-vlr-pool.d.ts → stabull/stabull-pool.d.ts} +13 -6
  85. package/build/dex/stabull/stabull-pool.js +113 -0
  86. package/build/dex/stabull/stabull-pool.js.map +1 -0
  87. package/build/dex/stabull/stabull.d.ts +55 -0
  88. package/build/dex/stabull/stabull.js +286 -0
  89. package/build/dex/stabull/stabull.js.map +1 -0
  90. package/build/dex/stabull/types.d.ts +21 -0
  91. package/build/dex/stabull/types.js +3 -0
  92. package/build/dex/stabull/types.js.map +1 -0
  93. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +4 -0
  94. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +56 -0
  95. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +1 -0
  96. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3-factory.d.ts +7 -0
  97. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3-factory.js +20 -0
  98. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3-factory.js.map +1 -0
  99. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3-pool.d.ts +12 -0
  100. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3-pool.js +142 -0
  101. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3-pool.js.map +1 -0
  102. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.d.ts +11 -0
  103. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js +134 -0
  104. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js.map +1 -0
  105. package/build/dex/uniswap-v3/forks/pharaoh-v3/utils.d.ts +4 -0
  106. package/build/dex/uniswap-v3/forks/pharaoh-v3/utils.js +56 -0
  107. package/build/dex/uniswap-v3/forks/pharaoh-v3/utils.js.map +1 -0
  108. package/build/dex/uniswap-v4/contract-math/Position.d.ts +6 -0
  109. package/build/dex/uniswap-v4/contract-math/Position.js +29 -0
  110. package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -1
  111. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +7 -0
  112. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +28 -0
  113. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +1 -0
  114. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
  115. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +2 -0
  116. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +1 -0
  117. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +7 -0
  118. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +28 -0
  119. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +1 -0
  120. package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
  121. package/build/dex/uniswap-v4/hooks/fee-hook/types.js +2 -0
  122. package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +1 -0
  123. package/build/dex/uniswap-v4/hooks/index.d.ts +1 -0
  124. package/build/dex/uniswap-v4/hooks/index.js +9 -0
  125. package/build/dex/uniswap-v4/hooks/index.js.map +1 -0
  126. package/build/dex/uniswap-v4/hooks/spot.d.ts +15 -0
  127. package/build/dex/uniswap-v4/hooks/spot.js +109 -0
  128. package/build/dex/uniswap-v4/hooks/spot.js.map +1 -0
  129. package/build/dex/uniswap-v4/hooks/template.d.ts +150 -0
  130. package/build/dex/uniswap-v4/hooks/template.js +104 -0
  131. package/build/dex/uniswap-v4/hooks/template.js.map +1 -0
  132. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +26 -0
  133. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +75 -0
  134. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +1 -0
  135. package/build/dex/usual/usual-usdc-usdc.d.ts +17 -0
  136. package/build/dex/usual/usual-usdc-usdc.js +59 -0
  137. package/build/dex/usual/usual-usdc-usdc.js.map +1 -0
  138. package/build/dex/{se-vlr → yo}/config.d.ts +1 -1
  139. package/build/dex/yo/config.js +21 -0
  140. package/build/dex/yo/config.js.map +1 -0
  141. package/build/dex/yo/types.d.ts +13 -0
  142. package/build/dex/yo/types.js +3 -0
  143. package/build/dex/{se-vlr → yo}/types.js.map +1 -1
  144. package/build/dex/yo/yo-pool.d.ts +13 -0
  145. package/build/dex/yo/yo-pool.js +26 -0
  146. package/build/dex/yo/yo-pool.js.map +1 -0
  147. package/build/dex/yo/yo.d.ts +39 -0
  148. package/build/dex/yo/yo.js +248 -0
  149. package/build/dex/yo/yo.js.map +1 -0
  150. package/build/implementations/api-paraswap-sdk.d.ts +25 -0
  151. package/build/implementations/api-paraswap-sdk.js +102 -0
  152. package/build/implementations/api-paraswap-sdk.js.map +1 -0
  153. package/package.json +1 -1
  154. package/build/abi/Jarvis.json +0 -1172
  155. package/build/abi/Onebit.json +0 -736
  156. package/build/abi/Shell.json +0 -1294
  157. package/build/abi/TraderJoeV2Router.json +0 -50
  158. package/build/abi/wUSDM.json +0 -757
  159. package/build/abi/zrx.v2.json +0 -1967
  160. package/build/abi/zrx.v3.json +0 -3454
  161. package/build/abi/zrx.v4.json +0 -2193
  162. package/build/dex/OneInchLp.d.ts +0 -24
  163. package/build/dex/OneInchLp.js +0 -43
  164. package/build/dex/OneInchLp.js.map +0 -1
  165. package/build/dex/bProtocol/bProtocol.d.ts +0 -15
  166. package/build/dex/bProtocol/bProtocol.js +0 -56
  167. package/build/dex/bProtocol/bProtocol.js.map +0 -1
  168. package/build/dex/bProtocol/types.d.ts +0 -11
  169. package/build/dex/bProtocol/types.js +0 -8
  170. package/build/dex/bProtocol/types.js.map +0 -1
  171. package/build/dex/jarvis.d.ts +0 -56
  172. package/build/dex/jarvis.js +0 -163
  173. package/build/dex/jarvis.js.map +0 -1
  174. package/build/dex/mStable.d.ts +0 -44
  175. package/build/dex/mStable.js +0 -75
  176. package/build/dex/mStable.js.map +0 -1
  177. package/build/dex/onebit/onebit.d.ts +0 -16
  178. package/build/dex/onebit/onebit.js +0 -61
  179. package/build/dex/onebit/onebit.js.map +0 -1
  180. package/build/dex/onebit/types.d.ts +0 -14
  181. package/build/dex/onebit/types.js +0 -8
  182. package/build/dex/onebit/types.js.map +0 -1
  183. package/build/dex/se-vlr/config.js +0 -24
  184. package/build/dex/se-vlr/config.js.map +0 -1
  185. package/build/dex/se-vlr/se-vlr-pool.js +0 -70
  186. package/build/dex/se-vlr/se-vlr-pool.js.map +0 -1
  187. package/build/dex/se-vlr/se-vlr.d.ts +0 -35
  188. package/build/dex/se-vlr/se-vlr.js +0 -131
  189. package/build/dex/se-vlr/se-vlr.js.map +0 -1
  190. package/build/dex/se-vlr/types.d.ts +0 -6
  191. package/build/dex/shell.d.ts +0 -25
  192. package/build/dex/shell.js +0 -41
  193. package/build/dex/shell.js.map +0 -1
  194. package/build/dex/trader-joe-v2.d.ts +0 -40
  195. package/build/dex/trader-joe-v2.js +0 -74
  196. package/build/dex/trader-joe-v2.js.map +0 -1
  197. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
  198. package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
  199. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
  200. package/build/dex/usual-bond/config.js +0 -13
  201. package/build/dex/usual-bond/config.js.map +0 -1
  202. package/build/dex/usual-bond/types.d.ts +0 -7
  203. package/build/dex/usual-bond/usual-bond.js +0 -176
  204. package/build/dex/usual-bond/usual-bond.js.map +0 -1
  205. package/build/dex/wusdm/config.d.ts +0 -3
  206. package/build/dex/wusdm/config.js +0 -43
  207. package/build/dex/wusdm/config.js.map +0 -1
  208. package/build/dex/wusdm/constants.d.ts +0 -2
  209. package/build/dex/wusdm/constants.js +0 -6
  210. package/build/dex/wusdm/constants.js.map +0 -1
  211. package/build/dex/wusdm/types.d.ts +0 -18
  212. package/build/dex/wusdm/types.js +0 -11
  213. package/build/dex/wusdm/types.js.map +0 -1
  214. package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
  215. package/build/dex/wusdm/wusdm-pool.js +0 -74
  216. package/build/dex/wusdm/wusdm-pool.js.map +0 -1
  217. package/build/dex/wusdm/wusdm.d.ts +0 -46
  218. package/build/dex/wusdm/wusdm.js +0 -243
  219. package/build/dex/wusdm/wusdm.js.map +0 -1
  220. package/build/dex/zerox/config.d.ts +0 -2
  221. package/build/dex/zerox/config.js +0 -33
  222. package/build/dex/zerox/config.js.map +0 -1
  223. package/build/dex/zerox/index.d.ts +0 -22
  224. package/build/dex/zerox/index.js +0 -225
  225. package/build/dex/zerox/index.js.map +0 -1
  226. package/build/dex/zerox/order.d.ts +0 -88
  227. package/build/dex/zerox/order.js +0 -53
  228. package/build/dex/zerox/order.js.map +0 -1
  229. package/build/dex/zerox/types.d.ts +0 -73
  230. package/build/dex/zerox/types.js +0 -21
  231. package/build/dex/zerox/types.js.map +0 -1
  232. /package/build/dex/{se-vlr → aave-pt-to-underlying}/types.js +0 -0
  233. /package/build/dex/{usual-bond → aave-pt-to-usdc}/types.js +0 -0
@@ -0,0 +1,134 @@
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.PharaohV3 = void 0;
7
+ const config_1 = require("../../config");
8
+ const utils_1 = require("../../../../utils");
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const velodrome_slipstream_1 = require("../velodrome-slipstream/velodrome-slipstream");
11
+ const constants_1 = require("../../constants");
12
+ class PharaohV3 extends velodrome_slipstream_1.VelodromeSlipstream {
13
+ static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(lodash_1.default.pick(config_1.UniswapV3Config, ['PharaohV3']));
14
+ async getTopPoolsForToken(tokenAddress, limit) {
15
+ if (!this.config.subgraphURL)
16
+ return [];
17
+ const _tokenAddress = tokenAddress.toLowerCase();
18
+ const res = await this._querySubgraph(`query ($token: Bytes!, $count: Int) {
19
+ pools0: clPools(
20
+ orderBy: totalValueLockedToken0
21
+ orderDirection: desc
22
+ first: 100
23
+ skip: 0
24
+ ) {
25
+ id
26
+ token0 {
27
+ id
28
+ decimals
29
+ }
30
+ token1 {
31
+ id
32
+ decimals
33
+ }
34
+ totalValueLockedToken0
35
+ totalValueLockedToken1
36
+ token0Price
37
+ token1Price
38
+ }
39
+
40
+ pools1: clPools(
41
+ orderBy: totalValueLockedToken1
42
+ orderDirection: desc
43
+ first: 100
44
+ skip: 0
45
+ ) {
46
+ id
47
+ token0 {
48
+ id
49
+ decimals
50
+ }
51
+ token1 {
52
+ id
53
+ decimals
54
+ }
55
+ totalValueLockedToken0
56
+ totalValueLockedToken1
57
+ token0Price
58
+ token1Price
59
+ }
60
+ }`, {
61
+ token: _tokenAddress,
62
+ count: limit,
63
+ });
64
+ if (!(res && res.pools0 && res.pools1)) {
65
+ this.logger.error(`Error_${this.dexKey}_Subgraph: couldn't fetch pools from subgraph`);
66
+ return [];
67
+ }
68
+ const pools0 = res.pools0.map((pool) => ({
69
+ exchange: this.dexKey,
70
+ address: pool.id.toLowerCase(),
71
+ connectorTokens: [
72
+ {
73
+ address: pool.token1.id.toLowerCase(),
74
+ decimals: Number(pool.token1.decimals),
75
+ },
76
+ ],
77
+ liquidityUSD: 0,
78
+ }));
79
+ const pools1 = res.pools1.map((pool) => ({
80
+ exchange: this.dexKey,
81
+ address: pool.id.toLowerCase(),
82
+ connectorTokens: [
83
+ {
84
+ address: pool.token0.id.toLowerCase(),
85
+ decimals: Number(pool.token0.decimals),
86
+ },
87
+ ],
88
+ liquidityUSD: 0,
89
+ }));
90
+ const allPools = [...pools0, ...pools1];
91
+ if (allPools.length === 0)
92
+ return [];
93
+ const poolBalances = await this._getPoolBalances(allPools.map(p => [
94
+ p.address,
95
+ tokenAddress,
96
+ p.connectorTokens[0].address,
97
+ ]));
98
+ const tokensAmounts = allPools
99
+ .map((p, i) => {
100
+ return [
101
+ [tokenAddress, poolBalances[i][0]],
102
+ [p.connectorTokens[0].address, poolBalances[i][1]],
103
+ ];
104
+ })
105
+ .flat();
106
+ const poolUsdBalances = await this.dexHelper.getUsdTokenAmounts(tokensAmounts);
107
+ const pools = allPools.map((pool, i) => {
108
+ const tokenUsdBalance = poolUsdBalances[i * 2];
109
+ const connectorTokenUsdBalance = poolUsdBalances[i * 2 + 1];
110
+ const effToken = tokenUsdBalance
111
+ ? tokenUsdBalance * constants_1.UNISWAPV3_EFFICIENCY_FACTOR
112
+ : null;
113
+ const effConnector = connectorTokenUsdBalance
114
+ ? connectorTokenUsdBalance * constants_1.UNISWAPV3_EFFICIENCY_FACTOR
115
+ : null;
116
+ if (effToken) {
117
+ pool.connectorTokens[0] = {
118
+ ...pool.connectorTokens[0],
119
+ liquidityUSD: effToken,
120
+ };
121
+ }
122
+ const liquidityUSD = effConnector || effToken || 0;
123
+ return {
124
+ ...pool,
125
+ liquidityUSD,
126
+ };
127
+ });
128
+ return pools
129
+ .sort((a, b) => b.liquidityUSD - a.liquidityUSD)
130
+ .slice(0, limit);
131
+ }
132
+ }
133
+ exports.PharaohV3 = PharaohV3;
134
+ //# sourceMappingURL=pharaoh-v3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pharaoh-v3.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { MultiResult } from '../../../../lib/multi-wrapper';
2
+ import { BytesLike } from 'ethers';
3
+ import { DecodedStateMultiCallResultWithRelativeBitmaps } from '../../types';
4
+ export declare function decodeStateMultiCallResultWithRelativeBitmaps(result: MultiResult<BytesLike> | BytesLike): DecodedStateMultiCallResultWithRelativeBitmaps;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeStateMultiCallResultWithRelativeBitmaps = decodeStateMultiCallResultWithRelativeBitmaps;
4
+ const ethers_1 = require("ethers");
5
+ const decoders_1 = require("../../../../lib/decoders");
6
+ const ts_essentials_1 = require("ts-essentials");
7
+ function decodeStateMultiCallResultWithRelativeBitmaps(result) {
8
+ const [isSuccess, toDecode] = (0, decoders_1.extractSuccessAndValue)(result);
9
+ (0, ts_essentials_1.assert)(isSuccess && toDecode !== '0x', `decodeStateMultiCallResultWithRelativeBitmaps failed to get decodable result: ${result}`);
10
+ const decoded = ethers_1.ethers.utils.defaultAbiCoder.decode([
11
+ // I don't want to pass here any interface, so I just use it in ethers format
12
+ `
13
+ tuple(
14
+ address pool,
15
+ uint256 blockTimestamp,
16
+ tuple(
17
+ uint160 sqrtPriceX96,
18
+ int24 tick,
19
+ uint16 observationIndex,
20
+ uint16 observationCardinality,
21
+ uint16 observationCardinalityNext,
22
+ uint24 feeProtocol,
23
+ bool unlocked,
24
+ ) slot0,
25
+ uint128 liquidity,
26
+ int24 tickSpacing,
27
+ uint128 maxLiquidityPerTick,
28
+ tuple(
29
+ uint32 blockTimestamp,
30
+ int56 tickCumulative,
31
+ uint160 secondsPerLiquidityCumulativeX128,
32
+ bool initialized,
33
+ ) observation,
34
+ tuple(
35
+ int16 index,
36
+ uint256 value
37
+ )[] tickBitmap,
38
+ tuple(
39
+ int24 index,
40
+ tuple(
41
+ uint128 liquidityGross,
42
+ int128 liquidityNet,
43
+ int56 tickCumulativeOutside,
44
+ uint160 secondsPerLiquidityOutsideX128,
45
+ uint32 secondsOutside,
46
+ bool initialized,
47
+ ) value,
48
+ )[] ticks
49
+ )
50
+ `,
51
+ ], toDecode)[0];
52
+ // This conversion is not precise, because when we decode, we have more values
53
+ // But I typed only the ones that are used later
54
+ return decoded;
55
+ }
56
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/pharaoh-v3/utils.ts"],"names":[],"mappings":";;AAMA,sGA2DC;AAhED,mCAA2C;AAE3C,uDAAkE;AAClE,iDAAuC;AAEvC,SAAgB,6CAA6C,CAC3D,MAA0C;IAE1C,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAC;IAE7D,IAAA,sBAAM,EACJ,SAAS,IAAI,QAAQ,KAAK,IAAI,EAC9B,iFAAiF,MAAM,EAAE,CAC1F,CAAC;IAEF,MAAM,OAAO,GAAG,eAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CACjD;QACE,6EAA6E;QAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCD;KACA,EACD,QAAQ,CACT,CAAC,CAAC,CAAC,CAAC;IAEL,8EAA8E;IAC9E,gDAAgD;IAChD,OAAO,OAAyD,CAAC;AACnE,CAAC"}
@@ -1,3 +1,9 @@
1
+ import { PoolState, PositionState } from '../types';
1
2
  export declare class Position {
2
3
  static calculatePositionKey(owner: string, tickLower: bigint, tickUpper: bigint, salt: string): string;
4
+ static get(poolState: PoolState, owner: string, tickLower: bigint, tickUpper: bigint, salt: string): PositionState | undefined;
5
+ static update(poolState: PoolState, owner: string, tickLower: bigint, tickUpper: bigint, salt: string, liquidityDelta: bigint, feeGrowthInside0X128: bigint, feeGrowthInside1X128: bigint): {
6
+ feesOwed0: bigint;
7
+ feesOwed1: bigint;
8
+ };
3
9
  }
@@ -1,10 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Position = void 0;
4
+ const utils_1 = require("../../../utils");
4
5
  class Position {
5
6
  static calculatePositionKey(owner, tickLower, tickUpper, salt) {
6
7
  return `${owner}-${tickLower.toString()}-${tickUpper.toString()}-${salt}`;
7
8
  }
9
+ static get(poolState, owner, tickLower, tickUpper, salt) {
10
+ const positionKey = Position.calculatePositionKey(owner, tickLower, tickUpper, salt);
11
+ return poolState.positions[positionKey];
12
+ }
13
+ static update(poolState, owner, tickLower, tickUpper, salt, liquidityDelta, feeGrowthInside0X128, feeGrowthInside1X128) {
14
+ const positionKey = Position.calculatePositionKey(owner, tickLower, tickUpper, salt);
15
+ let position = poolState.positions[positionKey];
16
+ (0, utils_1._require)(Boolean(position), 'Position does not exist', { position });
17
+ let { liquidity, feeGrowthInside0LastX128, feeGrowthInside1LastX128 } = position;
18
+ if (liquidityDelta === 0n) {
19
+ (0, utils_1._require)(liquidity !== 0n, 'Cannot update empty position', {
20
+ liquidityDelta,
21
+ });
22
+ }
23
+ else {
24
+ liquidity += liquidityDelta;
25
+ }
26
+ const feesOwed0 = ((feeGrowthInside0X128 - feeGrowthInside0LastX128) * liquidity) /
27
+ BigInt(1 << 128);
28
+ const feesOwed1 = ((feeGrowthInside1X128 - feeGrowthInside1LastX128) * liquidity) /
29
+ BigInt(1 << 128);
30
+ poolState.positions[positionKey] = {
31
+ liquidity,
32
+ feeGrowthInside0LastX128: feeGrowthInside0X128,
33
+ feeGrowthInside1LastX128: feeGrowthInside1X128,
34
+ };
35
+ return { feesOwed0, feesOwed1 };
36
+ }
8
37
  }
9
38
  exports.Position = Position;
10
39
  //# sourceMappingURL=Position.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Position.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/contract-math/Position.ts"],"names":[],"mappings":";;;AAGA,MAAa,QAAQ;IACZ,MAAM,CAAC,oBAAoB,CAChC,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY;QAEZ,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5E,CAAC;CAgEF;AAxED,4BAwEC"}
1
+ {"version":3,"file":"Position.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/contract-math/Position.ts"],"names":[],"mappings":";;;AACA,0CAA0C;AAE1C,MAAa,QAAQ;IACZ,MAAM,CAAC,oBAAoB,CAChC,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY;QAEZ,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,GAAG,CACR,SAAoB,EACpB,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY;QAEZ,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAC/C,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;QAEF,OAAO,SAAS,CAAC,SAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,MAAM,CACX,SAAoB,EACpB,KAAa,EACb,SAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,cAAsB,EACtB,oBAA4B,EAC5B,oBAA4B;QAE5B,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAC/C,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,CACL,CAAC;QACF,IAAI,QAAQ,GAAG,SAAS,CAAC,SAAU,CAAC,WAAW,CAAC,CAAC;QAEjD,IAAA,gBAAQ,EAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErE,IAAI,EAAE,SAAS,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,GACnE,QAAQ,CAAC;QAEX,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;YAC1B,IAAA,gBAAQ,EAAC,SAAS,KAAK,EAAE,EAAE,8BAA8B,EAAE;gBACzD,cAAc;aACf,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,SAAS,IAAI,cAAc,CAAC;QAC9B,CAAC;QAED,MAAM,SAAS,GACb,CAAC,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,GAAG,SAAS,CAAC;YAC/D,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GACb,CAAC,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,GAAG,SAAS,CAAC;YAC/D,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAEnB,SAAS,CAAC,SAAU,CAAC,WAAW,CAAC,GAAG;YAClC,SAAS;YACT,wBAAwB,EAAE,oBAAoB;YAC9C,wBAAwB,EAAE,oBAAoB;SAC/C,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;CACF;AAzED,4BAyEC"}
@@ -0,0 +1,7 @@
1
+ import { UniswapV4Pool } from '../../uniswap-v4-pool';
2
+ import { PoolState } from '../../types';
3
+ export declare class CabalcoinHookPool extends UniswapV4Pool {
4
+ private hookInterface;
5
+ constructor(...args: ConstructorParameters<typeof UniswapV4Pool>);
6
+ handleCustomFeeChangedEvent(event: any, poolState: PoolState): Promise<PoolState>;
7
+ }
@@ -0,0 +1,28 @@
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.CabalcoinHookPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const uniswap_v4_pool_1 = require("../../uniswap-v4-pool");
9
+ const uniswap_v4_pool_math_1 = require("../../contract-math/uniswap-v4-pool-math");
10
+ const cabalcoin_hook_abi_json_1 = __importDefault(require("../../../../abi/uniswap-v4/hooks/cabalcoin-hook.abi.json"));
11
+ class CabalcoinHookPool extends uniswap_v4_pool_1.UniswapV4Pool {
12
+ hookInterface = new abi_1.Interface(cabalcoin_hook_abi_json_1.default);
13
+ constructor(...args) {
14
+ super(...args);
15
+ this.addressesSubscribed.push(this.hooks);
16
+ this.logDecoders.push((log) => this.hookInterface.parseLog(log));
17
+ this.handlers['CustomFeeChanged'] =
18
+ this.handleCustomFeeChangedEvent.bind(this);
19
+ }
20
+ async handleCustomFeeChangedEvent(event, poolState) {
21
+ const id = event.args.id.toLowerCase();
22
+ uniswap_v4_pool_math_1.uniswapV4PoolMath.checkPoolInitialized(poolState);
23
+ poolState.fee = event.args.newFee.toString();
24
+ return poolState;
25
+ }
26
+ }
27
+ exports.CabalcoinHookPool = CabalcoinHookPool;
28
+ //# sourceMappingURL=cabalcoin-hook-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cabalcoin-hook-pool.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,2DAAsD;AAEtD,mFAA6E;AAE7E,uHAAwF;AAExF,MAAa,iBAAkB,SAAQ,+BAAa;IAC1C,aAAa,GAAG,IAAI,eAAS,CAAC,iCAAgB,CAAC,CAAC;IAExD,YAAY,GAAG,IAAiD;QAC9D,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,KAAU,EAAE,SAAoB;QAChE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,wCAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAElD,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AArBD,8CAqBC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/cabalcoin-hook/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { UniswapV4Pool } from '../../uniswap-v4-pool';
2
+ import { PoolState } from '../../types';
3
+ export declare class FeeHookPool extends UniswapV4Pool {
4
+ private hookInterface;
5
+ constructor(...args: ConstructorParameters<typeof UniswapV4Pool>);
6
+ handleCustomFeeChangedEvent(event: any, poolState: PoolState): Promise<PoolState>;
7
+ }
@@ -0,0 +1,28 @@
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.FeeHookPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const uniswap_v4_pool_1 = require("../../uniswap-v4-pool");
9
+ const uniswap_v4_pool_math_1 = require("../../contract-math/uniswap-v4-pool-math");
10
+ const fee_hook_abi_json_1 = __importDefault(require("../../../../abi/uniswap-v4/hooks/fee-hook.abi.json"));
11
+ class FeeHookPool extends uniswap_v4_pool_1.UniswapV4Pool {
12
+ hookInterface = new abi_1.Interface(fee_hook_abi_json_1.default);
13
+ constructor(...args) {
14
+ super(...args);
15
+ this.addressesSubscribed.push(this.hooks);
16
+ this.logDecoders.push((log) => this.hookInterface.parseLog(log));
17
+ this.handlers['CustomFeeChanged'] =
18
+ this.handleCustomFeeChangedEvent.bind(this);
19
+ }
20
+ async handleCustomFeeChangedEvent(event, poolState) {
21
+ const id = event.args.id.toLowerCase();
22
+ uniswap_v4_pool_math_1.uniswapV4PoolMath.checkPoolInitialized(poolState);
23
+ poolState.fee = event.args.newFee.toString();
24
+ return poolState;
25
+ }
26
+ }
27
+ exports.FeeHookPool = FeeHookPool;
28
+ //# sourceMappingURL=fee-hook-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee-hook-pool.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,2DAAsD;AAEtD,mFAA6E;AAE7E,2GAA4E;AAE5E,MAAa,WAAY,SAAQ,+BAAa;IACpC,aAAa,GAAG,IAAI,eAAS,CAAC,2BAAU,CAAC,CAAC;IAElD,YAAY,GAAG,IAAiD;QAC9D,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,KAAU,EAAE,SAAoB;QAChE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,wCAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAElD,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AArBD,kCAqBC"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v4/hooks/fee-hook/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const template_1 = require("./template");
4
+ const spot_1 = require("./spot");
5
+ const SPOT_HOOK_ADDRESS = '0xa0b0d2d00fd544d8e0887f1a3cedd6e24baf10cc';
6
+ template_1.uniswapV4HookRegistry.registerFactory(SPOT_HOOK_ADDRESS, params => {
7
+ return new spot_1.SpotHook(params);
8
+ });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/hooks/index.ts"],"names":[],"mappings":";;AAAA,yCAAmD;AACnD,iCAAkC;AAElC,MAAM,iBAAiB,GAAG,4CAA4C,CAAC;AAEvE,gCAAqB,CAAC,eAAe,CAAC,iBAAiB,EAAE,MAAM,CAAC,EAAE;IAChE,OAAO,IAAI,eAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { BaseUniswapV4Hook, HookAfterSwapParams, HookAfterSwapResult, HookBeforeSwapParams, HookBeforeSwapResult, HookFactoryParams } from './template';
2
+ export declare class SpotHook extends BaseUniswapV4Hook {
3
+ private policyManagerAddress?;
4
+ private dynamicFeeManagerAddress?;
5
+ private policyManagerContract?;
6
+ private dynamicFeeManagerContract?;
7
+ private feeCache;
8
+ constructor(params: HookFactoryParams);
9
+ bootstrap(): Promise<void>;
10
+ beforeSwap(params: HookBeforeSwapParams): Promise<HookBeforeSwapResult | void>;
11
+ afterSwap(params: HookAfterSwapParams): Promise<HookAfterSwapResult | void>;
12
+ private calculateHookFee;
13
+ private ensureContracts;
14
+ private loadFeeState;
15
+ }
@@ -0,0 +1,109 @@
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.SpotHook = void 0;
7
+ const core_1 = require("@paraswap/core");
8
+ const SpotHook_json_1 = __importDefault(require("../../../abi/uniswap-v4/hooks/SpotHook.json"));
9
+ const SpotPolicyManager_json_1 = __importDefault(require("../../../abi/uniswap-v4/hooks/SpotPolicyManager.json"));
10
+ const SpotDynamicFeeManager_json_1 = __importDefault(require("../../../abi/uniswap-v4/hooks/SpotDynamicFeeManager.json"));
11
+ const template_1 = require("./template");
12
+ class SpotHook extends template_1.BaseUniswapV4Hook {
13
+ policyManagerAddress;
14
+ dynamicFeeManagerAddress;
15
+ policyManagerContract;
16
+ dynamicFeeManagerContract;
17
+ feeCache = new Map();
18
+ constructor(params) {
19
+ super(params.hookAddress, 'Spot', params);
20
+ }
21
+ async bootstrap() {
22
+ await this.ensureContracts();
23
+ }
24
+ async beforeSwap(params) {
25
+ if (params.blockNumber === undefined)
26
+ return undefined;
27
+ const { dynamicFeePPM, protocolFeePPM } = await this.loadFeeState(params.pool.id, params.blockNumber);
28
+ const result = {
29
+ metadata: { dynamicFeePPM, protocolFeePPM },
30
+ lpFeeOverride: dynamicFeePPM,
31
+ };
32
+ if (params.side === core_1.SwapSide.SELL &&
33
+ params.amountSpecified < 0n &&
34
+ protocolFeePPM > 0n) {
35
+ const hookFee = this.calculateHookFee(-params.amountSpecified, dynamicFeePPM, protocolFeePPM);
36
+ if (hookFee > 0n) {
37
+ result.amountSpecified = params.amountSpecified + hookFee;
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ async afterSwap(params) {
43
+ const metadata = params.metadata;
44
+ if (!metadata ||
45
+ metadata.protocolFeePPM === 0n ||
46
+ params.side !== core_1.SwapSide.BUY ||
47
+ params.amountIn <= 0n) {
48
+ return undefined;
49
+ }
50
+ const hookFee = this.calculateHookFee(params.amountIn, metadata.dynamicFeePPM, metadata.protocolFeePPM);
51
+ if (hookFee === 0n) {
52
+ return undefined;
53
+ }
54
+ return {
55
+ deltaAmountIn: hookFee,
56
+ };
57
+ }
58
+ calculateHookFee(amount, dynamicFeePPM, protocolFeePPM) {
59
+ if (amount === 0n || dynamicFeePPM === 0n || protocolFeePPM === 0n) {
60
+ return 0n;
61
+ }
62
+ return (amount * dynamicFeePPM * protocolFeePPM) / 1000000000000n;
63
+ }
64
+ async ensureContracts() {
65
+ if (this.policyManagerContract && this.dynamicFeeManagerContract) {
66
+ return;
67
+ }
68
+ const spotContract = new this.dexHelper.web3Provider.eth.Contract(SpotHook_json_1.default, this.hookAddress);
69
+ const [policyManager, dynamicFeeManager] = await Promise.all([
70
+ spotContract.methods.policyManager().call(),
71
+ spotContract.methods.dynamicFeeManager().call(),
72
+ ]);
73
+ this.policyManagerAddress = policyManager.toLowerCase();
74
+ this.dynamicFeeManagerAddress = dynamicFeeManager.toLowerCase();
75
+ this.policyManagerContract = new this.dexHelper.web3Provider.eth.Contract(SpotPolicyManager_json_1.default, this.policyManagerAddress);
76
+ this.dynamicFeeManagerContract =
77
+ new this.dexHelper.web3Provider.eth.Contract(SpotDynamicFeeManager_json_1.default, this.dynamicFeeManagerAddress);
78
+ }
79
+ async loadFeeState(poolId, blockNumber) {
80
+ await this.ensureContracts();
81
+ const normalizedPoolId = poolId.toLowerCase();
82
+ const cached = this.feeCache.get(normalizedPoolId);
83
+ if (cached && cached.blockNumber === blockNumber) {
84
+ return cached;
85
+ }
86
+ const [manualFeeRaw, protocolFeeRaw, feeStateRaw] = await Promise.all([
87
+ this.policyManagerContract.methods.getManualFee(normalizedPoolId).call({}, blockNumber),
88
+ this.policyManagerContract.methods.getPoolPOLShare(normalizedPoolId).call({}, blockNumber),
89
+ this.dynamicFeeManagerContract.methods.getFeeState(normalizedPoolId).call({}, blockNumber),
90
+ ]);
91
+ const manualFeeResponse = manualFeeRaw;
92
+ const manualFee = BigInt(manualFeeResponse.manualFee ?? manualFeeResponse[0]);
93
+ const hasManualFee = Boolean(manualFeeResponse.isSet ?? manualFeeResponse[1]);
94
+ const feeStateResponse = feeStateRaw;
95
+ const baseFee = BigInt(feeStateResponse.baseFeePpm ?? feeStateResponse[0]);
96
+ const surgeFee = BigInt(feeStateResponse.surgeFeePpm ?? feeStateResponse[1]);
97
+ const protocolFeePPM = BigInt(protocolFeeRaw);
98
+ const dynamicFeePPM = hasManualFee ? manualFee : baseFee + surgeFee;
99
+ const entry = {
100
+ blockNumber,
101
+ dynamicFeePPM,
102
+ protocolFeePPM,
103
+ };
104
+ this.feeCache.set(normalizedPoolId, entry);
105
+ return entry;
106
+ }
107
+ }
108
+ exports.SpotHook = SpotHook;
109
+ //# sourceMappingURL=spot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spot.js","sourceRoot":"","sources":["../../../../src/dex/uniswap-v4/hooks/spot.ts"],"names":[],"mappings":"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"}