# MaverickV2Router

**Inherits:** [Checks](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/base/checks), [PushOperations](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/routerbase/pushoperations), [CallbackOperations](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/routerbase/callbackoperations), [IMaverickV2Router](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/interfaces/imaverickv2router)

Swap router functions for Maverick V2. This contract requires that users approve a spending allowance in order to pay for swaps.

The functions in this contract are partitioned into two subcontracts that implement both push-based and callback-based swaps. Maverick V2 provides two mechanisms for paying for a swap:

* Push the input assets to the pool and then call swap. This avoids a callback to transfer the input assets and is generally more gas efficient but is only suitable for exact-input swaps where the caller knows how much input they need to send to the pool.
* Callback payment where the pool calls a callback function on this router to settle up for the input amount of the swap.

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

#### constructor <a href="#constructor" id="constructor"></a>

```solidity
constructor(IMaverickV2Factory _factory, IWETH9 _weth) State(_factory, _weth);
```

<br>
