# SwapRouter

Algebra Swap Router

Router for stateless execution of swaps against Algebra

*Developer note: Credit to Uniswap Labs under GPL-2.0-or-later license: <https://github.com/Uniswap/v3-periphery>*

## Functions

### constructor

`constructor(address _factory, address _WNativeToken, address _poolDeployer) public` public

| Name           | Type    | Description |
| -------------- | ------- | ----------- |
| \_factory      | address |             |
| \_WNativeToken | address |             |
| \_poolDeployer | address |             |

### algebraSwapCallback

`function algebraSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data) external` external

Called to \`msg.sender\` after executing a swap via IAlgebraPool#swap. *Developer note: In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a AlgebraPool deployed by the canonical AlgebraFactory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.*

| Name                                                                                        | Type   | Description                                                                                 |
| ------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------- |
| amount0Delta                                                                                | int256 | The amount of token0 that was sent (negative) or must be received (positive) by the pool by |
| the end of the swap. If positive, the callback must send that amount of token0 to the pool. |        |                                                                                             |
| amount1Delta                                                                                | int256 | The amount of token1 that was sent (negative) or must be received (positive) by the pool by |
| the end of the swap. If positive, the callback must send that amount of token1 to the pool. |        |                                                                                             |
| \_data                                                                                      | bytes  |                                                                                             |

### exactInputSingle

`function exactInputSingle(struct ISwapRouter.ExactInputSingleParams params) external payable returns (uint256 amountOut)` payable external

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

| Name   | Type                                      | Description                                                                              |
| ------ | ----------------------------------------- | ---------------------------------------------------------------------------------------- |
| params | struct ISwapRouter.ExactInputSingleParams | The parameters necessary for the swap, encoded as \`ExactInputSingleParams\` in calldata |

**Returns:**

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

### exactInput

`function exactInput(struct ISwapRouter.ExactInputParams params) external payable returns (uint256 amountOut)` payable external

Swaps \`amountIn\` of one token for as much as possible of another along the specified path

| Name   | Type                                | Description                                                                                  |
| ------ | ----------------------------------- | -------------------------------------------------------------------------------------------- |
| params | struct ISwapRouter.ExactInputParams | The parameters necessary for the multi-hop swap, encoded as \`ExactInputParams\` in calldata |

**Returns:**

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

### exactInputSingleSupportingFeeOnTransferTokens

`function exactInputSingleSupportingFeeOnTransferTokens(struct ISwapRouter.ExactInputSingleParams params) external returns (uint256 amountOut)` external

Swaps \`amountIn\` of one token for as much as possible of another along the specified path *Developer note: Unlike standard swaps, handles transferring from user before the actual swap.*

| Name   | Type                                      | Description                                                                                  |
| ------ | ----------------------------------------- | -------------------------------------------------------------------------------------------- |
| params | struct ISwapRouter.ExactInputSingleParams | The parameters necessary for the multi-hop swap, encoded as \`ExactInputParams\` in calldata |

**Returns:**

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

### exactOutputSingle

`function exactOutputSingle(struct ISwapRouter.ExactOutputSingleParams params) external payable returns (uint256 amountIn)` payable external

Swaps as little as possible of one token for \`amountOut\` of another token

| Name   | Type                                       | Description                                                                               |
| ------ | ------------------------------------------ | ----------------------------------------------------------------------------------------- |
| params | struct ISwapRouter.ExactOutputSingleParams | The parameters necessary for the swap, encoded as \`ExactOutputSingleParams\` in calldata |

**Returns:**

| Name     | Type    | Description                   |
| -------- | ------- | ----------------------------- |
| amountIn | uint256 | The amount of the input token |

### exactOutput

`function exactOutput(struct ISwapRouter.ExactOutputParams params) external payable returns (uint256 amountIn)` payable external

Swaps as little as possible of one token for \`amountOut\` of another along the specified path (reversed)

| Name   | Type                                 | Description                                                                                   |
| ------ | ------------------------------------ | --------------------------------------------------------------------------------------------- |
| params | struct ISwapRouter.ExactOutputParams | The parameters necessary for the multi-hop swap, encoded as \`ExactOutputParams\` in calldata |

**Returns:**

| Name     | Type    | Description                   |
| -------- | ------- | ----------------------------- |
| amountIn | uint256 | The amount of the input token |
