Initiative Interactions Reference
This section provides comprehensive technical documentation for interacting with initiatives in the Signals protocol. Each function reference includes signatures, parameters, validation rules, events, and errors.
Function Categories
Core Initiative Functions
Proposing InitiativesproposeInitiative()- Create a new initiativeproposeInitiativeWithLock()- Create an initiative and immediately lock tokens
supportInitiative()- Lock tokens to signal support for an initiative
redeemLock()/redeemLocksForInitiative()- Withdraw locked tokens after initiative acceptance or expiration
Owner Functions
Accepting InitiativesacceptInitiative()- Officially approve an initiative (owner only)
expireInitiative()- Terminate inactive initiatives (owner only)
Bounties
Adding BountiesaddBounty()- Contribute external token rewards to initiatives- TokenRegistry functions for managing whitelisted tokens
- Distribution configuration and versioning
Tracking & Queries
Tracking Functions- Weight queries (current and historical)
- Lock position queries
- Supporter enumeration
- ERC721 position management
- Configuration queries
Common Data Structures
Initiative
struct Initiative {
InitiativeState state;
address proposer;
uint256 timestamp;
uint256 lastActivity;
uint256 acceptanceTimestamp;
}Metadata is emitted in InitiativeProposed and not stored on-chain.
TokenLock
struct TokenLock {
uint256 initiativeId;
address supporter;
uint256 tokenAmount;
uint256 lockDuration;
uint256 created;
bool withdrawn;
}Initiative States
enum InitiativeState {
Proposed, // Initial state, can receive support
Accepted, // Board owner accepted the initiative
Cancelled, // Reserved for future use
Expired // No activity for > inactivityTimeout
}Related Guides
For conceptual understanding and best practices, see the Initiatives guides:
