41 lines
2.5 KiB
Solidity
41 lines
2.5 KiB
Solidity
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||
|
pragma solidity >=0.5.0;
|
||
|
|
||
|
/// @title Pool state that is not stored
|
||
|
/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the
|
||
|
/// blockchain. The functions here may have variable gas costs.
|
||
|
interface IUniswapV3PoolDerivedState {
|
||
|
/// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp
|
||
|
/// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing
|
||
|
/// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,
|
||
|
/// you must call it with secondsAgos = [3600, 0].
|
||
|
/// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in
|
||
|
/// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.
|
||
|
/// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned
|
||
|
/// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp
|
||
|
/// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block
|
||
|
/// timestamp
|
||
|
function observe(uint32[] calldata secondsAgos)
|
||
|
external
|
||
|
view
|
||
|
returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);
|
||
|
|
||
|
/// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range
|
||
|
/// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.
|
||
|
/// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first
|
||
|
/// snapshot is taken and the second snapshot is taken.
|
||
|
/// @param tickLower The lower tick of the range
|
||
|
/// @param tickUpper The upper tick of the range
|
||
|
/// @return tickCumulativeInside The snapshot of the tick accumulator for the range
|
||
|
/// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range
|
||
|
/// @return secondsInside The snapshot of seconds per liquidity for the range
|
||
|
function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)
|
||
|
external
|
||
|
view
|
||
|
returns (
|
||
|
int56 tickCumulativeInside,
|
||
|
uint160 secondsPerLiquidityInsideX128,
|
||
|
uint32 secondsInside
|
||
|
);
|
||
|
}
|