> For the complete documentation index, see [llms.txt](https://docs.dragonswap.app/dragonswap/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dragonswap.app/dragonswap/resources/developer-resources/smart-contracts/dragonswapv2/smart-router/interfaces/iquoter.md).

# 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 <a href="#functions" id="functions"></a>

#### quoteExactInput <a href="#quoteexactinput" id="quoteexactinput"></a>

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

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

**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                       |

**Returns**

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

#### quoteExactInputSingle <a href="#quoteexactinputsingle" id="quoteexactinputsingle"></a>

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

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

**Parameters**

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

**Returns**

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

#### quoteExactOutput <a href="#quoteexactoutput" id="quoteexactoutput"></a>

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

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

**Parameters**

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

**Returns**

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

#### quoteExactOutputSingle <a href="#quoteexactoutputsingle" id="quoteexactoutputsingle"></a>

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

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

**Parameters**

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

**Returns**

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