# IDragonswapV2Factory

The DragonswapV2Factory facilitates creation of DragonswapV2 pools and control over the protocol fees

### Functions[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#functions) <a href="#functions" id="functions"></a>

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

```solidity
  function owner(
  ) external view returns (address)
```

Returns the current owner of the factory

Can be changed by the current owner via setOwner

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#return-values)

| Type    | Description                  |
| ------- | ---------------------------- |
| address | address of the factory owner |

#### feeAmountTickSpacing[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#feeamounttickspacing) <a href="#feeamounttickspacing" id="feeamounttickspacing"></a>

```solidity
  function feeAmountTickSpacing(
    uint24 fee
  ) external view returns (int24)
```

Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled

A fee amount can never be removed, so this value should be hard coded or cached in the calling context

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

| Name  | Type   | Description                                                                             |
| ----- | ------ | --------------------------------------------------------------------------------------- |
| `fee` | uint24 | The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#return-values-1)

| Type  | Description  |
| ----- | ------------ |
| int24 | tick spacing |

#### getPool[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#getpool) <a href="#getpool" id="getpool"></a>

```solidity
  function getPool(
    address tokenA,
    address tokenB,
    uint24 fee
  ) external view returns (address pool)
```

Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist

tokenA and tokenB may be passed in either token0/token1 or token1/token0 order

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-1)

| Name     | Type    | Description                                                                       |
| -------- | ------- | --------------------------------------------------------------------------------- |
| `tokenA` | address | The contract address of either token0 or token1                                   |
| `tokenB` | address | The contract address of the other token                                           |
| `fee`    | uint24  | The fee collected upon every swap in the pool, denominated in hundredths of a bip |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#return-values-2)

| Name   | Type    | Description      |
| ------ | ------- | ---------------- |
| `pool` | address | The pool address |

#### createPool[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#createpool) <a href="#createpool" id="createpool"></a>

```solidity
  function createPool(
    address tokenA,
    address tokenB,
    uint24 fee
  ) external returns (address pool)
```

Creates a pool for the given two tokens and fee

tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-2)

| Name     | Type    | Description                                     |
| -------- | ------- | ----------------------------------------------- |
| `tokenA` | address | One of the two tokens in the desired pool       |
| `tokenB` | address | The other of the two tokens in the desired pool |
| `fee`    | uint24  | The desired fee for the pool                    |

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#return-values-3)

| Name   | Type    | Description                           |
| ------ | ------- | ------------------------------------- |
| `pool` | address | The address of the newly created pool |

#### setOwner[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#setowner) <a href="#setowner" id="setowner"></a>

```solidity
  function setOwner(
    address _owner
  ) external
```

Updates the owner of the factory

Must be called by the current owner

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-3)

| Name     | Type    | Description                  |
| -------- | ------- | ---------------------------- |
| `_owner` | address | The new owner of the factory |

#### enableFeeAmount[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#enablefeeamount) <a href="#enablefeeamount" id="enablefeeamount"></a>

```solidity
  function enableFeeAmount(
    uint24 fee,
    int24 tickSpacing
  ) external
```

Enables a fee amount with the given tickSpacing

Fee amounts may never be removed once enabled

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-4)

| Name          | Type   | Description                                                                              |
| ------------- | ------ | ---------------------------------------------------------------------------------------- |
| `fee`         | uint24 | The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)                 |
| `tickSpacing` | int24  | The spacing between ticks to be enforced for all pools created with the given fee amount |

### Events[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#events) <a href="#events" id="events"></a>

#### OwnerChanged[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#ownerchanged) <a href="#ownerchanged" id="ownerchanged"></a>

```solidity
  event OwnerChanged(
    address oldOwner,
    address newOwner
  )
```

Emitted when the owner of the factory is changed

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-5)

| Name       | Type    | Description                            |
| ---------- | ------- | -------------------------------------- |
| `oldOwner` | address | The owner before the owner was changed |
| `newOwner` | address | The owner after the owner was changed  |

#### PoolCreated[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#poolcreated) <a href="#poolcreated" id="poolcreated"></a>

```solidity
  event PoolCreated(
    address token0,
    address token1,
    uint24 fee,
    int24 tickSpacing,
    address pool
  )
```

Emitted when a pool is created

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-6)

| Name          | Type    | Description                                                                       |
| ------------- | ------- | --------------------------------------------------------------------------------- |
| `token0`      | address | The first token of the pool by address sort order                                 |
| `token1`      | address | The second token of the pool by address sort order                                |
| `fee`         | uint24  | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
| `tickSpacing` | int24   | The minimum number of ticks between initialized ticks                             |
| `pool`        | address | The address of the created pool                                                   |

#### FeeAmountEnabled[​](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#feeamountenabled) <a href="#feeamountenabled" id="feeamountenabled"></a>

```solidity
  event FeeAmountEnabled(
    uint24 fee,
    int24 tickSpacing
  )
```

Emitted when a new fee amount is enabled for pool creation via the factory

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/core/interfaces/IUniswapV3Factory#parameters-7)

| Name          | Type   | Description                                                                                |
| ------------- | ------ | ------------------------------------------------------------------------------------------ |
| `fee`         | uint24 | The enabled fee, denominated in hundredths of a bip                                        |
| `tickSpacing` | int24  | The minimum number of ticks between initialized ticks for pools created with the given fee |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dragonswap.app/dragonswap/resources/developer-resources/smart-contracts/dragonswapv2/core/interfaces/idragonswapv2factory.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
