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

MultiRewards

MultiRewards is the staking and rewards distribution contract. Users stake vault shares here to earn rewards.

Read Functions

Staking Balances


stakingToken()address

Returns the vault shares token address that users stake.


totalSupply()uint256

Returns total staked vault shares in the contract.


balanceOf(address account)uint256

Returns the staked balance for an account.


Reward Calculations


earned(address account, address _rewardsToken)uint256

Returns the gross earned rewards for an account (before fees).


earnedAfterFees(address account, address _rewardsToken)uint256

Returns earned rewards after fee deduction.

  • For fee tokens: returns user's rebate portion only
  • For non-fee tokens: returns full amount

rewardPerToken(address _rewardsToken)uint256

Returns the current reward per token value.


getRewardForDuration(address _rewardsToken)uint256

Returns total rewards for the current duration period.


State


paused()bool

Returns true if the contract is paused.


Write Functions


stake(uint256 amount)

Stakes vault shares to earn rewards.

  • Requires: not paused, amount > 0
  • Transfers staking tokens from caller

withdraw(uint256 amount)

Withdraws staked vault shares.

  • Requires: amount > 0
  • Works even when paused

getReward()

Claims all non-fee token rewards for the caller.

  • Skips fee tokens (these are processed automatically by keepers)

getRewardForUser(address _user)

Claims all non-fee token rewards for a specific user.

  • Anyone can call this for any user

exit()

Withdraws all staked tokens and claims all rewards in a single transaction.


Reference

sf-contracts/src/MultiRewards.sol