The interface for the DataStorageOperator

Developer note: This contract stores timepoints and calculates adaptive fee and statistical averages



event FeeConfiguration(bool zto, struct AlgebraFeeConfiguration feeConfig)

Emitted when the fee configuration is changed Developer note: See the AdaptiveFee library for more details



function timepoints(uint256 index) external view returns (bool initialized, uint32 blockTimestamp, int56 tickCumulative, uint88 volatilityCumulative, int24 tick, int24 averageTick, uint16 windowStartIndex) view external

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



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


function getSingleTimepoint(uint32 time, uint32 secondsAgo, int24 tick, uint16 index) 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.



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



function write(uint16 index, uint32 blockTimestamp, int24 tick) external returns (uint16 indexUpdated, uint16 newFeeZtO, uint16 newFeeOtZ) 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.



function changeFeeConfiguration(bool zto, struct AlgebraFeeConfiguration feeConfig) external external

Changes fee configuration for the pool


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