# Requirements

Handles all Asset Compliance Requirements related functionality

## Hierarchy

* Namespace‹[Asset](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)›

  ↳ **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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

***

### 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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/compliance)*›*

*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](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/identity) | sender Identity (optional, defaults to the signing Identity) |
| `to`    | string \| [Identity](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/identity) | receiver Identity                                            |

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

***

### 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](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/globals#subcallback)‹[ComplianceRequirements](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/compliancerequirements.md)›): *Promise‹*[*UnsubCallback*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/globals#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](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/globals#subcallback)‹[ComplianceRequirements](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/compliancerequirements.md)› |

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

***

### modify

▸ **modify**(`args`: [ModifyComplianceRequirementParams](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/globals#modifycompliancerequirementparams), `opts?`: [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)): *Promise‹*[*TransactionQueue*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹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](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/globals#modifycompliancerequirementparams) |
| `opts?` | [ProcedureOpts](https://github.com/PolymathNetwork/polymesh-sdk/blob/docs/beta/docs/interfaces/procedureopts.md)                                        |

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

***

### pause

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

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

***

### 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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

***

### reset

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

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

***

### 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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*

***

### unpause

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

*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*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/transactionqueue)*‹*[*Asset*](https://developers.polymath.network/polymesh-sdk-api-reference/docs-beta/classes/asset)*››*
