# SingleDepositorVaultFactory

**Inherits:** ISingleDepositorVaultFactory, FeeVaultDeployer, Sweepable

Used to create new vaults

*Only one instance of the factory will be required per chain*

## State Variables

### \_DEPLOY\_DELEGATE

Address of the deploy delegate

```solidity
address internal immutable _DEPLOY_DELEGATE;
```

## Functions

### constructor

```solidity
constructor(address initialOwner, Authority initialAuthority, address deployDelegate)
    Sweepable(initialOwner, initialAuthority);
```

### create

Create single-depositor vault

```solidity
function create(
    bytes32 salt,
    string calldata description,
    BaseVaultParameters calldata baseVaultParams,
    FeeVaultParameters calldata singleDepositorVaultParams,
    address expectedVaultAddress
) external override requiresAuth returns (address deployedVault);
```

**Parameters**

| Name                         | Type                  | Description                                                         |
| ---------------------------- | --------------------- | ------------------------------------------------------------------- |
| `salt`                       | `bytes32`             | The salt used to generate the vault address                         |
| `description`                | `string`              | Vault description                                                   |
| `baseVaultParams`            | `BaseVaultParameters` | Base vault parameters for deployment                                |
| `singleDepositorVaultParams` | `FeeVaultParameters`  | Parameters for deployment related to single depositor functionality |
| `expectedVaultAddress`       | `address`             | Expected vault address to check against deployed vault address      |

**Returns**

| Name            | Type      | Description            |
| --------------- | --------- | ---------------------- |
| `deployedVault` | `address` | Deployed vault address |

### \_deployVault

Deploy vault

```solidity
function _deployVault(
    bytes32 salt,
    string calldata description,
    BaseVaultParameters calldata baseVaultParams,
    FeeVaultParameters calldata singleDepositorVaultParams
) internal returns (address deployed);
```

**Parameters**

| Name                         | Type                  | Description                                                      |
| ---------------------------- | --------------------- | ---------------------------------------------------------------- |
| `salt`                       | `bytes32`             | The salt value to create vault                                   |
| `description`                | `string`              | Vault description                                                |
| `baseVaultParams`            | `BaseVaultParameters` | Parameters for vault deployment used in BaseVault                |
| `singleDepositorVaultParams` | `FeeVaultParameters`  | Parameters for vault deployment specific to SingleDepositorVault |

**Returns**

| Name       | Type      | Description            |
| ---------- | --------- | ---------------------- |
| `deployed` | `address` | Deployed vault address |

### \_createVault

Create a new vault with delegate call

```solidity
function _createVault(bytes32 salt) internal returns (address deployed);
```

**Parameters**

| Name   | Type      | Description                    |
| ------ | --------- | ------------------------------ |
| `salt` | `bytes32` | The salt value to create vault |

**Returns**

| Name       | Type      | Description            |
| ---------- | --------- | ---------------------- |
| `deployed` | `address` | Deployed vault address |
