[API Reference](../README.md) > [GenesisProtocolFactoryType](../classes/GenesisProtocolFactoryType.md)

# Class: GenesisProtocolFactoryType

defined just to add good type checking

## Hierarchy

 [ContractWrapperFactory](ContractWrapperFactory.md)<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

**↳ GenesisProtocolFactoryType**

## Implements

* [IContractWrapperFactory](../interfaces/IContractWrapperFactory.md)<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

## Index

### Constructors

* [constructor](GenesisProtocolFactoryType.md#constructor)

### Methods

* [at](GenesisProtocolFactoryType.md#at)
* [deployed](GenesisProtocolFactoryType.md#deployed)
* [ensureSolidityContract](GenesisProtocolFactoryType.md#ensureSolidityContract)
* [new](GenesisProtocolFactoryType.md#new)
* [clearContractCache](GenesisProtocolFactoryType.md#clearContractCache)
* [setConfigService](GenesisProtocolFactoryType.md#setConfigService)

---

## Constructors

<a id="constructor"></a>

###  constructor

⊕ **new GenesisProtocolFactoryType**(solidityContractName: *`string`*, wrapper: *`object`*, web3EventService: *[Web3EventService](Web3EventService.md)*): [GenesisProtocolFactoryType](GenesisProtocolFactoryType.md)

*Inherited from [ContractWrapperFactory](ContractWrapperFactory.md).[constructor](ContractWrapperFactory.md#constructor)*

*Defined in [contractWrapperFactory.ts:33](https://github.com/daostack/arc.js/blob/6f704389/lib/contractWrapperFactory.ts#L33)*

Connstructor to create a contract wrapper factory for the given Arc contract name and wrapper class.

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| solidityContractName | `string` |
| wrapper | `object` |  Class of the contract |
| web3EventService | [Web3EventService](Web3EventService.md) |

**Returns:** [GenesisProtocolFactoryType](GenesisProtocolFactoryType.md)

___

## Methods

<a id="at"></a>

###  at

▸ **at**(address: *`string`*): `Promise`<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

*Inherited from [ContractWrapperFactory](ContractWrapperFactory.md).[at](ContractWrapperFactory.md#at)*

*Defined in [contractWrapperFactory.ts:80](https://github.com/daostack/arc.js/blob/6f704389/lib/contractWrapperFactory.ts#L80)*

Return a wrapper around the contract, hydrated from the given address. Returns undefined if not found.

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| address | `string` |   |

**Returns:** `Promise`<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

___
<a id="deployed"></a>

###  deployed

▸ **deployed**(): `Promise`<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

*Inherited from [ContractWrapperFactory](ContractWrapperFactory.md).[deployed](ContractWrapperFactory.md#deployed)*

*Defined in [contractWrapperFactory.ts:97](https://github.com/daostack/arc.js/blob/6f704389/lib/contractWrapperFactory.ts#L97)*

Return a wrapper around the contract as deployed by the current version of Arc.js. Note this is usually not needed as the WrapperService provides these wrappers already hydrated. Returns undefined if not found.

**Returns:** `Promise`<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

___
<a id="ensureSolidityContract"></a>

###  ensureSolidityContract

▸ **ensureSolidityContract**(): `Promise`<`any`>

*Implementation of [IContractWrapperFactory](../interfaces/IContractWrapperFactory.md).[ensureSolidityContract](../interfaces/IContractWrapperFactory.md#ensureSolidityContract)*

*Inherited from [ContractWrapperFactory](ContractWrapperFactory.md).[ensureSolidityContract](ContractWrapperFactory.md#ensureSolidityContract)*

*Defined in [contractWrapperFactory.ts:110](https://github.com/daostack/arc.js/blob/6f704389/lib/contractWrapperFactory.ts#L110)*

**Returns:** `Promise`<`any`>

___
<a id="new"></a>

###  new

▸ **new**(stakingTokenAddress: *[Address](../#Address)*): `Promise`<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

*Overrides [ContractWrapperFactory](ContractWrapperFactory.md).[new](ContractWrapperFactory.md#new)*

*Defined in [wrappers/genesisProtocol.ts:1025](https://github.com/daostack/arc.js/blob/6f704389/lib/wrappers/genesisProtocol.ts#L1025)*

Migrate a new instance of GenesisProtocol.

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| stakingTokenAddress | [Address](../#Address) |  The token that will be used when staking. Typically is the token of the DAO that is going to use this GenesisProtocol. |

**Returns:** `Promise`<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>

___
<a id="clearContractCache"></a>

### `<Static>` clearContractCache

▸ **clearContractCache**(): `void`

*Inherited from [ContractWrapperFactory](ContractWrapperFactory.md).[clearContractCache](ContractWrapperFactory.md#clearContractCache)*

*Defined in [contractWrapperFactory.ts:21](https://github.com/daostack/arc.js/blob/6f704389/lib/contractWrapperFactory.ts#L21)*

**Returns:** `void`

___
<a id="setConfigService"></a>

### `<Static>` setConfigService

▸ **setConfigService**(configService: *[IConfigService](../interfaces/IConfigService.md)*): `void`

*Inherited from [ContractWrapperFactory](ContractWrapperFactory.md).[setConfigService](ContractWrapperFactory.md#setConfigService)*

*Defined in [contractWrapperFactory.ts:17](https://github.com/daostack/arc.js/blob/6f704389/lib/contractWrapperFactory.ts#L17)*

**Parameters:**

| Param | Type |
| ------ | ------ |
| configService | [IConfigService](../interfaces/IConfigService.md) |

**Returns:** `void`

___

