# IPoolInitializer

## IPoolInitializer

Creates and initializes V3 Pools Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that require the pool to exist.

### Functions

#### createAndInitializePoolIfNecessary

`createAndInitializePoolIfNecessary(address,address,uint160)` payable external

Creates a new pool if it does not exist, then initializes if not initialized

| Name         | Type    | Description                                                 |
| ------------ | ------- | ----------------------------------------------------------- |
| token0       | address | The contract address of token0 of the pool                  |
| token1       | address | The contract address of token1 of the pool                  |
| sqrtPriceX96 | uint160 | The initial square root price of the pool as a Q64.96 value |

**Returns:**

| Name | Type    | Description |
| ---- | ------- | ----------- |
| pool | address |             |

***

## IPoolInitializer

Creates and initializes V3 Pools Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that require the pool to exist.

### Functions

#### createAndInitializePoolIfNecessary

`createAndInitializePoolIfNecessary(address,address,uint160)` payable external

Creates a new pool if it does not exist, then initializes if not initialized

| Name         | Type    | Description                                                 |
| ------------ | ------- | ----------------------------------------------------------- |
| token0       | address | The contract address of token0 of the pool                  |
| token1       | address | The contract address of token1 of the pool                  |
| sqrtPriceX96 | uint160 | The initial square root price of the pool as a Q64.96 value |

**Returns:**

| Name | Type    | Description |
| ---- | ------- | ----------- |
| pool | address |             |

***

## IPoolInitializer

Creates and initializes V3 Pools Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that require the pool to exist.

### Functions

#### createAndInitializePoolIfNecessary

`createAndInitializePoolIfNecessary(address,address,uint160)` payable external

Creates a new pool if it does not exist, then initializes if not initialized

| Name         | Type    | Description                                                 |
| ------------ | ------- | ----------------------------------------------------------- |
| token0       | address | The contract address of token0 of the pool                  |
| token1       | address | The contract address of token1 of the pool                  |
| sqrtPriceX96 | uint160 | The initial square root price of the pool as a Q64.96 value |

**Returns:**

| Name | Type    | Description |
| ---- | ------- | ----------- |
| pool | address |             |

***
