SecondsOutside

Contains methods for working with a mapping from tick to 32 bit timestamp values, specifically seconds spent outside the tick.

The mapping uses int24 for keys since ticks are represented as int24 and there are 8 (2^3) values per word. Note "seconds outside" is always a relative measurement, only consistent for as long as a the lower tick and upper tick have gross liquidity greater than 0.

Functions

initialize

  function initialize(
    mapping(int24 => uint256) self,
    int24 tick,
    int24 tickCurrent,
    int24 tickSpacing,
    uint32 time
  ) internal

Called the first time a tick is used to set the seconds outside value. Assumes the tick is not initialized.

Parameters:

clear

  function clear(
    mapping(int24 => uint256) self,
    int24 tick,
    int24 tickSpacing
  ) internal

Called when a tick is no longer used, to clear the seconds outside value of the tick

Parameters:

cross

  function cross(
    mapping(int24 => uint256) self,
    int24 tick,
    int24 tickSpacing,
    uint32 time
  ) internal

Called when an initialized tick is crossed to update the seconds outside for that tick. Must be called every time an initialized tick is crossed

Parameters:

get

  function get(
    mapping(int24 => uint256) self,
    int24 tick,
    int24 tickSpacing
  ) internal view returns (uint32)

Get the seconds outside for an initialized tick. Should be called only on initialized ticks.

Parameters:

Return Values:

secondsInside

  function secondsInside(
    mapping(int24 => uint256) self,
    int24 tickLower,
    int24 tickUpper,
    int24 tickCurrent,
    int24 tickSpacing
  ) internal view returns (uint32)

Get the seconds inside a tick range, assuming both tickLower and tickUpper are initialized

Parameters:

Return Values:

time spent between tickLower and tickUpper, i.e. time that a position's liquidity was in use.

Last updated