# IQuoter

Supports quoting the calculated amounts from exact input or exact output swaps

These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.

### Functions[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#functions) <a href="#functions" id="functions"></a>

#### quoteExactInput[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#quoteexactinput) <a href="#quoteexactinput" id="quoteexactinput"></a>

```solidity
  function quoteExactInput(
    bytes path,
    uint256 amountIn
  ) external returns (uint256 amountOut)
```

Returns the amount out received for a given exact input swap without executing the swap

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#parameters)

| Name       | Type    | Description                                                 |
| ---------- | ------- | ----------------------------------------------------------- |
| `path`     | bytes   | The path of the swap, i.e. each token pair and the pool fee |
| `amountIn` | uint256 | The amount of the first token to swap                       |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#return-values)

| Name        | Type    | Description                                         |
| ----------- | ------- | --------------------------------------------------- |
| `amountOut` | uint256 | The amount of the last token that would be received |

#### quoteExactInputSingle[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#quoteexactinputsingle) <a href="#quoteexactinputsingle" id="quoteexactinputsingle"></a>

```solidity
  function quoteExactInputSingle(
    address tokenIn,
    address tokenOut,
    uint24 fee,
    uint256 amountIn,
    uint160 sqrtPriceLimitX96
  ) external returns (uint256 amountOut)
```

Returns the amount out received for a given exact input but for a swap of a single pool

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#parameters-1)

| Name                | Type    | Description                                                     |
| ------------------- | ------- | --------------------------------------------------------------- |
| `tokenIn`           | address | The token being swapped in                                      |
| `tokenOut`          | address | The token being swapped out                                     |
| `fee`               | uint24  | The fee of the token pool to consider for the pair              |
| `amountIn`          | uint256 | The desired input amount                                        |
| `sqrtPriceLimitX96` | uint160 | The price limit of the pool that cannot be exceeded by the swap |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#return-values-1)

| Name        | Type    | Description                                     |
| ----------- | ------- | ----------------------------------------------- |
| `amountOut` | uint256 | The amount of `tokenOut` that would be received |

#### quoteExactOutput[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#quoteexactoutput) <a href="#quoteexactoutput" id="quoteexactoutput"></a>

```solidity
  function quoteExactOutput(
    bytes path,
    uint256 amountOut
  ) external returns (uint256 amountIn)
```

Returns the amount in required for a given exact output swap without executing the swap

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#parameters-2)

| Name        | Type    | Description                                                 |
| ----------- | ------- | ----------------------------------------------------------- |
| `path`      | bytes   | The path of the swap, i.e. each token pair and the pool fee |
| `amountOut` | uint256 | The amount of the last token to receive                     |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#return-values-2)

| Name       | Type    | Description                                   |
| ---------- | ------- | --------------------------------------------- |
| `amountIn` | uint256 | The amount of first token required to be paid |

#### quoteExactOutputSingle[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#quoteexactoutputsingle) <a href="#quoteexactoutputsingle" id="quoteexactoutputsingle"></a>

```solidity
  function quoteExactOutputSingle(
    address tokenIn,
    address tokenOut,
    uint24 fee,
    uint256 amountOut,
    uint160 sqrtPriceLimitX96
  ) external returns (uint256 amountIn)
```

Returns the amount in required to receive the given exact output amount but for a swap of a single pool

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#parameters-3)

| Name                | Type    | Description                                                     |
| ------------------- | ------- | --------------------------------------------------------------- |
| `tokenIn`           | address | The token being swapped in                                      |
| `tokenOut`          | address | The token being swapped out                                     |
| `fee`               | uint24  | The fee of the token pool to consider for the pair              |
| `amountOut`         | uint256 | The desired output amount                                       |
| `sqrtPriceLimitX96` | uint160 | The price limit of the pool that cannot be exceeded by the swap |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IQuoter#return-values-3)

| Name       | Type    | Description                                                                   |
| ---------- | ------- | ----------------------------------------------------------------------------- |
| `amountIn` | uint256 | The amount required as the input for the swap in order to receive `amountOut` |
