# Router

contracts/wombat-core/libraries/WombatRouter.sol

> Title: WombatRouter

> Notice: Allows routing on different wombat pools

> Details: Owner is allowed and required to approve token spending by pools via approveSpendingByPool function. With great thanks to the uniswap team for your contribution to the opensource community reference: <https://github.com/Uniswap/v2-periphery/blob/master/contracts/UniswapV2Router02.sol>

### *constructor*

***constructor(\_wNative)***

Arguments

| **name**  | **type** | **description** |
| --------- | -------- | --------------- |
| \_wNative | address  |                 |

### *event* OwnershipTransferred

\*\*\*WombatRouter.OwnershipTransferred(previousOwner, newOwner) \*\*\*

Arguments

| **name**      | **type** | **description** |
| ------------- | -------- | --------------- |
| previousOwner | address  | indexed         |
| newOwner      | address  | indexed         |

### *function* addLiquidityNative

***WombatRouter.addLiquidityNative(pool, minimumLiquidity, to, deadline, shouldStake) payable***

Arguments

| **name**         | **type** | **description** |
| ---------------- | -------- | --------------- |
| pool             | address  |                 |
| minimumLiquidity | uint256  |                 |
| to               | address  |                 |
| deadline         | uint256  |                 |
| shouldStake      | bool     |                 |

Outputs

| **name**  | **type** | **description** |
| --------- | -------- | --------------- |
| liquidity | uint256  |                 |

### *function* approveSpendingByPool

\*\*\*WombatRouter.approveSpendingByPool(tokens, pool) \*\*\*

> Notice: approve spending of router tokens by pool

> Details: needs to be done after asset deployment for router to be able to support the tokens

Arguments

| **name** | **type**   | **description**                |
| -------- | ---------- | ------------------------------ |
| tokens   | address\[] | array of tokens to be approved |
| pool     | address    | to be approved to spend        |

### *function* getAmountIn

***WombatRouter.getAmountIn(tokenPath, poolPath, amountOut) view***

> Notice: Returns the minimum input asset amount required to buy the given output asset amount (accounting for fees and slippage) Note: This function should be used as estimation only. The actual swap amount might be different due to precision error (the error is typically under 1e-6)

Arguments

| **name**  | **type**   | **description**     |
| --------- | ---------- | ------------------- |
| tokenPath | address\[] | The token swap path |
| poolPath  | address\[] | The token pool path |
| amountOut | uint256    | The to amount       |

Outputs

| **name** | **type**   | **description**                               |
| -------- | ---------- | --------------------------------------------- |
| amountIn | uint256    | The potential final amount user would receive |
| haircuts | uint256\[] |                                               |

### *function* getAmountOut

***WombatRouter.getAmountOut(tokenPath, poolPath, amountIn) view***

> Notice: Given an input asset amount and an array of token addresses, calculates the maximum output token amount (accounting for fees and slippage).

Arguments

| **name**  | **type**   | **description**     |
| --------- | ---------- | ------------------- |
| tokenPath | address\[] | The token swap path |
| poolPath  | address\[] | The token pool path |
| amountIn  | int256     | The from amount     |

Outputs

| **name**  | **type**   | **description**                               |
| --------- | ---------- | --------------------------------------------- |
| amountOut | uint256    | The potential final amount user would receive |
| haircuts  | uint256\[] |                                               |

### *function* owner

***WombatRouter.owner() view***

> Details: Returns the address of the current owner.

Outputs

| **name** | **type** | **description** |
| -------- | -------- | --------------- |
|          | address  |                 |

### *function* removeLiquidityFromOtherAssetAsNative

\*\*\*WombatRouter.removeLiquidityFromOtherAssetAsNative(pool, fromToken, liquidity, minimumAmount, to, deadline) \*\*\*

Arguments

| **name**      | **type** | **description** |
| ------------- | -------- | --------------- |
| pool          | address  |                 |
| fromToken     | address  |                 |
| liquidity     | uint256  |                 |
| minimumAmount | uint256  |                 |
| to            | address  |                 |
| deadline      | uint256  |                 |

Outputs

| **name** | **type** | **description** |
| -------- | -------- | --------------- |
| amount   | uint256  |                 |

### *function* removeLiquidityNative

\*\*\*WombatRouter.removeLiquidityNative(pool, liquidity, minimumAmount, to, deadline) \*\*\*

Arguments

| **name**      | **type** | **description** |
| ------------- | -------- | --------------- |
| pool          | address  |                 |
| liquidity     | uint256  |                 |
| minimumAmount | uint256  |                 |
| to            | address  |                 |
| deadline      | uint256  |                 |

Outputs

| **name** | **type** | **description** |
| -------- | -------- | --------------- |
| amount   | uint256  |                 |

### *function* renounceOwnership

\*\*\*WombatRouter.renounceOwnership() \*\*\*

> Details: Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.

### *function* swapExactNativeForTokens

***WombatRouter.swapExactNativeForTokens(tokenPath, poolPath, minimumamountOut, to, deadline) payable***

Arguments

| **name**         | **type**   | **description** |
| ---------------- | ---------- | --------------- |
| tokenPath        | address\[] |                 |
| poolPath         | address\[] |                 |
| minimumamountOut | uint256    |                 |
| to               | address    |                 |
| deadline         | uint256    |                 |

Outputs

| **name**  | **type** | **description** |
| --------- | -------- | --------------- |
| amountOut | uint256  |                 |

### *function* swapExactTokensForNative

\*\*\*WombatRouter.swapExactTokensForNative(tokenPath, poolPath, amountIn, minimumamountOut, to, deadline) \*\*\*

Arguments

| **name**         | **type**   | **description** |
| ---------------- | ---------- | --------------- |
| tokenPath        | address\[] |                 |
| poolPath         | address\[] |                 |
| amountIn         | uint256    |                 |
| minimumamountOut | uint256    |                 |
| to               | address    |                 |
| deadline         | uint256    |                 |

Outputs

| **name**  | **type** | **description** |
| --------- | -------- | --------------- |
| amountOut | uint256  |                 |

### *function* swapExactTokensForTokens

\*\*\*WombatRouter.swapExactTokensForTokens(tokenPath, poolPath, amountIn, minimumamountOut, to, deadline) \*\*\*

> Notice: Swaps an exact amount of input tokens for as many output tokens as possible, along the route determined by the path

Arguments

| **name**         | **type**   | **description**                                                                         |
| ---------------- | ---------- | --------------------------------------------------------------------------------------- |
| tokenPath        | address\[] | The first element of the path is the input token, the last element is the output token. |
| poolPath         | address\[] | An array of pool addresses. The pools where the pathTokens are contained in order.      |
| amountIn         | uint256    | the amount in                                                                           |
| minimumamountOut | uint256    | the minimum amount to get for user                                                      |
| to               | address    | the user to send the tokens to                                                          |
| deadline         | uint256    | the deadline to respect                                                                 |

Outputs

| **name**  | **type** | **description**  |
| --------- | -------- | ---------------- |
| amountOut | uint256  | received by user |

### *function* transferOwnership

\*\*\*WombatRouter.transferOwnership(newOwner) \*\*\*

> Details: Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.

Arguments

| **name** | **type** | **description** |
| -------- | -------- | --------------- |
| newOwner | address  |                 |

### *function* wNative

***WombatRouter.wNative() view***

Outputs

| **name** | **type** | **description** |
| -------- | -------- | --------------- |
|          | address  |                 |


---

# Agent Instructions: 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:

```
GET https://docs.wombat.exchange/developers/integration-guideline/router.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
