TimelockLib
Title: TimelockLib
Author: Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/governance/TimelockController.sol)
Scheduling primitives for time-locked operations. Two storage shapes:
SingleSchedule: at most one pending operation of this kindMultiSchedule: many concurrent pending operations keyed by bytes32
Stateless utility library — no own ERC-7201 slot. The consumer holds
SingleSchedule / MultiSchedule instances inside its own storage.
Functions
schedule
function schedule(SingleSchedule storage s, uint48 delay) internal returns (uint48 readyAt);Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule | |
| delay | uint48 |
Returns
| Name | Type | Description |
|---|---|---|
| readyAt | uint48 |
reschedule
function reschedule(SingleSchedule storage s, uint48 newReadyAt) internal;Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule | |
| newReadyAt | uint48 |
consume
function consume(SingleSchedule storage s) internal;Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule |
cancel
function cancel(SingleSchedule storage s) internal;Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule |
readyAt
function readyAt(SingleSchedule storage s) internal view returns (uint48);Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint48 |
isPending
function isPending(SingleSchedule storage s) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
isReady
function isReady(SingleSchedule storage s) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| s | SingleSchedule |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
schedule
function schedule(MultiSchedule storage s, bytes32 operationId, uint48 delay) internal returns (uint48 readyAt_);Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 | |
| delay | uint48 |
Returns
| Name | Type | Description |
|---|---|---|
| readyAt_ | uint48 |
reschedule
function reschedule(MultiSchedule storage s, bytes32 operationId, uint48 newReadyAt) internal;Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 | |
| newReadyAt | uint48 |
consume
function consume(MultiSchedule storage s, bytes32 operationId) internal;Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 |
cancel
function cancel(MultiSchedule storage s, bytes32 operationId) internal;Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 |
readyAt
function readyAt(MultiSchedule storage s, bytes32 operationId) internal view returns (uint48);Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | uint48 |
isPending
function isPending(MultiSchedule storage s, bytes32 operationId) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
isReady
function isReady(MultiSchedule storage s, bytes32 operationId) internal view returns (bool);Parameters
| Name | Type | Description |
|---|---|---|
| s | MultiSchedule | |
| operationId | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| <none> | bool |
Errors
TimelockNotPending
The schedule is empty (no operation pending).
error TimelockNotPending();TimelockNotReady
now < readyAt; the operation cannot be consumed yet.
error TimelockNotReady(uint48 readyAt, uint48 nowTs);Parameters
| Name | Type | Description |
|---|---|---|
| readyAt | uint48 | |
| nowTs | uint48 |
TimelockAlreadyPending
The schedule already has a pending operation that hasn't been consumed/canceled.
error TimelockAlreadyPending(uint48 readyAt);Parameters
| Name | Type | Description |
|---|---|---|
| readyAt | uint48 |
Structs
SingleSchedule
struct SingleSchedule {
uint48 _readyAt;
}Properties
| Name | Type | Description |
|---|---|---|
| _readyAt | uint48 |
MultiSchedule
struct MultiSchedule {
mapping(bytes32 operationId => uint48 readyAt) _readyAt;
}Properties
| Name | Type | Description |
|---|---|---|
| _readyAt | mapping(bytes32 operationId => uint48 readyAt) |