// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol"; import "../../contract-registry/IContractEntity.sol"; /** * @title Access Control List contract interface. */ interface IACL is IAccessControlEnumerableUpgradeable, IContractEntity { /** * @dev Thrown when the Admin roles bytes is incorrectly formatted. */ error RolesContractIncorrectlyConfigured(); /** * @dev Thrown when the attempting to remove the very last admin from ACL. */ error CannotRemoveLastAdmin(); /** * @notice revert if the `account` does not have the specified role. * @param role the role specifier. * @param account the address to check the role for. */ function checkRole(bytes32 role, address account) external view; /** * @notice Get the admin role describing bytes * return role bytes */ function adminRole() external pure returns (bytes32); /** * @notice Get the supervisor role describing bytes * return role bytes */ function supervisorRole() external pure returns (bytes32); /** * @notice Get the listing wizard role describing bytes * return role bytes */ function listingWizardRole() external pure returns (bytes32); /** * @notice Get the universe wizard role describing bytes * return role bytes */ function universeWizardRole() external pure returns (bytes32); /** * @notice Get the token quote signer role describing bytes * return role bytes */ function tokenQuoteSignerRole() external pure returns (bytes32); }