Skip to content

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 Initiatives
  • proposeInitiative() - Create a new initiative
  • proposeInitiativeWithLock() - Create an initiative and immediately lock tokens
Supporting Initiatives
  • supportInitiative() - Lock tokens to signal support for an initiative
Redeeming Locks
  • redeemLock() / redeemLocksForInitiative() - Withdraw locked tokens after initiative acceptance or expiration

Owner Functions

Accepting Initiatives
  • acceptInitiative() - Officially approve an initiative (owner only)
Expiring Initiatives
  • expireInitiative() - Terminate inactive initiatives (owner only)

Bounties

Adding Bounties
  • addBounty() - 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: