// SPDX-License-Identifier: MIT pragma solidity >=0.8.4 <0.9.0; /// @title Keep3rDisputable contract /// @notice Creates/resolves disputes for jobs or keepers /// A disputed keeper is slashable and is not able to bond, activate, withdraw or receive direct payments /// A disputed job is slashable and is not able to pay the keepers, withdraw tokens or to migrate interface IKeep3rDisputable { /// @notice Emitted when a keeper or a job is disputed /// @param _jobOrKeeper The address of the disputed keeper/job /// @param _disputer The user that called the function and disputed the keeper event Dispute(address indexed _jobOrKeeper, address indexed _disputer); /// @notice Emitted when a dispute is resolved /// @param _jobOrKeeper The address of the disputed keeper/job /// @param _resolver The user that called the function and resolved the dispute event Resolve(address indexed _jobOrKeeper, address indexed _resolver); /// @notice Throws when a job or keeper is already disputed error AlreadyDisputed(); /// @notice Throws when a job or keeper is not disputed and someone tries to resolve the dispute error NotDisputed(); /// @notice Allows governance to create a dispute for a given keeper/job /// @param _jobOrKeeper The address in dispute function dispute(address _jobOrKeeper) external; /// @notice Allows governance to resolve a dispute on a keeper/job /// @param _jobOrKeeper The address cleared function resolve(address _jobOrKeeper) external; }