# ClipperRouter

## Derives[​](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#derives) <a href="#derives" id="derives"></a>

* [Permitable](https://docs.vulpefi.com/aggregation-protocol/smart-contracts/broken-reference)
* [EthReceiver](https://docs.vulpefi.com/aggregation-protocol/smart-contracts/broken-reference)

## Functions[​](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#functions) <a href="#functions" id="functions"></a>

### constructor[​](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#constructor) <a href="#constructor" id="constructor"></a>

```javascript
function constructor(
  address weth,
  contract IClipperExchangeInterface clipperExchange
) public
```

**Parameters:**[**​**](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#parameters)

| Name              | Type                               | Description |
| ----------------- | ---------------------------------- | ----------- |
| `weth`            | address                            |             |
| `clipperExchange` | contract IClipperExchangeInterface |             |

### clipperSwapToWithPermit[​](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#clipperswaptowithpermit) <a href="#clipperswaptowithpermit" id="clipperswaptowithpermit"></a>

```javascript
function clipperSwapToWithPermit(
  address payable recipient,
  contract IERC20 srcToken,
  contract IERC20 dstToken,
  uint256 amount,
  uint256 minReturn,
  bytes permit
) external returns (uint256 returnAmount)
```

Same as `clipperSwapTo` but calls permit first, allowing to approve token spending and make a swap in one transaction.

**Parameters:**[**​**](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#parameters-1)

| Name        | Type            | Description                                                                                         |
| ----------- | --------------- | --------------------------------------------------------------------------------------------------- |
| `recipient` | address payable | Address that will receive swap funds                                                                |
| `srcToken`  | contract IERC20 | Source token                                                                                        |
| `dstToken`  | contract IERC20 | Destination token                                                                                   |
| `amount`    | uint256         | Amount of source tokens to swap                                                                     |
| `minReturn` | uint256         | Minimal allowed returnAmount to make transaction commit                                             |
| `permit`    | bytes           | Should contain valid permit that can be used in `IERC20Permit.permit` calls. See tests for examples |

### clipperSwap[​](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#clipperswap) <a href="#clipperswap" id="clipperswap"></a>

```javascript
function clipperSwap(
  contract IERC20 srcToken,
  contract IERC20 dstToken,
  uint256 amount,
  uint256 minReturn
) external returns (uint256 returnAmount)
```

Same as `clipperSwapTo` but uses `msg.sender` as recipient

**Parameters:**[**​**](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#parameters-2)

| Name        | Type            | Description                                             |
| ----------- | --------------- | ------------------------------------------------------- |
| `srcToken`  | contract IERC20 | Source token                                            |
| `dstToken`  | contract IERC20 | Destination token                                       |
| `amount`    | uint256         | Amount of source tokens to swap                         |
| `minReturn` | uint256         | Minimal allowed returnAmount to make transaction commit |

### clipperSwapTo[​](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#clipperswapto) <a href="#clipperswapto" id="clipperswapto"></a>

```javascript
function clipperSwapTo(
  address payable recipient,
  contract IERC20 srcToken,
  contract IERC20 dstToken,
  uint256 amount,
  uint256 minReturn
) public returns (uint256 returnAmount)
```

Performs swap using Clipper exchange. Wraps and unwraps ETH if required. Sending non-zero `msg.value` for anything but ETH swaps is prohibited

**Parameters:**[**​**](https://docs.1inch.io/docs/aggregation-protocol/smart-contract/ClipperRouter#parameters-3)

| Name        | Type            | Description                                             |
| ----------- | --------------- | ------------------------------------------------------- |
| `recipient` | address payable | Address that will receive swap funds                    |
| `srcToken`  | contract IERC20 | Source token                                            |
| `dstToken`  | contract IERC20 | Destination token                                       |
| `amount`    | uint256         | Amount of source tokens to swap                         |
| `minReturn` | uint256         | Minimal allowed returnAmount to make transaction commit |
