// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "./IDelegatedAccessControl.sol"; // solhint-disable max-line-length interface IDelegatedAccessControlEnumerable is IDelegatedAccessControl { /** * @dev Returns one of the accounts that have `role`. `index` must be a * value between 0 and {getRoleMemberCount}, non-inclusive. * * Role bearers are not sorted in any particular way, and their ordering may * change at any point. * * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure * you perform all queries on the same block. See the following * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] * for more information. */ function getRoleMember( address delegate, string calldata role, uint256 index ) external view returns (address); /** * @dev Returns the number of accounts that have `role`. Can be used * together with {getRoleMember} to enumerate all bearers of a role. */ function getRoleMemberCount(address delegate, string calldata role) external view returns (uint256); /** * @dev Returns list of delegates where account has any role */ function getDelegates( address account, uint256 offset, uint256 limit ) external view returns (address[] memory delegates, uint256 total); /** * @dev Returns list of roles for `account` at `delegate` */ function getDelegateRoles( address account, address delegate, uint256 offset, uint256 limit ) external view returns (string[] memory roles, uint256 total); }