// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IDistributor {
    error OnlyStaking();
    error NotUnlocked();
    error NotPermissioned();
    error AdjustmentLimit();
    error AdjustmentUnderflow();

    struct Adjust {
        uint120 rate;
        uint120 target;
        bool add;
    }

    function distribute() external;
    function retrieveBounty() external returns (uint256);
    function nextRewardFor(address who) external view returns (uint256);
    function setBounty(uint256 _bounty) external;
    function setPools(address[] calldata _pools) external;
    function removePool(uint256 index) external;
    function addPool(address pool) external;
}
