@paraswap/dex-lib 4.5.9 → 4.5.10

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 (162) hide show
  1. package/build/abi/miro-migrator/MiroMigrator.abi.json +36 -19
  2. package/build/dex/ekubo/ekubo.js.map +1 -1
  3. package/build/dex/miro-migrator/config.js +3 -10
  4. package/build/dex/miro-migrator/config.js.map +1 -1
  5. package/build/dex/miro-migrator/constants.d.ts +2 -1
  6. package/build/dex/miro-migrator/constants.js +3 -2
  7. package/build/dex/miro-migrator/constants.js.map +1 -1
  8. package/build/dex/miro-migrator/miro-migrator-pool.d.ts +9 -5
  9. package/build/dex/miro-migrator/miro-migrator-pool.js +49 -30
  10. package/build/dex/miro-migrator/miro-migrator-pool.js.map +1 -1
  11. package/build/dex/miro-migrator/miro-migrator.d.ts +5 -4
  12. package/build/dex/miro-migrator/miro-migrator.js +41 -83
  13. package/build/dex/miro-migrator/miro-migrator.js.map +1 -1
  14. package/build/dex/miro-migrator/types.d.ts +2 -4
  15. package/build/dex/miro-migrator/types.js +1 -2
  16. package/build/dex/miro-migrator/types.js.map +1 -1
  17. package/build/executor/Executor03BytecodeBuilder.js +22 -14
  18. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  19. package/build/generic-swap-transaction-builder.js +3 -1
  20. package/build/generic-swap-transaction-builder.js.map +1 -1
  21. package/package.json +1 -1
  22. package/build/abi/bunni-v2/BunniHook.abi.json +0 -1921
  23. package/build/abi/bunni-v2/BunniHub.abi.json +0 -1598
  24. package/build/abi/bunni-v2/BunniToken.abi.json +0 -833
  25. package/build/abi/bunni-v2/FeeOverrideHooklet.abi.json +0 -1947
  26. package/build/abi/bunni-v2/FloodPlain.abi.json +0 -1195
  27. package/build/abi/bunni-v2/PoolManager.abi.json +0 -1366
  28. package/build/abi/bunni-v2/V4Quoter.abi.json +0 -637
  29. package/build/abi/pangolin-v3/PangolinV3StateMulticall.abi.json +0 -796
  30. package/build/abi/ring-v2/few-wrapped-token.json +0 -587
  31. package/build/abi/ring-v2/ring-v2-factory.json +0 -125
  32. package/build/abi/ring-v2/ring-v2-pool.json +0 -461
  33. package/build/abi/ring-v2/ring-v2-router.json +0 -332
  34. package/build/dex/bunni-v2/bunni-v2-pool.d.ts +0 -61
  35. package/build/dex/bunni-v2/bunni-v2-pool.js +0 -484
  36. package/build/dex/bunni-v2/bunni-v2-pool.js.map +0 -1
  37. package/build/dex/bunni-v2/bunni-v2.d.ts +0 -47
  38. package/build/dex/bunni-v2/bunni-v2.js +0 -464
  39. package/build/dex/bunni-v2/bunni-v2.js.map +0 -1
  40. package/build/dex/bunni-v2/config.d.ts +0 -3
  41. package/build/dex/bunni-v2/config.js +0 -89
  42. package/build/dex/bunni-v2/config.js.map +0 -1
  43. package/build/dex/bunni-v2/encoder.d.ts +0 -19
  44. package/build/dex/bunni-v2/encoder.js +0 -400
  45. package/build/dex/bunni-v2/encoder.js.map +0 -1
  46. package/build/dex/bunni-v2/getOnChainState.d.ts +0 -25
  47. package/build/dex/bunni-v2/getOnChainState.js +0 -455
  48. package/build/dex/bunni-v2/getOnChainState.js.map +0 -1
  49. package/build/dex/bunni-v2/hook/BunniSwapMath.d.ts +0 -7
  50. package/build/dex/bunni-v2/hook/BunniSwapMath.js +0 -198
  51. package/build/dex/bunni-v2/hook/BunniSwapMath.js.map +0 -1
  52. package/build/dex/bunni-v2/hook/SwapMath.d.ts +0 -8
  53. package/build/dex/bunni-v2/hook/SwapMath.js +0 -65
  54. package/build/dex/bunni-v2/hook/SwapMath.js.map +0 -1
  55. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.d.ts +0 -33
  56. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js +0 -33
  57. package/build/dex/bunni-v2/hooklet/FeeOverrideHooklet.js.map +0 -1
  58. package/build/dex/bunni-v2/hooklet/index.d.ts +0 -21
  59. package/build/dex/bunni-v2/hooklet/index.js +0 -65
  60. package/build/dex/bunni-v2/hooklet/index.js.map +0 -1
  61. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.d.ts +0 -70
  62. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js +0 -277
  63. package/build/dex/bunni-v2/ldf/CarpetedDoubleGeometricDistribution.js.map +0 -1
  64. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.d.ts +0 -64
  65. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js +0 -262
  66. package/build/dex/bunni-v2/ldf/CarpetedGeometricDistribution.js.map +0 -1
  67. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.d.ts +0 -60
  68. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js +0 -224
  69. package/build/dex/bunni-v2/ldf/DoubleGeometricDistribution.js.map +0 -1
  70. package/build/dex/bunni-v2/ldf/GeometricDistribution.d.ts +0 -56
  71. package/build/dex/bunni-v2/ldf/GeometricDistribution.js +0 -489
  72. package/build/dex/bunni-v2/ldf/GeometricDistribution.js.map +0 -1
  73. package/build/dex/bunni-v2/ldf/LDFType.d.ts +0 -5
  74. package/build/dex/bunni-v2/ldf/LDFType.js +0 -10
  75. package/build/dex/bunni-v2/ldf/LDFType.js.map +0 -1
  76. package/build/dex/bunni-v2/ldf/ShiftMode.d.ts +0 -7
  77. package/build/dex/bunni-v2/ldf/ShiftMode.js +0 -19
  78. package/build/dex/bunni-v2/ldf/ShiftMode.js.map +0 -1
  79. package/build/dex/bunni-v2/ldf/UniformDistribution.d.ts +0 -55
  80. package/build/dex/bunni-v2/ldf/UniformDistribution.js +0 -291
  81. package/build/dex/bunni-v2/ldf/UniformDistribution.js.map +0 -1
  82. package/build/dex/bunni-v2/ldf/index.d.ts +0 -15
  83. package/build/dex/bunni-v2/ldf/index.js +0 -38
  84. package/build/dex/bunni-v2/ldf/index.js.map +0 -1
  85. package/build/dex/bunni-v2/lib/AmAmmPayload.d.ts +0 -4
  86. package/build/dex/bunni-v2/lib/AmAmmPayload.js +0 -10
  87. package/build/dex/bunni-v2/lib/AmAmmPayload.js.map +0 -1
  88. package/build/dex/bunni-v2/lib/BitMath.d.ts +0 -4
  89. package/build/dex/bunni-v2/lib/BitMath.js +0 -24
  90. package/build/dex/bunni-v2/lib/BitMath.js.map +0 -1
  91. package/build/dex/bunni-v2/lib/Constants.d.ts +0 -14
  92. package/build/dex/bunni-v2/lib/Constants.js +0 -18
  93. package/build/dex/bunni-v2/lib/Constants.js.map +0 -1
  94. package/build/dex/bunni-v2/lib/ExpMath.d.ts +0 -5
  95. package/build/dex/bunni-v2/lib/ExpMath.js +0 -121
  96. package/build/dex/bunni-v2/lib/ExpMath.js.map +0 -1
  97. package/build/dex/bunni-v2/lib/FeeMath.d.ts +0 -2
  98. package/build/dex/bunni-v2/lib/FeeMath.js +0 -27
  99. package/build/dex/bunni-v2/lib/FeeMath.js.map +0 -1
  100. package/build/dex/bunni-v2/lib/FixedPointMath.d.ts +0 -3
  101. package/build/dex/bunni-v2/lib/FixedPointMath.js +0 -15
  102. package/build/dex/bunni-v2/lib/FixedPointMath.js.map +0 -1
  103. package/build/dex/bunni-v2/lib/FullMathX96.d.ts +0 -4
  104. package/build/dex/bunni-v2/lib/FullMathX96.js +0 -21
  105. package/build/dex/bunni-v2/lib/FullMathX96.js.map +0 -1
  106. package/build/dex/bunni-v2/lib/IdleBalance.d.ts +0 -11
  107. package/build/dex/bunni-v2/lib/IdleBalance.js +0 -33
  108. package/build/dex/bunni-v2/lib/IdleBalance.js.map +0 -1
  109. package/build/dex/bunni-v2/lib/LiquidityAmounts.d.ts +0 -6
  110. package/build/dex/bunni-v2/lib/LiquidityAmounts.js +0 -25
  111. package/build/dex/bunni-v2/lib/LiquidityAmounts.js.map +0 -1
  112. package/build/dex/bunni-v2/lib/Math.d.ts +0 -28
  113. package/build/dex/bunni-v2/lib/Math.js +0 -169
  114. package/build/dex/bunni-v2/lib/Math.js.map +0 -1
  115. package/build/dex/bunni-v2/lib/Oracle.d.ts +0 -27
  116. package/build/dex/bunni-v2/lib/Oracle.js +0 -180
  117. package/build/dex/bunni-v2/lib/Oracle.js.map +0 -1
  118. package/build/dex/bunni-v2/lib/QueryLDF.d.ts +0 -12
  119. package/build/dex/bunni-v2/lib/QueryLDF.js +0 -90
  120. package/build/dex/bunni-v2/lib/QueryLDF.js.map +0 -1
  121. package/build/dex/bunni-v2/lib/QueryTwap.d.ts +0 -2
  122. package/build/dex/bunni-v2/lib/QueryTwap.js +0 -13
  123. package/build/dex/bunni-v2/lib/QueryTwap.js.map +0 -1
  124. package/build/dex/bunni-v2/lib/SqrtPriceMath.d.ts +0 -8
  125. package/build/dex/bunni-v2/lib/SqrtPriceMath.js +0 -84
  126. package/build/dex/bunni-v2/lib/SqrtPriceMath.js.map +0 -1
  127. package/build/dex/bunni-v2/lib/TickMath.d.ts +0 -11
  128. package/build/dex/bunni-v2/lib/TickMath.js +0 -100
  129. package/build/dex/bunni-v2/lib/TickMath.js.map +0 -1
  130. package/build/dex/bunni-v2/lib/VaultMath.d.ts +0 -2
  131. package/build/dex/bunni-v2/lib/VaultMath.js +0 -11
  132. package/build/dex/bunni-v2/lib/VaultMath.js.map +0 -1
  133. package/build/dex/bunni-v2/logic/AmAmm.d.ts +0 -11
  134. package/build/dex/bunni-v2/logic/AmAmm.js +0 -156
  135. package/build/dex/bunni-v2/logic/AmAmm.js.map +0 -1
  136. package/build/dex/bunni-v2/logic/BunniHookLogic.d.ts +0 -10
  137. package/build/dex/bunni-v2/logic/BunniHookLogic.js +0 -298
  138. package/build/dex/bunni-v2/logic/BunniHookLogic.js.map +0 -1
  139. package/build/dex/bunni-v2/logic/BunniHubLogic.d.ts +0 -5
  140. package/build/dex/bunni-v2/logic/BunniHubLogic.js +0 -245
  141. package/build/dex/bunni-v2/logic/BunniHubLogic.js.map +0 -1
  142. package/build/dex/bunni-v2/logic/BunniQuoter.d.ts +0 -12
  143. package/build/dex/bunni-v2/logic/BunniQuoter.js +0 -201
  144. package/build/dex/bunni-v2/logic/BunniQuoter.js.map +0 -1
  145. package/build/dex/bunni-v2/subgraph.d.ts +0 -6
  146. package/build/dex/bunni-v2/subgraph.js +0 -139
  147. package/build/dex/bunni-v2/subgraph.js.map +0 -1
  148. package/build/dex/bunni-v2/types.d.ts +0 -238
  149. package/build/dex/bunni-v2/types.js +0 -3
  150. package/build/dex/bunni-v2/types.js.map +0 -1
  151. package/build/dex/bunni-v2/utils.d.ts +0 -17
  152. package/build/dex/bunni-v2/utils.js +0 -194
  153. package/build/dex/bunni-v2/utils.js.map +0 -1
  154. package/build/dex/miro-migrator/miro-migrator-state.d.ts +0 -27
  155. package/build/dex/miro-migrator/miro-migrator-state.js +0 -89
  156. package/build/dex/miro-migrator/miro-migrator-state.js.map +0 -1
  157. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.d.ts +0 -4
  158. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js +0 -56
  159. package/build/dex/uniswap-v3/forks/pangolin-v3/utils.js.map +0 -1
  160. package/build/dex/usdc-transmuter/usdc-transmuter-pool.d.ts +0 -26
  161. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js +0 -75
  162. package/build/dex/usdc-transmuter/usdc-transmuter-pool.js.map +0 -1
@@ -1,298 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.afterInitialize = afterInitialize;
4
- exports.beforeSwap = beforeSwap;
5
- exports.decodeParams = decodeParams;
6
- exports.observe = observe;
7
- exports._shouldSurgeFromVaults = _shouldSurgeFromVaults;
8
- const constants_1 = require("../../../constants");
9
- const BunniSwapMath_1 = require("../hook/BunniSwapMath");
10
- const hooklet_1 = require("../hooklet");
11
- const LDFType_1 = require("../ldf/LDFType");
12
- const AmAmmPayload_1 = require("../lib/AmAmmPayload");
13
- const Constants_1 = require("../lib/Constants");
14
- const FeeMath_1 = require("../lib/FeeMath");
15
- const IdleBalance_1 = require("../lib/IdleBalance");
16
- const Math_1 = require("../lib/Math");
17
- const Oracle_1 = require("../lib/Oracle");
18
- const QueryLDF_1 = require("../lib/QueryLDF");
19
- const TickMath_1 = require("../lib/TickMath");
20
- const VaultMath_1 = require("../lib/VaultMath");
21
- const AmAmm_1 = require("./AmAmm");
22
- const BunniHubLogic_1 = require("./BunniHubLogic");
23
- function afterInitialize(sqrtPriceX96, tick, twapSecondsAgo, hookParams, blockTimestamp) {
24
- // initialize Slot0
25
- const slot0 = {
26
- sqrtPriceX96: sqrtPriceX96,
27
- tick: tick,
28
- lastSwapTimestamp: blockTimestamp,
29
- lastSurgeTimestamp: 0n,
30
- };
31
- const hookParamsDecoded = decodeParams(hookParams);
32
- const maxTwapSecondsAgo = (0, Math_1.max)((0, Math_1.max)(twapSecondsAgo, hookParamsDecoded.feeTwapSecondsAgo), hookParamsDecoded.rebalanceTwapSecondsAgo);
33
- const observation = {
34
- blockTimestamp: blockTimestamp - maxTwapSecondsAgo,
35
- prevTick: tick,
36
- tickCumulative: 0n,
37
- initialized: true,
38
- };
39
- const observations = [];
40
- observations[0] = observation;
41
- // initialize ObservationState
42
- const observationState = {
43
- index: 0n,
44
- cardinality: 1n,
45
- cardinalityNext: 1n,
46
- intermediateObservation: observation,
47
- observations: observations,
48
- };
49
- // increase cardinality target based on maxTwapSecondsAgo
50
- const cardinalityNext = (maxTwapSecondsAgo + (hookParamsDecoded.oracleMinInterval >> 1n)) /
51
- hookParamsDecoded.oracleMinInterval +
52
- 1n;
53
- if (cardinalityNext > 1n) {
54
- const cardinalityNextNew = (0, Oracle_1.grow)(observationState.observations, 1n, cardinalityNext);
55
- observationState.cardinalityNext = cardinalityNextNew;
56
- }
57
- return { slot0, observationState };
58
- }
59
- async function beforeSwap(state, blockNumber, blockTimestamp, params, hookFeesModifier, hookDeploymentBlock, K, dexHelper) {
60
- let useAmAmmFee = false;
61
- let amAmmManager = constants_1.NULL_ADDRESS;
62
- let feeOverridden = false;
63
- let feeOverride = 0n;
64
- let priceOverridden = false;
65
- let sqrtPriceX96Override = 0n;
66
- ({
67
- feeOverridden,
68
- fee: feeOverride,
69
- priceOverridden,
70
- sqrtPriceX96: sqrtPriceX96Override,
71
- } = (0, hooklet_1._hookletBeforeSwap)(state, params));
72
- // override price if needed
73
- if (priceOverridden) {
74
- state.slot0.sqrtPriceX96 = sqrtPriceX96Override;
75
- state.slot0.tick = TickMath_1.TickMath.getTickAtSqrtPrice(sqrtPriceX96Override);
76
- }
77
- // compute total token balances
78
- const reserveBalance0 = await (0, VaultMath_1.getReservesInUnderlying)(state.reserve0, state.vault0, blockNumber, dexHelper);
79
- const reserveBalance1 = await (0, VaultMath_1.getReservesInUnderlying)(state.reserve1, state.vault1, blockNumber, dexHelper);
80
- const balance0 = state.rawBalance0 + reserveBalance0;
81
- const balance1 = state.rawBalance1 + reserveBalance1;
82
- // decode hook params
83
- const hookParams = decodeParams(state.hookParams);
84
- // update TWAP oracle
85
- const { updatedIntermediate, updatedIndex, updatedCardinality } = _updateOracle(state, state.slot0.tick, hookParams.oracleMinInterval, blockTimestamp);
86
- // get TWAP values
87
- let arithmeticMeanTick = 0n;
88
- let feeMeanTick = 0n;
89
- const useLDFTwap = state.twapSecondsAgo !== 0n;
90
- const useFeeTwap = !feeOverridden && hookParams.feeTwapSecondsAgo !== 0n;
91
- if (useLDFTwap && useFeeTwap) {
92
- const { tickCumulative0: tickCumulatives0, tickCumulative1: tickCumulatives1, tickCumulative2: tickCumulatives2, } = (0, Oracle_1.observeTriple)(state.observations, updatedIntermediate, blockTimestamp, 0n, state.twapSecondsAgo, hookParams.feeTwapSecondsAgo, state.slot0.tick, updatedIndex, updatedCardinality);
93
- arithmeticMeanTick =
94
- (tickCumulatives0 - tickCumulatives1) / state.twapSecondsAgo;
95
- feeMeanTick =
96
- (tickCumulatives0 - tickCumulatives2) / hookParams.feeTwapSecondsAgo;
97
- }
98
- else if (useLDFTwap) {
99
- arithmeticMeanTick = _getTwap(state, state.slot0.tick, state.twapSecondsAgo, updatedIntermediate, updatedIndex, updatedCardinality, blockTimestamp);
100
- }
101
- else if (useFeeTwap) {
102
- feeMeanTick = _getTwap(state, state.slot0.tick, state.twapSecondsAgo, updatedIntermediate, updatedIndex, updatedCardinality, blockTimestamp);
103
- }
104
- // query the LDF to get total liquidity and token densities
105
- let { totalLiquidity, liquidityDensityOfRoundedTickX96, activeBalance0: currentActiveBalance0, activeBalance1: currentActiveBalance1, newLdfState, shouldSurge, } = (0, QueryLDF_1.queryLDF)(state.key, state.slot0.sqrtPriceX96, state.slot0.tick, arithmeticMeanTick, state.liquidityDensityFunction, state.ldfParams, state.ldfState, balance0, balance1, state.idleBalance);
106
- const exactIn = params.amountSpecified < 0n;
107
- if ((params.zeroForOne && currentActiveBalance1 === 0n) ||
108
- (!params.zeroForOne && currentActiveBalance0 === 0n) ||
109
- totalLiquidity === 0n ||
110
- (!exactIn &&
111
- params.amountSpecified >
112
- (params.zeroForOne ? currentActiveBalance1 : currentActiveBalance0))) {
113
- throw new Error('BunniHook__RequestedOutputExceedsBalance()');
114
- }
115
- shouldSurge = shouldSurge && state.ldfType !== LDFType_1.LDFType.STATIC;
116
- if (state.ldfType === LDFType_1.LDFType.DYNAMIC_AND_STATEFUL) {
117
- state.ldfState = newLdfState;
118
- }
119
- if (shouldSurge) {
120
- // the LDF has been updated, so we need to update the idle balance
121
- state.idleBalance = IdleBalance_1.IdleBalanceLibrary.computeIdleBalance(currentActiveBalance0, currentActiveBalance1, balance0, balance1);
122
- }
123
- // check surge based on vault share prices
124
- shouldSurge =
125
- shouldSurge ||
126
- _shouldSurgeFromVaults(state, hookParams, reserveBalance0, reserveBalance1);
127
- // compute swap result
128
- let { updatedSqrtPriceX96, updatedTick, inputAmount, outputAmount } = (0, BunniSwapMath_1.computeSwap)({
129
- key: state.key,
130
- totalLiquidity,
131
- liquidityDensityOfRoundedTickX96,
132
- currentActiveBalance0,
133
- currentActiveBalance1,
134
- sqrtPriceX96: state.slot0.sqrtPriceX96,
135
- currentTick: state.slot0.tick,
136
- liquidityDensityFunction: state.liquidityDensityFunction,
137
- arithmeticMeanTick,
138
- ldfParams: state.ldfParams,
139
- ldfState: state.ldfState,
140
- swapParams: params,
141
- });
142
- // revert if it's an exact output swap and outputAmount < params.amountSpecified
143
- if (!exactIn && outputAmount < params.amountSpecified) {
144
- throw new Error('BunniHook__InsufficientOutput()');
145
- }
146
- // ensure swap never moves price in the opposite direction
147
- // ensure the inputAmount and outputAmount are non-zero
148
- if ((params.zeroForOne && updatedSqrtPriceX96 > state.slot0.sqrtPriceX96) ||
149
- (!params.zeroForOne && updatedSqrtPriceX96 < state.slot0.sqrtPriceX96) ||
150
- outputAmount === 0n ||
151
- inputAmount === 0n) {
152
- throw new Error('BunniHook__InvalidSwap()');
153
- }
154
- // update slot0
155
- let lastSurgeTimestamp = state.slot0.lastSurgeTimestamp;
156
- if (shouldSurge) {
157
- const timeSinceLastSwap = blockTimestamp - state.slot0.lastSwapTimestamp;
158
- lastSurgeTimestamp =
159
- timeSinceLastSwap >= hookParams.surgeFeeAutostartThreshold
160
- ? state.slot0.lastSwapTimestamp + hookParams.surgeFeeAutostartThreshold
161
- : blockTimestamp;
162
- }
163
- state.slot0.sqrtPriceX96 = updatedSqrtPriceX96;
164
- state.slot0.tick = updatedTick;
165
- state.slot0.lastSwapTimestamp = blockTimestamp;
166
- state.slot0.lastSurgeTimestamp = lastSurgeTimestamp;
167
- // update am-AMM state
168
- let amAmmSwapFee = 0n;
169
- if (hookParams.amAmmEnabled) {
170
- const topBid = (0, AmAmm_1.getTopBidWrite)(state, blockNumber, hookDeploymentBlock, K);
171
- const { swapFee0For1, swapFee1For0 } = (0, AmAmmPayload_1.decodeAmAmmPayload)(topBid.payload);
172
- amAmmSwapFee = params.zeroForOne ? swapFee0For1 : swapFee1For0;
173
- }
174
- // charge swap fee
175
- let swapFee = 0n;
176
- let swapFeeAmount = 0n;
177
- useAmAmmFee = hookParams.amAmmEnabled && amAmmManager !== constants_1.NULL_ADDRESS;
178
- const hookFeesBaseSwapFee = feeOverridden
179
- ? (0, Math_1.max)(feeOverride, (0, FeeMath_1.computeSurgeFee)(lastSurgeTimestamp, hookParams.surgeFeeHalfLife, blockTimestamp))
180
- : (0, FeeMath_1.computeDynamicSwapFee)(updatedSqrtPriceX96, feeMeanTick, lastSurgeTimestamp, hookParams.feeMin, hookParams.feeMax, hookParams.feeQuadraticMultiplier, hookParams.surgeFeeHalfLife, blockTimestamp);
181
- swapFee = useAmAmmFee
182
- ? (0, Math_1.max)(amAmmSwapFee, (0, FeeMath_1.computeSurgeFee)(lastSurgeTimestamp, hookParams.surgeFeeHalfLife, blockTimestamp))
183
- : hookFeesBaseSwapFee;
184
- let hookFeesAmount = 0n;
185
- let curatorFeeAmount = 0n;
186
- let hookHandleSwapInputAmount = 0n;
187
- let hookHandleSwapOutputAmount = 0n;
188
- if (exactIn) {
189
- swapFeeAmount = (0, Math_1.mulDivUp)(outputAmount, swapFee, Constants_1.SWAP_FEE_BASE);
190
- if (useAmAmmFee) {
191
- const baseSwapFeeAmount = (0, Math_1.mulDivUp)(outputAmount, hookFeesBaseSwapFee, Constants_1.SWAP_FEE_BASE);
192
- hookFeesAmount = (0, Math_1.mulDivUp)(baseSwapFeeAmount, hookFeesModifier, Constants_1.MODIFIER_BASE);
193
- curatorFeeAmount = (0, Math_1.mulDivUp)(baseSwapFeeAmount, state.curatorFeeRate, Constants_1.CURATOR_FEE_BASE);
194
- if (swapFee !== amAmmSwapFee) {
195
- const swapFeeAdjusted = (0, Math_1.max)(amAmmSwapFee, swapFee -
196
- (0, Math_1.mulDivUp)(hookFeesBaseSwapFee, hookFeesModifier, Constants_1.MODIFIER_BASE) -
197
- (0, Math_1.mulDivUp)(hookFeesBaseSwapFee, state.curatorFeeRate, Constants_1.CURATOR_FEE_BASE));
198
- swapFeeAmount = (0, Math_1.mulDivUp)(outputAmount, swapFeeAdjusted, Constants_1.SWAP_FEE_BASE);
199
- }
200
- }
201
- else {
202
- hookFeesAmount = (0, Math_1.mulDivUp)(swapFeeAmount, hookFeesModifier, Constants_1.MODIFIER_BASE);
203
- curatorFeeAmount = (0, Math_1.mulDivUp)(swapFeeAmount, state.curatorFeeRate, Constants_1.CURATOR_FEE_BASE);
204
- swapFeeAmount -= hookFeesAmount;
205
- }
206
- outputAmount -= swapFeeAmount + hookFeesAmount + curatorFeeAmount;
207
- const actualInputAmount = (0, Math_1.max)(-params.amountSpecified, inputAmount);
208
- inputAmount = actualInputAmount;
209
- hookHandleSwapInputAmount = inputAmount;
210
- hookHandleSwapOutputAmount = useAmAmmFee
211
- ? outputAmount + swapFeeAmount + hookFeesAmount + curatorFeeAmount
212
- : outputAmount + hookFeesAmount + curatorFeeAmount;
213
- }
214
- else {
215
- swapFeeAmount = (0, Math_1.mulDivUp)(inputAmount, swapFee, Constants_1.SWAP_FEE_BASE - swapFee);
216
- if (useAmAmmFee) {
217
- const baseSwapFeeAmount = (0, Math_1.mulDivUp)(inputAmount, hookFeesBaseSwapFee, Constants_1.SWAP_FEE_BASE - hookFeesBaseSwapFee);
218
- hookFeesAmount = (0, Math_1.mulDivUp)(baseSwapFeeAmount, hookFeesModifier, Constants_1.MODIFIER_BASE);
219
- curatorFeeAmount = (0, Math_1.mulDivUp)(baseSwapFeeAmount, state.curatorFeeRate, Constants_1.CURATOR_FEE_BASE);
220
- }
221
- else {
222
- hookFeesAmount = (0, Math_1.mulDivUp)(swapFeeAmount, hookFeesModifier, Constants_1.MODIFIER_BASE);
223
- curatorFeeAmount = (0, Math_1.mulDivUp)(swapFeeAmount, state.curatorFeeRate, Constants_1.CURATOR_FEE_BASE);
224
- swapFeeAmount -= hookFeesAmount + curatorFeeAmount;
225
- }
226
- inputAmount += swapFeeAmount + hookFeesAmount + curatorFeeAmount;
227
- const acutalOutputAmount = (0, Math_1.min)(params.amountSpecified, outputAmount);
228
- outputAmount = acutalOutputAmount;
229
- hookHandleSwapInputAmount = useAmAmmFee
230
- ? inputAmount - swapFeeAmount - hookFeesAmount - curatorFeeAmount
231
- : inputAmount - hookFeesAmount - curatorFeeAmount;
232
- hookHandleSwapOutputAmount = outputAmount;
233
- }
234
- await (0, BunniHubLogic_1.hookHandleSwap)(state, params.zeroForOne, hookHandleSwapInputAmount, hookHandleSwapOutputAmount, shouldSurge, blockNumber, dexHelper);
235
- }
236
- function decodeParams(hookParams) {
237
- return {
238
- feeMin: BigInt.asUintN(24, BigInt(`0x${hookParams.slice(2, 8)}`)),
239
- feeMax: BigInt.asUintN(24, BigInt(`0x${hookParams.slice(8, 14)}`)),
240
- feeQuadraticMultiplier: BigInt.asUintN(24, BigInt(`0x${hookParams.slice(14, 20)}`)),
241
- feeTwapSecondsAgo: BigInt.asUintN(24, BigInt(`0x${hookParams.slice(20, 26)}`)),
242
- maxAmAmmFee: BigInt.asUintN(24, BigInt(`0x${hookParams.slice(26, 32)}`)),
243
- surgeFeeHalfLife: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(32, 36)}`)),
244
- surgeFeeAutostartThreshold: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(36, 40)}`)),
245
- vaultSurgeThreshold0: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(40, 44)}`)),
246
- vaultSurgeThreshold1: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(44, 48)}`)),
247
- rebalanceThreshold: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(48, 52)}`)),
248
- rebalanceMaxSlippage: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(52, 56)}`)),
249
- rebalanceTwapSecondsAgo: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(56, 60)}`)),
250
- rebalanceOrderTTL: BigInt.asUintN(16, BigInt(`0x${hookParams.slice(60, 64)}`)),
251
- amAmmEnabled: Boolean(BigInt(`0x${hookParams.slice(64, 66)}`)),
252
- oracleMinInterval: BigInt.asUintN(32, BigInt(`0x${hookParams.slice(66, 74)}`)),
253
- minRentMultiplier: BigInt.asUintN(48, BigInt(`0x${hookParams.slice(74, 86)}`)),
254
- };
255
- }
256
- function observe(state, secondsAgos, blockTimestamp) {
257
- return (0, Oracle_1._observe)(state.observations, state.intermediateObservation, blockTimestamp, secondsAgos, state.slot0.tick, state.index, state.cardinality);
258
- }
259
- function _shouldSurgeFromVaults(state, hookParams, reserveBalance0, reserveBalance1) {
260
- let shouldSurge = false;
261
- if (state.vault0 !== constants_1.NULL_ADDRESS || state.vault1 !== constants_1.NULL_ADDRESS) {
262
- const rescaleFactor0 = 18n + state.vault0Decimals - state.currency0Decimals;
263
- const rescaleFactor1 = 18n + state.vault1Decimals - state.currency1Decimals;
264
- const sharePrice0 = state.reserve0 === 0n
265
- ? 0n
266
- : (0, Math_1.mulDivUp)(reserveBalance0, 10n ** rescaleFactor0, state.reserve0);
267
- const sharePrice1 = state.reserve1 === 0n
268
- ? 0n
269
- : (0, Math_1.mulDivUp)(reserveBalance1, 10n ** rescaleFactor1, state.reserve1);
270
- shouldSurge =
271
- state.initialized &&
272
- ((0, Math_1.dist)(sharePrice0, state.sharePrice0) >
273
- state.sharePrice0 / hookParams.vaultSurgeThreshold0 ||
274
- (0, Math_1.dist)(sharePrice1, state.sharePrice1) >
275
- state.sharePrice1 / hookParams.vaultSurgeThreshold1);
276
- if (!state.initialized ||
277
- sharePrice0 !== state.sharePrice0 ||
278
- sharePrice1 !== state.sharePrice1) {
279
- state.initialized = true;
280
- state.sharePrice0 = sharePrice0;
281
- state.sharePrice1 = sharePrice1;
282
- }
283
- }
284
- return shouldSurge;
285
- }
286
- function _getTwap(state, currentTick, twapSecondsAgo, updatedIntermediate, updatedIndex, updatedCardinality, blockTimestamp) {
287
- const { tickCumulative0, tickCumulative1 } = (0, Oracle_1.observeDouble)(state.observations, updatedIntermediate, blockTimestamp, twapSecondsAgo, 0n, currentTick, updatedIndex, updatedCardinality);
288
- const tickCumulativesDelta = tickCumulative1 - tickCumulative0;
289
- return tickCumulativesDelta / twapSecondsAgo;
290
- }
291
- function _updateOracle(state, tick, oracleMinInterval, blockTimestamp) {
292
- const { intermediateUpdated: updatedIntermediate, indexUpdated: updatedIndex, cardinalityUpdated: updatedCardinality, } = (0, Oracle_1.write)(state.observations, state.intermediateObservation, state.index, blockTimestamp, tick, state.cardinality, state.cardinalityNext, oracleMinInterval);
293
- state.intermediateObservation = updatedIntermediate;
294
- state.index = updatedIndex;
295
- state.cardinality = updatedCardinality;
296
- return { updatedIntermediate, updatedIndex, updatedCardinality };
297
- }
298
- //# sourceMappingURL=BunniHookLogic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BunniHookLogic.js","sourceRoot":"","sources":["../../../../src/dex/bunni-v2/logic/BunniHookLogic.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { DepositParams, PoolState, WithdrawParams } from '../types';
2
- import { IDexHelper } from '../../../dex-helper';
3
- export declare function deposit(state: PoolState, params: DepositParams, blockNumber: bigint, blockTimestamp: bigint, deploymentBlock: bigint, K: bigint, dexHelper: IDexHelper): Promise<void>;
4
- export declare function withdraw(state: PoolState, params: WithdrawParams, blockNumber: bigint, dexHelper: IDexHelper): Promise<void>;
5
- export declare function hookHandleSwap(state: PoolState, zeroForOne: boolean, inputAmount: bigint, outputAmount: bigint, shouldSurge: boolean, blockNumber: bigint, dexHelper: IDexHelper): Promise<void>;
@@ -1,245 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deposit = deposit;
4
- exports.withdraw = withdraw;
5
- exports.hookHandleSwap = hookHandleSwap;
6
- const VaultMath_1 = require("../lib/VaultMath");
7
- const IdleBalance_1 = require("../lib/IdleBalance");
8
- const LDFType_1 = require("../ldf/LDFType");
9
- const Constants_1 = require("../lib/Constants");
10
- const constants_1 = require("../../../constants");
11
- const Math_1 = require("../lib/Math");
12
- const QueryTwap_1 = require("../lib/QueryTwap");
13
- const QueryLDF_1 = require("../lib/QueryLDF");
14
- const getOnChainState_1 = require("../getOnChainState");
15
- const AmAmm_1 = require("./AmAmm");
16
- async function deposit(state, params, blockNumber, blockTimestamp, deploymentBlock, K, dexHelper) {
17
- let amount0;
18
- let amount1;
19
- // trigger am-AMM state machine update to avoid sandwiching rent burns
20
- (0, AmAmm_1._updateAmAmmWrite)(state, blockNumber, deploymentBlock, K);
21
- const depositReturnData = await _depositLogic({
22
- state: state,
23
- params: params,
24
- poolId: state.id,
25
- currentTick: state.slot0.tick,
26
- sqrtPriceX96: state.slot0.sqrtPriceX96,
27
- }, blockNumber, blockTimestamp, dexHelper);
28
- let reserveAmount0 = depositReturnData.reserveAmount0;
29
- let reserveAmount1 = depositReturnData.reserveAmount1;
30
- amount0 = depositReturnData.amount0;
31
- amount1 = depositReturnData.amount1;
32
- const rawAmount0 = state.vault0 !== constants_1.NULL_ADDRESS ? amount0 - reserveAmount0 : amount0;
33
- const rawAmount1 = state.vault1 !== constants_1.NULL_ADDRESS ? amount1 - reserveAmount1 : amount1;
34
- state.rawBalance0 += rawAmount0;
35
- state.rawBalance1 += rawAmount1;
36
- if (state.vault0 !== constants_1.NULL_ADDRESS && reserveAmount0 !== 0n) {
37
- const { reserveChange, reserveChangeInUnderlying } = await _depositVaultReserve(reserveAmount0, state.vault0, blockNumber, dexHelper);
38
- state.reserve0 += reserveChange;
39
- reserveAmount0 = reserveChangeInUnderlying;
40
- }
41
- if (state.vault1 !== constants_1.NULL_ADDRESS && reserveAmount1 !== 0n) {
42
- const { reserveChange, reserveChangeInUnderlying } = await _depositVaultReserve(reserveAmount1, state.vault1, blockNumber, dexHelper);
43
- state.reserve1 += reserveChange;
44
- reserveAmount1 = reserveChangeInUnderlying;
45
- }
46
- // update amount0 and amount1 to be the actual amounts added to the pool balance
47
- amount0 =
48
- state.vault0 !== constants_1.NULL_ADDRESS ? rawAmount0 + reserveAmount0 : rawAmount0;
49
- amount1 =
50
- state.vault1 !== constants_1.NULL_ADDRESS ? rawAmount1 + reserveAmount1 : rawAmount1;
51
- if (depositReturnData.balance0 === 0n && depositReturnData.balance1 === 0n) {
52
- if (state.idleBalance !== IdleBalance_1.IdleBalanceLibrary.ZERO) {
53
- state.idleBalance = IdleBalance_1.IdleBalanceLibrary.ZERO;
54
- }
55
- }
56
- else {
57
- const { rawBalance, isToken0 } = IdleBalance_1.IdleBalanceLibrary.fromIdleBalance(state.idleBalance);
58
- const newBalance = rawBalance +
59
- (isToken0
60
- ? depositReturnData.balance0 === 0n
61
- ? amount0
62
- : (0, Math_1.mulDivUp)(amount0, rawBalance, depositReturnData.balance0)
63
- : depositReturnData.balance1 === 0n
64
- ? amount1
65
- : (0, Math_1.mulDivUp)(amount1, rawBalance, depositReturnData.balance1));
66
- if (newBalance !== rawBalance) {
67
- state.idleBalance = IdleBalance_1.IdleBalanceLibrary.toIdleBalance(newBalance, isToken0);
68
- }
69
- }
70
- }
71
- async function withdraw(state, params, blockNumber, dexHelper) {
72
- let amount0;
73
- let amount1;
74
- const reserveAmount0 = await (0, VaultMath_1.getReservesInUnderlying)((0, Math_1.mulDiv)(state.reserve0, params.shares, state.totalSupply), state.vault0, blockNumber, dexHelper);
75
- const reserveAmount1 = await (0, VaultMath_1.getReservesInUnderlying)((0, Math_1.mulDiv)(state.reserve1, params.shares, state.totalSupply), state.vault1, blockNumber, dexHelper);
76
- const rawAmount0 = (0, Math_1.mulDiv)(state.rawBalance0, params.shares, state.totalSupply);
77
- const rawAmount1 = (0, Math_1.mulDiv)(state.rawBalance1, params.shares, state.totalSupply);
78
- amount0 = reserveAmount0 + rawAmount0;
79
- amount1 = reserveAmount1 + rawAmount1;
80
- // update the idle balance
81
- const { rawBalance, isToken0 } = IdleBalance_1.IdleBalanceLibrary.fromIdleBalance(state.idleBalance);
82
- const newBalance = rawBalance - (0, Math_1.mulDiv)(rawBalance, params.shares, state.totalSupply);
83
- if (newBalance !== rawBalance) {
84
- state.idleBalance = IdleBalance_1.IdleBalanceLibrary.toIdleBalance(newBalance, isToken0);
85
- }
86
- if (state.vault0 !== constants_1.NULL_ADDRESS && reserveAmount0 !== 0n) {
87
- const { reserveChange } = await _withdrawVaultReserve(reserveAmount0, state.vault0, blockNumber, dexHelper);
88
- state.reserve0 -= reserveChange;
89
- }
90
- if (state.vault1 !== constants_1.NULL_ADDRESS && reserveAmount1 !== 0n) {
91
- const { reserveChange } = await _withdrawVaultReserve(reserveAmount1, state.vault1, blockNumber, dexHelper);
92
- state.reserve1 -= reserveChange;
93
- }
94
- state.rawBalance0 -= rawAmount0;
95
- state.rawBalance1 -= rawAmount1;
96
- }
97
- async function hookHandleSwap(state, zeroForOne, inputAmount, outputAmount, shouldSurge, blockNumber, dexHelper) {
98
- // pull input claim tokens from hook
99
- if (inputAmount !== 0n) {
100
- zeroForOne
101
- ? (state.rawBalance0 += inputAmount)
102
- : (state.rawBalance1 += inputAmount);
103
- }
104
- if (outputAmount !== 0n) {
105
- const outputRawBalance = zeroForOne
106
- ? state.rawBalance1
107
- : state.rawBalance0;
108
- const outputVault = zeroForOne ? state.vault1 : state.vault0;
109
- if (outputVault !== constants_1.NULL_ADDRESS && outputRawBalance < outputAmount) {
110
- const { reserveChange, actualRawBalanceChange: rawBalanceChange } = await _updateVaultReserveViaClaimTokens(outputAmount - outputRawBalance, outputVault, state, blockNumber, dexHelper);
111
- zeroForOne
112
- ? (state.reserve1 += reserveChange)
113
- : (state.reserve0 += reserveChange);
114
- zeroForOne
115
- ? (state.rawBalance1 += rawBalanceChange)
116
- : (state.rawBalance0 += rawBalanceChange);
117
- }
118
- zeroForOne
119
- ? (state.rawBalance1 -= outputAmount)
120
- : (state.rawBalance0 -= outputAmount);
121
- }
122
- if (!shouldSurge) {
123
- if (state.vault0 !== constants_1.NULL_ADDRESS) {
124
- const { newReserve, newRawBalance } = await _updateRawBalanceIfNeeded(state.vault0, state.rawBalance0, state.reserve0, state.minRawTokenRatio0, state.maxRawTokenRatio0, state.targetRawTokenRatio0, state, blockNumber, dexHelper);
125
- state.reserve0 = newReserve;
126
- state.rawBalance0 = newRawBalance;
127
- }
128
- if (state.vault1 !== constants_1.NULL_ADDRESS) {
129
- const { newReserve, newRawBalance } = await _updateRawBalanceIfNeeded(state.vault1, state.rawBalance1, state.reserve1, state.minRawTokenRatio1, state.maxRawTokenRatio1, state.targetRawTokenRatio1, state, blockNumber, dexHelper);
130
- state.reserve1 = newReserve;
131
- state.rawBalance1 = newRawBalance;
132
- }
133
- }
134
- }
135
- /*
136
- Modified from the originally written solidity specifically
137
- to handle deposit events where the acutal emitted amounts
138
- are known. Replicating the solidity logic exactly will lead
139
- to incorrect values and should not be used unless further
140
- development deems it necessary.
141
- */
142
- async function _depositLogic(inputData, blockNumber, blockTimestamp, dexHelper) {
143
- const returnData = {
144
- reserveAmount0: 0n,
145
- reserveAmount1: 0n,
146
- amount0: 0n,
147
- amount1: 0n,
148
- balance0: 0n,
149
- balance1: 0n,
150
- };
151
- const { reserveBalance0, reserveBalance1 } = {
152
- reserveBalance0: await (0, VaultMath_1.getReservesInUnderlying)(inputData.state.reserve0, inputData.state.vault0, blockNumber, dexHelper),
153
- reserveBalance1: await (0, VaultMath_1.getReservesInUnderlying)(inputData.state.reserve1, inputData.state.vault1, blockNumber, dexHelper),
154
- };
155
- returnData.amount0 = inputData.params.amount0Desired;
156
- returnData.amount1 = inputData.params.amount1Desired;
157
- returnData.balance0 = inputData.state.rawBalance0 + reserveBalance0;
158
- returnData.balance1 = inputData.state.rawBalance1 + reserveBalance1;
159
- const requiresLDF = returnData.balance0 === 0n && returnData.balance1 === 0n;
160
- if (requiresLDF) {
161
- const useTwap = inputData.state.twapSecondsAgo !== 0n;
162
- const arithmeticMeanTick = useTwap
163
- ? (0, QueryTwap_1.queryTwap)(inputData.state, inputData.state.twapSecondsAgo, blockTimestamp)
164
- : 0n;
165
- const { newLdfState } = (0, QueryLDF_1.queryLDF)(inputData.state.key, inputData.sqrtPriceX96, inputData.currentTick, arithmeticMeanTick, inputData.state.liquidityDensityFunction, inputData.state.ldfParams, inputData.state.ldfState, inputData.params.amount0Desired, inputData.params.amount1Desired, IdleBalance_1.IdleBalanceLibrary.ZERO);
166
- if (inputData.state.ldfType === LDFType_1.LDFType.DYNAMIC_AND_STATEFUL) {
167
- inputData.state.ldfState = newLdfState;
168
- }
169
- }
170
- // update token amounts to deposit into vaults
171
- returnData.reserveAmount0 =
172
- returnData.amount0 -
173
- (0, Math_1.mulDiv)(returnData.amount0, inputData.state.targetRawTokenRatio0, Constants_1.RAW_TOKEN_RATIO_BASE);
174
- returnData.reserveAmount1 =
175
- returnData.amount1 -
176
- (0, Math_1.mulDiv)(returnData.amount1, inputData.state.targetRawTokenRatio1, Constants_1.RAW_TOKEN_RATIO_BASE);
177
- // modify reserveAmount0 using ERC4626::maxDeposit()
178
- if (inputData.state.vault0 !== constants_1.NULL_ADDRESS &&
179
- returnData.reserveAmount0 !== 0n) {
180
- const maxDeposit0 = await (0, getOnChainState_1.ERC4626_maxDeposit)(inputData.state.bunniHub, inputData.state.vault0, blockNumber, dexHelper);
181
- if (returnData.reserveAmount0 > maxDeposit0) {
182
- returnData.reserveAmount0 = maxDeposit0;
183
- }
184
- }
185
- // modify reserveAmount1 using ERC4626::maxDeposit()
186
- if (inputData.state.vault1 !== constants_1.NULL_ADDRESS &&
187
- returnData.reserveAmount1 !== 0n) {
188
- const maxDeposit1 = await (0, getOnChainState_1.ERC4626_maxDeposit)(inputData.state.bunniHub, inputData.state.vault1, blockNumber, dexHelper);
189
- if (returnData.reserveAmount1 > maxDeposit1) {
190
- returnData.reserveAmount1 = maxDeposit1;
191
- }
192
- }
193
- return returnData;
194
- }
195
- async function _depositVaultReserve(amount, vault, blockNumber, dexHelper) {
196
- throw new Error('Unreliable results from _depositVaultReserve(), fallback to RPC state updates');
197
- // @dev
198
- // The original solidity code uses the return value from depositing
199
- // into the ERC4626. Using previewDeposit here gives unreliable
200
- // results and cannot be trusted. I've attempted almost every possible
201
- // combination of RPC calls here to no avail. So, for now, we will
202
- // throw an error to revert back to general RPC state updates.
203
- const reserveChange = await (0, getOnChainState_1.ERC4626_previewDeposit)(amount, vault, blockNumber, dexHelper);
204
- return { reserveChange, reserveChangeInUnderlying: amount };
205
- }
206
- async function _withdrawVaultReserve(amount, vault, blockNumber, dexHelper) {
207
- const reserveChange = await (0, getOnChainState_1.ERC4626_previewWithdraw)(amount, vault, blockNumber, dexHelper);
208
- return { reserveChange };
209
- }
210
- async function _updateVaultReserveViaClaimTokens(rawBalanceChange, vault, state, blockNumber, dexHelper) {
211
- let reserveChange = 0n;
212
- let actualRawBalanceChange = 0n;
213
- let absAmount = (0, Math_1.abs)(rawBalanceChange);
214
- if (rawBalanceChange < 0) {
215
- const maxDepositAmount = await (0, getOnChainState_1.ERC4626_maxDeposit)(state.bunniHub, vault, blockNumber, dexHelper);
216
- absAmount = (0, Math_1.min)(absAmount, maxDepositAmount);
217
- reserveChange = await (0, getOnChainState_1.ERC4626_previewDeposit)(absAmount, vault, blockNumber, dexHelper);
218
- actualRawBalanceChange = rawBalanceChange;
219
- }
220
- else if (rawBalanceChange > 0) {
221
- reserveChange = -(await (0, getOnChainState_1.ERC4626_previewWithdraw)(absAmount, vault, blockNumber, dexHelper));
222
- actualRawBalanceChange = rawBalanceChange;
223
- }
224
- return { reserveChange, actualRawBalanceChange };
225
- }
226
- async function _updateRawBalanceIfNeeded(vault, rawBalance, reserve, minRatio, maxRatio, targetRatio, state, blockNumber, dexHelper) {
227
- let newReserve = 0n;
228
- let newRawBalance = 0n;
229
- const balance = rawBalance +
230
- (await (0, VaultMath_1.getReservesInUnderlying)(reserve, vault, blockNumber, dexHelper));
231
- const minRawBalance = (0, Math_1.mulDiv)(balance, minRatio, Constants_1.RAW_TOKEN_RATIO_BASE);
232
- const maxRawBalance = (0, Math_1.mulDiv)(balance, maxRatio, Constants_1.RAW_TOKEN_RATIO_BASE);
233
- if (rawBalance < minRawBalance || rawBalance > maxRawBalance) {
234
- const targetRawBalance = (0, Math_1.mulDiv)(balance, targetRatio, Constants_1.RAW_TOKEN_RATIO_BASE);
235
- const { reserveChange, actualRawBalanceChange: rawBalanceChange } = await _updateVaultReserveViaClaimTokens(targetRawBalance - rawBalance, vault, state, blockNumber, dexHelper);
236
- newReserve = reserve + reserveChange;
237
- newRawBalance = rawBalance + rawBalanceChange;
238
- }
239
- else {
240
- newReserve = reserve;
241
- newRawBalance = rawBalance;
242
- }
243
- return { newReserve, newRawBalance };
244
- }
245
- //# sourceMappingURL=BunniHubLogic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BunniHubLogic.js","sourceRoot":"","sources":["../../../../src/dex/bunni-v2/logic/BunniHubLogic.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { PoolState, SwapParams, Vault } from '../types';
2
- export declare function quoteSwap(state: PoolState, params: SwapParams, blockNumber: bigint, blockTimestamp: bigint, hookFeesModifier: bigint, hookDeploymentBlock: bigint, K: bigint, vaults: {
3
- [address: string]: Vault;
4
- }): {
5
- success: boolean;
6
- updatedSqrtPriceX96: bigint;
7
- updatedTick: bigint;
8
- inputAmount: bigint;
9
- outputAmount: bigint;
10
- swapFee: bigint;
11
- totalLiquidity: bigint;
12
- };