# Deployer

## ITTUDeployer

*This is the deployer for all TokenTable core and proxy contracts. All initial setup and configuration is automatically done here. To save gas and enable easy upgradeability, all deployed contracts are `Clone` or `BeaconProxy` instances. You should avoid deploying TokenTable contracts individually unless you know what you're doing.*

### TTUDeployerInitialized

```solidity
event TTUDeployerInitialized(address unlockerImpl, address futureTokenImpl, address trackerTokenImpl, address beaconManagerImpl, address feeCollector)
```

### TokenTableSuiteDeployed

```solidity
event TokenTableSuiteDeployed(address by, string projectId, address unlocker, address futureToken, address trackerToken)
```

### FeeCollectorChanged

```solidity
event FeeCollectorChanged(address feeCollector)
```

### AlreadyDeployed

```solidity
error AlreadyDeployed()
```

*0xa6ef0ba1*

### feeCollector

```solidity
function feeCollector() external returns (contract ITTUFeeCollector)
```

*Exposes the fee collector variable.*

#### Return Values

| Name | Type                      | Description                       |
| ---- | ------------------------- | --------------------------------- |
| \[0] | contract ITTUFeeCollector | An instance of the fee collector. |

### deployTTSuite

```solidity
function deployTTSuite(address projectToken, string projectId, bool isUpgradeable, bool isTransferable, bool isCancelable, bool isHookable, bool isWithdrawable) external returns (contract ITokenTableUnlockerV2, contract ITTFutureTokenV2, contract ITTTrackerTokenV2)
```

Deploys and configures a new set of TokenTable products.

*Emits `TokenTableSuiteDeployed`. Throws: `AlreadyDeployed`.*

#### Parameters

| Name           | Type    | Description                                                                                          |
| -------------- | ------- | ---------------------------------------------------------------------------------------------------- |
| projectToken   | address | The project token address.                                                                           |
| projectId      | string  | A unique projectId, otherwise it will revert.                                                        |
| isUpgradeable  | bool    | When set to false, a `Clone` instead of a `BeaconProxy` is created to prevent future upgradeability. |
| isTransferable | bool    | Allow FutureToken to be transferable.                                                                |
| isCancelable   | bool    | Allow unlocking schedules to be cancelled in the Unlocker.                                           |
| isHookable     | bool    | Allow Unlocker to call an external hook.                                                             |
| isWithdrawable | bool    | Allow the founder to withdraw deposited funds.                                                       |
