# IntermediaryDiscovery

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:162](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L162)

Discovery service for available intermediaries (liquidity providers)

## Extends

* `EventEmitter`

## Constructors

### Constructor

```
new IntermediaryDiscovery(

   swapContracts, 

   lpApi, 

   registryUrl, 

   nodeUrls?, 

   httpRequestTimeout?, 

   maxWaitForOthersTimeout?): IntermediaryDiscovery;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:200](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L200)

#### Parameters

| Parameter                  | Type                                          | Default value  |
| -------------------------- | --------------------------------------------- | -------------- |
| `swapContracts`            | { \[`chainIdentifier`: `string`]: `object`; } | `undefined`    |
| `lpApi`                    | `IntermediaryAPI`                             | `undefined`    |
| `registryUrl`              | `string`                                      | `REGISTRY_URL` |
| `nodeUrls?`                | `string`\[]                                   | `undefined`    |
| `httpRequestTimeout?`      | `number`                                      | `undefined`    |
| `maxWaitForOthersTimeout?` | `number`                                      | `undefined`    |

#### Returns

`IntermediaryDiscovery`

#### Overrides

```
EventEmitter.constructor
```

## Properties

### httpRequestTimeout?

```
optional httpRequestTimeout: number;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:182](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L182)

Timeout for the HTTP handshake (/info) requests sent to the intermediaries

***

### intermediaries

```
intermediaries: Intermediary[] = [];
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:167](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L167)

A current list of active intermediaries

***

### maxWaitForOthersTimeout?

```
optional maxWaitForOthersTimeout: number;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:186](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L186)

Maximum time (in millis) to wait for other intermediary's responses after the first one was founds

***

### registryUrl

```
registryUrl: string;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:177](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L177)

Registry URL used as a source for the list of intermediaries, this should be a link to a github-hosted JSON file

***

### swapContracts

```
swapContracts: object;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:172](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L172)

Swap contracts for checking intermediary signatures

#### Index Signature

```
[chainIdentifier: string]: object
```

## Methods

### getIntermediary()

```
getIntermediary(url, abortSignal?): Promise<Intermediary>;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:344](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L344)

Returns the intermediary at the provided URL, either from the already fetched list of LPs or fetches the data on-demand, by sending the handshake HTTP request (/info) to the LP.

Doesn't save the fetched intermediary to the list of intermediaries if it isn't already part of the known intermediaries

#### Parameters

| Parameter      | Type          | Description                                               |
| -------------- | ------------- | --------------------------------------------------------- |
| `url`          | `string`      | Base URL of the intermediary, which accepts HTTP requests |
| `abortSignal?` | `AbortSignal` |                                                           |

#### Returns

`Promise`<[`Intermediary`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/Intermediary.md)>

***

### getMultichainSwapBounds()

```
getMultichainSwapBounds(): MultichainSwapBounds;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:394](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L394)

Returns known swap bounds (in satoshis - BTC) by aggregating values from all known intermediaries

#### Returns

`MultichainSwapBounds`

***

### getSwapBounds()

```
getSwapBounds(chainIdentifier): SwapBounds;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:428](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L428)

Returns aggregate swap bounds (in satoshis - BTC) as indicated by the intermediaries

#### Parameters

| Parameter         | Type     |
| ----------------- | -------- |
| `chainIdentifier` | `string` |

#### Returns

`SwapBounds`

***

### getSwapCandidates()

```
getSwapCandidates(

   chainIdentifier, 

   swapType, 

   tokenAddress, 

   amount?, 

   count?): Intermediary[];
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:507](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L507)

Returns swap candidates for a specific swap type & token address

#### Parameters

| Parameter         | Type                                                                                                 | Description                               |
| ----------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| `chainIdentifier` | `string`                                                                                             | Chain identifier of the smart chain       |
| `swapType`        | [`SwapType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/enumerations/SwapType.md) | Swap protocol type                        |
| `tokenAddress`    | `string`                                                                                             | Token address                             |
| `amount?`         | `bigint`                                                                                             | Amount to be swapped in sats - BTC        |
| `count?`          | `number`                                                                                             | How many intermediaries to return at most |

#### Returns

[`Intermediary`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/Intermediary.md)\[]

#### Remarks

Also filters the LPs based on supported swap versions

***

### getSwapMaximum()

```
getSwapMaximum(

   chainIdentifier, 

   swapType, 

   tokenAddress): number;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:484](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L484)

Returns the aggregate swap maximum (in satoshis - BTC) for a specific swap type & token as indicated by the intermediaries

#### Parameters

| Parameter         | Type                                                                                                 | Description                         |
| ----------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------- |
| `chainIdentifier` | `string`                                                                                             | Chain identifier of the smart chain |
| `swapType`        | [`SwapType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/enumerations/SwapType.md) | Swap protocol type                  |
| `tokenAddress`    | `string`                                                                                             | Token address                       |

#### Returns

`number`

***

### getSwapMinimum()

```
getSwapMinimum(

   chainIdentifier, 

   swapType, 

   tokenAddress): number;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:464](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L464)

Returns the aggregate swap minimum (in satoshis - BTC) for a specific swap type & token as indicated by the intermediaries

#### Parameters

| Parameter         | Type                                                                                                 | Description                         |
| ----------------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------- |
| `chainIdentifier` | `string`                                                                                             | Chain identifier of the smart chain |
| `swapType`        | [`SwapType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/enumerations/SwapType.md) | Swap protocol type                  |
| `tokenAddress`    | `string`                                                                                             | Token address                       |

#### Returns

`number`

***

### init()

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

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:386](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L386)

Initializes the discovery by fetching/reloading intermediaries

#### Parameters

| Parameter      | Type          | Description |
| -------------- | ------------- | ----------- |
| `abortSignal?` | `AbortSignal` |             |

#### Returns

`Promise`<`void`>

***

### reloadIntermediaries()

```
reloadIntermediaries(abortSignal?): Promise<void>;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:355](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L355)

Reloads the saves a list of intermediaries

#### Parameters

| Parameter      | Type          | Description |
| -------------- | ------------- | ----------- |
| `abortSignal?` | `AbortSignal` |             |

#### Returns

`Promise`<`void`>

***

### removeIntermediary()

```
removeIntermediary(intermediary): boolean;
```

Defined in: [atomiq-sdk/src/intermediaries/IntermediaryDiscovery.ts:537](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/intermediaries/IntermediaryDiscovery.ts#L537)

Removes a specific intermediary from the list of active intermediaries (used for blacklisting)

#### Parameters

| Parameter      | Type                                                                                                    | Description |
| -------------- | ------------------------------------------------------------------------------------------------------- | ----------- |
| `intermediary` | [`Intermediary`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/Intermediary.md) |             |

#### Returns

`boolean`
