> For the complete documentation index, see [llms.txt](https://docs.mav.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/maverickv2router.md).

# MaverickV2Router

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

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>
