IMaverickV2RewardRouter

Inherits: IMaverickV2LiquidityManager

Functions

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.

function stake(IMaverickV2Reward reward, uint256 tokenId)
    external
    payable
    returns (uint256 amount, uint256 stakedTokenId);

Parameters

NameTypeDescription

reward

IMaverickV2Reward

The IMaverickV2Reward contract for which to stake.

tokenId

uint256

Nft tokenId to stake for the staked tokens.

Returns

NameTypeDescription

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.

rewardFactory

This function retrieves the address of the MaverickV2RewardFactory contract associated with this contract.

function rewardFactory() external view returns (IMaverickV2RewardFactory);

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.

function notifyRewardAmount(IMaverickV2Reward reward, IERC20 rewardToken, uint256 duration)
    external
    payable
    returns (uint256 _duration);

Parameters

NameTypeDescription

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

NameTypeDescription

_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.

function transferAndStake(IMaverickV2Reward reward, uint256 tokenId, uint256 _amount)
    external
    payable
    returns (uint256 amount, uint256 stakedTokenId);

Parameters

NameTypeDescription

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

NameTypeDescription

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.

function transferAndNotifyRewardAmount(IMaverickV2Reward reward, IERC20 rewardToken, uint256 duration, uint256 amount)
    external
    payable
    returns (uint256 _duration);

Parameters

NameTypeDescription

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

NameTypeDescription

_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.

function createBoostedPositionAndAddLiquidityAndStake(
    address recipient,
    IMaverickV2PoolLens.CreateBoostedPositionInputs memory params,
    IERC20[] memory rewardTokens,
    IMaverickV2VotingEscrow[] memory veTokens
)
    external
    payable
    returns (
        IMaverickV2BoostedPosition boostedPosition,
        uint256 mintedLpAmount,
        uint256 tokenAAmount,
        uint256 tokenBAmount,
        uint256 stakeAmount,
        IMaverickV2Reward reward,
        uint256 tokenId
    );

Parameters

NameTypeDescription

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

NameTypeDescription

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.

function createBoostedPositionAndAddLiquidityAndStakeToSender(
    IMaverickV2PoolLens.CreateBoostedPositionInputs memory params,
    IERC20[] memory rewardTokens,
    IMaverickV2VotingEscrow[] memory veTokens
)
    external
    payable
    returns (
        IMaverickV2BoostedPosition boostedPosition,
        uint256 mintedLpAmount,
        uint256 tokenAAmount,
        uint256 tokenBAmount,
        uint256 stakeAmount,
        IMaverickV2Reward reward,
        uint256 tokenId
    );

Parameters

NameTypeDescription

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

NameTypeDescription

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.

function addLiquidityAndMintBoostedPositionAndStake(
    uint256 tokenId,
    IMaverickV2BoostedPosition boostedPosition,
    bytes memory packedSqrtPriceBreaks,
    bytes[] memory packedArgs,
    IMaverickV2Reward reward
) external payable returns (uint256 mintedLpAmount, uint256 tokenAAmount, uint256 tokenBAmount, uint256 stakeAmount);

Parameters

NameTypeDescription

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

NameTypeDescription

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.

function addLiquidityAndMintBoostedPositionAndStakeToSender(
    uint256 sendersTokenIndex,
    IMaverickV2BoostedPosition boostedPosition,
    bytes memory packedSqrtPriceBreaks,
    bytes[] memory packedArgs,
    IMaverickV2Reward reward
)
    external
    payable
    returns (uint256 mintedLpAmount, uint256 tokenAAmount, uint256 tokenBAmount, uint256 stakeAmount, uint256 tokenId);

Parameters

NameTypeDescription

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

NameTypeDescription

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.

sync

This function syncs the balance of a staker's votes on the legacy ve mav contract with the new V2 ve mav contract.

function sync(IMaverickV2VotingEscrowWSync ve, address staker, uint256[] memory legacyLockupIndexes)
    external
    returns (uint256[] memory newBalance);

Parameters

NameTypeDescription

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.

mintTokenInRewardToSender

function mintTokenInRewardToSender(IMaverickV2Reward reward) external payable returns (uint256 tokenId);

mintTokenInReward

function mintTokenInReward(IMaverickV2Reward reward, address recipient) external payable returns (uint256 tokenId);

Last updated