# NostrMessenger

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:15](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L15)

An interface of a messenger, this is a generic data propagation layer, where parties can broadcast messages and others can listen to these broadcasted messages

## Implements

* [`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md)

## Constructors

### Constructor

```
new NostrMessenger(

   network, 

   relays, 

   options?): NostrMessenger;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:26](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L26)

#### Parameters

| Parameter                   | Type                                                                                                             |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `network`                   | [`BitcoinNetwork`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/enumerations/BitcoinNetwork.md) |
| `relays`                    | `string`\[]                                                                                                      |
| `options?`                  | { `reconnectTimeout?`: `number`; `wsImplementation?`: (`url`, `protocols?`) => `WebSocket`; }                    |
| `options.reconnectTimeout?` | `number`                                                                                                         |
| `options.wsImplementation?` | (`url`, `protocols?`) => `WebSocket`                                                                             |

#### Returns

`NostrMessenger`

## Properties

### callbacks

```
callbacks: (msg) => void[] = [];
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:23](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L23)

#### Parameters

| Parameter | Type      |
| --------- | --------- |
| `msg`     | `Message` |

#### Returns

`void`

***

### messageDeduplicator

```
messageDeduplicator: MessageDeduplicator;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:24](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L24)

***

### network

```
network: BitcoinNetwork;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:17](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L17)

***

### pool

```
pool: AbstractSimplePool;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:20](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L20)

***

### reconnectTimeout

```
reconnectTimeout: number;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:21](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L21)

***

### relays

```
relays: string[];
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:19](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L19)

***

### secretKey

```
secretKey: Uint8Array;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:18](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L18)

## Methods

### broadcast()

```
broadcast(msg): Promise<void>;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:47](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L47)

Broadcast a message to the data propagation layer

#### Parameters

| Parameter | Type      | Description |
| --------- | --------- | ----------- |
| `msg`     | `Message` |             |

#### Returns

`Promise`<`void`>

#### Implementation of

[`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md).[`broadcast`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md#broadcast)

***

### init()

```
init(): Promise<void>;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:59](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L59)

Initializes the messenger instance

#### Returns

`Promise`<`void`>

#### Implementation of

[`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md).[`init`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md#init)

***

### stop()

```
stop(): Promise<void>;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:64](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L64)

Stops the instance, releasing any resources used by it

#### Returns

`Promise`<`void`>

#### Implementation of

[`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md).[`stop`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md#stop)

***

### subscribe()

```
subscribe(callback): Promise<void>;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:111](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L111)

Adds a listener to listen to broadcasted messages

#### Parameters

| Parameter  | Type              | Description |
| ---------- | ----------------- | ----------- |
| `callback` | (`msg`) => `void` |             |

#### Returns

`Promise`<`void`>

#### Implementation of

[`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md).[`subscribe`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md#subscribe)

***

### unsubscribe()

```
unsubscribe(callback): Promise<boolean>;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:117](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L117)

Removes a listener

#### Parameters

| Parameter  | Type              | Description |
| ---------- | ----------------- | ----------- |
| `callback` | (`msg`) => `void` |             |

#### Returns

`Promise`<`boolean`>

#### Implementation of

[`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md).[`unsubscribe`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md#unsubscribe)

***

### warmup()

```
warmup(): any;
```

Defined in: [atomiq-messenger-nostr/src/NostrMessenger.ts:43](https://github.com/atomiqlabs/atomiq-messenger-nostr/blob/06f07f14861000bbd973cceab4829249a7920026/src/NostrMessenger.ts#L43)

The messenger implementation can expose a warmup function that warms up the connection before an actual broadcast takes place (this is useful for browsers environments where you might want to warmup the connection before the tab is backgrounded)

#### Returns

`any`

#### Implementation of

[`Messenger`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md).[`warmup`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/Messenger.md#warmup)
