# V1SwapRouter

Router for stateless execution of swaps against Dragonswap

### Functions <a href="#functions" id="functions"></a>

#### \_swap <a href="#swap" id="swap"></a>

```solidity
function _swap(address[] memory path, address _to) private;
```

#### swapExactTokensForTokens <a href="#swapexacttokensfortokens" id="swapexacttokensfortokens"></a>

Swaps `amountIn` of one token for as much as possible of another token

*Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.*

```solidity
function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to)
    external
    payable
    override
    returns (uint256 amountOut);
```

**Parameters**

| Name           | Type        | Description                                        |
| -------------- | ----------- | -------------------------------------------------- |
| `amountIn`     | `uint256`   | The amount of token to swap                        |
| `amountOutMin` | `uint256`   | The minimum amount of output that must be received |
| `path`         | `address[]` | The ordered list of tokens to swap through         |
| `to`           | `address`   | The recipient address                              |

**Returns**

| Name        | Type      | Description                      |
| ----------- | --------- | -------------------------------- |
| `amountOut` | `uint256` | The amount of the received token |

#### swapTokensForExactTokens <a href="#swaptokensforexacttokens" id="swaptokensforexacttokens"></a>

Swaps as little as possible of one token for an exact amount of another token

```solidity
function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to)
    external
    payable
    override
    returns (uint256 amountIn);
```

**Parameters**

| Name          | Type        | Description                                          |
| ------------- | ----------- | ---------------------------------------------------- |
| `amountOut`   | `uint256`   | The amount of token to swap for                      |
| `amountInMax` | `uint256`   | The maximum amount of input that the caller will pay |
| `path`        | `address[]` | The ordered list of tokens to swap through           |
| `to`          | `address`   | The recipient address                                |

**Returns**

| Name       | Type      | Description                |
| ---------- | --------- | -------------------------- |
| `amountIn` | `uint256` | The amount of token to pay |
