# 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

```
address HYPERLANE_MAILBOX
```

The Hyperlane mailbox address used for cross-chain messaging. Immutable to ensure consistency across all deployed bridges.

### bridgesByAsset

```
mapping(address => address[]) bridgesByAsset
```

Mapping from asset address to array of deployed bridge addresses. Multiple bridges can exist for the same asset.

### BridgeDeployed

```
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

```
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

```
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 |
