> ## Documentation Index
> Fetch the complete documentation index at: https://docs.relay.link/llms.txt
> Use this file to discover all available pages before exploring further.

# RelayBridgeFactory

# Solidity API

## RelayBridgeFactory

Factory contract for deploying RelayBridge instances for different assets

*This factory deploys new RelayBridge contracts and maintains a registry of bridges by asset address*

### HYPERLANE\_MAILBOX

```solidity theme={null}
address HYPERLANE_MAILBOX
```

The Hyperlane mailbox address used for cross-chain messaging

*Immutable to ensure consistency across all deployed bridges*

### bridgesByAsset

```solidity theme={null}
mapping(address => address[]) bridgesByAsset
```

Mapping from asset address to array of deployed bridge addresses

*Multiple bridges can exist for the same asset*

### BridgeDeployed

```solidity theme={null}
event BridgeDeployed(address bridge, address asset, contract BridgeProxy proxyBridge)
```

Emitted when a new bridge is deployed

#### Parameters

| Name        | Type                 | Description                                            |
| ----------- | -------------------- | ------------------------------------------------------ |
| bridge      | address              | The address of the newly deployed RelayBridge contract |
| asset       | address              | The address of the asset that the bridge will handle   |
| proxyBridge | contract BridgeProxy | The BridgeProxy contract associated with this bridge   |

### constructor

```solidity theme={null}
constructor(address hMailbox) public
```

Initializes the factory with the Hyperlane mailbox address

*The mailbox address cannot be changed after deployment*

#### Parameters

| Name     | Type    | Description                                   |
| -------- | ------- | --------------------------------------------- |
| hMailbox | address | The address of the Hyperlane mailbox contract |

### deployBridge

```solidity theme={null}
function deployBridge(address asset, contract BridgeProxy proxyBridge) public returns (address)
```

Deploys a new RelayBridge for a specific asset

*Creates a new RelayBridge instance and adds it to the bridgesByAsset mapping*

#### Parameters

| Name        | Type                 | Description                                                  |
| ----------- | -------------------- | ------------------------------------------------------------ |
| asset       | address              | The address of the asset (token) that the bridge will handle |
| proxyBridge | contract BridgeProxy | The BridgeProxy contract that will work with this bridge     |

#### Return Values

| Name | Type    | Description                                            |
| ---- | ------- | ------------------------------------------------------ |
| \[0] | address | The address of the newly deployed RelayBridge contract |
