IAccessControlTimed
Inherits: IAccessControl
Title: IAccessControlTimed
Author: Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol)
Extends IAccessControl with per-grant (start, expires) windows.
hasRole returns false outside the window.
Functions
grantRoleTimed
function grantRoleTimed(bytes32 role, address account, uint48 start, uint48 expires) external;Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address | |
| start | uint48 | |
| expires | uint48 |
extendRole
function extendRole(bytes32 role, address account, uint48 newExpires) external;Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address | |
| newExpires | uint48 |
roleExpiration
function roleExpiration(bytes32 role, address account) external view returns (uint48 start, uint48 expires);Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address |
Returns
| Name | Type | Description |
|---|---|---|
| start | uint48 | |
| expires | uint48 |
Events
RoleGrantedTimed
Emitted when a role is granted with a non-default time window.
event RoleGrantedTimed(
bytes32 indexed role, address indexed account, address indexed sender, uint48 start, uint48 expires
);Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address | |
| sender | address | |
| start | uint48 | |
| expires | uint48 |
RoleExpiryUpdated
Emitted when an existing grant's expiry is pushed forward via extendRole.
event RoleExpiryUpdated(bytes32 indexed role, address indexed account, address indexed sender, uint48 newExpires);Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address | |
| sender | address | |
| newExpires | uint48 |
Errors
AccessControlTimedExpiryInPast
expires is non-zero but already at or before block.timestamp.
error AccessControlTimedExpiryInPast(uint48 expires);Parameters
| Name | Type | Description |
|---|---|---|
| expires | uint48 |
AccessControlTimedInvalidWindow
expires is non-zero but earlier than start.
error AccessControlTimedInvalidWindow(uint48 start, uint48 expires);Parameters
| Name | Type | Description |
|---|---|---|
| start | uint48 | |
| expires | uint48 |
AccessControlTimedExpiryNotExtended
extendRole was called with newExpires <= currentExpires.
error AccessControlTimedExpiryNotExtended(uint48 currentExpires, uint48 newExpires);Parameters
| Name | Type | Description |
|---|---|---|
| currentExpires | uint48 | |
| newExpires | uint48 |
AccessControlTimedRoleNotHeld
extendRole was called for an account that does not hold the role.
error AccessControlTimedRoleNotHeld(bytes32 role, address account);Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address |
AccessControlTimedRoleIsTimeless
extendRole was called on a timeless grant (expires == 0).
Use grantRoleTimed to convert a timeless grant to a timed one explicitly.
error AccessControlTimedRoleIsTimeless(bytes32 role, address account);Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address |