packages/contracts-rfq/contracts/interfaces/IAdminV2.sol
// 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);
}