# Class: AddressList

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:20](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L20)

AddressLists represent a list of addresses, identified by a unique ID.

Some list IDs are reserved and auto generated by the blockchain.
Otherwise, the list can be created on-chain via MsgCreateAddressLists.

For the BitBadges indexer / API, we also allow users to create off-chain lists hosted in a centralized manner.

On-chain lists are stored on the blockchain, are permanent, non editable, non deletable, and can be used for defining permissions and approvals.
Off-chain lists are stored off-chain, are mutable, and can be edited / deleted at any time by the creator.

## Extends

- [`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class)\<`AddressList`\>

## Extended by

- [`AddressListDoc`](https://docs.bitbadges.io/sdk/reference/classes/address-list-doc)

## Implements

- [`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

## Constructors

### Constructor

> **new AddressList**(`addressList`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:28](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L28)

#### Parameters

##### addressList

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`AddressList`

#### Overrides

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`constructor`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#constructor)

## Properties

### addresses

> **addresses**: `string`[]

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:22](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L22)

The addresses of the address list. If this is a tracker list, the addresses are the tracker IDs.

#### Implementation of

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list).[`addresses`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list#addresses)

***

### createdBy?

> `optional` **createdBy?**: `string`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:26](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L26)

The address that created the address list. Handled internally.

#### Implementation of

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list).[`createdBy`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list#createdby)

***

### customData

> **customData**: `string`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:25](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L25)

Arbitrary custom data that can be stored. Leave blank for no custom data.

#### Implementation of

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list).[`customData`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list#customdata)

***

### listId

> **listId**: `string`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:21](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L21)

The ID of the address list.

#### Implementation of

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list).[`listId`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list#listid)

***

### uri

> **uri**: `string`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:24](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L24)

The URI where to fetch the address list metadata from.

#### Implementation of

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list).[`uri`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list#uri)

***

### whitelist

> **whitelist**: `boolean`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:23](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L23)

Whether or not to include ONLY the addresses or include all EXCEPT the addresses.

#### Implementation of

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list).[`whitelist`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list#whitelist)

## Methods

### checkAddress()

> **checkAddress**(`address`): `boolean`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:44](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L44)

Checks if a specific account is in the given address list. This means added to a whitelist or NOT included in a blacklist.

#### Parameters

##### address

`string`

#### Returns

`boolean`

#### Remarks

The double negative may get confusing.

***

### clone()

> **clone**(): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:105](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L105)

Deep copies the object and returns a new instance.

#### Returns

`AddressList`

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`clone`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#clone)

***

### ~~convert()~~

> **convert**\<`U`\>(`_convertFunction?`, `options?`): [`CustomType`](https://docs.bitbadges.io/sdk/reference/interfaces/custom-type)\<`any`\>

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:124](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L124)

#### Type Parameters

##### U

`U` *extends* [`NumberType`](https://docs.bitbadges.io/sdk/reference/type-aliases/number-type)

#### Parameters

##### \_convertFunction?

(`val`) => `U`

##### options?

[`ConvertOptions`](https://docs.bitbadges.io/sdk/reference/interfaces/convert-options)

#### Returns

[`CustomType`](https://docs.bitbadges.io/sdk/reference/interfaces/custom-type)\<`any`\>

#### Deprecated

This function is unnecessary as this field has no numeric types.
Please use the `.clone()` method instead.

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`convert`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#convert)

***

### equals()

> **equals**\<`U`\>(`other`, `normalizeNumberTypes?`): `boolean`

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:101](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L101)

Compares this object's fields to another object's fields for equality. Equality is determined by comparing the JSON representations of the objects.

If `normalizeNumberTypes` is true, then all number types will be compared as strings (i.e. "1n" === "1" === 1). Else, they will be compared as their native types (i.e. 1n !== 1 !== "1").

#### Type Parameters

##### U

`U` *extends* [`CustomType`](https://docs.bitbadges.io/sdk/reference/interfaces/custom-type)\<`U`\>

#### Parameters

##### other

[`CustomType`](https://docs.bitbadges.io/sdk/reference/interfaces/custom-type)\<`U`\> \| `null` \| `undefined`

##### normalizeNumberTypes?

`boolean`

#### Returns

`boolean`

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`equals`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#equals)

***

### getNumberFieldNames()

> **getNumberFieldNames**(): `string`[]

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:111](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L111)

Internal helper method to convert the number fields of the object to a different NumberType equivalent.

#### Returns

`string`[]

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`getNumberFieldNames`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#getnumberfieldnames)

***

### getOverlapDetails()

> **getOverlapDetails**(`addressList`): \[`AddressList`, `AddressList`, `AddressList`\]

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:187](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L187)

Gets the overlap details for two address lists. Returns [inFirstListButNotSecond, inBothLists, inSecondListButNotFirst].

#### Parameters

##### addressList

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

\[`AddressList`, `AddressList`, `AddressList`\]

***

### getOverlaps()

> **getOverlaps**(`addressList`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:179](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L179)

Gets the addresses that are in both lists.

Note the returned value can be a whitelist or a blacklist, depending on the input lists.
For example, all addresses except Bob (blacklist) overlap or just Bob (whitelist) overlap.

#### Parameters

##### addressList

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`AddressList`

***

### hasNumberFields()

> **hasNumberFields**(): `boolean`

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:115](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L115)

Checks if the object has number fields.

#### Returns

`boolean`

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`hasNumberFields`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#hasnumberfields)

***

### invert()

> **invert**(): `this`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:61](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L61)

Inverts the list in-place. Simply done by invert the whitelist property.

#### Returns

`this`

***

### isEmpty()

> **isEmpty**(): `boolean`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:54](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L54)

#### Returns

`boolean`

***

### remove()

> **remove**(`addresses`): `this`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:80](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L80)

Removes addresses from the list in-place.

If this is a whitelist, the address will be removed (if it is currently added).
If this is a blacklist, the address will be added (if it is not currently added).
Otherwise, it is a no-op since it is already removed.

#### Parameters

##### addresses

`string` \| [`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`this`

***

### toInverted()

> **toInverted**(): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:69](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L69)

Returns a new list with the addresses inverted.

#### Returns

`AddressList`

***

### toJson()

> **toJson**(): `JsonObject`

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:93](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L93)

Converts the object to a JSON object with all primitive types.

#### Returns

`JsonObject`

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`toJson`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#tojson)

***

### toJsonString()

> **toJsonString**(): `string`

Defined in: [packages/bitbadgesjs-sdk/src/common/base.ts:97](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/common/base.ts#L97)

Converts the object to a JSON string.

#### Returns

`string`

#### Inherited from

[`CustomTypeClass`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class).[`toJsonString`](https://docs.bitbadges.io/sdk/reference/classes/custom-type-class#tojsonstring)

***

### toProto()

> **toProto**(): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:429](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L429)

#### Returns

`AddressList`

***

### toRemoved()

> **toRemoved**(`addresses`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:103](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L103)

Wrapper for [remove](#remove) that returns a new list instead of modifying the current one.

#### Parameters

##### addresses

`string` \| [`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`AddressList`

***

### toUnion()

> **toUnion**(`other`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:127](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L127)

Wrapper for [union](#union) that returns a new list instead of modifying the current one.

#### Parameters

##### other

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`AddressList`

***

### union()

> **union**(`other`): `this`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:117](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L117)

Computes the union of two address lists in-place.
The result contains all addresses that are in either list.

Cases:
- Whitelist ∪ Whitelist = Whitelist with combined addresses
- Whitelist ∪ Blacklist = Blacklist with addresses in blacklist that are NOT in whitelist
- Blacklist ∪ Whitelist = Blacklist with addresses in blacklist that are NOT in whitelist
- Blacklist ∪ Blacklist = Blacklist with intersection of excluded addresses

#### Parameters

##### other

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`this`

***

### AllAddresses()

> `static` **AllAddresses**(): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:196](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L196)

Returns the reserved 'All' address list.

#### Returns

`AddressList`

***

### computeUnion()

> `static` **computeUnion**(`first`, `second`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:135](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L135)

Computes the union of two address lists.
The result contains all addresses that are in either list.

#### Parameters

##### first

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

##### second

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

`AddressList`

***

### fromJson()

> `static` **fromJson**(`jsonValue`, `options?`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:433](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L433)

#### Parameters

##### jsonValue

`JsonValue`

##### options?

`Partial`\<`JsonReadOptions`\>

#### Returns

`AddressList`

***

### fromJsonString()

> `static` **fromJsonString**(`jsonString`, `options?`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:437](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L437)

#### Parameters

##### jsonString

`string`

##### options?

`Partial`\<`JsonReadOptions`\>

#### Returns

`AddressList`

***

### fromProto()

> `static` **fromProto**(`item`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:441](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L441)

#### Parameters

##### item

`AddressList`

#### Returns

`AddressList`

***

### generateReservedListId()

> `static` **generateReservedListId**(`addressList`): `string`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:406](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L406)

Generates a list ID for a given address list.

#### Parameters

##### addressList

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

The address list to generate the ID for

#### Returns

`string`

***

### getOverlapDetails()

> `static` **getOverlapDetails**(`firstList`, `secondList`): \[`AddressList`, `AddressList`, `AddressList`\]

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:286](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L286)

Gets the overlap details between two address lists. Returns [inFirstButNotSecond, overlaps, inSecondButNotFirst].

#### Parameters

##### firstList

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

##### secondList

[`iAddressList`](https://docs.bitbadges.io/sdk/reference/interfaces/i-address-list)

#### Returns

\[`AddressList`, `AddressList`, `AddressList`\]

***

### getReservedAddressList()

> `static` **getReservedAddressList**(`addressListId`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:303](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L303)

Returns the address list for a list ID, if it is a reserved ID (i.e. Mint, Manager, All, None, validly formatted address, ...)

#### Parameters

##### addressListId

`string`

#### Returns

`AddressList`

***

### getReservedTrackerList()

> `static` **getReservedTrackerList**(`trackerListId`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:296](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L296)

Returns the tracker list for a tracker ID list. Little different logic because tracker ID lists can only be reserved IDs (no storage)
and can be nonvalid addresses

#### Parameters

##### trackerListId

`string`

#### Returns

`AddressList`

***

### Reserved()

> `static` **Reserved**(`addressListId`): `AddressList`

Defined in: [packages/bitbadgesjs-sdk/src/core/addressLists.ts:203](https://github.com/BitBadges/bitbadgesjs/blob/master/packages/bitbadgesjs-sdk/src/core/addressLists.ts#L203)

Returns a reserved address list by ID.

#### Parameters

##### addressListId

`string`

#### Returns

`AddressList`
