AlgebraVirtualPoolBase

Abstract base contract for Algebra virtual pools

Modifiers

onlyFromPool

modifier onlyFromPool() internal

only pool (or FarmingCenter as "proxy") can call

onlyFarming

modifier onlyFarming() internal

Variables

address farmingCenterAddress immutable

address farmingAddress immutable

address pool immutable

mapping(int24 => struct TickManager.Tick) ticks

uint128 currentLiquidity

int24 globalTick

uint32 timeOutside

uint160 globalSecondsPerLiquidityCumulative

uint32 prevTimestamp

bool deactivated

Functions

getInnerSecondsPerLiquidity

function getInnerSecondsPerLiquidity(int24 bottomTick, int24 topTick) external view returns (uint160 innerSecondsSpentPerLiquidity) view external

get seconds per liquidity inside range

Name
Type
Description

bottomTick

int24

topTick

int24

Returns:

Name
Type
Description

innerSecondsSpentPerLiquidity

uint160

cross

function cross(int24 nextTick, bool zeroToOne) external external

Developer note: This function is called by the main pool when an initialized tick is crossed there. If the tick is also initialized in a virtual pool it should be crossed too

Name
Type
Description

nextTick

int24

The crossed tick

zeroToOne

bool

The direction

increaseCumulative

function increaseCumulative(uint32 currentTimestamp) external returns (enum IAlgebraVirtualPool.Status res) external

Developer note: This function is called from the main pool before every swap To increase seconds per liquidity cumulative considering previous timestamp and liquidity. The liquidity is stored in a virtual pool

Name
Type
Description

currentTimestamp

uint32

The timestamp of the current swap

Returns:

Name
Type
Description

res

enum IAlgebraVirtualPool.Status

Status The status of virtual pool

deactivate

function deactivate() external external

This function is used to deactivate virtual pool. Deactivated virtual pool will return Status.NOT_EXIST in increaseCumulative function

applyLiquidityDeltaToPosition

function applyLiquidityDeltaToPosition(uint32 currentTimestamp, int24 bottomTick, int24 topTick, int128 liquidityDelta, int24 currentTick) external external

Developer note: This function is called when anyone farms their liquidity. The position in a virtual pool should be changed accordingly

Name
Type
Description

currentTimestamp

uint32

The timestamp of current block

bottomTick

int24

The bottom tick of a position

topTick

int24

The top tick of a position

liquidityDelta

int128

The amount of liquidity in a position

currentTick

int24

The current tick in the main pool