Maverick Docs
  • Introducing Maverick
  • Getting Started
    • 🖥️The Maverick V2 UI
    • 👛Connect a Wallet
    • ⛓️Choose a Network
    • 🪙Approving Tokens
  • Guides
    • 🤝Traders
      • How to Make a Swap
    • 💰Liquidity Providers
      • Understanding Liquidity Provision
      • Understanding Modes
      • How to Add Liquidity
      • How to Deploy a New Pool
      • How to Check Position Balances
      • How to Manage Liquidity in a Pool
      • How to Migrate from V1 to V2
      • Understanding Permanent Loss
      • Liquidity Strategies
    • ⚡Incentives
      • Understanding Boosted Positions
      • Understanding Incentives
      • How to Join a Boosted Position
      • How to Create a Boosted Position
      • How to Manage a Boosted Position
      • How to Add Incentives
    • 🎡veFlywheel
      • veFlywheel Basics
      • Guide to veFlywheel Emissions
      • How to Vote to Direct Emissions
    • 👩‍🏫Advanced Tutorials
      • Single-Sided Incentives
  • Technical Reference
    • Contract Addresses
      • V1 Contract Addresses
      • V2 Contract Addresses
    • Maverick V1
      • V1 Whitepaper
      • V1 Contracts
        • Router
        • Pool
        • Factory
        • SlimRouter
    • Maverick V2
      • V2 Whitepaper
      • V2 Contracts
        • Maverick V2 Common Contracts
          • base
            • IMulticall
            • IPayableMulticall
            • Multicall
            • PayableMulticall
          • interfaces
            • IMaverickV2AddLiquidityCallback
            • IMaverickV2Factory
            • IMaverickV2FactoryAdmin
            • IMaverickV2FlashLoanCallback
            • IMaverickV2Pool
            • IMaverickV2PoolAdmin
            • IMaverickV2SwapCallback
          • libraries
            • ArrayOperations
            • Constants
            • Math
            • PoolLib
            • TickMath
            • TransferLib
        • Maverick V2 AMM Contracts
          • poollib
            • Bin
            • Delta
            • Deployer
            • DeployerPermissioned
            • SwapMath
            • Twa
          • MaverickV2Factory
          • MaverickV2Pool
          • MaverickV2PoolPermissioned
        • Maverick V2 Reward Contracts
          • interfaces
            • IMaverickV2IncentiveMatcher
            • IMaverickV2IncentiveMatcherFactory
            • IMaverickV2Reward
            • IMaverickV2RewardFactory
            • IMaverickV2RewardRouter
            • IMaverickV2RewardVault
            • IMaverickV2VotingEscrowBase
            • IMaverickV2VotingEscrow
            • IMaverickV2VotingEscrowFactory
            • IMaverickV2VotingEscrowLens
            • IMaverickV2VotingEscrowWSync
          • libraries
            • IncentiveMatcherDeployer
            • RewardDeployer
            • VotingEscrowDeployer
            • VotingEscrowWSyncDeployer
          • rewardbase
            • IRewardAccounting
            • RewardAccounting
          • votingescrowbase
            • HistoricalBalance
            • IHistoricalBalance
            • ILegacyVeMav
            • VotingEscrow
          • MaverickV2IncentiveMatcher
          • MaverickV2IncentiveMatcherFactory
          • MaverickV2Reward
          • MaverickV2RewardFactory
          • MaverickV2RewardRouter
          • MaverickV2RewardVault
          • MaverickV2VotingEscrow
          • MaverickV2VotingEscrowFactory
          • MaverickV2VotingEscrowLens
          • MaverickV2VotingEscrowWSync
        • Maverick V2 Supplemental Contracts
          • base
            • Checks
            • IChecks
            • IMigrateBins
            • MigrateBins
          • boostedpositionbase
            • BoostedPositionBase
            • IBoostedPositionBase
            • ImmutableArrayGetter
          • interfaces
            • IMaverickV2BoostedPosition
            • IMaverickV2BoostedPositionFactory
            • IMaverickV2LiquidityManager
            • IMaverickV2PoolLens
            • IMaverickV2Position
            • IMaverickV2Quoter
            • IMaverickV2Router
            • IPositionImage
          • libraries
            • BoostedPositionDeployerDynamic
            • BoostedPositionDeployerStatic
            • BytesLib
            • LiquidityUtilities
            • PackLib
            • Path
            • PoolInspection
          • liquiditybase
            • ArgPacker
            • IArgPacker
          • paymentbase
            • IERC20PermitAllowed
            • IPayment
            • ISelfPermit
            • IState
            • IWETH9
            • Payment
            • SelfPermit
            • State
          • positionbase
            • INft
            • Nft
          • routerbase
            • CallbackOperations
            • ExactOutputSlim
            • ICallbackOperations
            • IExactOutputSlim
            • IPushOperations
            • IRouterErrors
            • PushOperations
          • MaverickV2BoostedPositionDynamic
          • MaverickV2BoostedPositionFactory
          • MaverickV2BoostedPositionStatic
          • MaverickV2LiquidityManager
          • MaverickV2PoolLens
          • MaverickV2Position
          • MaverickV2Quoter
          • MaverickV2Router
          • PositionImage
      • V2 API Documentation
      • V2 Testnet Guide
        • Get Sepolia ETH & Test Tokens
        • How to Create a Boosted Position in V2
        • How to Add & Match Incentives
        • How to Create a veFlywheel
    • Development FAQ
    • Finding LP Balances
  • MAV token
    • MAV Token & Tokenomics
    • veMAV & MAV Staking
    • How to Stake MAV
    • Syncing V1 veMAV
    • Airdrop Information
      • Maverick Ecosystem Rewards Pre-Season Airdrop
      • Maverick Governance & S1 Airdrops
  • Further Information
    • Frequently Asked Questions
    • Glossary
    • Security
    • Maverick Wallets
    • Dune Analytics
    • Rebasing Tokens
    • Restricted Territories
    • Delphi Digital Report
Powered by GitBook
On this page
  • State Variables
  • Functions
  1. Technical Reference
  2. Maverick V2
  3. V2 Contracts
  4. Maverick V2 Reward Contracts

MaverickV2IncentiveMatcherFactory

PreviousMaverickV2IncentiveMatcherNextMaverickV2Reward

Last updated 1 year ago

Inherits:

IncentiveMatcherFactory creates IncentiveMatcher contracts that can be used to facilitate voting on incentive directing and external protocol incentive matching for a given veToken.

IncentiveMatcher contracts are deployed with create2 to deterministic addresses can computed prior to deployment.

State Variables

incentiveMatcherParameters

IncentiveMatcherParameters public incentiveMatcherParameters;

incentiveMatcherForVe

This function retrieves the address of the IncentiveMatcher contract associated with the current veToken.

mapping(IMaverickV2VotingEscrow => IMaverickV2IncentiveMatcher) public override incentiveMatcherForVe;

isFactoryIncentiveMatcher

This function checks if the current contract is a factory contract for IncentiveMatchers.

mapping(IMaverickV2IncentiveMatcher => bool) public isFactoryIncentiveMatcher;

_allIncentiveMatcher

IMaverickV2IncentiveMatcher[] private _allIncentiveMatcher;

veFactory

This function retrieves the address of the MaverickV2VotingEscrowFactory contract.

IMaverickV2VotingEscrowFactory public immutable veFactory;

rewardFactory

This function retrieves the address of the MaverickV2RewardFactory contract.

IMaverickV2RewardFactory public immutable rewardFactory;

Functions

constructor

constructor(IMaverickV2VotingEscrowFactory _veFactory, IMaverickV2RewardFactory _rewardFactory);

createIncentiveMatcher

This function creates a new IncentiveMatcher contract for a given base token. The basetoken is required to have a deployed ve token before incentive matcher can be created. If no ve token exists, this function will revert. A ve token can be created with the ve token factory: veFactory().

function createIncentiveMatcher(IERC20 baseToken)
    public
    returns (IMaverickV2VotingEscrow veToken, IMaverickV2IncentiveMatcher incentiveMatcher);

Parameters

Name
Type
Description

baseToken

IERC20

The base token for the new IncentiveMatcher.

Returns

Name
Type
Description

veToken

IMaverickV2VotingEscrow

The voting escrow token for the IncentiveMatcher.

incentiveMatcher

IMaverickV2IncentiveMatcher

The address of the newly created IncentiveMatcher contract.

incentiveMatchers

This function retrieves a list of existing IncentiveMatcher contracts.

function incentiveMatchers(uint256 startIndex, uint256 endIndex)
    external
    view
    returns (IMaverickV2IncentiveMatcher[] memory returnElements);

Parameters

Name
Type
Description

startIndex

uint256

The starting index of the list to retrieve.

endIndex

uint256

The ending index of the list to retrieve.

Returns

Name
Type
Description

returnElements

IMaverickV2IncentiveMatcher[]

An array of IncentiveMatcher contracts within the specified range.

incentiveMatchersLength

This function returns the total number of existing IncentiveMatcher contracts.

function incentiveMatchersLength() external view returns (uint256);

incentiveMatcherAddress

This function retrieves the address of the IncentiveMatcher contract associated with a given veToken.

function incentiveMatcherAddress(IMaverickV2VotingEscrow veToken)
    public
    view
    returns (IMaverickV2IncentiveMatcher incentiveMatcher);

Parameters

Name
Type
Description

veToken

IMaverickV2VotingEscrow

The voting escrow token for which to retrieve the corresponding IncentiveMatcher.

Returns

Name
Type
Description

incentiveMatcher

IMaverickV2IncentiveMatcher

The address of the IncentiveMatcher contract associated with the veToken.

IMaverickV2IncentiveMatcherFactory