# AlgebraPoolBase

Algebra pool base abstract contract

Contains state variables, immutables and common internal functions

## Modifiers

### onlyValidTicks

`modifier onlyValidTicks(int24 bottomTick, int24 topTick)` internal

| Name       | Type  | Description |
| ---------- | ----- | ----------- |
| bottomTick | int24 |             |
| topTick    | int24 |             |

## Variables

### address dataStorageOperator immutable

The contract that stores all the timepoints and can perform actions with them

### address factory immutable

The contract that deployed the pool, which must adhere to the IAlgebraFactory interface

### address token0 immutable

The first of the two tokens of the pool, sorted by address

### address token1 immutable

The second of the two tokens of the pool, sorted by address

### address communityVault immutable

The contract to which community fees are transferred

### uint256 totalFeeGrowth0Token

The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool

*Developer note: This value can overflow the uint256*

### uint256 totalFeeGrowth1Token

The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool

*Developer note: This value can overflow the uint256*

### struct AlgebraPoolBase.GlobalState globalState

The globalState structure in the pool stores many values but requires only one slot and is exposed as a single method to save gas when accessed externally.

### uint128 liquidity

The currently in range liquidity available to the pool

*Developer note: This value has no relationship to the total liquidity across all ticks. Returned value cannot exceed type(uint128).max*

### int24 tickSpacing

The current tick spacing

*Developer note: Ticks can only be used at multiples of this value e.g.: a tickSpacing of 60 means ticks can be initialized every 60th tick, i.e., ..., -120, -60, 0, 60, 120, ... This value is an int24 to avoid casting even though it is always positive.*

### int24 tickSpacingLimitOrders

The current tick spacing for limit orders

*Developer note: Ticks can only be used for limit orders at multiples of this value This value is an int24 to avoid casting even though it is always positive.*

### uint32 communityFeeLastTimestamp

The timestamp of the last sending of tokens to community vault

### uint160 secondsPerLiquidityCumulative

The accumulator of seconds per liquidity since the pool was first initialized

### address activeIncentive

Returns the information about active incentive

*Developer note: if there is no active incentive at the moment, incentiveAddress would be equal to address(0)*

### mapping(int24 => struct TickManagement.Tick) ticks

Look up information about a specific tick in the pool

### mapping(int24 => struct LimitOrderManagement.LimitOrder) limitOrders

Returns the summary information about a limit orders at tick

### mapping(int16 => uint256) tickTable

Returns 256 packed tick initialized boolean values. See TickTree for more information

## Functions

### maxLiquidityPerTick

`function maxLiquidityPerTick() external pure returns (uint128)` pure external

The maximum amount of position liquidity that can use any tick in the range *Developer note: This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool*

**Returns:**

| Name | Type    | Description                          |
| ---- | ------- | ------------------------------------ |
| \[0] | uint128 | The max amount of liquidity per tick |

### getCommunityFeePending

`function getCommunityFeePending() external view returns (uint128, uint128)` view external

The amounts of token0 and token1 that will be sent to the vault *Developer note: Will be sent COMMUNITY\_FEE\_TRANSFER\_FREQUENCY after communityFeeLastTimestamp*

**Returns:**

| Name | Type    | Description |
| ---- | ------- | ----------- |
| \[0] | uint128 |             |
| \[1] | uint128 |             |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.algebra.finance/algebra-integral-documentation/algebra-v1-technical-reference/contracts/api-reference-v2.0/v2.0-core/algebrapoolbase.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
