# api\_entities\_Asset\_Compliance\_Requirements.Requirements

[@polymeshassociation/polymesh-sdk](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes) / [Modules](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules) / [api/entities/Asset/Compliance/Requirements](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_compliance_requirements) / Requirements

## Class: Requirements

[api/entities/Asset/Compliance/Requirements](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_compliance_requirements).Requirements

Handles all Asset Compliance Requirements related functionality

### Hierarchy

* `Namespace`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset)>

  ↳ **`Requirements`**

### Table of contents

#### Methods

* [add](#add)
* [arePaused](#arepaused)
* [checkSettle](#checksettle)
* [get](#get)
* [modify](#modify)
* [pause](#pause)
* [remove](#remove)
* [reset](#reset)
* [set](#set)
* [unpause](#unpause)

### Methods

#### add

▸ **add**(`args`, `opts?`): `Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

Add a new compliance requirement to the the Asset. This doesn't modify existing requirements

**`note`** this method is of type [ProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod), which means you can call [add.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                                                                             |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `args`  | [`AddAssetRequirementParams`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_addassetrequirement.addassetrequirementparams) |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts)                                                      |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:103](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L103)

***

#### arePaused

▸ **arePaused**(): `Promise`<`boolean`>

Check whether Asset compliance requirements are paused or not

**Returns**

`Promise`<`boolean`>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:282](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L282)

***

#### checkSettle

▸ **checkSettle**(`args`): `Promise`<[`Compliance`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliance)>

Check whether the sender and receiver Identities in a transfer comply with all the requirements of this Asset

**`note`** this does not take balances into account

**`deprecated`** in favor of `settlements.canTransfer`

**Parameters**

| Name         | Type                                                                                                                                       | Description                                                  |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ |
| `args`       | `Object`                                                                                                                                   | -                                                            |
| `args.from?` | `string` \| [`Identity`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity.identity) | sender Identity (optional, defaults to the signing Identity) |
| `args.to`    | `string` \| [`Identity`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity.identity) | receiver Identity                                            |

**Returns**

`Promise`<[`Compliance`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliance)>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:253](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L253)

***

#### get

▸ **get**(): `Promise`<[`ComplianceRequirements`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliancerequirements)>

Retrieve all of the Asset's compliance requirements, together with the Default Trusted Claim Issuers

**`note`** can be subscribed to

**Returns**

`Promise`<[`ComplianceRequirements`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliancerequirements)>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:135](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L135)

▸ **get**(`callback`): `Promise`<[`UnsubCallback`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/types#unsubcallback)>

**Parameters**

| Name       | Type                                                                                                                                                                                                                                                                  |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `callback` | [`SubCallback`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/types#subcallback)<[`ComplianceRequirements`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliancerequirements)> |

**Returns**

`Promise`<[`UnsubCallback`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/types#unsubcallback)>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:136](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L136)

***

#### modify

▸ **modify**(`args`, `opts?`): `Promise`<`TransactionQueue`<`void`, `void`, `unknown`\[]\[]>>

Modify a compliance requirement for the Asset

**`note`** this method is of type [ProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod), which means you can call [modify.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                                                                                                    |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `args`  | [`ModifyComplianceRequirementParams`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_procedures_modifycompliancerequirement#modifycompliancerequirementparams) |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts)                                                                             |

**Returns**

`Promise`<`TransactionQueue`<`void`, `void`, `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:306](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L306)

***

#### pause

▸ **pause**(`opts?`): `Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

Pause all the Asset's requirements. This means that all transfers will be allowed until requirements are unpaused

**`note`** this method is of type [NoArgsProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod), which means you can call [pause.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                        |
| ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts) |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:229](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L229)

***

#### remove

▸ **remove**(`args`, `opts?`): `Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

Remove an existing compliance requirement from the Asset

**`note`** this method is of type [ProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod), which means you can call [remove.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                                                                                      |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `args`  | [`RemoveAssetRequirementParams`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_removeassetrequirement.removeassetrequirementparams) |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts)                                                               |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:113](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L113)

***

#### reset

▸ **reset**(`opts?`): `Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

Delete all the current requirements for the Asset.

**`note`** this method is of type [NoArgsProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod), which means you can call [reset.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                        |
| ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts) |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:219](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L219)

***

#### set

▸ **set**(`args`, `opts?`): `Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

Configure compliance requirements for the Asset. This operation will replace all existing requirements with a new requirement set

**`example`** Say A, B, C, D and E are requirements and we arrange them as `[[A, B], [C, D], [E]]`. For a transfer to succeed, it must either comply with A AND B, C AND D, OR E.

**`note`** this method is of type [ProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod), which means you can call [set.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                                                                                |
| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `args`  | [`SetAssetRequirementsParams`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_setassetrequirements.setassetrequirementsparams) |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts)                                                         |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:126](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L126)

***

#### unpause

▸ **unpause**(`opts?`): `Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

Un-pause all the Asset's current requirements

**`note`** this method is of type [NoArgsProcedureMethod](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod), which means you can call [unpause.checkAuthorization](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod#checkauthorization) on it to see whether the signing Account and Identity have the required roles and permissions to run it

**Parameters**

| Name    | Type                                                                                                                        |
| ------- | --------------------------------------------------------------------------------------------------------------------------- |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts) |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), [`Asset`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset), `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/Compliance/Requirements.ts:239](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/Compliance/Requirements.ts#L239)
