> 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-v6/classes/transferrestrictionbase.md).

# TransferRestrictionBase

Base class for managing Transfer Restrictions

## Type parameters

▪ **T**: [*TransferRestrictionType*](/polymesh-sdk-api-reference/docs-v6/enums/transferrestrictiontype.md)

## Hierarchy

* Namespace‹[SecurityToken](/polymesh-sdk-api-reference/docs-v6/classes/securitytoken.md)›

  ↳ **TransferRestrictionBase**

  ↳ [CountTransferRestriction](/polymesh-sdk-api-reference/docs-v6/interfaces/counttransferrestriction.md)

  ↳ [PercentageTransferRestriction](/polymesh-sdk-api-reference/docs-v6/interfaces/percentagetransferrestriction.md)

## Index

### Properties

* [context](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#protected-context)
* [exemptedScopeIds](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#optional-exemptedscopeids)
* [parent](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#protected-parent)
* [type](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#protected-abstract-type)

### Methods

* [addRestriction](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#addrestriction)
* [get](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#get)
* [removeRestrictions](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#removerestrictions)
* [setRestrictions](/polymesh-sdk-api-reference/docs-v6/classes/transferrestrictionbase.md#setrestrictions)

## Properties

### `Protected` context

• **context**: [*Context*](/polymesh-sdk-api-reference/docs-v6/classes/context.md)

*Inherited from void*

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

### `Optional` exemptedScopeIds

• **exemptedScopeIds**? : *string\[]*

*Defined in* [*src/types/index.ts:877*](https://github.com/PolymathNetwork/polymesh-sdk/blob/23062de4/src/types/index.ts#L877)

array of Scope IDs that are exempted from the Restriction

### `Protected` parent

• **parent**: [*SecurityToken*](/polymesh-sdk-api-reference/docs-v6/classes/securitytoken.md)

*Inherited from void*

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

### `Protected` `Abstract` type

• **type**: *T*

*Defined in* [*src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts:55*](https://github.com/PolymathNetwork/polymesh-sdk/blob/23062de4/src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts#L55)

## Methods

### addRestriction

▸ **addRestriction**(`args`: [AddRestrictionParams](/polymesh-sdk-api-reference/docs-v6/globals.md#addrestrictionparams)‹T›): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-v6/classes/transactionqueue.md)*‹number››*

*Defined in* [*src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts:125*](https://github.com/PolymathNetwork/polymesh-sdk/blob/23062de4/src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts#L125)

Add a Transfer Restriction of the corresponding type to this Security Token

**`note`** the result is the total amount of restrictions after the procedure has run

**`note`** required role:

* Security Token Owner

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-v6/interfaces/proceduremethod.md), which means you can call `addRestriction.checkAuthorization` on it to see whether the Current Account has the required permissions to run it

**Parameters:**

| Name   | Type                                                                                           |
| ------ | ---------------------------------------------------------------------------------------------- |
| `args` | [AddRestrictionParams](/polymesh-sdk-api-reference/docs-v6/globals.md#addrestrictionparams)‹T› |

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

### get

▸ **get**(): *Promise‹*[*GetReturnType*](/polymesh-sdk-api-reference/docs-v6/globals.md#getreturntype)*‹T››*

*Defined in* [*src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts:166*](https://github.com/PolymathNetwork/polymesh-sdk/blob/23062de4/src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts#L166)

Retrieve all active Transfer Restrictions of the corresponding type

**`note`** there is a maximum number of restrictions allowed accross all types. The `availableSlots` property of the result represents how many more restrictions can be added before reaching that limit

**Returns:** *Promise‹*[*GetReturnType*](/polymesh-sdk-api-reference/docs-v6/globals.md#getreturntype)*‹T››*

### removeRestrictions

▸ **removeRestrictions**(`args`: void): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-v6/classes/transactionqueue.md)*‹number››*

*Defined in* [*src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts:155*](https://github.com/PolymathNetwork/polymesh-sdk/blob/23062de4/src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts#L155)

Removes all Transfer Restrictions of the corresponding type from this Security Token

**`note`** the result is the total amount of restrictions after the procedure has run

**`note`** required role:

* Security Token Owner

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-v6/interfaces/proceduremethod.md), which means you can call `removeRestrictions.checkAuthorization` on it to see whether the Current Account has the required permissions to run it

**Parameters:**

| Name   | Type |
| ------ | ---- |
| `args` | void |

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

### setRestrictions

▸ **setRestrictions**(`args`: [SetRestrictionsParams](/polymesh-sdk-api-reference/docs-v6/globals.md#setrestrictionsparams)‹T›): *Promise‹*[*TransactionQueue*](/polymesh-sdk-api-reference/docs-v6/classes/transactionqueue.md)*‹number››*

*Defined in* [*src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts:140*](https://github.com/PolymathNetwork/polymesh-sdk/blob/23062de4/src/api/entities/SecurityToken/TransferRestrictions/TransferRestrictionBase.ts#L140)

Sets all Transfer Restrictions of the corresponding type on this Security Token

**`note`** the result is the total amount of restrictions after the procedure has run

**`note`** required role:

* Security Token Owner

**`note`** this method is of type [ProcedureMethod](/polymesh-sdk-api-reference/docs-v6/interfaces/proceduremethod.md), which means you can call `setRestrictions.checkAuthorization` on it to see whether the Current Account has the required permissions to run it

**Parameters:**

| Name   | Type                                                                                             |
| ------ | ------------------------------------------------------------------------------------------------ |
| `args` | [SetRestrictionsParams](/polymesh-sdk-api-reference/docs-v6/globals.md#setrestrictionsparams)‹T› |

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