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

# Class: DAO

Helper class and factory for DAOs.

## Hierarchy

**DAO**

## Index

### Properties

* [avatar](DAO.md#avatar)
* [controller](DAO.md#controller)
* [hasUController](DAO.md#hasUController)
* [name](DAO.md#name)
* [reputation](DAO.md#reputation)
* [token](DAO.md#token)

### Methods

* [getGlobalConstraints](DAO.md#getGlobalConstraints)
* [getParticipants](DAO.md#getParticipants)
* [getSchemes](DAO.md#getSchemes)
* [getTokenBalance](DAO.md#getTokenBalance)
* [getTokenName](DAO.md#getTokenName)
* [getTokenSymbol](DAO.md#getTokenSymbol)
* [isGlobalConstraintRegistered](DAO.md#isGlobalConstraintRegistered)
* [isSchemeRegistered](DAO.md#isSchemeRegistered)
* [at](DAO.md#at)
* [getDaoCreationEvents](DAO.md#getDaoCreationEvents)
* [getDaos](DAO.md#getDaos)
* [new](DAO.md#new)

---

## Properties

<a id="avatar"></a>

###  avatar

**● avatar**: *`any`*

*Defined in dao.ts:127*

Truffle contract wrapper for the DAO's Avatar

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

###  controller

**● controller**: *`any`*

*Defined in dao.ts:131*

Truffle contract wrapper for the DAO's controller (Controller or UController by default, see DAO.hasUController)

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

###  hasUController

**● hasUController**: *`boolean`*

*Defined in dao.ts:135*

`true` if the DAO is using Arc's universal controller

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

###  name

**● name**: *`string`*

*Defined in dao.ts:147*

the name of the DAO

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

###  reputation

**● reputation**: *[ReputationWrapper](ReputationWrapper.md)*

*Defined in dao.ts:143*

Truffle contract wrapper for the DAO's native reputation (Reputation)

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

###  token

**● token**: *[DaoTokenWrapper](DaoTokenWrapper.md)*

*Defined in dao.ts:139*

Truffle contract wrapper for the DAO's native token (DAOToken by default)

___

## Methods

<a id="getGlobalConstraints"></a>

###  getGlobalConstraints

▸ **getGlobalConstraints**(name?: *`string`*): `Promise`<`Array`<[DaoGlobalConstraintInfo](../interfaces/DaoGlobalConstraintInfo.md)>>

*Defined in dao.ts:166*

Returns the promise of all os the global constraints currently registered into this DAO, as Array

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| `Optional` name | `string` |  Optionally filter by the name of a global constraint, like "TokenCapGC" |

**Returns:** `Promise`<`Array`<[DaoGlobalConstraintInfo](../interfaces/DaoGlobalConstraintInfo.md)>>

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

###  getParticipants

▸ **getParticipants**(options?: *[GetParticipantsOptions](../interfaces/GetParticipantsOptions.md)*): `Promise`<`Array`<[Participant](../interfaces/Participant.md)>>

*Defined in dao.ts:183*

Returns promise of an array of `Participant` representing accounts that currently have greater-than-zero reputation with this DAO. Optionally returns the current reputation of each participant.

**Parameters:**

| Param | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `Default value` options | [GetParticipantsOptions](../interfaces/GetParticipantsOptions.md) |  {} as GetParticipantsOptions |   |

**Returns:** `Promise`<`Array`<[Participant](../interfaces/Participant.md)>>

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

###  getSchemes

▸ **getSchemes**(name?: *`string`*): `Promise`<`Array`<[DaoSchemeInfo](../interfaces/DaoSchemeInfo.md)>>

*Defined in dao.ts:153*

Returns the promise of all of the schemes registered into this DAO, as Array

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| `Optional` name | `string` |  Optionally filter by the name of a scheme, like "SchemeRegistrar" |

**Returns:** `Promise`<`Array`<[DaoSchemeInfo](../interfaces/DaoSchemeInfo.md)>>

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

###  getTokenBalance

▸ **getTokenBalance**(agentAddress: *[Address](../#Address)*): `Promise`<`BigNumber`>

*Defined in dao.ts:233*

Returns a promise of the given account's native token balance.

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| agentAddress | [Address](../#Address) |   |

**Returns:** `Promise`<`BigNumber`>

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

###  getTokenName

▸ **getTokenName**(): `Promise`<`string`>

*Defined in dao.ts:240*

Returns the promise of the token name for the DAO as stored in the native token

**Returns:** `Promise`<`string`>

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

###  getTokenSymbol

▸ **getTokenSymbol**(): `Promise`<`string`>

*Defined in dao.ts:248*

Returns the promise of the token symbol for the DAO as stored in the native token

**Returns:** `Promise`<`string`>

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

###  isGlobalConstraintRegistered

▸ **isGlobalConstraintRegistered**(gc: *[Address](../#Address)*): `Promise`<`boolean`>

*Defined in dao.ts:225*

Returns whether the global constraint with the given address is registered to this DAO's controller

**Parameters:**

| Param | Type |
| ------ | ------ |
| gc | [Address](../#Address) |

**Returns:** `Promise`<`boolean`>

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

###  isSchemeRegistered

▸ **isSchemeRegistered**(schemeAddress: *[Address](../#Address)*): `Promise`<`boolean`>

*Defined in dao.ts:218*

Returns whether the scheme with the given address is registered to this DAO's controller

**Parameters:**

| Param | Type |
| ------ | ------ |
| schemeAddress | [Address](../#Address) |

**Returns:** `Promise`<`boolean`>

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

### `<Static>` at

▸ **at**(avatarAddress: *[Address](../#Address)*): `Promise`<[DAO](DAO.md)>

*Defined in dao.ts:67*

Returns the promise of a DAO at the given address. Returns undefined if not found.

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| avatarAddress | [Address](../#Address) |  The DAO avatar's address |

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

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

### `<Static>` getDaoCreationEvents

▸ **getDaoCreationEvents**(options?: *[GetDaosOptions](../interfaces/GetDaosOptions.md)*): `Promise`<[EntityFetcherFactory](../#EntityFetcherFactory)<[Address](../#Address), [InitialSchemesSetEventResult](../interfaces/InitialSchemesSetEventResult.md)>>

*Defined in dao.ts:108*

Return a promise of an EntityFetcherFactory to get/watch avatar addresses for all of the DAOs created by the optionally-given DaoCreator contract. The default DaoCreator is the one deployed by the running version of Arc.js.

An alternative DaoCreator must implement an InitialSchemesSet event just like the Arc DaoCreater.

**Parameters:**

| Param | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `Default value` options | [GetDaosOptions](../interfaces/GetDaosOptions.md) |  {} |  Optional, default is \`{}\`. |

**Returns:** `Promise`<[EntityFetcherFactory](../#EntityFetcherFactory)<[Address](../#Address), [InitialSchemesSetEventResult](../interfaces/InitialSchemesSetEventResult.md)>>

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

### `<Static>` getDaos

▸ **getDaos**(options?: *[GetDaosOptions](../interfaces/GetDaosOptions.md)*): `Promise`<`Array`<[Address](../#Address)>>

*Defined in dao.ts:95*

Return a promise of an array of avatar addresses for all of the DAOs created by the optionally-given DaoCreator contract. The default DaoCreator is the one deployed by the running version of Arc.js.

An alternative DaoCreator must implement an InitialSchemesSet event just like the Arc DaoCreater.

**Parameters:**

| Param | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `Default value` options | [GetDaosOptions](../interfaces/GetDaosOptions.md) |  {} |   |

**Returns:** `Promise`<`Array`<[Address](../#Address)>>

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

### `<Static>` new

▸ **new**(options: * [NewDaoConfig](../interfaces/NewDaoConfig.md) & `TxGeneratingFunctionOptions`*): `Promise`<[DAO](DAO.md)>

*Defined in dao.ts:24*

Returns the promise of a new DAO

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| options |  [NewDaoConfig](../interfaces/NewDaoConfig.md) & `TxGeneratingFunctionOptions`|  Configuration of the new DAO |

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

___

