# Deployer

[Git Source](https://github.com/Ion-Protocol/nucleus-boring-vault/blob/cc0b494b83e17b9b169a73b96050d2810b690477/src/helper/Deployer.sol)

**Inherits:** Auth

## State Variables

### isDeployer

```solidity
mapping(address => bool) public isDeployer;
```

## Functions

### constructor

```solidity
constructor(address _owner, Authority _auth) Auth(_owner, _auth);
```

### deployContract

Deploy some contract to a deterministic address.

*Should be of form: "ContractName Version 0.0" Where the numbers after version are VERSION . SUBVERSION*

```solidity
function deployContract(
    string calldata name,
    bytes memory creationCode,
    bytes calldata constructorArgs,
    uint256 value
)
    external
    requiresAuth
    returns (address);
```

**Parameters**

| Name              | Type      | Description                                                                                       |
| ----------------- | --------- | ------------------------------------------------------------------------------------------------- |
| `name`            | `string`  | string used to derive salt for deployment                                                         |
| `creationCode`    | `bytes`   | the contract creation code to deploy - can be obtained by calling type(contractName).creationCode |
| `constructorArgs` | `bytes`   | the contract constructor arguments if any - must be of form abi.encode(arg1, arg2, ...)           |
| `value`           | `uint256` | non zero if constructor needs to be payable                                                       |

### getAddress

```solidity
function getAddress(string calldata name) external view returns (address);
```

### convertNameToBytes32

```solidity
function convertNameToBytes32(string calldata name) public pure returns (bytes32);
```

## Events

### ContractDeployed

Emitted on `deployContract` calls.

```solidity
event ContractDeployed(string name, address contractAddress, bytes32 creationCodeHash);
```

**Parameters**

| Name               | Type      | Description                                                                                                |
| ------------------ | --------- | ---------------------------------------------------------------------------------------------------------- |
| `name`             | `string`  | string name used to derive salt for deployment                                                             |
| `contractAddress`  | `address` | the newly deployed contract address                                                                        |
| `creationCodeHash` | `bytes32` | keccak256 hash of the creation code - useful to determine creation code is the same across multiple chains |

## Errors

### Deployer\_\_NotADeployer

```solidity
error Deployer__NotADeployer();
```
