DataStorageOperator
Algebra timepoints data operator
This contract stores timepoints and calculates adaptive fee and statistical averages
Modifiers
onlyPool
modifier onlyPool()
internal
Variables
struct DataStorage.Timepoint[65536] timepoints
Returns data belonging to a certain timepoint
Developer note: There is more convenient function to fetch a timepoint: getTimepoints(). Which requires not an index but seconds
struct AlgebraFeeConfiguration feeConfig
bytes32 FEE_CONFIG_MANAGER constant
Developer note: The role can be granted in AlgebraFactory
Functions
constructor
constructor(address _pool) public
public
initialize
function initialize(uint32 time, int24 tick) external
external
Initialize the dataStorage array by writing the first slot. Called once for the lifecycle of the timepoints array
changeFeeConfiguration
function changeFeeConfiguration(struct AlgebraFeeConfiguration _config) external
external
Changes fee configuration for the pool
getSingleTimepoint
function getSingleTimepoint(uint32 time, uint32 secondsAgo, int24 tick, uint16 lastIndex) external view returns (int56 tickCumulative, uint112 volatilityCumulative)
view external
Developer note: Reverts if a timepoint at or before the desired timepoint timestamp does not exist. 0 may be passed as `secondsAgo' to return the current cumulative values. If called with a timestamp falling between two timepoints, returns the counterfactual accumulator values at exactly the timestamp between the two timepoints.
Returns:
getTimepoints
function getTimepoints(uint32[] secondsAgos) external view returns (int56[] tickCumulatives, uint112[] volatilityCumulatives)
view external
Returns the accumulator values as of each time seconds ago from the given time in the array of `secondsAgos` Developer note: Reverts if `secondsAgos` > oldest timepoint
Returns:
write
function write(uint16 index, uint32 blockTimestamp, int24 tick) external returns (uint16 indexUpdated, uint16 newFee)
external
Writes a dataStorage timepoint to the array Developer note: Writable at most once per block. Index represents the most recently written element. index must be tracked externally.
Returns:
prepayTimepointsStorageSlots
function prepayTimepointsStorageSlots(uint16 startIndex, uint16 amount) external
external
Fills uninitialized timepoints with nonzero value Developer note: Can be used to reduce the gas cost of future swaps