> For the complete documentation index, see [llms.txt](https://docs.nabla.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nabla.fi/developers/contract-interfaces/nablarouter.md).

# NablaRouter

### oracleAdapter

```solidity
contract IPriceOracleGetter oracleAdapter
```

***

### poolByAsset

```solidity
mapping(address => contract ISwapPoolPermissioned) poolByAsset
```

***

### swapExactTokensForTokens

```solidity
function swapExactTokensForTokens(
    uint256 _amountIn, 
    uint256 _amountOutMin, 
    address[] _tokenInOut, 
    address _to, 
    uint256 _deadline, 
    bytes[] _priceUpdateData
) external payable returns (uint256[] amounts_)
```

Swap some `_fromToken` tokens for `_toToken` tokens, ensures `_amountOutMin` and `_deadline`, sends funds to `_to` address `msg.sender` needs to grant the router contract a sufficient allowance beforehand

*By calling this function the price feed gets be updated (IPriceOracleAdapter.updatePriceFeeds)*

#### **Parameters**

| Name              | Type       | Description                                                  |
| ----------------- | ---------- | ------------------------------------------------------------ |
| \_amountIn        | uint256    | The amount of input tokens to swap                           |
| \_amountOutMin    | uint256    | The minimum amount of output token that the user will accept |
| \_tokenInOut      | address\[] | Array of size two, indicating the in and out token           |
| \_to              | address    | The recipient of the output tokens                           |
| \_deadline        | uint256    | Unix timestamp after which the transaction will revert       |
| \_priceUpdateData | bytes\[]   | Array of price update data                                   |

#### **Return Values**

| Name      | Type       | Description                                                             |
| --------- | ---------- | ----------------------------------------------------------------------- |
| amounts\_ | uint256\[] | <p>Array of size two, containing </p><p>the input and output amount</p> |

***

### getAmountOut

```solidity
function getAmountOut(
    uint256 _amountIn, 
    address[] _tokenInOut, 
    uint256[] _tokenPrices
) external view returns (uint256 amountOut_, uint256 swapFee_)
```

Get a quote for how many `_toToken` tokens `_amountIn` many `tokenIn` tokens can currently be swapped for.

#### **Parameters**

| Name          | Type       | Description                                                                 |
| ------------- | ---------- | --------------------------------------------------------------------------- |
| \_amountIn    | uint256    | The amount of input tokens to swap                                          |
| \_tokenInOut  | address\[] | Array of size two, indicating the in and out token                          |
| \_tokenPrices | uint256\[] | Array of size two, indicating the in and out token prices fetched off-chain |

#### **Return Values**

| Name        | Type    | Description                                                        |
| ----------- | ------- | ------------------------------------------------------------------ |
| amountOut\_ | uint256 | Number of `_toToken` tokens that such a swap would yield right now |
| swapFee\_   | uint256 | The fee that is charged for the swap (in `_toToken` tokens)        |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nabla.fi/developers/contract-interfaces/nablarouter.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
