# Requirements

Handles all Asset Compliance Requirements related functionality

## Hierarchy

* Namespace‹[Asset](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)›

  ↳ **Requirements**

## Index

### Properties

* [context](#protected-context)
* [parent](#protected-parent)

### Methods

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

## Properties

### `Protected` context

• **context**: *Context*

*Inherited from void*

*Defined in* [*src/api/entities/Namespace.ts:11*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Namespace.ts#L11)

***

### `Protected` parent

• **parent**: [*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)

*Inherited from void*

*Defined in* [*src/api/entities/Namespace.ts:9*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Namespace.ts#L9)

## Methods

### add

▸ **add**(`args`: [AddAssetRequirementParams](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/addassetrequirementparams.md), `opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:99*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L99)

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

**`note`** this method is of type [ProcedureMethod](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/proceduremethod.md), which means you can call [add.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/addassetrequirementparams.md) |
| `opts?` | [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)                         |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

***

### arePaused

▸ **arePaused**(): *Promise‹boolean›*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:278*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L278)

Check whether Asset compliance requirements are paused or not

**Returns:** *Promise‹boolean›*

***

### checkSettle

▸ **checkSettle**(`args`: object): *Promise‹*[*Compliance*](/polymesh-sdk-api-reference/docs-beta/classes/compliance.md)*›*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:249*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L249)

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

▪ **args**: *object*

| Name    | Type                                                                            | Description                                                  |
| ------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `from?` | string \| [Identity](/polymesh-sdk-api-reference/docs-beta/classes/identity.md) | sender Identity (optional, defaults to the signing Identity) |
| `to`    | string \| [Identity](/polymesh-sdk-api-reference/docs-beta/classes/identity.md) | receiver Identity                                            |

**Returns:** *Promise‹*[*Compliance*](/polymesh-sdk-api-reference/docs-beta/classes/compliance.md)*›*

***

### get

▸ **get**(): *Promise‹*[*ComplianceRequirements*](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/compliancerequirements.md)*›*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:131*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L131)

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

**`note`** can be subscribed to

**Returns:** *Promise‹*[*ComplianceRequirements*](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/compliancerequirements.md)*›*

▸ **get**(`callback`: [SubCallback](/polymesh-sdk-api-reference/docs-beta/globals.md#subcallback)‹[ComplianceRequirements](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/compliancerequirements.md)›): *Promise‹*[*UnsubCallback*](/polymesh-sdk-api-reference/docs-beta/globals.md#unsubcallback)*›*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:132*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L132)

**Parameters:**

| Name       | Type                                                                                                                                                                                                            |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `callback` | [SubCallback](/polymesh-sdk-api-reference/docs-beta/globals.md#subcallback)‹[ComplianceRequirements](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/compliancerequirements.md)› |

**Returns:** *Promise‹*[*UnsubCallback*](/polymesh-sdk-api-reference/docs-beta/globals.md#unsubcallback)*›*

***

### modify

▸ **modify**(`args`: [ModifyComplianceRequirementParams](/polymesh-sdk-api-reference/docs-beta/globals.md#modifycompliancerequirementparams), `opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹void››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:302*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L302)

Modify a compliance requirement for the Asset

**`note`** this method is of type [ProcedureMethod](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/proceduremethod.md), which means you can call [modify.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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-beta/globals.md#modifycompliancerequirementparams) |
| `opts?` | [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)        |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹void››*

***

### pause

▸ **pause**(`opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:225*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L225)

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://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/noargsproceduremethod.md), which means you can call [pause.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md) |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

***

### remove

▸ **remove**(`args`: [RemoveAssetRequirementParams](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/removeassetrequirementparams.md), `opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:109*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L109)

Remove an existing compliance requirement from the Asset

**`note`** this method is of type [ProcedureMethod](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/proceduremethod.md), which means you can call [remove.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/removeassetrequirementparams.md) |
| `opts?` | [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)                               |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

***

### reset

▸ **reset**(`opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:215*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L215)

Delete all the current requirements for the Asset.

**`note`** this method is of type [NoArgsProcedureMethod](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/noargsproceduremethod.md), which means you can call [reset.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md) |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

***

### set

▸ **set**(`args`: [SetAssetRequirementsParams](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/setassetrequirementsparams.md), `opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:122*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L122)

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://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/proceduremethod.md), which means you can call [set.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/setassetrequirementsparams.md) |
| `opts?` | [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)                           |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

***

### unpause

▸ **unpause**(`opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*

*Defined in* [*src/api/entities/Asset/Compliance/Requirements.ts:235*](https://github.com/PolymathNetwork/polymesh-sdk/blob/31a16a34/src/api/entities/Asset/Compliance/Requirements.ts#L235)

Un-pause all the Asset's current requirements

**`note`** this method is of type [NoArgsProcedureMethod](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/noargsproceduremethod.md), which means you can call [unpause.checkAuthorization](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/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](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md) |

**Returns:** *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue.md)*‹*[*Asset*](/polymesh-sdk-api-reference/docs-beta/classes/asset.md)*››*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
