# EVMChainEventsBrowser

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:47](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L47)

EVM on-chain event handler for front-end systems without access to fs, uses WS or long-polling to subscribe, might lose out on some events if the network is unreliable, front-end systems should take this into consideration and not rely purely on events

## Extended by

* [`EVMChainEvents`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/node/classes/EVMChainEvents.md)

## Implements

* [`ChainEvents`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/ChainEvents.md)<[`EVMSwapData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/EVMSwapData.md), [`EVMEventListenerState`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/type-aliases/EVMEventListenerState.md)\[]>

## Constructors

### Constructor

```
new EVMChainEventsBrowser(

   chainInterface, 

   evmSwapContract, 

   evmSpvVaultContract, 

   pollIntervalSeconds): EVMChainEventsBrowser;
```

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:110](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L110)

#### Parameters

| Parameter             | Type                                                                                                                               | Default value |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| `chainInterface`      | [`EVMChainInterface`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/EVMChainInterface.md)            | `undefined`   |
| `evmSwapContract`     | [`EVMSwapContract`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/EVMSwapContract.md)                | `undefined`   |
| `evmSpvVaultContract` | [`EVMSpvVaultContract`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/EVMSpvVaultContract.md)<`any`> | `undefined`   |
| `pollIntervalSeconds` | `number`                                                                                                                           | `5`           |

#### Returns

`EVMChainEventsBrowser`

## Methods

### init()

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

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:617](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L617)

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](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/ChainEvents.md#poll) to fetch new events |

#### Returns

`Promise`<`void`>

#### Implementation of

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

***

### poll()

```
poll(lastState?): Promise<object[]>;
```

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:433](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L433)

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                           |
| ------------ | ----------- | ------------------------------------- |
| `lastState?` | `object`\[] | The current state of the chain events |

#### Returns

`Promise`<`object`\[]>

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

#### Implementation of

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

***

### registerListener()

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

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:646](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L646)

Registers a new listener to listen for on-chain events

#### Parameters

| Parameter | Type                                                                                                                         | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `cbk`     | `EventListener`<[`EVMSwapData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/EVMSwapData.md)> |             |

#### Returns

`void`

#### Implementation of

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

***

### stop()

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

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:631](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L631)

Stops the event listener's polling and websocket subscription

#### Returns

`Promise`<`void`>

#### Implementation of

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

***

### unregisterListener()

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

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:653](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L653)

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

#### Parameters

| Parameter | Type                                                                                                                         | Description |
| --------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `cbk`     | `EventListener`<[`EVMSwapData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-chain-evm/src/classes/EVMSwapData.md)> |             |

#### Returns

`boolean`

#### Implementation of

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

***

### processEvents()

```
protected processEvents(events, currentBlock?): Promise<void>;
```

Defined in: [atomiq-chain-evm/src/evm/events/EVMChainEventsBrowser.ts:274](https://github.com/atomiqlabs/atomiq-chain-evm/blob/98ca6f16fbfb37e521f8c27b4f942642fe00c2ee/src/evm/events/EVMChainEventsBrowser.ts#L274)

Processes event as received from the chain, parses it & calls event listeners

#### Parameters

| Parameter       | Type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Description |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `events`        | ( \| `TypedEventLog`< \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`> \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`> \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`>> \| `TypedEventLog`< \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`> \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`> \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`> \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`> \| `TypedContractEvent`<`InputTuple`, `OutputTuple`, `OutputObject`>>)\[] |             |
| `currentBlock?` | `Block`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |             |

#### Returns

`Promise`<`void`>
