# V3Migrator

&#x20;This contract enables migration of liqudity from KLAYswap v2 pairs into KLAYswap v3 pools

## Code

Github Link: (Will be updated after official launch)<br>

## Address

* Cypress : [0x689d8eA1BD4e02B9E9caD9dCc871a050Ff923593](https://scope.klaytn.com/account/0x689d8eA1BD4e02B9E9caD9dCc871a050Ff923593?tabId=txList)&#x20;

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Parameter Structs" %}

## Parameter Structs

#### MigrateParams <a href="#migrate" id="migrate"></a>

```solidity
struct MigrateParams {
    address pair; // the KLAYswap v2 pair
    uint256 liquidityToMigrate; // expected to be balanceOf(msg.sender)
    uint8 percentageToMigrate; // represented as a numerator over 100
    address token0;
    address token1;
    uint24 fee;
    int24 tickLower;
    int24 tickUpper;
    uint256 amount0Min; // must be discounted by percentageToMigrate
    uint256 amount1Min; // must be discounted by percentageToMigrate
    address recipient;
    uint256 deadline;
    bool refundAsETH;
}
```

{% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

#### migrate[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IV3Migrator#migrate) <a href="#migrate" id="migrate"></a>

```solidity
function migrate(
    struct IV3Migrator.MigrateParams params
) external
```

Migrates liquidity to v3 by burning v2 liquidity and minting a new position for v3

Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of the maximum amount of v3 liquidity that the v2 liquidity can get. For the special case of migrating to an out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IV3Migrator#parameters)

<table><thead><tr><th width="118.66666666666666">Name</th><th width="177">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>params</code></td><td><code>struct IV3Migrator.MigrateParams</code></td><td>The params necessary to migrate v2 liquidity, encoded as <code>MigrateParams</code> in calldata</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
