> For the complete documentation index, see [llms.txt](https://developers.polymath.network/polymesh-sdk-api-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset_compliance_requirements.requirements.md).

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

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

## Class: Requirements

[api/entities/Asset/Compliance/Requirements](/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_compliance_requirements.md).Requirements

Handles all Asset Compliance Requirements related functionality

### Hierarchy

* `Namespace`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md)>

  ↳ **`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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `unknown`\[]\[]>>

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

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [add.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_addassetrequirement.addassetrequirementparams.md) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                                                      |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliance.md)>

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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity.identity.md) | sender Identity (optional, defaults to the signing Identity) |
| `args.to`    | `string` \| [`Identity`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_identity.identity.md) | receiver Identity                                            |

**Returns**

`Promise`<[`Compliance`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliance.md)>

**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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliancerequirements.md)>

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

**`note`** can be subscribed to

**Returns**

`Promise`<[`ComplianceRequirements`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.compliancerequirements.md)>

**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`](/polymesh-sdk-api-reference/docs-alpha/modules-1/types.md#unsubcallback)>

**Parameters**

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

**Returns**

`Promise`<[`UnsubCallback`](/polymesh-sdk-api-reference/docs-alpha/modules-1/types.md#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](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [modify.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/modules-1/api_procedures_modifycompliancerequirement.md#modifycompliancerequirementparams) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                                                                             |

**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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod.md), which means you can call [pause.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md) |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `unknown`\[]\[]>>

Remove an existing compliance requirement from the Asset

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [remove.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_removeassetrequirement.removeassetrequirementparams.md) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                                                               |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `unknown`\[]\[]>>

Delete all the current requirements for the Asset.

**`note`** this method is of type [NoArgsProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod.md), which means you can call [reset.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md) |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md), which means you can call [set.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.proceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/api_procedures_setassetrequirements.setassetrequirementsparams.md) |
| `opts?` | [`ProcedureOpts`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md)                                                         |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `unknown`\[]\[]>>

Un-pause all the Asset's current requirements

**`note`** this method is of type [NoArgsProcedureMethod](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod.md), which means you can call [unpause.checkAuthorization](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.noargsproceduremethod.md#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`](/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts.md) |

**Returns**

`Promise`<`TransactionQueue`<[`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), [`Asset`](/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset.asset.md), `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)
