Skip to content
Lattice

IAccessControlTimed

Git Source

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

NameTypeDescription
rolebytes32
accountaddress
startuint48
expiresuint48

extendRole

function extendRole(bytes32 role, address account, uint48 newExpires) external;

Parameters

NameTypeDescription
rolebytes32
accountaddress
newExpiresuint48

roleExpiration

function roleExpiration(bytes32 role, address account) external view returns (uint48 start, uint48 expires);

Parameters

NameTypeDescription
rolebytes32
accountaddress

Returns

NameTypeDescription
startuint48
expiresuint48

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

NameTypeDescription
rolebytes32
accountaddress
senderaddress
startuint48
expiresuint48

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

NameTypeDescription
rolebytes32
accountaddress
senderaddress
newExpiresuint48

Errors

AccessControlTimedExpiryInPast

expires is non-zero but already at or before block.timestamp.

error AccessControlTimedExpiryInPast(uint48 expires);

Parameters

NameTypeDescription
expiresuint48

AccessControlTimedInvalidWindow

expires is non-zero but earlier than start.

error AccessControlTimedInvalidWindow(uint48 start, uint48 expires);

Parameters

NameTypeDescription
startuint48
expiresuint48

AccessControlTimedExpiryNotExtended

extendRole was called with newExpires <= currentExpires.

error AccessControlTimedExpiryNotExtended(uint48 currentExpires, uint48 newExpires);

Parameters

NameTypeDescription
currentExpiresuint48
newExpiresuint48

AccessControlTimedRoleNotHeld

extendRole was called for an account that does not hold the role.

error AccessControlTimedRoleNotHeld(bytes32 role, address account);

Parameters

NameTypeDescription
rolebytes32
accountaddress

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

NameTypeDescription
rolebytes32
accountaddress