IAlgebraFarming

Algebra Farming Interface

Allows farming nonfungible liquidity tokens in exchange for reward tokens

Events

IncentiveDeactivated

event IncentiveDeactivated(contract IERC20Minimal rewardToken, contract IERC20Minimal bonusRewardToken, contract IAlgebraPool pool, address virtualPool, uint256 startTime, uint256 endTime)

Event emitted when a liquidity mining incentive has been stopped from the outside

NameTypeDescription
rewardTokencontract IERC20MinimalThe token being distributed as a reward
bonusRewardTokencontract IERC20MinimalThe token being distributed as a bonus reward
poolcontract IAlgebraPoolThe Algebra pool
virtualPooladdressThe detached virtual pool address
startTimeuint256The time when the incentive program begins
endTimeuint256The time when rewards stop accruing

FarmEntered

event FarmEntered(uint256 tokenId, bytes32 incentiveId, uint128 liquidity, uint256 tokensLocked)

Event emitted when a Algebra LP token has been farmd

NameTypeDescription
tokenIduint256The unique identifier of an Algebra LP token
incentiveIdbytes32The incentive in which the token is farming
liquidityuint128The amount of liquidity farmd
tokensLockeduint256The amount of tokens locked for multiplier

FarmEnded

event FarmEnded(uint256 tokenId, bytes32 incentiveId, address rewardAddress, address bonusRewardToken, address owner, uint256 reward, uint256 bonusReward)

Event emitted when a Algebra LP token has been exitFarmingd

NameTypeDescription
tokenIduint256The unique identifier of an Algebra LP token
incentiveIdbytes32The incentive in which the token is farming
rewardAddressaddressThe token being distributed as a reward
bonusRewardTokenaddressThe token being distributed as a bonus reward
owneraddressThe address where claimed rewards were sent to
rewarduint256The amount of reward tokens to be distributed
bonusRewarduint256The amount of bonus reward tokens to be distributed

IncentiveMaker

event IncentiveMaker(address incentiveMaker)

Emitted when the incentive maker is changed

NameTypeDescription
incentiveMakeraddressThe incentive maker after the address was changed

Owner

event Owner(address owner)

Emitted when owner is changed

NameTypeDescription
owneraddressThe owner after the address was changed

FarmingCenter

event FarmingCenter(address farmingCenter)

Emitted when the farming center is changed

NameTypeDescription
farmingCenteraddressThe farming center after the address was changed

RewardsAdded

event RewardsAdded(uint256 rewardAmount, uint256 bonusRewardAmount, bytes32 incentiveId)

Event emitted when rewards were added

NameTypeDescription
rewardAmountuint256The additional amount of main token
bonusRewardAmountuint256The additional amount of bonus token
incentiveIdbytes32The ID of the incentive for which rewards were added

RewardAmountsDecreased

event RewardAmountsDecreased(uint256 reward, uint256 bonusReward, bytes32 incentiveId)

NameTypeDescription
rewarduint256
bonusRewarduint256
incentiveIdbytes32

RewardClaimed

event RewardClaimed(address to, uint256 reward, address rewardAddress, address owner)

Event emitted when a reward token has been claimed

NameTypeDescription
toaddressThe address where claimed rewards were sent to
rewarduint256The amount of reward tokens claimed
rewardAddressaddressThe token reward address
owneraddressThe address where claimed rewards were sent to

EmergencyWithdraw

event EmergencyWithdraw(bool newStatus)

Emitted when status of `isEmergencyWithdrawActivated` changes

NameTypeDescription
newStatusboolNew value of `isEmergencyWithdrawActivated`. Users can withdraw liquidity without any checks if active.

Functions

nonfungiblePositionManager

function nonfungiblePositionManager() external view returns (contract INonfungiblePositionManager) view external

The nonfungible position manager with which this farming contract is compatible

Returns:

NameTypeDescription
[0]contract INonfungiblePositionManager

deployer

function deployer() external returns (contract IAlgebraPoolDeployer) external

The pool deployer

Returns:

NameTypeDescription
[0]contract IAlgebraPoolDeployer

isEmergencyWithdrawActivated

function isEmergencyWithdrawActivated() external view returns (bool) view external

Users can withdraw liquidity without any checks if active.

Returns:

NameTypeDescription
[0]bool

setIncentiveMaker

function setIncentiveMaker(address _incentiveMaker) external external

Updates the incentive maker

NameTypeDescription
_incentiveMakeraddressThe new incentive maker address

setOwner

function setOwner(address owner) external external

Updates the owner address

NameTypeDescription
owneraddressThe new owner address

incentives

function incentives(bytes32 incentiveId) external view returns (uint256 totalReward, uint256 bonusReward, address virtualPoolAddress, uint24 minimalPositionWidth, uint224 totalLiquidity, address multiplierToken, bool deactivated, struct IAlgebraFarming.Tiers tiers) view external

Represents a farming incentive

NameTypeDescription
incentiveIdbytes32The ID of the incentive computed from its parameters

Returns:

NameTypeDescription
totalRewarduint256
bonusRewarduint256
virtualPoolAddressaddress
minimalPositionWidthuint24
totalLiquidityuint224
multiplierTokenaddress
deactivatedbool
tiersstruct IAlgebraFarming.Tiers

deactivateIncentive

function deactivateIncentive(struct IIncentiveKey.IncentiveKey key) external external

Detach incentive from the pool and deactivate it

NameTypeDescription
keystruct IIncentiveKey.IncentiveKeyThe key of the incentive

addRewards

function addRewards(struct IIncentiveKey.IncentiveKey key, uint256 rewardAmount, uint256 bonusRewardAmount) external external

NameTypeDescription
keystruct IIncentiveKey.IncentiveKey
rewardAmountuint256
bonusRewardAmountuint256

decreaseRewardsAmount

function decreaseRewardsAmount(struct IIncentiveKey.IncentiveKey key, uint256 rewardAmount, uint256 bonusRewardAmount) external external

NameTypeDescription
keystruct IIncentiveKey.IncentiveKey
rewardAmountuint256
bonusRewardAmountuint256

rewards

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

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

NameTypeDescription
owneraddressThe owner for which the rewards owed are checked
rewardTokencontract IERC20MinimalThe token for which to check rewards

Returns:

NameTypeDescription
rewardsOweduint256The amount of the reward token claimable by the owner

setFarmingCenterAddress

function setFarmingCenterAddress(address _farmingCenter) external external

Updates farming center address

NameTypeDescription
_farmingCenteraddressThe new farming center contract address

setEmergencyWithdrawStatus

function setEmergencyWithdrawStatus(bool newStatus) external external

Changes `isEmergencyWithdrawActivated`. Users can withdraw liquidity without any checks if activated. User cannot enter to farmings if activated. Must only be used in emergency situations. Farmings may be unusable after activation. Developer note: only owner

NameTypeDescription
newStatusboolThe new status of `isEmergencyWithdrawActivated`.

enterFarming

function enterFarming(struct IIncentiveKey.IncentiveKey key, uint256 tokenId, uint256 tokensLocked) external external

enter farming for Algebra LP token

NameTypeDescription
keystruct IIncentiveKey.IncentiveKeyThe key of the incentive for which to enterFarming the NFT
tokenIduint256The ID of the token to exitFarming
tokensLockeduint256The amount of tokens locked for boost

exitFarming

function exitFarming(struct IIncentiveKey.IncentiveKey key, uint256 tokenId, address _owner) external external

exitFarmings for Algebra LP token

NameTypeDescription
keystruct IIncentiveKey.IncentiveKeyThe key of the incentive for which to exitFarming the NFT
tokenIduint256The ID of the token to exitFarming
_owneraddressOwner of the token

claimReward

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

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

NameTypeDescription
rewardTokencontract IERC20MinimalThe token being distributed as a reward
toaddressThe address where claimed rewards will be sent to
amountRequesteduint256The amount of reward tokens to claim. Claims entire reward amount if set to 0.

Returns:

NameTypeDescription
rewarduint256The amount of reward tokens claimed

claimRewardFrom

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

Transfers `amountRequested` of accrued `rewardToken` rewards from the contract to the recipient `to` only for FarmingCenter

NameTypeDescription
rewardTokencontract IERC20MinimalThe token being distributed as a reward
fromaddressThe address of position owner
toaddressThe address where claimed rewards will be sent to
amountRequesteduint256The amount of reward tokens to claim. Claims entire reward amount if set to 0.

Returns:

NameTypeDescription
rewarduint256The amount of reward tokens claimed

getRewardInfo

function getRewardInfo(struct IIncentiveKey.IncentiveKey key, uint256 tokenId) external returns (uint256 reward, uint256 bonusReward) external

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

NameTypeDescription
keystruct IIncentiveKey.IncentiveKeyThe key of the incentive
tokenIduint256The ID of the token

Returns:

NameTypeDescription
rewarduint256The reward accrued to the NFT for the given incentive thus far
bonusRewarduint256The bonus reward accrued to the NFT for the given incentive thus far