// SPDX-License-Identifier: MIT pragma solidity >=0.8.4 <0.9.0; import './IBaseErrors.sol'; /// @title Keep3rParameters contract /// @notice Handles and sets all the required parameters for Keep3r interface IKeep3rParameters is IBaseErrors { // Events /// @notice Emitted when the Keep3rHelper address is changed /// @param _keep3rHelper The address of Keep3rHelper's contract event Keep3rHelperChange(address _keep3rHelper); /// @notice Emitted when the Keep3rV1 address is changed /// @param _keep3rV1 The address of Keep3rV1's contract event Keep3rV1Change(address _keep3rV1); /// @notice Emitted when the Keep3rV1Proxy address is changed /// @param _keep3rV1Proxy The address of Keep3rV1Proxy's contract event Keep3rV1ProxyChange(address _keep3rV1Proxy); /// @notice Emitted when the KP3R-WETH pool address is changed /// @param _kp3rWethPool The address of the KP3R-WETH pool event Kp3rWethPoolChange(address _kp3rWethPool); /// @notice Emitted when bondTime is changed /// @param _bondTime The new bondTime event BondTimeChange(uint256 _bondTime); /// @notice Emitted when _liquidityMinimum is changed /// @param _liquidityMinimum The new _liquidityMinimum event LiquidityMinimumChange(uint256 _liquidityMinimum); /// @notice Emitted when _unbondTime is changed /// @param _unbondTime The new _unbondTime event UnbondTimeChange(uint256 _unbondTime); /// @notice Emitted when _rewardPeriodTime is changed /// @param _rewardPeriodTime The new _rewardPeriodTime event RewardPeriodTimeChange(uint256 _rewardPeriodTime); /// @notice Emitted when the inflationPeriod is changed /// @param _inflationPeriod The new inflationPeriod event InflationPeriodChange(uint256 _inflationPeriod); /// @notice Emitted when the fee is changed /// @param _fee The new token credits fee event FeeChange(uint256 _fee); // Variables /// @notice Address of Keep3rHelper's contract /// @return _keep3rHelper The address of Keep3rHelper's contract function keep3rHelper() external view returns (address _keep3rHelper); /// @notice Address of Keep3rV1's contract /// @return _keep3rV1 The address of Keep3rV1's contract function keep3rV1() external view returns (address _keep3rV1); /// @notice Address of Keep3rV1Proxy's contract /// @return _keep3rV1Proxy The address of Keep3rV1Proxy's contract function keep3rV1Proxy() external view returns (address _keep3rV1Proxy); /// @notice Address of the KP3R-WETH pool /// @return _kp3rWethPool The address of KP3R-WETH pool function kp3rWethPool() external view returns (address _kp3rWethPool); /// @notice The amount of time required to pass after a keeper has bonded assets for it to be able to activate /// @return _days The required bondTime in days function bondTime() external view returns (uint256 _days); /// @notice The amount of time required to pass before a keeper can unbond what he has bonded /// @return _days The required unbondTime in days function unbondTime() external view returns (uint256 _days); /// @notice The minimum amount of liquidity required to fund a job per liquidity /// @return _amount The minimum amount of liquidity in KP3R function liquidityMinimum() external view returns (uint256 _amount); /// @notice The amount of time between each scheduled credits reward given to a job /// @return _days The reward period in days function rewardPeriodTime() external view returns (uint256 _days); /// @notice The inflation period is the denominator used to regulate the emission of KP3R /// @return _period The denominator used to regulate the emission of KP3R function inflationPeriod() external view returns (uint256 _period); /// @notice The fee to be sent to governance when a user adds liquidity to a job /// @return _amount The fee amount to be sent to governance when a user adds liquidity to a job function fee() external view returns (uint256 _amount); // Errors /// @notice Throws if the reward period is less than the minimum reward period time error MinRewardPeriod(); /// @notice Throws if either a job or a keeper is disputed error Disputed(); /// @notice Throws if there are no bonded assets error BondsUnexistent(); /// @notice Throws if the time required to bond an asset has not passed yet error BondsLocked(); /// @notice Throws if there are no bonds to withdraw error UnbondsUnexistent(); /// @notice Throws if the time required to withdraw the bonds has not passed yet error UnbondsLocked(); // Methods /// @notice Sets the Keep3rHelper address /// @param _keep3rHelper The Keep3rHelper address function setKeep3rHelper(address _keep3rHelper) external; /// @notice Sets the Keep3rV1 address /// @param _keep3rV1 The Keep3rV1 address function setKeep3rV1(address _keep3rV1) external; /// @notice Sets the Keep3rV1Proxy address /// @param _keep3rV1Proxy The Keep3rV1Proxy address function setKeep3rV1Proxy(address _keep3rV1Proxy) external; /// @notice Sets the KP3R-WETH pool address /// @param _kp3rWethPool The KP3R-WETH pool address function setKp3rWethPool(address _kp3rWethPool) external; /// @notice Sets the bond time required to activate as a keeper /// @param _bond The new bond time function setBondTime(uint256 _bond) external; /// @notice Sets the unbond time required unbond what has been bonded /// @param _unbond The new unbond time function setUnbondTime(uint256 _unbond) external; /// @notice Sets the minimum amount of liquidity required to fund a job /// @param _liquidityMinimum The new minimum amount of liquidity function setLiquidityMinimum(uint256 _liquidityMinimum) external; /// @notice Sets the time required to pass between rewards for jobs /// @param _rewardPeriodTime The new amount of time required to pass between rewards function setRewardPeriodTime(uint256 _rewardPeriodTime) external; /// @notice Sets the new inflation period /// @param _inflationPeriod The new inflation period function setInflationPeriod(uint256 _inflationPeriod) external; /// @notice Sets the new fee /// @param _fee The new fee function setFee(uint256 _fee) external; }