MaverickV2RewardRouter
Inherits: IMaverickV2RewardRouter, MaverickV2LiquidityManager
Liquidity and Reward contract to facilitate multi-step interactions with adding and staking liquidity in Maverick V2. This contracts inherits all of the functionality of MaverickV2LiquidityManager
that allows the creation of pools and BPs and adds mechanisms to interact with the various reward and ve functionality that are present in v2-rewards. All of the functions are specified as payable
to enable multicall transactions that involve functions that require ETH and those that do not.
State Variables
rewardFactory
This function retrieves the address of the MaverickV2RewardFactory contract associated with this contract.
Functions
constructor
stake
This function stakes any new staking token balance that are in the reward.vault()
for a specified recipient tokenId. Passing input tokenId=0
will cause the stake to mint to either the first tokenId for the caller, or a new NFT tokenId if the sender does not yet have one.
Parameters
reward
IMaverickV2Reward
The IMaverickV2Reward contract for which to stake.
tokenId
uint256
Nft tokenId to stake for the staked tokens.
Returns
amount
uint256
The amount of staking tokens staked. May differ from input if there were unstaked tokens in the vault prior to this call.
stakedTokenId
uint256
TokenId where liquidity was staked to. This may differ from the input tokenId if the input tokenId=0
.
notifyRewardAmount
This function transfers a specified amount of reward tokens from the caller to a reward contract and notifies it to distribute them over a defined duration.
Parameters
reward
IMaverickV2Reward
The IMaverickV2Reward contract to notify.
rewardToken
IERC20
The address of the reward token to transfer.
duration
uint256
The duration (in seconds) over which to distribute the rewards.
Returns
_duration
uint256
The duration in seconds that the incentives will be distributed over.
transferAndStake
This function transfers a specified amount of staking tokens from the caller, stakes them on the recipient's behalf, and associates them with a specified reward contract.
Parameters
reward
IMaverickV2Reward
The IMaverickV2Reward contract for which to stake.
tokenId
uint256
Nft tokenId to stake for the staked tokens.
_amount
uint256
The amount of staking tokens to transfer and stake.
Returns
amount
uint256
The amount of staking tokens staked. May differ from input if there were unstaked tokens in the vault prior to this call.
stakedTokenId
uint256
TokenId where liquidity was staked to. This may differ from the input tokenIf if the input tokenId=0
.
transferAndNotifyRewardAmount
This function transfers a specified amount of reward tokens from the caller and adds them to the reward contract as incentives.
Parameters
reward
IMaverickV2Reward
The IMaverickV2Reward contract to notify.
rewardToken
IERC20
The address of the reward token to transfer.
duration
uint256
The duration (in seconds) over which to distribute the rewards.
amount
uint256
The amount of staking tokens to stake (uint256).
Returns
_duration
uint256
The duration in seconds that the incentives will be distributed over.
createBoostedPositionAndAddLiquidityAndStake
This function creates a new BoostedPosition contract, adds liquidity to a pool using the provided parameters, stakes the received LP tokens, and associates them with a specified reward contract.
Parameters
recipient
address
The address to which the minted LP tokens will be credited.
params
IMaverickV2PoolLens.CreateBoostedPositionInputs
A struct containing parameters for creating the BoostedPosition (see IMaverickV2PoolLens.CreateBoostedPositionInputs).
rewardTokens
IERC20[]
An array of IERC20 token addresses representing the available reward tokens for the staked LP position.
veTokens
IMaverickV2VotingEscrow[]
An array of IMaverickV2VotingEscrow contract addresses representing the veTokens used for boosting.
Returns
boostedPosition
IMaverickV2BoostedPosition
The created IMaverickV2BoostedPosition contract.
mintedLpAmount
uint256
The amount of LP tokens minted from the added liquidity.
tokenAAmount
uint256
The amount of token A deposited for liquidity.
tokenBAmount
uint256
The amount of token B deposited for liquidity.
stakeAmount
uint256
The amount of LP tokens staked in the reward contract.
reward
IMaverickV2Reward
The IMaverickV2Reward contract.
tokenId
uint256
Token on reward contract where user liquidity was staked.
createBoostedPositionAndAddLiquidityAndStakeToSender
This function is similar to createBoostedPositionAndAddLiquidityAndStake
but stakes the minted LP tokens for the caller (msg.sender) instead of a specified recipient.
Parameters
params
IMaverickV2PoolLens.CreateBoostedPositionInputs
A struct containing parameters for creating the BoostedPosition (see IMaverickV2PoolLens.CreateBoostedPositionInputs).
rewardTokens
IERC20[]
An array of IERC20 token addresses representing the available reward tokens for the staked LP position.
veTokens
IMaverickV2VotingEscrow[]
An array of IMaverickV2VotingEscrow contract addresses representing the veTokens used for boosting.
Returns
boostedPosition
IMaverickV2BoostedPosition
The created IMaverickV2BoostedPosition contract.
mintedLpAmount
uint256
The amount of LP tokens minted from the added liquidity.
tokenAAmount
uint256
The amount of token A deposited for liquidity.
tokenBAmount
uint256
The amount of token B deposited for liquidity.
stakeAmount
uint256
The amount of LP tokens staked in the reward contract.
reward
IMaverickV2Reward
The IMaverickV2Reward contract associated with the staked LP position.
tokenId
uint256
Token on reward contract where user liquidity was staked.
addLiquidityAndMintBoostedPositionAndStake
This function adds liquidity to a pool using a pre-created BoostedPosition contract, stakes the received LP tokens, and associates them with a specified reward contract.
Parameters
tokenId
uint256
Token on reward contract where liquidity is to be staked.
boostedPosition
IMaverickV2BoostedPosition
The IMaverickV2BoostedPosition contract representing the existing boosted position.
packedSqrtPriceBreaks
bytes
A packed representation of sqrt price breaks for the liquidity range (see IMaverickV2Pool.IAddLiquidityParams).
packedArgs
bytes[]
Additional packed arguments for adding liquidity (see IMaverickV2Pool.IAddLiquidityParams).
reward
IMaverickV2Reward
The IMaverickV2Reward contract for which to stake the LP tokens.
Returns
mintedLpAmount
uint256
The amount of LP tokens minted from the added liquidity.
tokenAAmount
uint256
The amount of token A deposited for liquidity.
tokenBAmount
uint256
The amount of token B deposited for liquidity.
stakeAmount
uint256
The amount of LP tokens staked in the reward contract.
addLiquidityAndMintBoostedPositionAndStakeToSender
This function is similar to addLiquidityAndMintBoostedPositionAndStake
but uses the caller (msg.sender) as the recipient for the minted reward stake.
Parameters
sendersTokenIndex
uint256
Token index of sender on the reward contract to mint to. If sender does not have a token already, then this call will mint one for the user.
boostedPosition
IMaverickV2BoostedPosition
The IMaverickV2BoostedPosition contract representing the existing boosted position.
packedSqrtPriceBreaks
bytes
A packed representation of sqrt price breaks for the liquidity range (see IMaverickV2Pool.IAddLiquidityParams).
packedArgs
bytes[]
Additional packed arguments for adding liquidity (see IMaverickV2Pool.IAddLiquidityParams).
reward
IMaverickV2Reward
The IMaverickV2Reward contract for which to stake the LP tokens.
Returns
mintedLpAmount
uint256
The amount of LP tokens minted from the added liquidity.
tokenAAmount
uint256
The amount of token A deposited for liquidity.
tokenBAmount
uint256
The amount of token B deposited for liquidity.
stakeAmount
uint256
The amount of LP tokens staked in the reward contract.
tokenId
uint256
Token on reward contract where user liquidity was staked.
mintTokenInRewardToSender
mintTokenInReward
sync
This function syncs the balance of a staker's votes on the legacy ve mav contract with the new V2 ve mav contract.
Parameters
ve
IMaverickV2VotingEscrowWSync
The IMaverickV2VotingEscrowWSync contract to interact with.
staker
address
The address of the user whose veToken lock may need syncing.
legacyLockupIndexes
uint256[]
A list of indexes to synchronize from the legacy veMav to the V2 ve contract.
Last updated