// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.19;

/**
 * @title MockLiquidityManagerPositions
 * @notice Mock LiquidityManager for testing utilizationRate (slot 6) normalization in Optimizer.
 * @dev Exposes positions(uint8) matching ThreePositionStrategy's public mapping getter.
 *      Stage enum: FLOOR=0, ANCHOR=1, DISCOVERY=2.
 */
contract MockLiquidityManagerPositions {
    struct TokenPosition {
        uint128 liquidity;
        int24 tickLower;
        int24 tickUpper;
    }

    mapping(uint8 => TokenPosition) private _positions;

    function setPosition(uint8 stage, uint128 liquidity, int24 tickLower, int24 tickUpper) external {
        _positions[stage] = TokenPosition({ liquidity: liquidity, tickLower: tickLower, tickUpper: tickUpper });
    }

    function positions(uint8 stage) external view returns (uint128 liquidity, int24 tickLower, int24 tickUpper) {
        TokenPosition storage p = _positions[stage];
        return (p.liquidity, p.tickLower, p.tickUpper);
    }
}
