diff --git a/onchain/src/LiquidityManager.sol b/onchain/src/LiquidityManager.sol index bd5a770..656706f 100644 --- a/onchain/src/LiquidityManager.sol +++ b/onchain/src/LiquidityManager.sol @@ -200,7 +200,7 @@ contract LiquidityManager is ThreePositionStrategy, PriceOracle { // Record price from anchor position for VWAP if (i == uint256(Stage.ANCHOR)) { - int24 tick = position.tickLower + (position.tickUpper - position.tickLower / 2); + int24 tick = position.tickLower + ((position.tickUpper - position.tickLower) / 2); currentPrice = _priceAtTick(token0isWeth ? -1 * tick : tick); } } diff --git a/onchain/src/abstracts/ThreePositionStrategy.sol b/onchain/src/abstracts/ThreePositionStrategy.sol index 75efcf0..148f109 100644 --- a/onchain/src/abstracts/ThreePositionStrategy.sol +++ b/onchain/src/abstracts/ThreePositionStrategy.sol @@ -164,9 +164,9 @@ abstract contract ThreePositionStrategy is UniswapMath, VWAPTracker { // Calculate discoveryAmount for floor position calculation if (token0isWeth) { - discoveryAmount = LiquidityAmounts.getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity); - } else { discoveryAmount = LiquidityAmounts.getAmount1ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity); + } else { + discoveryAmount = LiquidityAmounts.getAmount0ForLiquidity(sqrtRatioAX96, sqrtRatioBX96, liquidity); } _mintPosition(Stage.DISCOVERY, tickLower, tickUpper, liquidity); @@ -201,6 +201,7 @@ abstract contract ThreePositionStrategy is UniswapMath, VWAPTracker { uint256 ethBalance = _getEthBalance(); int24 vwapTick; + if (vwapX96 > 0) { // vwapX96 is price² in X96 format, need to convert to regular price // price = sqrt(price²) = sqrt(vwapX96) * 2^48 / 2^96 = sqrt(vwapX96) / 2^48