UniswapV3Staker
UniswapV3Staker.sol
A forked version of the UniswapV3Staker contract for use with the NFTX AMM.
Table of Contents
Constants
factory
The address of the NFTX AMM's pool factory.
nonfungiblePositionManager
The address of the NFTX AMM's NonfungiblePositionManager.
maxIncentiveDuration
The maximum duration of an incentive, in seconds.
maxIncentiveStartLeadTime
The maximum amount of seconds into the future the incentive startTime can be set.
Variables
incentives
Represents a staking incentive.
incentiveId
bytes32
The ID of the incentive computed from its parameters.
totalRewardUnclaimed
bytes32
The amount of reward token not yet claimed by users
totalSecondsClaimedX128
uint160
Total liquidity-seconds claimed, represented as a UQ32.128
numberOfStakes
uint96
The count of deposits that are currently staked for the incentive.
deposits
Returns information about a deposited liquidity NFT.
tokenId
uint256
The token ID of the liquidity NFT.
owner
address
The owner of the deposited liquidity NFT.
numberOfStakes
uint48
Counter of how many incentives for which the liquidity is staked.
tickLower
int24
The lower tick of the range.
tickUpper
int24
The upper tick of the range.
rewards
Returns amounts of reward tokens owed to a given address according to the last time all stakes were updated.
rewardToken
IERC20Minimal
The address of the token for which to check rewards.
owner
address
The owner for which the rewards owed are checked.
tokenId
uint256
The amount of the reward token claimable by the owner.
Events
IncentiveCreated
Event emitted when a liquidity mining incentive has been created.
rewardToken
IERC20Minimal
The token being distributed as a reward.
pool
IUniswapV3Pool
The NFTX AMM pool.
startTime
uint256
The time when the incentive program begins.
endTime
uint256
The time when rewards stop accruing.
refundee
uint256
The address that receives any remaining reward tokens after the end time.
reward
uint256
The amount of reward tokens to be distributed.
IncentiveEnded
Event that can be emitted when a liquidity mining incentive has ended.
incentiveId
bytes32
ID of the incentive that is ending.
refund
uint256
The amount of reward tokens refunded.
DepositTransferred
Emitted when ownership of a deposit changes
tokenId
uint256
The token ID of the deposited liquidity NFT that is being transferred.
oldOwner
address
The owner before the deposit was transferred.
newOwner
address
The owner after the deposit was transferred.
TokenStaked
Event emitted when an NFTX AMM LP token has been staked.
tokenId
uint256
The token ID of the staked liquidity NFT.
incentiveId
bytes32
ID of the incentive being staked on.
liquidity
uint128
The amount of liquidity staked.
TokenUnstaked
Event emitted when an NFTX AMM liquidity NFT has been unstaked.
tokenId
uint256
The token ID of the unstaked liquidity NFT.
incentiveId
bytes32
ID of the incentive being unstaked from.
RewardClaimed
Event emitted when a reward token has been claimed.
to
address
The address that claimed rewards were sent to.
reward
uint256
The amount of reward token claimed.
Write Functions
constructor
_factory
contract IUniswapV3Factory
The Uniswap V3 factory.
_nonfungiblePositionManager
contract INonfungiblePositionManager
The NFT position manager contract address.
_maxIncentiveStartLeadTime
uint256
The max duration of an incentive in seconds.
_maxIncentiveDuration
uint256
The max amount of seconds into the future the incentive startTime can be set.
createIncentive
Creates a new liquidity mining incentive program.
key
IncentiveKey
Details of the incentive to create.
reward
uint256
The amount of reward tokens to be distributed.
endIncentive
Ends an incentive after the incentive end time has passed and all stakes have been withdrawn.
key
IncentiveKey
Details of the incentive to end.
refund
uint256
The remaining reward tokens when the incentive is ended.
onERC721Received
Upon receiving a NFTX V3 LP ERC721, creates the token deposit setting owner to from
. Also stakes token in one or more incentives if properly formatted data
has a length > 0.
Whenever an {IERC721} tokenId
token is transferred to this contract via {IERC721-safeTransferFrom} by operator
from from
, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with IERC721.onERC721Received.selector
.
unnamed
address
The address which called the transfer function.
from
address
The address which previously owned the token.
tokenId
uint256
ID of the NFT.
data
bytes
Additional data with no specified format.
unnamed
bytes4
A keccak256 hash of the function call and arguments.
transferDeposit
Transfers ownership of a deposit from the sender to the given recipient.
tokenId
uint256
The ID of the token (and the deposit) to transfer.
to
address
The new owner of the deposit.
withdrawToken
Withdraws an NFTX V3 LP token tokenId
from this contract to the recipient to
.
tokenId
uint256
The unique identifier of an Uniswap V3 LP token.
to
address
The address where the LP token will be sent.
data
bytes
An optional data array that will be passed along to the to
address via the NFT safeTransferFrom.
stakeToken
Stakes an NFTX V3 LP token.
key
IncentiveKey
The key of the incentive for which to stake the NFT.
tokenId
uint256
The ID of the token to stake.
unstakeToken
Unstakes an NFTX V3 LP token.
key
IncentiveKey
The key of the incentive for which to unstake the NFT.
tokenId
uint256
The ID of the token to unstake.
claimReward
Transfers amountRequested
of accrued rewardToken
rewards from the contract to the recipient to
.
rewardToken
IERC20Minimal
The token being distributed as a reward.
to
address
The address where claimed rewards will be sent.
amountRequested
uint256
The amount of reward token to claim. If set to 0, then the entire reward amount is claimed.
reward
uint256
The amount of reward token claimed.
Read Functions
stakes
Returns information about a staked liquidity NFT.
tokenId
uint256
The ID of the staked token.
incentiveId
bytes32
The ID of the incentive for which the token is staked.
secondsPerLiquidityInsideInitialX128
uint160
secondsPerLiquidity represented as a UQ32.128.
liquidity
bytes32
The amount of liquidity in the NFT as of the last time the rewards were computed.
getRewardInfo
Calculates the reward amount that will be received for the given stake.
key
IncentiveKey
The ID of the incentive.
tokenId
uint256
The token ID of the staked liquidity NFT.
reward
uint256
The reward accrued to the NFT for the given incentive thus far.
secondsInsideX128
uint160
The seconds inside the tick range.
Last updated