FarmingCenter
Algebra main farming contract
Developer note: Manages farmings and performs entry, exit and other actions.
Modifiers
isOwner
modifier isOwner(uint256 tokenId)
internal
Name | Type | Description |
---|---|---|
tokenId | uint256 |
Variables
contract IAlgebraEternalFarming eternalFarming immutable
The eternal farming contract
contract INonfungiblePositionManager nonfungiblePositionManager immutable
The nonfungible position manager with which this farming contract is compatible
address algebraPoolDeployer immutable
The Algebra poolDeployer contract
mapping(address => address) virtualPoolAddresses
Developer note: saves addresses of virtual pools for pool
mapping(uint256 => bytes32) deposits
Developer note: deposits[tokenId] => incentiveId
mapping(bytes32 => struct IncentiveKey) incentiveKeys
Functions
constructor
constructor(contract IAlgebraEternalFarming _eternalFarming, contract INonfungiblePositionManager _nonfungiblePositionManager) public
public
Name | Type | Description |
---|---|---|
_eternalFarming | contract IAlgebraEternalFarming | |
_nonfungiblePositionManager | contract INonfungiblePositionManager |
enterFarming
function enterFarming(struct IncentiveKey key, uint256 tokenId) external
external
Enters in incentive (time-limited or eternal farming) with NFT-position token Developer note: token must be deposited in FarmingCenter
Name | Type | Description |
---|---|---|
key | struct IncentiveKey | The incentive event key |
tokenId | uint256 | The id of position NFT |
exitFarming
function exitFarming(struct IncentiveKey key, uint256 tokenId) external
external
Exits from incentive (time-limited or eternal farming) with NFT-position token
Name | Type | Description |
---|---|---|
key | struct IncentiveKey | The incentive event key |
tokenId | uint256 | The id of position NFT |
applyLiquidityDelta
function applyLiquidityDelta(uint256 tokenId, int256 liquidityDelta) external
external
Report a change of liquidity in position
Name | Type | Description |
---|---|---|
tokenId | uint256 | The ID of the token for which liquidity is being added |
liquidityDelta | int256 | The amount of added liquidity |
increaseLiquidity
function increaseLiquidity(uint256 tokenId, uint256 liquidityDelta) external
external
Name | Type | Description |
---|---|---|
tokenId | uint256 | |
liquidityDelta | uint256 |
decreaseLiquidity
function decreaseLiquidity(uint256 tokenId, uint256 liquidityDelta) external returns (bool success)
external
Name | Type | Description |
---|---|---|
tokenId | uint256 | |
liquidityDelta | uint256 |
Returns:
Name | Type | Description |
---|---|---|
success | bool |
burnPosition
function burnPosition(uint256 tokenId) external returns (bool success)
external
Report a burn of position token
Name | Type | Description |
---|---|---|
tokenId | uint256 | The ID of the token which is being burned |
Returns:
Name | Type | Description |
---|---|---|
success | bool |
collectRewards
function collectRewards(struct IncentiveKey key, uint256 tokenId) external returns (uint256 reward, uint256 bonusReward)
external
Used to collect reward from eternal farming. Then reward can be claimed.
Name | Type | Description |
---|---|---|
key | struct IncentiveKey | The incentive event key |
tokenId | uint256 | The id of position NFT |
Returns:
Name | Type | Description |
---|---|---|
reward | uint256 | The amount of collected reward |
bonusReward | uint256 | The amount of collected bonus reward |
claimReward
function claimReward(contract IERC20Minimal rewardToken, address to, uint256 amountRequested) external returns (uint256 reward)
external
Used to claim and send rewards from farming(s) Developer note: can be used via static call to get current rewards for user
Name | Type | Description |
---|---|---|
rewardToken | contract IERC20Minimal | The token that is a reward |
to | address | The address to be rewarded |
amountRequested | uint256 | Amount to claim in eternal farming |
Returns:
Name | Type | Description |
---|---|---|
reward | uint256 | The summary amount of claimed rewards |
connectVirtualPool
function connectVirtualPool(contract IAlgebraPool pool, address newVirtualPool) external
external
Updates activeIncentive in AlgebraPool Developer note: only farming can do it
Name | Type | Description |
---|---|---|
pool | contract IAlgebraPool | The AlgebraPool for which farming was created |
newVirtualPool | address |