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

Returns:

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

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

Returns:

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