# Factory

### EthereumEventConfigurationFactory

#### **`deploy`**

Creates new contract instance of EthereumEventConfiguration.

```
function deploy(
        address _owner,
        IEthereumEventConfiguration.BasicConfiguration basicConfiguration,
        IEthereumEventConfiguration.EthereumEventConfiguration networkConfiguration
    ) external view reserveMinBalance(MIN_CONTRACT_BALANCE)
```

**Parameters:**

| Name                 | Type                       | Description                                                                                                 |
| -------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------- |
| \_owner              | address                    | The address of the event configuration owner                                                                |
| basicConfiguration   | BasicConfiguration         | Basic configuration for event including the event code, event initial balance etc.                          |
| networkConfiguration | EthereumEventConfiguration | The configuration of the ethereum event, including event emitter, chain id, start and end block number etc. |

#### **`deriveConfigurationAddress`**

Initializes state by setting contract, base and network configurations and config code and returns configuration address based on the state initialized.

```
function deriveConfigurationAddress(
        IEthereumEventConfiguration.BasicConfiguration basicConfiguration,
        IEthereumEventConfiguration.EthereumEventConfiguration networkConfiguration
    ) external view returns(address)
```

**Parameters:**

| Name                 | Type                       | Description                                                                                                 |
| -------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------- |
| basicConfiguration   | BasicConfiguration         | Basic configuration for event including the event code, event initial balance etc.                          |
| networkConfiguration | EthereumEventConfiguration | The configuration of the ethereum event, including event emitter, chain id, start and end block number etc. |
| networkConfiguration | EthereumEventConfiguration | The configuration of the ethereum event, including event emitter, chain id, start and end block number etc. |

**Return values:**

| Type    | Description               |
| ------- | ------------------------- |
| address | The configuration address |

### EverscaleEventConfigurationFactory

#### **`deploy`**

Creates new contract instance of EverscaleEventConfiguration.

function deploy( address \_owner, IEverscaleEventConfiguration.BasicConfiguration basicConfiguration, IEverscaleEventConfiguration.EverscaleEventConfiguration networkConfiguration ) external view reserveMinBalance(MIN\_CONTRACT\_BALANCE)

**Parameters:**

| Name                 | Type                        | Description                                                                                        |
| -------------------- | --------------------------- | -------------------------------------------------------------------------------------------------- |
| \_owner              | address                     | The address of the event configuration owner                                                       |
| basicConfiguration   | BasicConfiguration          | Basic configuration for event including the event code, event initial balance etc.                 |
| networkConfiguration | EverscaleEventConfiguration | The configuration of the everscale event, including event emitter, start and end block number etc. |

#### **`deriveConfigurationAddress`**

Initializes state by setting contract, base and network configurations and config code and returns configuration address based on the state initialized.

```
function deriveConfigurationAddress(
        IEverscaleEventConfiguration.BasicConfiguration basicConfiguration,
        IEverscaleEventConfiguration.EverscaleEventConfiguration networkConfiguration
    ) external view returns(address)
```

**Parameters:**

| Name                 | Type                        | Description                                                                                        |
| -------------------- | --------------------------- | -------------------------------------------------------------------------------------------------- |
| basicConfiguration   | BasicConfiguration          | Basic configuration for event including the event code, event initial balance etc.                 |
| networkConfiguration | EverscaleEventConfiguration | The configuration of the everscale event, including event emitter, start and end block number etc. |

**Return values:**

| Type    | Description               |
| ------- | ------------------------- |
| address | The configuration address |

### ProxyTokenTransferFactory

#### **`deploy`**

Creates new contract instance of ProxyTokenTransfer.

```
function deploy(address _owner, uint _randomNonce) external reserveMinBalance(MIN_CONTRACT_BALANCE)
```

**Parameters:**

| Name          | Type    | Description                                |
| ------------- | ------- | ------------------------------------------ |
| \_owner       | address | The address of the deployed contract owner |
| \_randomNonce | uint    | Value used for building the initial state  |

#### **`deriveProxyAddress`**

Initializes state by setting contract, variables and proxy code and returns proxy address based on the state initialized.

```
function deriveProxyAddress(
        uint _randomNonce
    ) external view returns(address)
```

**Parameters:**

| Name          | Type | Description                               |
| ------------- | ---- | ----------------------------------------- |
| \_randomNonce | uint | Value used for building the initial state |

**Return values:**

| Type    | Description                           |
| ------- | ------------------------------------- |
| address | Proxy address used for token transfer |


---

# 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.octusbridge.io/integrate/octus-bridge-contracts/everscale/bridge-section/factory.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.
