# ISwapWrapper\<T, D, O>

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:66](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L66)

Base abstract class for swap handler implementations

## Extended by

* [`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md)
* [`SpvFromBTCWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/SpvFromBTCWrapper.md)
* [`LnForGasWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/LnForGasWrapper.md)
* [`OnchainForGasWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/OnchainForGasWrapper.md)

## Type Parameters

| Type Parameter                                                                                                                                                         | Default type          |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `T` *extends* [`ChainType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/type-aliases/ChainType.md)                                                   | -                     |
| `D` *extends* `SwapTypeDefinition`<`T`, `ISwapWrapper`<`T`, `D`>, [`ISwap`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/ISwap.md)<`T`, `D`>> | -                     |
| `O` *extends* `ISwapWrapperOptions`                                                                                                                                    | `ISwapWrapperOptions` |

## Constructors

### Constructor

```
new ISwapWrapper<T, D, O>(

   chainIdentifier, 

   unifiedStorage, 

   unifiedChainEvents, 

   chain, 

   prices, 

   tokens, 

   lpApi, 

   options, 

events?): ISwapWrapper<T, D, O>;
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:171](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L171)

#### Parameters

| Parameter            | Type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chainIdentifier`    | `T`\[`"ChainId"`]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `unifiedStorage`     | [`UnifiedSwapStorage`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/UnifiedSwapStorage.md)<`T`>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `unifiedChainEvents` | `UnifiedSwapEventListener`<`T`>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `chain`              | `T`\[`"ChainInterface"`]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `prices`             | [`ISwapPrice`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/ISwapPrice.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `tokens`             | `WrapperCtorTokens`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `lpApi`              | `IntermediaryAPI`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `options`            | `O`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `events?`            | `EventEmitter`<{ `swapState`: \[[`ISwap`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/ISwap.md)<[`ChainType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/type-aliases/ChainType.md), `SwapTypeDefinition`<[`ChainType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/type-aliases/ChainType.md), `ISwapWrapper`<[`ChainType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/type-aliases/ChainType.md), `any`, `ISwapWrapperOptions`>, [`ISwap`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/ISwap.md)<[`ChainType`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/type-aliases/ChainType.md), `any`, `any`>>, `number`>]; }> |

#### Returns

`ISwapWrapper`<`T`, `D`, `O`>

## Properties

### chainIdentifier

```
readonly chainIdentifier: T["ChainId"];
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:164](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L164)

Chain identifier string of this wrapper

***

### events

```
readonly events: EventEmitter<{

  swapState: [D["Swap"]];

}>;
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:168](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L168)

Event emitter emitting `"swapState"` event when swap's state changes

***

### TYPE

```
abstract readonly TYPE: SwapType;
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:74](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L74)

Swap type

## Methods

### checkPastSwaps()

```
checkPastSwaps(pastSwaps?, noSave?): Promise<{

  changedSwaps: D["Swap"][];

  removeSwaps: D["Swap"][];

}>;
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:424](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L424)

Runs checks on all the known pending swaps, syncing their state from on-chain data

#### Parameters

| Parameter    | Type              | Description                                                                                                     |
| ------------ | ----------------- | --------------------------------------------------------------------------------------------------------------- |
| `pastSwaps?` | `D`\[`"Swap"`]\[] | Optional array of past swaps to check, otherwise all relevant swaps will be fetched from the persistent storage |
| `noSave?`    | `boolean`         | Whether to skip saving the swap changes in the persistent storage                                               |

#### Returns

`Promise`<{ `changedSwaps`: `D`\[`"Swap"`]\[]; `removeSwaps`: `D`\[`"Swap"`]\[]; }>

#### Remarks

Doesn't work properly if you pass non-persisted swaps

***

### init()

```
init(noTimers, noCheckPastSwaps): Promise<void>;
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:360](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L360)

Initializes the swap wrapper, needs to be called before any other action can be taken

#### Parameters

| Parameter          | Type      | Default value | Description                                                                                                                                                                                  |
| ------------------ | --------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `noTimers`         | `boolean` | `false`       | Whether to skip scheduling a tick timer for the swaps, if the tick timer is not initiated the swap states depending on e.g. expiry can be out of sync with the actual expiration of the swap |
| `noCheckPastSwaps` | `boolean` | `false`       | Whether to skip checking past swaps on initialization (by default all pending swaps are re-checked on init, and their state is synchronized from the on-chain data)                          |

#### Returns

`Promise`<`void`>

***

### stop()

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

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:401](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L401)

Un-subscribes from event listeners on the smart chain, terminates the tick interval and stops this wrapper

#### Returns

`Promise`<`void`>

***

### tick()

```
tick(swaps?, abortSignal?): Promise<void>;
```

Defined in: [atomiq-sdk/src/swaps/ISwapWrapper.ts:459](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/ISwapWrapper.ts#L459)

Invokes ISwap.\_tick on all the known swaps

#### Parameters

| Parameter      | Type              | Description                                                                                                              |
| -------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `swaps?`       | `D`\[`"Swap"`]\[] | Optional array of swaps to invoke `_tick()` on, otherwise all relevant swaps will be fetched from the persistent storage |
| `abortSignal?` | `AbortSignal`     | Abort signal                                                                                                             |

#### Returns

`Promise`<`void`>
