IDragonswapV2Staker

Allows staking nonfungible liquidity tokens in exchange for reward tokens

Functions

factory

  function factory(
  ) external view returns (contract IDragonswapV2Factory)

The DragonswapV2 Factory

nonfungiblePositionManager

  function nonfungiblePositionManager(
  ) external view returns (contract INonfungiblePositionManager)

The nonfungible position manager with which this staking contract is compatible

maxIncentiveDuration

  function maxIncentiveDuration(
  ) external view returns (uint256)

The max duration of an incentive in seconds

maxIncentiveStartLeadTime

  function maxIncentiveStartLeadTime(
  ) external view returns (uint256)

The max amount of seconds into the future the incentive startTime can be set

incentives

  function incentives(
    bytes32 incentiveId
  ) external view returns (uint256 totalRewardUnclaimed, uint160 totalSecondsClaimedX128, uint96 numberOfStakes)

Represents a staking incentive

Parameters:

NameTypeDescription

incentiveId

bytes32

The ID of the incentive computed from its parameters

Return Values:

NameTypeDescription

totalRewardUnclaimed

uint256

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

  function deposits(
  ) external view returns (address owner, uint48 numberOfStakes, int24 tickLower, int24 tickUpper)

Returns information about a deposited NFT

Return Values:

NameTypeDescription

owner

address

The owner of the deposited 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

stakes

  function stakes(
    uint256 tokenId,
    bytes32 incentiveId
  ) external view returns (uint160 secondsPerLiquidityInsideInitialX128, uint128 liquidity)

Returns information about a staked liquidity NFT

Parameters:

NameTypeDescription

tokenId

uint256

The ID of the staked token

incentiveId

bytes32

The ID of the incentive for which the token is staked

Return Values:

NameTypeDescription

secondsPerLiquidityInsideInitialX128

uint160

secondsPerLiquidity represented as a UQ32.128

liquidity

uint128

The amount of liquidity in the NFT as of the last time the rewards were computed

rewards

  function rewards(
    contract IERC20Minimal rewardToken,
    address owner
  ) external view returns (uint256 rewardsOwed)

Returns amounts of reward tokens owed to a given address according to the last time all stakes were updated

Parameters:

NameTypeDescription

rewardToken

contract IERC20Minimal

The token for which to check rewards

owner

address

The owner for which the rewards owed are checked

Return Values:

NameTypeDescription

rewardsOwed

uint256

The amount of the reward token claimable by the owner

createIncentive

  function createIncentive(
    struct IDragonswapV2Staker.IncentiveKey key,
    uint256 reward
  ) external

Creates a new liquidity mining incentive program

Parameters:

NameTypeDescription

key

struct IDragonswapV2Staker.IncentiveKey

Details of the incentive to create

reward

uint256

The amount of reward tokens to be distributed

endIncentive

  function endIncentive(
    struct IDragonswapV2Staker.IncentiveKey key
  ) external returns (uint256 refund)

Ends an incentive after the incentive end time has passed and all stakes have been withdrawn

Parameters:

NameTypeDescription

key

struct IDragonswapV2Staker.IncentiveKey

Details of the incentive to end

Return Values:

NameTypeDescription

refund

uint256

The remaining reward tokens when the incentive is ended

transferDeposit

  function transferDeposit(
    uint256 tokenId,
    address to
  ) external

Transfers ownership of a deposit from the sender to the given recipient

Parameters:

NameTypeDescription

tokenId

uint256

The ID of the token (and the deposit) to transfer

to

address

The new owner of the deposit

withdrawToken

  function withdrawToken(
    uint256 tokenId,
    address to,
    bytes data
  ) external

Withdraws a DragonswapV2 LP token tokenId from this contract to the recipient to

Parameters:

NameTypeDescription

tokenId

uint256

The unique identifier of an DragonswapV2 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

  function stakeToken(
    struct IDragonswapV2Staker.IncentiveKey key,
    uint256 tokenId
  ) external

Stakes a DragonswapV2 LP token

Parameters:

NameTypeDescription

key

struct IDragonswapV2Staker.IncentiveKey

The key of the incentive for which to stake the NFT

tokenId

uint256

The ID of the token to stake

unstakeToken

  function unstakeToken(
    struct IDragonswapV2Staker.IncentiveKey key,
    uint256 tokenId
  ) external

Unstakes a DragonswapV2 LP token

Parameters:

NameTypeDescription

key

struct IDragonswapV2Staker.IncentiveKey

The key of the incentive for which to unstake the NFT

tokenId

uint256

The ID of the token to unstake

claimReward

  function claimReward(
    contract IERC20Minimal rewardToken,
    address to,
    uint256 amountRequested
  ) external returns (uint256 reward)

Transfers amountRequested of accrued rewardToken rewards from the contract to the recipient to

Parameters:

NameTypeDescription

rewardToken

contract IERC20Minimal

The token being distributed as a reward

to

address

The address where claimed rewards will be sent to

amountRequested

uint256

The amount of reward tokens to claim. Claims entire reward amount if set to 0.

Return Values:

NameTypeDescription

reward

uint256

The amount of reward tokens claimed

getRewardInfo

  function getRewardInfo(
    struct IDragonswapV2Staker.IncentiveKey key,
    uint256 tokenId
  ) external returns (uint256 reward, uint160 secondsInsideX128)

Calculates the reward amount that will be received for the given stake

Parameters:

NameTypeDescription

key

struct IDragonswapV2Staker.IncentiveKey

The key of the incentive

tokenId

uint256

The ID of the token

Return Values:

NameTypeDescription

reward

uint256

The reward accrued to the NFT for the given incentive thus far

secondsInsideX128

uint160

The seconds inside the tick range

Events

IncentiveCreated

  event IncentiveCreated(
    contract IERC20Minimal rewardToken,
    contract IDragonswapV2Pool pool,
    uint256 startTime,
    uint256 endTime,
    address refundee,
    uint256 reward
  )

Event emitted when a liquidity mining incentive has been created

Parameters:

NameTypeDescription

rewardToken

contract IERC20Minimal

The token being distributed as a reward

pool

contract IDragonswapV2Pool

The DragonswapV2 pool

startTime

uint256

The time when the incentive program begins

endTime

uint256

The time when rewards stop accruing

refundee

address

The address which receives any remaining reward tokens after the end time

reward

uint256

The amount of reward tokens to be distributed

IncentiveEnded

  event IncentiveEnded(
    bytes32 incentiveId,
    uint256 refund
  )

Event that can be emitted when a liquidity mining incentive has ended

Parameters:

NameTypeDescription

incentiveId

bytes32

The incentive which is ending

refund

uint256

The amount of reward tokens refunded

DepositTransferred

  event DepositTransferred(
    uint256 tokenId,
    address oldOwner,
    address newOwner
  )

Emitted when ownership of a deposit changes

Parameters:

NameTypeDescription

tokenId

uint256

The ID of the deposit (and token) that is being transferred

oldOwner

address

The owner before the deposit was transferred

newOwner

address

The owner after the deposit was transferred

TokenStaked

  event TokenStaked(
    uint256 tokenId,
    bytes32 liquidity,
    uint128 incentiveId
  )

Event emitted when a DragonswapV2 LP token has been staked

Parameters:

NameTypeDescription

tokenId

uint256

The unique identifier of an DragonswapV2 LP token

liquidity

bytes32

The amount of liquidity staked

incentiveId

uint128

The incentive in which the token is staking

TokenUnstaked

  event TokenUnstaked(
    uint256 tokenId,
    bytes32 incentiveId
  )

Event emitted when a DragonswapV2 LP token has been unstaked

Parameters:

NameTypeDescription

tokenId

uint256

The unique identifier of an DragonswapV2 LP token

incentiveId

bytes32

The incentive in which the token is staking

RewardClaimed

  event RewardClaimed(
    address to,
    uint256 reward
  )

Event emitted when a reward token has been claimed

Parameters:

NameTypeDescription

to

address

The address where claimed rewards were sent to

reward

uint256

The amount of reward tokens claimed

Last updated