Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Redeeming Tokens

redeemLock()

function redeemLock(uint256 lockId) external nonReentrant
ParameterTypeDescription
lockIduint256ERC721 token ID of the lock position

Burns the NFT, transfers locked tokens back to the holder. Auto-claims incentive rewards for accepted initiatives.

redeemLocksForInitiative()

function redeemLocksForInitiative(
    uint256 initiativeId,
    uint256[] calldata lockIds
) external nonReentrant
ParameterTypeDescription
initiativeIduint256Initiative ID. All locks must belong to this initiative.
lockIdsuint256[]Array of lock token IDs to redeem

Batch redemption. More gas efficient than individual calls. Claims all incentive rewards in a single transaction.

Eligibility

A lock is redeemable when any of these conditions is true:

  • Board is cancelled
  • Initiative is Expired
  • Lock has naturally expired (lock.created + lockDuration × lockInterval has passed)
  • Initiative is Accepted and block.timestamp > acceptanceTimestamp + releaseLockDuration

Events

event Redeemed(uint256 indexed tokenId)

Errors

ErrorCondition
Signals_TokenAlreadyRedeemedLock already withdrawn
Signals_NotOwnerCaller doesn't own the NFT
Signals_StillTimelockedRelease timelock not passed and lock not expired
Signals_InvalidIDLock doesn't belong to the specified initiative (batch only)