// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IAdminV2 { event CancelDelayUpdated(uint256 oldCancelDelay, uint256 newCancelDelay); event DeployBlockSet(uint256 blockNumber); event DisputePenaltyTimeUpdated(uint256 oldDisputePenaltyTime, uint256 newDisputePenaltyTime); event FeeRateUpdated(uint256 oldFeeRate, uint256 newFeeRate); event FeesSwept(address token, address recipient, uint256 amount); event ProverAdded(address prover); event ProverRemoved(address prover); event DisputePenaltyTimeApplied(address prover, uint256 inactiveUntilTimestamp); /// @notice Allows the role admin to add a new prover to the contract. function addProver(address prover) external; /// @notice Allows the role admin to remove a prover from the contract. function removeProver(address prover) external; /// @notice Allows the governor to set the cancel delay. The cancel delay is the time period after the transaction /// deadline during which a transaction can be permissionlessly cancelled if it hasn't been proven by any Relayer. function setCancelDelay(uint256 newCancelDelay) external; /// @notice Allows the default admin to set the deploy block. /// @dev This is only relevant for chains like Arbitrum that implement the `block.number` as the underlying L1 /// block number rather than the chain's native block number. function setDeployBlock(uint256 blockNumber) external; /// @notice Allows the governor to set the dispute penalty time. The dispute penalty time is the time period used to /// temporarily deactivate a prover if its proof is disputed: prover will be inactive for the dispute penalty time /// after the dispute is submitted. function setDisputePenaltyTime(uint256 newDisputePenaltyTime) external; /// @notice Allows the governor to set the protocol fee rate. The protocol fee is taken from the origin /// amount and is only applied to completed and claimed transactions. /// @dev The protocol fee is abstracted away from the relayers; they always operate using the amounts after fees. /// The origin amount they see in the emitted log is what they get credited with. function setProtocolFeeRate(uint256 newFeeRate) external; /// @notice Allows the governor to withdraw the accumulated protocol fees from the contract. function sweepProtocolFees(address token, address recipient) external; /// @notice Returns the ID of the active prover, or zero if the prover is not currently active. function getActiveProverID(address prover) external view returns (uint16); /// @notice Returns the information about the prover with the provided address. /// @return proverID The ID of the prover if it has been added before, or zero otherwise. /// @return activeFromTimestamp The timestamp when the prover becomes active, or zero if the prover isn't active. function getProverInfo(address prover) external view returns (uint16 proverID, uint256 activeFromTimestamp); /// @notice Returns the information about the prover with the provided ID. /// @return prover The address of the prover with the provided ID, or zero the ID does not exist. /// @return activeFromTimestamp The timestamp when the prover becomes active, or zero if the prover isn't active. function getProverInfoByID(uint16 proverID) external view returns (address prover, uint256 activeFromTimestamp); /// @notice Returns the list of the active provers. function getProvers() external view returns (address[] memory); }