@paraswap/dex-lib 4.8.14 → 4.8.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 (265) hide show
  1. package/build/abi/{apex-defi/ApexDefiRouter.abi.json → BProtocol.json} +573 -538
  2. package/build/abi/Jarvis.json +1172 -0
  3. package/build/abi/{apex-defi/ApexDefiFactory.abi.json → MStableAsset.json} +781 -985
  4. package/build/abi/{apex-defi/ApexDefiWrapperFactory.abi.json → OneInchLp.json} +766 -569
  5. package/build/abi/Onebit.json +736 -0
  6. package/build/abi/Shell.json +1294 -0
  7. package/build/abi/TraderJoeV2Router.json +50 -0
  8. package/build/abi/wUSDM.json +757 -0
  9. package/build/abi/zrx.v2.json +1967 -0
  10. package/build/abi/zrx.v3.json +3454 -0
  11. package/build/abi/zrx.v4.json +2193 -0
  12. package/build/dex/OneInchLp.d.ts +24 -0
  13. package/build/dex/OneInchLp.js +43 -0
  14. package/build/dex/OneInchLp.js.map +1 -0
  15. package/build/dex/algebra/algebra.d.ts +4 -0
  16. package/build/dex/algebra/algebra.js +39 -14
  17. package/build/dex/algebra/algebra.js.map +1 -1
  18. package/build/dex/bProtocol/bProtocol.d.ts +15 -0
  19. package/build/dex/bProtocol/bProtocol.js +56 -0
  20. package/build/dex/bProtocol/bProtocol.js.map +1 -0
  21. package/build/dex/bProtocol/types.d.ts +11 -0
  22. package/build/dex/bProtocol/types.js +8 -0
  23. package/build/dex/bProtocol/types.js.map +1 -0
  24. package/build/dex/infusion/infusion-stable-pool.d.ts +1 -1
  25. package/build/dex/infusion/infusion-stable-pool.js +1 -1
  26. package/build/dex/infusion/infusion-stable-pool.js.map +1 -1
  27. package/build/dex/infusion/infusion.d.ts +3 -3
  28. package/build/dex/infusion/infusion.js +104 -65
  29. package/build/dex/infusion/infusion.js.map +1 -1
  30. package/build/dex/jarvis.d.ts +56 -0
  31. package/build/dex/jarvis.js +163 -0
  32. package/build/dex/jarvis.js.map +1 -0
  33. package/build/dex/mStable.d.ts +44 -0
  34. package/build/dex/mStable.js +75 -0
  35. package/build/dex/mStable.js.map +1 -0
  36. package/build/dex/onebit/onebit.d.ts +16 -0
  37. package/build/dex/onebit/onebit.js +61 -0
  38. package/build/dex/onebit/onebit.js.map +1 -0
  39. package/build/dex/onebit/types.d.ts +14 -0
  40. package/build/dex/onebit/types.js +8 -0
  41. package/build/dex/onebit/types.js.map +1 -0
  42. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +4 -0
  43. package/build/dex/pancakeswap-v3/pancakeswap-v3.js +40 -17
  44. package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
  45. package/build/dex/{yo → se-vlr}/config.d.ts +1 -1
  46. package/build/dex/se-vlr/config.js +24 -0
  47. package/build/dex/se-vlr/config.js.map +1 -0
  48. package/build/dex/{stabull/stabull-pool.d.ts → se-vlr/se-vlr-pool.d.ts} +6 -13
  49. package/build/dex/se-vlr/se-vlr-pool.js +70 -0
  50. package/build/dex/se-vlr/se-vlr-pool.js.map +1 -0
  51. package/build/dex/se-vlr/se-vlr.d.ts +35 -0
  52. package/build/dex/se-vlr/se-vlr.js +131 -0
  53. package/build/dex/se-vlr/se-vlr.js.map +1 -0
  54. package/build/dex/se-vlr/types.d.ts +6 -0
  55. package/build/dex/{yo → se-vlr}/types.js.map +1 -1
  56. package/build/dex/shell.d.ts +25 -0
  57. package/build/dex/shell.js +41 -0
  58. package/build/dex/shell.js.map +1 -0
  59. package/build/dex/solidly/forks-override/aerodrome.d.ts +1 -1
  60. package/build/dex/solidly/forks-override/aerodrome.js +14 -18
  61. package/build/dex/solidly/forks-override/aerodrome.js.map +1 -1
  62. package/build/dex/trader-joe-v2.d.ts +40 -0
  63. package/build/dex/trader-joe-v2.js +74 -0
  64. package/build/dex/trader-joe-v2.js.map +1 -0
  65. package/build/dex/uniswap-v2/uniswap-v2.js +1 -4
  66. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  67. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +94 -0
  68. package/build/dex/uniswap-v3/uniswap-v3-new.js +923 -0
  69. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +1 -0
  70. package/build/dex/uniswap-v4/contract-math/Position.d.ts +0 -6
  71. package/build/dex/uniswap-v4/contract-math/Position.js +0 -29
  72. package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -1
  73. package/build/dex/{stabull → usual-bond}/config.d.ts +1 -1
  74. package/build/dex/usual-bond/config.js +13 -0
  75. package/build/dex/usual-bond/config.js.map +1 -0
  76. package/build/dex/usual-bond/types.d.ts +7 -0
  77. package/build/dex/{stabull → usual-bond}/types.js.map +1 -1
  78. package/build/dex/{aave-pt-to-underlying/aave-pt-to-underlying.d.ts → usual-bond/usual-bond.d.ts} +18 -23
  79. package/build/dex/usual-bond/usual-bond.js +176 -0
  80. package/build/dex/usual-bond/usual-bond.js.map +1 -0
  81. package/build/dex/wusdm/config.d.ts +3 -0
  82. package/build/dex/wusdm/config.js +43 -0
  83. package/build/dex/wusdm/config.js.map +1 -0
  84. package/build/dex/wusdm/constants.d.ts +2 -0
  85. package/build/dex/wusdm/constants.js +6 -0
  86. package/build/dex/wusdm/constants.js.map +1 -0
  87. package/build/dex/wusdm/types.d.ts +18 -0
  88. package/build/dex/wusdm/types.js +11 -0
  89. package/build/dex/wusdm/types.js.map +1 -0
  90. package/build/dex/wusdm/wusdm-pool.d.ts +21 -0
  91. package/build/dex/wusdm/wusdm-pool.js +74 -0
  92. package/build/dex/wusdm/wusdm-pool.js.map +1 -0
  93. package/build/dex/wusdm/wusdm.d.ts +46 -0
  94. package/build/dex/wusdm/wusdm.js +243 -0
  95. package/build/dex/wusdm/wusdm.js.map +1 -0
  96. package/build/dex/zerox/config.d.ts +2 -0
  97. package/build/dex/zerox/config.js +33 -0
  98. package/build/dex/zerox/config.js.map +1 -0
  99. package/build/dex/zerox/index.d.ts +22 -0
  100. package/build/dex/zerox/index.js +225 -0
  101. package/build/dex/zerox/index.js.map +1 -0
  102. package/build/dex/zerox/order.d.ts +88 -0
  103. package/build/dex/zerox/order.js +53 -0
  104. package/build/dex/zerox/order.js.map +1 -0
  105. package/build/dex/zerox/types.d.ts +73 -0
  106. package/build/dex/zerox/types.js +21 -0
  107. package/build/dex/zerox/types.js.map +1 -0
  108. package/package.json +1 -1
  109. package/build/abi/PendleRouterStatic.json +0 -19
  110. package/build/abi/apex-defi/ApexDefiToken.abi.json +0 -229
  111. package/build/abi/apex-defi/ApexDefiWrapper.abi.json +0 -92
  112. package/build/abi/clear/ClearFactory.json +0 -71
  113. package/build/abi/clear/ClearSwap.json +0 -334
  114. package/build/abi/clear/ClearVault.json +0 -20
  115. package/build/abi/ekubo-v3/boosted-fees-data-fetcher.json +0 -108
  116. package/build/abi/ekubo-v3/boosted-fees.json +0 -538
  117. package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +0 -796
  118. package/build/abi/pendle/pendle-deployer.abi.json +0 -520
  119. package/build/abi/pendle/pendle-oracle.abi.json +0 -413
  120. package/build/abi/ring-v2/few-wrapped-token.json +0 -587
  121. package/build/abi/ring-v2/ring-v2-factory.json +0 -125
  122. package/build/abi/ring-v2/ring-v2-pool.json +0 -461
  123. package/build/abi/ring-v2/ring-v2-router.json +0 -332
  124. package/build/abi/stabull/stabull-curve.json +0 -738
  125. package/build/abi/stabull/stabull-router.json +0 -76
  126. package/build/abi/uniswap-v4/hooks/SpotDynamicFeeManager.json +0 -26
  127. package/build/abi/uniswap-v4/hooks/SpotHook.json +0 -54
  128. package/build/abi/uniswap-v4/hooks/SpotPolicyManager.json +0 -45
  129. package/build/abi/uniswap-v4/hooks/cabalcoin-hook.abi.json +0 -682
  130. package/build/abi/uniswap-v4/hooks/fee-hook.abi.json +0 -1335
  131. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.d.ts +0 -29
  132. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js +0 -153
  133. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying-factory.js.map +0 -1
  134. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js +0 -323
  135. package/build/dex/aave-pt-to-underlying/aave-pt-to-underlying.js.map +0 -1
  136. package/build/dex/aave-pt-to-underlying/config.d.ts +0 -3
  137. package/build/dex/aave-pt-to-underlying/config.js +0 -24
  138. package/build/dex/aave-pt-to-underlying/config.js.map +0 -1
  139. package/build/dex/aave-pt-to-underlying/constants.d.ts +0 -2
  140. package/build/dex/aave-pt-to-underlying/constants.js +0 -6
  141. package/build/dex/aave-pt-to-underlying/constants.js.map +0 -1
  142. package/build/dex/aave-pt-to-underlying/types.d.ts +0 -24
  143. package/build/dex/aave-pt-to-underlying/types.js.map +0 -1
  144. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.d.ts +0 -39
  145. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js +0 -244
  146. package/build/dex/aave-pt-to-usdc/aave-pt-to-usdc.js.map +0 -1
  147. package/build/dex/aave-pt-to-usdc/config.d.ts +0 -3
  148. package/build/dex/aave-pt-to-usdc/config.js +0 -47
  149. package/build/dex/aave-pt-to-usdc/config.js.map +0 -1
  150. package/build/dex/aave-pt-to-usdc/constants.d.ts +0 -2
  151. package/build/dex/aave-pt-to-usdc/constants.js +0 -6
  152. package/build/dex/aave-pt-to-usdc/constants.js.map +0 -1
  153. package/build/dex/aave-pt-to-usdc/types.d.ts +0 -22
  154. package/build/dex/aave-pt-to-usdc/types.js.map +0 -1
  155. package/build/dex/apex-defi/apex-defi-factory.d.ts +0 -26
  156. package/build/dex/apex-defi/apex-defi-factory.js +0 -53
  157. package/build/dex/apex-defi/apex-defi-factory.js.map +0 -1
  158. package/build/dex/apex-defi/apex-defi-pool.d.ts +0 -55
  159. package/build/dex/apex-defi/apex-defi-pool.js +0 -247
  160. package/build/dex/apex-defi/apex-defi-pool.js.map +0 -1
  161. package/build/dex/apex-defi/apex-defi-wrapper-factory.d.ts +0 -57
  162. package/build/dex/apex-defi/apex-defi-wrapper-factory.js +0 -250
  163. package/build/dex/apex-defi/apex-defi-wrapper-factory.js.map +0 -1
  164. package/build/dex/apex-defi/apex-defi.d.ts +0 -97
  165. package/build/dex/apex-defi/apex-defi.js +0 -1021
  166. package/build/dex/apex-defi/apex-defi.js.map +0 -1
  167. package/build/dex/apex-defi/config.d.ts +0 -4
  168. package/build/dex/apex-defi/config.js +0 -138
  169. package/build/dex/apex-defi/config.js.map +0 -1
  170. package/build/dex/apex-defi/types.d.ts +0 -32
  171. package/build/dex/apex-defi/types.js +0 -3
  172. package/build/dex/apex-defi/types.js.map +0 -1
  173. package/build/dex/apex-defi/utils.d.ts +0 -46
  174. package/build/dex/apex-defi/utils.js +0 -133
  175. package/build/dex/apex-defi/utils.js.map +0 -1
  176. package/build/dex/clear/clear-factory.d.ts +0 -33
  177. package/build/dex/clear/clear-factory.js +0 -123
  178. package/build/dex/clear/clear-factory.js.map +0 -1
  179. package/build/dex/clear/clear.d.ts +0 -53
  180. package/build/dex/clear/clear.js +0 -311
  181. package/build/dex/clear/clear.js.map +0 -1
  182. package/build/dex/clear/config.d.ts +0 -3
  183. package/build/dex/clear/config.js +0 -14
  184. package/build/dex/clear/config.js.map +0 -1
  185. package/build/dex/clear/types.d.ts +0 -18
  186. package/build/dex/clear/types.js +0 -3
  187. package/build/dex/clear/types.js.map +0 -1
  188. package/build/dex/ekubo-v3/extension-type.d.ts +0 -9
  189. package/build/dex/ekubo-v3/extension-type.js +0 -36
  190. package/build/dex/ekubo-v3/extension-type.js.map +0 -1
  191. package/build/dex/ekubo-v3/pools/boosted-fees.d.ts +0 -39
  192. package/build/dex/ekubo-v3/pools/boosted-fees.js +0 -189
  193. package/build/dex/ekubo-v3/pools/boosted-fees.js.map +0 -1
  194. package/build/dex/ekubo-v3/pools/concentrated.d.ts +0 -47
  195. package/build/dex/ekubo-v3/pools/concentrated.js +0 -324
  196. package/build/dex/ekubo-v3/pools/concentrated.js.map +0 -1
  197. package/build/dex/ekubo-v3/pools/timed.d.ts +0 -25
  198. package/build/dex/ekubo-v3/pools/timed.js +0 -91
  199. package/build/dex/ekubo-v3/pools/timed.js.map +0 -1
  200. package/build/dex/maker-psm/maker-psm-event-pool.d.ts +0 -43
  201. package/build/dex/maker-psm/maker-psm-event-pool.js +0 -132
  202. package/build/dex/maker-psm/maker-psm-event-pool.js.map +0 -1
  203. package/build/dex/miro-migrator/miro-migrator-state.d.ts +0 -27
  204. package/build/dex/miro-migrator/miro-migrator-state.js +0 -89
  205. package/build/dex/miro-migrator/miro-migrator-state.js.map +0 -1
  206. package/build/dex/stabull/config.js +0 -177
  207. package/build/dex/stabull/config.js.map +0 -1
  208. package/build/dex/stabull/stabull-pool.js +0 -113
  209. package/build/dex/stabull/stabull-pool.js.map +0 -1
  210. package/build/dex/stabull/stabull.d.ts +0 -55
  211. package/build/dex/stabull/stabull.js +0 -286
  212. package/build/dex/stabull/stabull.js.map +0 -1
  213. package/build/dex/stabull/types.d.ts +0 -21
  214. package/build/dex/stabull/types.js +0 -3
  215. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +0 -4
  216. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +0 -56
  217. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +0 -1
  218. package/build/dex/uniswap-v4/hooks/arena.d.ts +0 -6
  219. package/build/dex/uniswap-v4/hooks/arena.js +0 -10
  220. package/build/dex/uniswap-v4/hooks/arena.js.map +0 -1
  221. package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.d.ts +0 -0
  222. package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.js +0 -2
  223. package/build/dex/uniswap-v4/hooks/base-fee/base-fee-hook.js.map +0 -1
  224. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.d.ts +0 -7
  225. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js +0 -28
  226. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/cabalcoin-hook-pool.js.map +0 -1
  227. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.d.ts +0 -0
  228. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js +0 -2
  229. package/build/dex/uniswap-v4/hooks/cabalcoin-hook/types.js.map +0 -1
  230. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.d.ts +0 -7
  231. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js +0 -28
  232. package/build/dex/uniswap-v4/hooks/fee-hook/fee-hook-pool.js.map +0 -1
  233. package/build/dex/uniswap-v4/hooks/fee-hook/types.d.ts +0 -0
  234. package/build/dex/uniswap-v4/hooks/fee-hook/types.js +0 -2
  235. package/build/dex/uniswap-v4/hooks/fee-hook/types.js.map +0 -1
  236. package/build/dex/uniswap-v4/hooks/index.d.ts +0 -1
  237. package/build/dex/uniswap-v4/hooks/index.js +0 -18
  238. package/build/dex/uniswap-v4/hooks/index.js.map +0 -1
  239. package/build/dex/uniswap-v4/hooks/spot.d.ts +0 -15
  240. package/build/dex/uniswap-v4/hooks/spot.js +0 -109
  241. package/build/dex/uniswap-v4/hooks/spot.js.map +0 -1
  242. package/build/dex/uniswap-v4/hooks/template.d.ts +0 -150
  243. package/build/dex/uniswap-v4/hooks/template.js +0 -104
  244. package/build/dex/uniswap-v4/hooks/template.js.map +0 -1
  245. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +0 -26
  246. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +0 -75
  247. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +0 -1
  248. package/build/dex/usual/usual-usdc-usdc.d.ts +0 -17
  249. package/build/dex/usual/usual-usdc-usdc.js +0 -59
  250. package/build/dex/usual/usual-usdc-usdc.js.map +0 -1
  251. package/build/dex/yo/config.js +0 -21
  252. package/build/dex/yo/config.js.map +0 -1
  253. package/build/dex/yo/types.d.ts +0 -13
  254. package/build/dex/yo/types.js +0 -3
  255. package/build/dex/yo/yo-pool.d.ts +0 -13
  256. package/build/dex/yo/yo-pool.js +0 -26
  257. package/build/dex/yo/yo-pool.js.map +0 -1
  258. package/build/dex/yo/yo.d.ts +0 -39
  259. package/build/dex/yo/yo.js +0 -248
  260. package/build/dex/yo/yo.js.map +0 -1
  261. package/build/implementations/api-paraswap-sdk.d.ts +0 -25
  262. package/build/implementations/api-paraswap-sdk.js +0 -102
  263. package/build/implementations/api-paraswap-sdk.js.map +0 -1
  264. /package/build/dex/{aave-pt-to-underlying → se-vlr}/types.js +0 -0
  265. /package/build/dex/{aave-pt-to-usdc → usual-bond}/types.js +0 -0
@@ -1,189 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BoostedFeesPoolState = exports.BoostedFeesPool = void 0;
4
- exports.quoteBoostedFees = quoteBoostedFees;
5
- const utils_1 = require("ethers/lib/utils");
6
- const ethers_1 = require("ethers");
7
- const concentrated_1 = require("./concentrated");
8
- const pool_1 = require("./pool");
9
- const timed_1 = require("./timed");
10
- const constants_1 = require("../../../constants");
11
- const EXTRA_BASE_GAS_COST_OF_ONE_BOOSTED_FEES_SWAP = 2_743;
12
- const GAS_COST_OF_EXECUTING_VIRTUAL_DONATIONS = 6_814;
13
- const GAS_COST_OF_ONE_VIRTUAL_DONATE_DELTA = 4_271;
14
- const GAS_COST_OF_BOOSTED_FEES_FEE_ACCUMULATION = 19_279;
15
- class BoostedFeesPool extends concentrated_1.ConcentratedPoolBase {
16
- boostedFeesDataFetcher;
17
- chainId;
18
- constructor(parentName, dexHelper, logger, contracts, initBlockNumber, key) {
19
- const { contract: { address: boostedFeesAddress }, interface: boostedFeesIface, quoteDataFetcher: boostedFeesDataFetcher, } = contracts.boostedFees;
20
- super(parentName, dexHelper, logger, contracts, initBlockNumber, key, {
21
- [boostedFeesAddress]: new pool_1.NamedEventHandlers(boostedFeesIface, {
22
- PoolBoosted: (args, oldState) => BoostedFeesPoolState.fromPoolBoostedEvent(oldState, [args.startTime.toBigInt(), args.endTime.toBigInt()], [args.rate0.toBigInt(), args.rate1.toBigInt()]),
23
- }),
24
- }, {
25
- [boostedFeesAddress]: (data, oldState, blockHeader) => BoostedFeesPoolState.fromFeesDonatedEvent(oldState, parseFeesDonatedEvent(data), BigInt(blockHeader.timestamp)),
26
- });
27
- this.boostedFeesDataFetcher = boostedFeesDataFetcher;
28
- this.chainId = dexHelper.config.data.network;
29
- }
30
- async generateState(blockNumber) {
31
- const [quoteData, boostedFeesData] = await Promise.all([
32
- this.quoteDataFetcher.getQuoteData([this.key.toAbi()], 10, {
33
- blockTag: blockNumber,
34
- }),
35
- this.boostedFeesDataFetcher.getPoolState(this.key.toAbi(), {
36
- blockTag: blockNumber,
37
- }),
38
- ]);
39
- return BoostedFeesPoolState.fromQuoter(quoteData[0], boostedFeesData);
40
- }
41
- _quote(amount, isToken1, state, sqrtRatioLimit) {
42
- return quoteBoostedFees(this.key, amount, isToken1, state, sqrtRatioLimit, undefined, this.chainId);
43
- }
44
- handlePositionUpdated(args, oldState) {
45
- const [lower, upper] = [
46
- ethers_1.BigNumber.from((0, utils_1.hexDataSlice)(args.positionId, 24, 28))
47
- .fromTwos(32)
48
- .toNumber(),
49
- ethers_1.BigNumber.from((0, utils_1.hexDataSlice)(args.positionId, 28, 32))
50
- .fromTwos(32)
51
- .toNumber(),
52
- ];
53
- return BoostedFeesPoolState.fromPositionUpdatedEvent(oldState, [lower, upper], args.liquidityDelta.toBigInt());
54
- }
55
- handleSwappedEvent(ev, oldState) {
56
- return BoostedFeesPoolState.fromSwappedEvent(oldState, ev);
57
- }
58
- }
59
- exports.BoostedFeesPool = BoostedFeesPool;
60
- function quoteBoostedFees(key, amount, isToken1, state, sqrtRatioLimit, overrideTime, chainId = constants_1.Network.MAINNET) {
61
- const lastDonateTime = state.timedPoolState.lastTime;
62
- const currentTime = overrideTime ?? (0, timed_1.estimatedCurrentTime)(lastDonateTime, chainId);
63
- let donateRate0 = state.timedPoolState.token0Rate;
64
- let donateRate1 = state.timedPoolState.token1Rate;
65
- let feesAccumulated = false;
66
- let virtualDonateDeltaTimesCrossed = 0;
67
- const truncatedLastDonateTime = BigInt.asUintN(32, lastDonateTime);
68
- const realLastDonateTime = (0, timed_1.realLastTime)(currentTime, truncatedLastDonateTime);
69
- let time = realLastDonateTime;
70
- for (const delta of [...state.timedPoolState.virtualDeltas, null]) {
71
- let nextDonateTime = currentTime;
72
- let lastDelta = true;
73
- if (delta !== null) {
74
- if (delta.time <= realLastDonateTime) {
75
- continue;
76
- }
77
- if (delta.time < currentTime) {
78
- lastDelta = false;
79
- nextDonateTime = delta.time;
80
- }
81
- }
82
- const timeDiff = nextDonateTime - time;
83
- feesAccumulated ||=
84
- (donateRate0 * timeDiff) >> 32n !== 0n ||
85
- (donateRate1 * timeDiff) >> 32n !== 0n;
86
- if (delta === null || lastDelta) {
87
- break;
88
- }
89
- donateRate0 += delta.delta0;
90
- donateRate1 += delta.delta1;
91
- time = delta.time;
92
- virtualDonateDeltaTimesCrossed++;
93
- }
94
- const quote = (0, concentrated_1.quoteConcentrated)(key, amount, isToken1, state, sqrtRatioLimit);
95
- quote.gasConsumed +=
96
- EXTRA_BASE_GAS_COST_OF_ONE_BOOSTED_FEES_SWAP +
97
- Number(currentTime !== realLastDonateTime) *
98
- GAS_COST_OF_EXECUTING_VIRTUAL_DONATIONS +
99
- Number(feesAccumulated) * GAS_COST_OF_BOOSTED_FEES_FEE_ACCUMULATION +
100
- (0, timed_1.approximateExtraDistinctTimeBitmapLookups)(realLastDonateTime, currentTime) *
101
- concentrated_1.GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD +
102
- virtualDonateDeltaTimesCrossed * GAS_COST_OF_ONE_VIRTUAL_DONATE_DELTA;
103
- return {
104
- ...quote,
105
- stateAfter: {
106
- ...quote.stateAfter,
107
- timedPoolState: {
108
- token0Rate: donateRate0,
109
- token1Rate: donateRate1,
110
- lastTime: currentTime,
111
- virtualDeltas: state.timedPoolState
112
- .virtualDeltas,
113
- },
114
- },
115
- };
116
- }
117
- var BoostedFeesPoolState;
118
- (function (BoostedFeesPoolState) {
119
- function fromPoolInitialization(state) {
120
- return {
121
- ...concentrated_1.ConcentratedPoolState.fromPoolInitialization(state),
122
- timedPoolState: {
123
- token0Rate: 0n,
124
- token1Rate: 0n,
125
- lastTime: BigInt(state.blockHeader.timestamp),
126
- virtualDeltas: [],
127
- },
128
- };
129
- }
130
- BoostedFeesPoolState.fromPoolInitialization = fromPoolInitialization;
131
- function fromQuoter(quoteData, boostedData) {
132
- return {
133
- ...concentrated_1.ConcentratedPoolState.fromQuoter(quoteData),
134
- timedPoolState: timed_1.TimedPoolState.fromQuoter(boostedData.donateRateToken0.toBigInt(), boostedData.donateRateToken1.toBigInt(), boostedData.lastDonateTime.toBigInt(), boostedData.donateRateDeltas.map(delta => ({
135
- time: delta.time.toBigInt(),
136
- delta0: delta.donateRateDelta0.toBigInt(),
137
- delta1: delta.donateRateDelta1.toBigInt(),
138
- }))),
139
- };
140
- }
141
- BoostedFeesPoolState.fromQuoter = fromQuoter;
142
- function fromSwappedEvent(oldState, ev) {
143
- return {
144
- ...concentrated_1.ConcentratedPoolState.fromSwappedEvent(oldState, ev),
145
- timedPoolState: structuredClone(oldState.timedPoolState),
146
- };
147
- }
148
- BoostedFeesPoolState.fromSwappedEvent = fromSwappedEvent;
149
- function fromPositionUpdatedEvent(oldState, ticks, liquidityDelta) {
150
- const concentratedState = concentrated_1.ConcentratedPoolState.fromPositionUpdatedEvent(oldState, ticks, liquidityDelta);
151
- if (concentratedState === null) {
152
- return null;
153
- }
154
- return {
155
- ...concentratedState,
156
- timedPoolState: structuredClone(oldState.timedPoolState),
157
- };
158
- }
159
- BoostedFeesPoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
160
- function fromFeesDonatedEvent(oldState, ev, blockTimestamp) {
161
- const clonedState = structuredClone(oldState);
162
- const timed = clonedState.timedPoolState;
163
- timed.lastTime = blockTimestamp;
164
- timed.token0Rate = ev.donateRate0;
165
- timed.token1Rate = ev.donateRate1;
166
- timed_1.TimedPoolState.pruneDeltasAtOrBefore(timed.virtualDeltas, blockTimestamp);
167
- return clonedState;
168
- }
169
- BoostedFeesPoolState.fromFeesDonatedEvent = fromFeesDonatedEvent;
170
- function fromPoolBoostedEvent(oldState, [startTime, endTime], [rate0, rate1]) {
171
- if (rate0 === 0n && rate1 === 0n) {
172
- return null;
173
- }
174
- const clonedState = structuredClone(oldState);
175
- timed_1.TimedPoolState.applyRateDeltaBoundaries(clonedState.timedPoolState, [
176
- [startTime, rate0, rate1],
177
- [endTime, -rate0, -rate1],
178
- ]);
179
- return clonedState;
180
- }
181
- BoostedFeesPoolState.fromPoolBoostedEvent = fromPoolBoostedEvent;
182
- })(BoostedFeesPoolState || (exports.BoostedFeesPoolState = BoostedFeesPoolState = {}));
183
- function parseFeesDonatedEvent(data) {
184
- return {
185
- donateRate0: BigInt((0, utils_1.hexDataSlice)(data, 32, 46)),
186
- donateRate1: BigInt((0, utils_1.hexDataSlice)(data, 46, 60)),
187
- };
188
- }
189
- //# sourceMappingURL=boosted-fees.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boosted-fees.js","sourceRoot":"","sources":["../../../../src/dex/ekubo-v3/pools/boosted-fees.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { DeepReadonly } from 'ts-essentials';
2
- import { Result } from '@ethersproject/abi';
3
- import { IDexHelper } from '../../../dex-helper/idex-helper';
4
- import { Logger } from '../../../types';
5
- import { BasicQuoteData, EkuboContracts, PoolInitializationState } from '../types';
6
- import { AnonymousEventHandler, EkuboPool, NamedEventHandlers, Quote } from './pool';
7
- import { ConcentratedPoolTypeConfig, PoolKey, SwappedEvent } from './utils';
8
- export declare const GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD = 2000;
9
- export declare abstract class ConcentratedPoolBase<S extends ConcentratedPoolState.Object> extends EkuboPool<ConcentratedPoolTypeConfig, S> {
10
- protected readonly quoteDataFetcher: import("ethers").Contract;
11
- constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, contracts: EkuboContracts, initBlockNumber: number, key: PoolKey<ConcentratedPoolTypeConfig>, extraNamedEventHandlers?: Record<string, NamedEventHandlers<S>>, extraAnonymousEventHandlers?: Record<string, AnonymousEventHandler<S>>);
12
- protected _quote(amount: bigint, isToken1: boolean, state: DeepReadonly<S>, sqrtRatioLimit?: bigint): Quote;
13
- protected _computeTvl(state: DeepReadonly<S>): [bigint, bigint];
14
- }
15
- export declare function quoteConcentrated(key: PoolKey<ConcentratedPoolTypeConfig>, amount: bigint, isToken1: boolean, state: DeepReadonly<Pick<ConcentratedPoolState.Object, 'activeTickIndex' | 'sqrtRatio' | 'liquidity' | 'sortedTicks'>>, sqrtRatioLimit?: bigint): Quote<Pick<ConcentratedPoolState.Object, 'activeTickIndex' | 'sqrtRatio' | 'liquidity'>>;
16
- export declare class ConcentratedPool extends ConcentratedPoolBase<ConcentratedPoolState.Object> {
17
- generateState(blockNumber: number): Promise<DeepReadonly<ConcentratedPoolState.Object>>;
18
- protected handlePositionUpdated(args: Result, oldState: DeepReadonly<ConcentratedPoolState.Object>): DeepReadonly<ConcentratedPoolState.Object> | null;
19
- protected handleSwappedEvent(ev: SwappedEvent, oldState: DeepReadonly<ConcentratedPoolState.Object>): DeepReadonly<ConcentratedPoolState.Object> | null;
20
- }
21
- export declare function initializedTicksCrossedGasCosts(initializedTicksCrossed: number): number;
22
- export interface Tick {
23
- readonly number: number;
24
- liquidityDelta: bigint;
25
- }
26
- /**
27
- * Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
28
- * @param sortedTicks the sorted list of ticks to search in
29
- * @param tick the tick to search for
30
- */
31
- export declare function findNearestInitializedTickIndex(sortedTicks: Tick[], tick: number): number | null;
32
- export declare namespace ConcentratedPoolState {
33
- type Object = {
34
- sqrtRatio: bigint;
35
- liquidity: bigint;
36
- activeTick: number;
37
- readonly sortedTicks: Tick[];
38
- activeTickIndex: number | null;
39
- readonly checkedTicksBounds: readonly [number, number];
40
- };
41
- function fromPoolInitialization(state: PoolInitializationState): DeepReadonly<Object>;
42
- function fromQuoter(data: BasicQuoteData): DeepReadonly<Object>;
43
- function fromSwappedEvent(oldState: DeepReadonly<Object>, ev: SwappedEvent): Object;
44
- function fromPositionUpdatedEvent(oldState: DeepReadonly<Object>, [lowTick, highTick]: [number, number], liquidityDelta: bigint): Object | null;
45
- function addLiquidityCutoffs(state: ConcentratedPoolState.Object): void;
46
- function computeTvl(state: DeepReadonly<Object>): [bigint, bigint];
47
- }
@@ -1,324 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConcentratedPoolState = exports.ConcentratedPool = exports.ConcentratedPoolBase = exports.GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD = void 0;
4
- exports.quoteConcentrated = quoteConcentrated;
5
- exports.initializedTicksCrossedGasCosts = initializedTicksCrossedGasCosts;
6
- exports.findNearestInitializedTickIndex = findNearestInitializedTickIndex;
7
- const pool_1 = require("./pool");
8
- const sqrt_ratio_1 = require("./math/sqrt-ratio");
9
- const swap_1 = require("./math/swap");
10
- const tick_1 = require("./math/tick");
11
- const delta_1 = require("./math/delta");
12
- const utils_1 = require("ethers/lib/utils");
13
- const ethers_1 = require("ethers");
14
- const GAS_COST_OF_ONE_CL_SWAP = 19_632;
15
- const GAS_COST_OF_ONE_INITIALIZED_TICK_CROSSED = 13_700;
16
- exports.GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD = 2_000;
17
- const GAS_COST_OF_ONE_EXTRA_MATH_ROUND = 4_076;
18
- const TICK_BITMAP_STORAGE_OFFSET = 89_421_695;
19
- const MAX_SKIP_AHEAD = 0x7fffffff;
20
- class ConcentratedPoolBase extends pool_1.EkuboPool {
21
- quoteDataFetcher;
22
- constructor(parentName, dexHelper, logger, contracts, initBlockNumber, key, extraNamedEventHandlers = {}, extraAnonymousEventHandlers = {}) {
23
- const { contract: { address }, interface: iface, quoteDataFetcher, } = contracts.core;
24
- super(parentName, dexHelper, logger, initBlockNumber, key, address, iface, extraNamedEventHandlers, extraAnonymousEventHandlers);
25
- this.quoteDataFetcher = quoteDataFetcher;
26
- }
27
- _quote(amount, isToken1, state, sqrtRatioLimit) {
28
- return quoteConcentrated(this.key, amount, isToken1, state, sqrtRatioLimit);
29
- }
30
- _computeTvl(state) {
31
- return ConcentratedPoolState.computeTvl(state);
32
- }
33
- }
34
- exports.ConcentratedPoolBase = ConcentratedPoolBase;
35
- function quoteConcentrated(key, amount, isToken1, state, sqrtRatioLimit) {
36
- const isIncreasing = (0, swap_1.isPriceIncreasing)(amount, isToken1);
37
- let { sqrtRatio, liquidity, activeTickIndex, sortedTicks } = state;
38
- sqrtRatioLimit ??= isIncreasing ? tick_1.MAX_SQRT_RATIO : tick_1.MIN_SQRT_RATIO;
39
- let calculatedAmount = 0n;
40
- let initializedTicksCrossed = 0;
41
- let amountRemaining = amount;
42
- const startingSqrtRatio = sqrtRatio;
43
- while (amountRemaining !== 0n && sqrtRatio !== sqrtRatioLimit) {
44
- const nextInitializedTick = (isIncreasing
45
- ? sortedTicks[activeTickIndex === null ? 0 : activeTickIndex + 1]
46
- : activeTickIndex === null
47
- ? null
48
- : sortedTicks[activeTickIndex]) ?? null;
49
- const nextInitializedTickSqrtRatio = nextInitializedTick
50
- ? (0, tick_1.toSqrtRatio)(nextInitializedTick.number)
51
- : null;
52
- const stepSqrtRatioLimit = nextInitializedTickSqrtRatio === null
53
- ? sqrtRatioLimit
54
- : nextInitializedTickSqrtRatio < sqrtRatioLimit === isIncreasing
55
- ? nextInitializedTickSqrtRatio
56
- : sqrtRatioLimit;
57
- const step = (0, swap_1.computeStep)({
58
- fee: key.config.fee,
59
- sqrtRatio,
60
- liquidity,
61
- isToken1,
62
- sqrtRatioLimit: stepSqrtRatioLimit,
63
- amount: amountRemaining,
64
- });
65
- amountRemaining -= step.consumedAmount;
66
- calculatedAmount += step.calculatedAmount;
67
- sqrtRatio = step.sqrtRatioNext;
68
- // Cross the tick if the price moved all the way to the next initialized tick price
69
- if (nextInitializedTick && sqrtRatio === nextInitializedTickSqrtRatio) {
70
- activeTickIndex = isIncreasing
71
- ? activeTickIndex === null
72
- ? 0
73
- : activeTickIndex + 1
74
- : activeTickIndex
75
- ? activeTickIndex - 1
76
- : null;
77
- initializedTicksCrossed++;
78
- liquidity += isIncreasing
79
- ? nextInitializedTick.liquidityDelta
80
- : -nextInitializedTick.liquidityDelta;
81
- }
82
- }
83
- const extraDistinctBitmapLookups = approximateExtraDistinctTickBitmapLookups(startingSqrtRatio, sqrtRatio, key.config.poolTypeConfig.tickSpacing);
84
- return {
85
- consumedAmount: amount - amountRemaining,
86
- calculatedAmount,
87
- gasConsumed: GAS_COST_OF_ONE_CL_SWAP +
88
- initializedTicksCrossedGasCosts(initializedTicksCrossed) +
89
- extraDistinctBitmapLookups *
90
- (GAS_COST_OF_ONE_EXTRA_MATH_ROUND + exports.GAS_COST_OF_ONE_EXTRA_BITMAP_SLOAD),
91
- skipAhead: suggestedSkipAhead(initializedTicksCrossed, extraDistinctBitmapLookups),
92
- stateAfter: {
93
- sqrtRatio,
94
- liquidity,
95
- activeTickIndex,
96
- },
97
- };
98
- }
99
- class ConcentratedPool extends ConcentratedPoolBase {
100
- async generateState(blockNumber) {
101
- const data = await this.quoteDataFetcher.getQuoteData([this.key.toAbi()], 10, {
102
- blockTag: blockNumber,
103
- });
104
- return ConcentratedPoolState.fromQuoter(data[0]);
105
- }
106
- handlePositionUpdated(args, oldState) {
107
- const [lower, upper] = [
108
- ethers_1.BigNumber.from((0, utils_1.hexDataSlice)(args.positionId, 24, 28))
109
- .fromTwos(32)
110
- .toNumber(),
111
- ethers_1.BigNumber.from((0, utils_1.hexDataSlice)(args.positionId, 28, 32))
112
- .fromTwos(32)
113
- .toNumber(),
114
- ];
115
- return ConcentratedPoolState.fromPositionUpdatedEvent(oldState, [lower, upper], args.liquidityDelta.toBigInt());
116
- }
117
- handleSwappedEvent(ev, oldState) {
118
- return ConcentratedPoolState.fromSwappedEvent(oldState, ev);
119
- }
120
- }
121
- exports.ConcentratedPool = ConcentratedPool;
122
- function approximateExtraDistinctTickBitmapLookups(startingSqrtRatio, endingSqrtRatio, tickSpacing) {
123
- const startWord = bitmapWordFromSqrtRatio(startingSqrtRatio, tickSpacing);
124
- const endWord = bitmapWordFromSqrtRatio(endingSqrtRatio, tickSpacing);
125
- return Math.abs(endWord - startWord);
126
- }
127
- function bitmapWordFromSqrtRatio(sqrtRatio, tickSpacing) {
128
- const tick = (0, tick_1.approximateSqrtRatioToTick)(sqrtRatio);
129
- let compressedTick = Math.trunc(tick / tickSpacing);
130
- if (tick % tickSpacing < 0) {
131
- compressedTick--;
132
- }
133
- return (compressedTick + TICK_BITMAP_STORAGE_OFFSET) >> 8;
134
- }
135
- function suggestedSkipAhead(initializedTicksCrossed, extraDistinctBitmapLookups) {
136
- const denominator = initializedTicksCrossed === 0 ? 1 : initializedTicksCrossed;
137
- const skipAhead = Math.floor(extraDistinctBitmapLookups / denominator);
138
- return Math.min(skipAhead, MAX_SKIP_AHEAD);
139
- }
140
- function initializedTicksCrossedGasCosts(initializedTicksCrossed) {
141
- return (initializedTicksCrossed *
142
- (GAS_COST_OF_ONE_EXTRA_MATH_ROUND +
143
- GAS_COST_OF_ONE_INITIALIZED_TICK_CROSSED));
144
- }
145
- /**
146
- * Returns the index in the sorted tick array that has the greatest value of tick that is not greater than the given tick
147
- * @param sortedTicks the sorted list of ticks to search in
148
- * @param tick the tick to search for
149
- */
150
- function findNearestInitializedTickIndex(sortedTicks, tick) {
151
- let l = 0, r = sortedTicks.length;
152
- while (l < r) {
153
- const mid = Math.floor((l + r) / 2);
154
- const midTick = sortedTicks[mid].number;
155
- if (midTick <= tick) {
156
- // If it's the last index, or the next tick is greater, we've found our index
157
- if (mid === sortedTicks.length - 1 ||
158
- sortedTicks[mid + 1].number > tick) {
159
- return mid;
160
- }
161
- else {
162
- // Otherwise our value is to the right of this one
163
- l = mid;
164
- }
165
- }
166
- else {
167
- // The mid tick is greater than the one we want, so we know it's not mid
168
- r = mid;
169
- }
170
- }
171
- return null;
172
- }
173
- var ConcentratedPoolState;
174
- (function (ConcentratedPoolState) {
175
- function fromPoolInitialization(state) {
176
- return {
177
- sqrtRatio: state.sqrtRatio,
178
- liquidity: 0n,
179
- activeTick: state.tick,
180
- sortedTicks: [
181
- { number: tick_1.MIN_TICK, liquidityDelta: 0n },
182
- { number: tick_1.MAX_TICK, liquidityDelta: 0n },
183
- ],
184
- activeTickIndex: null,
185
- checkedTicksBounds: [tick_1.MIN_TICK, tick_1.MAX_TICK],
186
- };
187
- }
188
- ConcentratedPoolState.fromPoolInitialization = fromPoolInitialization;
189
- function fromQuoter(data) {
190
- const sortedTicks = data.ticks.map(({ number, liquidityDelta }) => ({
191
- number,
192
- liquidityDelta: liquidityDelta.toBigInt(),
193
- }));
194
- const liquidity = data.liquidity.toBigInt();
195
- const sqrtRatioFloat = data.sqrtRatio.toBigInt();
196
- const state = {
197
- sqrtRatio: (0, sqrt_ratio_1.floatSqrtRatioToFixed)(sqrtRatioFloat),
198
- liquidity,
199
- activeTick: data.tick,
200
- sortedTicks,
201
- activeTickIndex: null, // This will be filled in
202
- checkedTicksBounds: [data.minTick, data.maxTick],
203
- };
204
- addLiquidityCutoffs(state);
205
- return state;
206
- }
207
- ConcentratedPoolState.fromQuoter = fromQuoter;
208
- function fromSwappedEvent(oldState, ev) {
209
- const sortedTicks = oldState.sortedTicks;
210
- const clonedTicks = structuredClone(sortedTicks);
211
- return {
212
- sqrtRatio: ev.sqrtRatioAfter,
213
- liquidity: ev.liquidityAfter,
214
- activeTick: ev.tickAfter,
215
- sortedTicks: clonedTicks,
216
- activeTickIndex: findNearestInitializedTickIndex(clonedTicks, ev.tickAfter),
217
- checkedTicksBounds: oldState.checkedTicksBounds,
218
- };
219
- }
220
- ConcentratedPoolState.fromSwappedEvent = fromSwappedEvent;
221
- function fromPositionUpdatedEvent(oldState, [lowTick, highTick], liquidityDelta) {
222
- if (liquidityDelta === 0n) {
223
- return null;
224
- }
225
- const clonedState = structuredClone(oldState);
226
- updateTick(clonedState, lowTick, liquidityDelta, false, false);
227
- updateTick(clonedState, highTick, liquidityDelta, true, false);
228
- if (clonedState.activeTick >= lowTick &&
229
- clonedState.activeTick < highTick) {
230
- clonedState.liquidity += liquidityDelta;
231
- }
232
- return clonedState;
233
- }
234
- ConcentratedPoolState.fromPositionUpdatedEvent = fromPositionUpdatedEvent;
235
- function addLiquidityCutoffs(state) {
236
- const { sortedTicks, liquidity, activeTick } = state;
237
- let activeTickIndex = undefined;
238
- let currentLiquidity = 0n;
239
- // The liquidity added/removed by out-of-range initialized ticks (i.e. lower than minCheckedTickNumber)
240
- let liquidityDeltaMin = 0n;
241
- for (let i = 0; i < sortedTicks.length; i++) {
242
- const tick = sortedTicks[i];
243
- if (typeof activeTickIndex === 'undefined' && activeTick < tick.number) {
244
- activeTickIndex = i === 0 ? null : i - 1;
245
- liquidityDeltaMin = liquidity - currentLiquidity;
246
- // We now need to switch to tracking the liquidity that needs to be cut off at maxCheckedTickNumber, therefore reset to the actual liquidity
247
- currentLiquidity = liquidity;
248
- }
249
- currentLiquidity += tick.liquidityDelta;
250
- }
251
- if (typeof activeTickIndex === 'undefined') {
252
- activeTickIndex = sortedTicks.length > 0 ? sortedTicks.length - 1 : null;
253
- liquidityDeltaMin = liquidity - currentLiquidity;
254
- currentLiquidity = liquidity;
255
- }
256
- state.activeTickIndex = activeTickIndex;
257
- updateTick(state, state.checkedTicksBounds[0], liquidityDeltaMin, false, true);
258
- updateTick(state, state.checkedTicksBounds[1], currentLiquidity, true, true);
259
- }
260
- ConcentratedPoolState.addLiquidityCutoffs = addLiquidityCutoffs;
261
- function updateTick(state, updatedTickNumber, liquidityDelta, upper, forceInsert) {
262
- const sortedTicks = state.sortedTicks;
263
- if (upper) {
264
- liquidityDelta = -liquidityDelta;
265
- }
266
- const nearestTickIndex = findNearestInitializedTickIndex(sortedTicks, updatedTickNumber);
267
- const nearestTick = nearestTickIndex === null ? null : sortedTicks[nearestTickIndex];
268
- const nearestTickNumber = nearestTick?.number;
269
- const newTickReferenced = nearestTickNumber !== updatedTickNumber;
270
- if (newTickReferenced) {
271
- if (!forceInsert && nearestTickIndex === null) {
272
- sortedTicks[0].liquidityDelta += liquidityDelta;
273
- }
274
- else if (!forceInsert && nearestTickIndex === sortedTicks.length - 1) {
275
- sortedTicks[sortedTicks.length - 1].liquidityDelta += liquidityDelta;
276
- }
277
- else {
278
- sortedTicks.splice(nearestTickIndex === null ? 0 : nearestTickIndex + 1, 0, {
279
- number: updatedTickNumber,
280
- liquidityDelta,
281
- });
282
- if (state.activeTick >= updatedTickNumber) {
283
- state.activeTickIndex =
284
- state.activeTickIndex === null ? 0 : state.activeTickIndex + 1;
285
- }
286
- }
287
- }
288
- else {
289
- const newDelta = nearestTick.liquidityDelta + liquidityDelta;
290
- if (newDelta === 0n &&
291
- !state.checkedTicksBounds.includes(nearestTickNumber)) {
292
- sortedTicks.splice(nearestTickIndex, 1);
293
- if (state.activeTick >= updatedTickNumber) {
294
- state.activeTickIndex--;
295
- }
296
- }
297
- else {
298
- nearestTick.liquidityDelta = newDelta;
299
- }
300
- }
301
- }
302
- function computeTvl(state) {
303
- const stateSqrtRatio = state.sqrtRatio;
304
- let [tvl0, tvl1] = [0n, 0n];
305
- let liquidity = 0n;
306
- let sqrtRatio = tick_1.MIN_SQRT_RATIO;
307
- for (const tick of state.sortedTicks) {
308
- const tickSqrtRatio = (0, tick_1.toSqrtRatio)(tick.number);
309
- const minAmount1SqrtRatio = stateSqrtRatio > tickSqrtRatio ? tickSqrtRatio : stateSqrtRatio;
310
- const maxAmount0SqrtRatio = stateSqrtRatio > sqrtRatio ? stateSqrtRatio : sqrtRatio;
311
- if (sqrtRatio < minAmount1SqrtRatio) {
312
- tvl1 += (0, delta_1.amount1Delta)(sqrtRatio, minAmount1SqrtRatio, liquidity, false);
313
- }
314
- if (maxAmount0SqrtRatio < tickSqrtRatio) {
315
- tvl0 += (0, delta_1.amount0Delta)(maxAmount0SqrtRatio, tickSqrtRatio, liquidity, false);
316
- }
317
- sqrtRatio = tickSqrtRatio;
318
- liquidity += tick.liquidityDelta;
319
- }
320
- return [tvl0, tvl1];
321
- }
322
- ConcentratedPoolState.computeTvl = computeTvl;
323
- })(ConcentratedPoolState || (exports.ConcentratedPoolState = ConcentratedPoolState = {}));
324
- //# sourceMappingURL=concentrated.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"concentrated.js","sourceRoot":"","sources":["../../../../src/dex/ekubo-v3/pools/concentrated.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import { EkuboSupportedNetwork } from '../config';
2
- export type RateDeltaBoundary = readonly [
3
- time: bigint,
4
- delta0: bigint,
5
- delta1: bigint
6
- ];
7
- export declare namespace TimedPoolState {
8
- interface TimeRateDelta {
9
- time: bigint;
10
- delta0: bigint;
11
- delta1: bigint;
12
- }
13
- interface Object {
14
- token0Rate: bigint;
15
- token1Rate: bigint;
16
- lastTime: bigint;
17
- virtualDeltas: TimeRateDelta[];
18
- }
19
- function fromQuoter(token0Rate: bigint, token1Rate: bigint, lastTime: bigint, virtualDeltas: TimeRateDelta[]): Object;
20
- function applyRateDeltaBoundaries(timedPoolState: Object, boundaries: readonly RateDeltaBoundary[]): void;
21
- function pruneDeltasAtOrBefore(deltas: TimeRateDelta[], timestamp: bigint): void;
22
- }
23
- export declare function estimatedCurrentTime(last: bigint, chainId: EkuboSupportedNetwork): bigint;
24
- export declare function realLastTime(now: bigint, last: bigint): bigint;
25
- export declare function approximateExtraDistinctTimeBitmapLookups(startTime: bigint, endTime: bigint): number;