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

/**
 * @title MockStake
 * @notice Mock implementation of Stake contract for testing Optimizer
 * @dev Allows setting percentageStaked and averageTaxRate for testing different scenarios
 */
contract MockStake {
    uint256 private _percentageStaked;
    uint256 private _averageTaxRate;

    /**
     * @notice Set the percentage staked for testing
     * @param percentage Value between 0 and 1e18
     */
    function setPercentageStaked(uint256 percentage) external {
        require(percentage <= 1e18, "Percentage too high");
        _percentageStaked = percentage;
    }

    /**
     * @notice Set the average tax rate for testing
     * @param rate Value between 0 and 1e18
     */
    function setAverageTaxRate(uint256 rate) external {
        require(rate <= 1e18, "Rate too high");
        _averageTaxRate = rate;
    }

    /**
     * @notice Returns the mocked percentage staked
     * @return percentageStaked A number between 0 and 1e18
     */
    function getPercentageStaked() external view returns (uint256) {
        return _percentageStaked;
    }

    /**
     * @notice Returns the mocked average tax rate
     * @return averageTaxRate A number between 0 and 1e18
     */
    function getAverageTaxRate() external view returns (uint256) {
        return _averageTaxRate;
    }
}
