const StatePending, StateReady, StateExecuted, StateCancelled
State labels for an operation.
Package timelock is a simplified port of OpenZeppelin's TimelockController.
⚠️ Experimental — generated with no human supervision by the daily MCP pipeline (Solidity→Gno port). Not audited. See r/moul/x/daily.
A simplified gno.land port of OpenZeppelin's TimelockController. Actions are
scheduled with a block delay and can only be executed once the chain reaches the
operation's ready height; before that they can be cancelled. It ports the core
delay-enforcement idea idiomatically — block height (runtime.ChainHeight())
replaces block.number, panic replaces require, chain.Emit replaces
events, and an avl.Tree replaces the Solidity mapping (role-based access
control is omitted for simplicity).
Operations are terminal once executed or cancelled, and Render lists every
operation with its live state (Pending / Ready / Executed / Cancelled) and the
number of blocks remaining until it becomes ready.
# Schedule an action to run 20 blocks from now; returns the operation id.
gnokey maketx call -pkgpath gno.land/r/moul/x/daily/timelock/v0 \
-func Schedule -args "upgrade contract" -args 20 ...
# Once ChainHeight() >= readyHeight, execute it.
gnokey maketx call -pkgpath gno.land/r/moul/x/daily/timelock/v0 \
-func Execute -args 1 ...
# Or cancel it beforehand.
gnokey maketx call -pkgpath gno.land/r/moul/x/daily/timelock/v0 \
-func Cancel -args 1 ...
View the queue by rendering the realm (gno.land/r/moul/x/daily/timelock/v0).
Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.
Dependency graph:

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.
Package timelock is a simplified port of OpenZeppelin's TimelockController.
Operations are scheduled with a delay (measured in blocks). A scheduled operation becomes executable only once the chain height reaches the operation's ready height. Until then it can be cancelled by anyone (this simplified port omits role-based access control). Once executed or cancelled, an operation is terminal.
Solidity mapping:
State labels for an operation.
BlocksRemaining returns how many blocks remain before op is ready (0 if already ready or past).
Cancel drops a pending or ready operation before it executes. It panics if the operation is unknown or already terminal.
Execute runs a ready operation. It panics if the operation is unknown, already terminal, or not yet ready.
Render implements the standard realm markdown view.
Schedule registers a new operation to run after delayBlocks blocks and returns its id. delayBlocks must be >= 0.
StateOf returns the display state of op at the given chain height.