const StatePending, StateReady, StateExecuted, StateCancelled
State labels for an operation.
Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.
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/nym-moultest123/x/daily/timelock/v0 \
-func Schedule -args "upgrade contract" -args 20 ...
# Once ChainHeight() >= readyHeight, execute it.
gnokey maketx call -pkgpath gno.land/r/nym-moultest123/x/daily/timelock/v0 \
-func Execute -args 1 ...
# Or cancel it beforehand.
gnokey maketx call -pkgpath gno.land/r/nym-moultest123/x/daily/timelock/v0 \
-func Cancel -args 1 ...
View the queue by rendering the realm (gno.land/r/nym-moultest123/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.