Skip to main content

ExampleSlidingWindowOracle

State Variables

factory

address public immutable factory;

windowSize

uint256 public immutable windowSize;

granularity

uint8 public immutable granularity;

periodSize

uint256 public immutable periodSize;

pairObservations

mapping(address => Observation[]) public pairObservations;

Functions

constructor

constructor(address factory_, uint256 windowSize_, uint8 granularity_);

observationIndexOf

function observationIndexOf(uint256 timestamp) public view returns (uint8 index);

getFirstObservationInWindow

function getFirstObservationInWindow(address pair) private view returns (Observation storage firstObservation);

update

function update(address tokenA, address tokenB) external;

computeAmountOut

function computeAmountOut(
uint256 priceCumulativeStart,
uint256 priceCumulativeEnd,
uint256 timeElapsed,
uint256 amountIn
) private pure returns (uint256 amountOut);

consult

function consult(address tokenIn, uint256 amountIn, address tokenOut) external view returns (uint256 amountOut);

Structs

Observation

struct Observation {
uint256 timestamp;
uint256 price0Cumulative;
uint256 price1Cumulative;
}