Proposing Initiatives
proposeInitiative()
function proposeInitiative(
Metadata calldata _metadata
) external returns (uint256 initiativeId)| Parameter | Type | Description |
|---|---|---|
_metadata | Metadata | Title (required), body, and up to 5 attachments |
Returns: initiativeId of the newly created initiative.
proposeInitiativeWithLock()
function proposeInitiativeWithLock(
Metadata calldata _metadata,
uint256 _amount,
uint256 _lockDuration
) external returns (uint256 initiativeId, uint256 tokenId)| Parameter | Type | Description |
|---|---|---|
_metadata | Metadata | Title (required), body, and up to 5 attachments |
_amount | uint256 | Tokens to lock (wei). Requires prior ERC20 approval. |
_lockDuration | uint256 | Lock duration in intervals. Must be > 0 and ≤ maxLockIntervals |
Returns: initiativeId and tokenId (ERC721 lock NFT).
Events
event InitiativeProposed(uint256 indexed initiativeId, address indexed proposer, Metadata metadata)
event InitiativeSupported(uint256 indexed initiativeId, address indexed supporter, uint256 tokenAmount, uint256 lockDuration, uint256 tokenId)InitiativeSupported is only emitted by proposeInitiativeWithLock().
Errors
| Error | Condition |
|---|---|
Signals_EmptyTitleOrBody | Title is empty |
Signals_AttachmentLimitExceeded | More than 5 attachments |
Signals_IncorrectBoardState | Board not open |
Signals_InsufficientTokens | Balance < minBalance |
Signals_InsufficientTokenDuration | Historical balance < minBalance |
Signals_InsufficientLockAmount | Amount < minLockAmount |
Signals_TokenHasNoCheckpointSupport | Token doesn't implement IVotes |
Signals_InvalidArguments | Invalid lock duration or attachment URI |
Signals_TokenTransferFailed | ERC20 transfer reverted |
