# ChainEvents\<T, S>

Defined in: [atomiq-base/src/events/ChainEvents.ts:16](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/events/ChainEvents.ts#L16)

An interface defining an on-chain events listener, allowing registering callbacks to receive on-chain events

## Type Parameters

| Type Parameter                                                                                                | Default type |
| ------------------------------------------------------------------------------------------------------------- | ------------ |
| `T` *extends* [`SwapData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/SwapData.md) | -            |
| `S` *extends* `any`                                                                                           | `any`        |

## Methods

### init()

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

Defined in: [atomiq-base/src/events/ChainEvents.ts:25](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/events/ChainEvents.ts#L25)

Initializes the chains event listener, by default this initiates a websocket events subscription or HTTP polling for new events.

#### Parameters

| Parameter          | Type      | Description                                                                                                                                                                                              |
| ------------------ | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `noAutomaticPoll?` | `boolean` | When this flag is passed the listener doesn't initiate the websocket events subscription or HTTP polling, instead it relies on the implementor calling the [ChainEvents.poll](#poll) to fetch new events |

#### Returns

`Promise`<`void`>

***

### poll()

```
poll(currentState?): Promise<S>;
```

Defined in: [atomiq-base/src/events/ChainEvents.ts:53](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/events/ChainEvents.ts#L53)

Triggers a single poll on the events instance, usually ran automatically, but should be called manually when initiated with `noAutomaticPoll`=`true`

#### Parameters

| Parameter       | Type | Description                           |
| --------------- | ---- | ------------------------------------- |
| `currentState?` | `S`  | The current state of the chain events |

#### Returns

`Promise`<`S`>

The new state that should be saved, persisted and passed to the subsequent `poll()` call

***

### registerListener()

```
registerListener(cbk): void;
```

Defined in: [atomiq-base/src/events/ChainEvents.ts:32](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/events/ChainEvents.ts#L32)

Registers a new listener to listen for on-chain events

#### Parameters

| Parameter | Type                 | Description |
| --------- | -------------------- | ----------- |
| `cbk`     | `EventListener`<`T`> |             |

#### Returns

`void`

***

### stop()

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

Defined in: [atomiq-base/src/events/ChainEvents.ts:44](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/events/ChainEvents.ts#L44)

Stops the event listener's polling and websocket subscription

#### Returns

`Promise`<`void`>

***

### unregisterListener()

```
unregisterListener(cbk): boolean;
```

Defined in: [atomiq-base/src/events/ChainEvents.ts:39](https://github.com/atomiqlabs/atomiq-base/blob/df344bedbab9ab3de863e3c2d9246e90bd861d04/src/events/ChainEvents.ts#L39)

Unregisters a previously registered events listener, returning `true` if success, `false` if failed

#### Parameters

| Parameter | Type                 | Description |
| --------- | -------------------- | ----------- |
| `cbk`     | `EventListener`<`T`> |             |

#### Returns

`boolean`
