> For the complete documentation index, see [llms.txt](https://docs.algebra.finance/algebra-integral-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.algebra.finance/algebra-integral-documentation/algebra-v1-technical-reference/contracts/api-reference-v1.0/v1.0-tokenomics/algebrafarming.md).

# AlgebraFarming

Abstract base contract for Algebra farmings

## Modifiers

### onlyIncentiveMaker

### onlyOwner

### onlyFarmingCenter

## Variables

### contract INonfungiblePositionManager nonfungiblePositionManager immutable

The nonfungible position manager with which this farming contract is compatible

### contract IAlgebraPoolDeployer deployer immutable

The pool deployer

### contract IFarmingCenter farmingCenter

The farming Center

### mapping(bytes32 => struct AlgebraFarming.Incentive) incentives

Represents a farming incentive

*Developer note: bytes32 refers to the return value of IncentiveId.compute*

### mapping(address => mapping(contract IERC20Minimal => uint256)) rewards

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

*Developer note: rewards\[owner]\[rewardToken] => uint256*

## Functions

### setIncentiveMaker

onlyOwner

`setIncentiveMaker(address)` external

Updates the incentive maker

| Name             | Type    | Description                     |
| ---------------- | ------- | ------------------------------- |
| \_incentiveMaker | address | The new incentive maker address |

### setFarmingCenterAddress

onlyOwner

`setFarmingCenterAddress(address)` external

Updates farming center address

| Name            | Type    | Description                             |
| --------------- | ------- | --------------------------------------- |
| \_farmingCenter | address | The new farming center contract address |

### claimReward

`claimReward(contract IERC20Minimal,address,uint256)` external

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

| Name            | Type                   | Description                                                                    |
| --------------- | ---------------------- | ------------------------------------------------------------------------------ |
| 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. |

**Returns:**

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| reward | uint256 |             |

### claimRewardFrom

onlyFarmingCenter

`claimRewardFrom(contract IERC20Minimal,address,address,uint256)` external

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

| Name            | Type                   | Description                                                                    |
| --------------- | ---------------------- | ------------------------------------------------------------------------------ |
| rewardToken     | contract IERC20Minimal | The token being distributed as a reward                                        |
| from            | address                | The address of position owner                                                  |
| 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. |

**Returns:**

| Name   | Type    | Description |
| ------ | ------- | ----------- |
| reward | uint256 |             |

***
