# api\_entities\_Asset\_TransferRestrictions\_TransferRestrictionBase.TransferRestrictionBase

[@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/TransferRestrictions/TransferRestrictionBase](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_transferrestrictions_transferrestrictionbase) / TransferRestrictionBase

## Class: TransferRestrictionBase\<T>

[api/entities/Asset/TransferRestrictions/TransferRestrictionBase](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/modules-1/api_entities_asset_transferrestrictions_transferrestrictionbase).TransferRestrictionBase

Base class for managing Transfer Restrictions

### Type parameters

| Name | Type                                                                                                                                               |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `T`  | extends [`TransferRestrictionType`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/enums/types.transferrestrictiontype) |

### Hierarchy

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

  ↳ **`TransferRestrictionBase`**

  ↳↳ [`Count`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset_transferrestrictions_count.count)

  ↳↳ [`Percentage`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/classes/api_entities_asset_transferrestrictions_percentage.percentage)

### Table of contents

#### Methods

* [addRestriction](#addrestriction)
* [get](#get)
* [removeRestrictions](#removerestrictions)
* [setRestrictions](#setrestrictions)

### Methods

#### addRestriction

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

Add a Transfer Restriction of the corresponding type to this Asset

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

**`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 [addRestriction.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`  | `AddRestrictionParams`<`T`>                                                                                                 |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts) |

**Returns**

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

**Defined in**

[api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts:128](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts#L128)

***

#### get

▸ **get**(): `Promise`<`GetReturnType`<`T`>>

Retrieve all active Transfer Restrictions of the corresponding type

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

**Returns**

`Promise`<`GetReturnType`<`T`>>

**Defined in**

[api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts:163](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts#L163)

***

#### removeRestrictions

▸ **removeRestrictions**(`opts?`): `Promise`<`TransactionQueue`<`BigNumber`, `BigNumber`, `unknown`\[]\[]>>

Removes all Transfer Restrictions of the corresponding type from this Asset

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

**`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 [removeRestrictions.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`<`BigNumber`, `BigNumber`, `unknown`\[]\[]>>

**Defined in**

[api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts:152](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts#L152)

***

#### setRestrictions

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

Sets all Transfer Restrictions of the corresponding type on this Asset

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

**`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 [setRestrictions.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`  | `SetRestrictionsParams`<`T`>                                                                                                |
| `opts?` | [`ProcedureOpts`](https://developers.polymath.network/polymesh-sdk-api-reference/docs-alpha/interfaces/types.procedureopts) |

**Returns**

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

**Defined in**

[api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts:140](https://github.com/PolymathNetwork/polymesh-sdk/blob/31dfa0dc/src/api/entities/Asset/TransferRestrictions/TransferRestrictionBase.ts#L140)
