# PushOperations

**Inherits:** [Payment](../paymentbase/payment), [IPushOperations](ipushoperations)

Exactinput router operations that can be performed by pushing assets to the pool to swap.

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

#### exactInputSinglePackedArgs <a href="#exactinputsinglepackedargs" id="exactinputsinglepackedargs"></a>

Perform an exact input single swap with compressed input values.

```solidity
function exactInputSinglePackedArgs(bytes memory argsPacked) public payable returns (uint256 amountOut);
```

#### exactInputSingle <a href="#exactinputsingle" id="exactinputsingle"></a>

Perform an exact input single swap without tick limit check.

```solidity
function exactInputSingle(
    address recipient,
    IMaverickV2Pool pool,
    bool tokenAIn,
    uint256 amountIn,
    uint256 amountOutMinimum
) public payable returns (uint256 amountOut);
```

**Parameters**

| Name               | Type              | Description                                                            |
| ------------------ | ----------------- | ---------------------------------------------------------------------- |
| `recipient`        | `address`         | The address of the recipient.                                          |
| `pool`             | `IMaverickV2Pool` | The Maverick V2 pool to swap with.                                     |
| `tokenAIn`         | `bool`            | True is tokenA is the input token. False is tokenB is the input token. |
| `amountIn`         | `uint256`         | The amount of input tokens.                                            |
| `amountOutMinimum` | `uint256`         | The minimum amount of output tokens expected.                          |

#### exactInputMultiHop <a href="#exactinputmultihop" id="exactinputmultihop"></a>

Perform an exact input multi-hop swap.

```solidity
function exactInputMultiHop(address recipient, bytes memory path, uint256 amountIn, uint256 amountOutMinimum)
    external
    payable
    returns (uint256 amountOut);
```

**Parameters**

| Name               | Type      | Description                                   |
| ------------------ | --------- | --------------------------------------------- |
| `recipient`        | `address` | The address of the recipient.                 |
| `path`             | `bytes`   | The path of tokens to swap.                   |
| `amountIn`         | `uint256` | The amount of input tokens.                   |
| `amountOutMinimum` | `uint256` | The minimum amount of output tokens expected. |

\
