> For the complete documentation index, see [llms.txt](https://docs.fringe.fi/v2-smart-contract-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fringe.fi/v2-smart-contract-documentation/priceoracle/priceproviders/uniswapv3/v3-core/interfaces/pool/iuniswapv3poolderivedstate.md).

# IUniswapV3PoolDerivedState

## Overview

#### License: GPL-2.0-or-later

```solidity
interface IUniswapV3PoolDerivedState
```

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.

## Functions info

### observe (0x883bdbfd)

```solidity
function observe(
    uint32[] calldata secondsAgos
)
    external
    view
    returns (
        int56[] memory tickCumulatives,
        uint160[] memory secondsPerLiquidityCumulativeX128s
    )
```

Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp

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].

Parameters:

| Name        | Type      | Description                                                                   |
| ----------- | --------- | ----------------------------------------------------------------------------- |
| secondsAgos | uint32\[] | From how long ago each cumulative tick and liquidity value should be returned |

Return values:

| Name                               | Type       | Description                                                                                     |
| ---------------------------------- | ---------- | ----------------------------------------------------------------------------------------------- |
| tickCumulatives                    | int56\[]   | Cumulative tick values as of each `secondsAgos` from the current block timestamp                |
| secondsPerLiquidityCumulativeX128s | uint160\[] | Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block |
| timestamp                          |            |                                                                                                 |

### snapshotCumulativesInside (0xa38807f2)

```solidity
function snapshotCumulativesInside(
    int24 tickLower,
    int24 tickUpper
)
    external
    view
    returns (
        int56 tickCumulativeInside,
        uint160 secondsPerLiquidityInsideX128,
        uint32 secondsInside
    )
```

Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range

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.

Parameters:

| Name      | Type  | Description                 |
| --------- | ----- | --------------------------- |
| tickLower | int24 | The lower tick of the range |
| tickUpper | int24 | The upper tick of the range |

Return values:

| Name                          | Type    | Description                                         |
| ----------------------------- | ------- | --------------------------------------------------- |
| tickCumulativeInside          | int56   | The snapshot of the tick accumulator for the range  |
| secondsPerLiquidityInsideX128 | uint160 | The snapshot of seconds per liquidity for the range |
| secondsInside                 | uint32  | The snapshot of seconds per liquidity for the range |
