[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)
* [new](GenesisProtocolFactoryType.md#new)



---
## Constructors
<a id="constructor"></a>


### ⊕ **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:11*



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:39*



Return a wrapper around the contract, hydrated from the given address. Throws an exception if the contract is not found at the given address.


**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:49*



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:** `Promise`.<[GenesisProtocolWrapper](GenesisProtocolWrapper.md)>





___

<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:950](https://github.com/daostack/arc.js/blob/f779630e/lib/wrappers/genesisProtocol.ts#L950)*



Migrate a new instance of GenesisProtocol.


**Parameters:**

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





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





___


