Skip to main content
Periodized fee and incentive distributor for a single pool’s voting market. Each active gauge has an associated FeeDistributor. Rewards are tracked by owner address, not by veNFT token ID.

Core Functions

getReward

Claims all finalized rewards for owner across the provided token list. The caller must be owner or an approved admin in VoteModule.

getPeriodReward

Claims a single reward token for one finalized period.

notifyRewardAmount

Queues new rewards for the next period. This can only be called by the configured feeRecipient address, which is the fee-routing source for that market.

incentivize

Lets third parties add whitelisted incentive tokens for the next period.

getRewardForOwner

Claims all finalized rewards on behalf of owner, sending them to the owner address. Only callable by the Voter contract.

Parameters:

getRewardForOwnerTo

Claims all finalized rewards on behalf of owner, sending them to a specified destination address. Only callable by the Voter contract.

Parameters:

earned

Returns the claimable amount for owner across finalized periods, net of prior claims.

Key Concepts

  • Rewards are period-based and typically queued into getPeriod() + 1.
  • Voter updates each user’s balance in the fee distributor when votes are cast, reset, or recalculated.
  • A distributor can hold multiple reward tokens at once.
  • notifyRewardAmount() is used for fee routing, while incentivize() is used for vote incentives and bribes.
  • Claims are permissioned through VoteModule.isAdminFor(), which is why admin relationships matter even outside direct voting.