# IFromBTCWrapper\<T, D, O>

Defined in: [atomiq-sdk/src/swaps/escrow\_swaps/frombtc/IFromBTCWrapper.ts:17](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts#L17)

Base class for wrappers of escrow-based Bitcoin (on-chain & lightning) -> Smart chain swaps

## Extends

* [`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md)<`T`, `D`, `O`>

## Extended by

* [`FromBTCWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/FromBTCWrapper.md)
* [`IFromBTCLNWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IFromBTCLNWrapper.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* `IFromBTCDefinition`<`T`, `IFromBTCWrapper`<`T`, `D`>, [`IEscrowSwap`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwap.md)<`T`, `D`>> | -                     |
| `O` *extends* `ISwapWrapperOptions`                                                                                                                                                   | `ISwapWrapperOptions` |

## Constructors

### Constructor

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

   chainIdentifier, 

   unifiedStorage, 

   unifiedChainEvents, 

   chain, 

   prices, 

   tokens, 

   lpApi, 

   options, 

   versionedContracts, 

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

Defined in: [atomiq-sdk/src/swaps/escrow\_swaps/IEscrowSwapWrapper.ts:62](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts#L62)

#### Parameters

| Parameter            | Type                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chainIdentifier`    | `string`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `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`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `versionedContracts` | { \[`version`: `string`]: `object`; }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `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`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/ISwapWrapper.md)<[`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

`IFromBTCWrapper`<`T`, `D`, `O`>

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`constructor`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#constructor)

## Properties

### \_versionedContracts

```
readonly _versionedContracts: object = {};
```

Defined in: [atomiq-sdk/src/swaps/escrow\_swaps/IEscrowSwapWrapper.ts:55](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts#L55)

#### Index Signature

```
[version: string]: object
```

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`_versionedContracts`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#_versionedcontracts)

***

### 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

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`chainIdentifier`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#chainidentifier)

***

### 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

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`events`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#events)

***

### TYPE

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

Defined in: [atomiq-sdk/src/swaps/escrow\_swaps/IEscrowSwapWrapper.ts:33](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts#L33)

Swap type

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`TYPE`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#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

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`checkPastSwaps`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#checkpastswaps)

***

### 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`>

#### Inherited from

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

***

### recoverFromSwapDataAndState()

```
abstract recoverFromSwapDataAndState(

   init, 

   state, 

   contractVersion, 

lp?): Promise<D["Swap"]>;
```

Defined in: [atomiq-sdk/src/swaps/escrow\_swaps/IEscrowSwapWrapper.ts:274](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts#L274)

Recovers a swap from smart chain on-chain data, please note that not all values for the recovered swaps might be populated, as some data is purely off-chain and can never be recovered purely from on-chain data.

#### Parameters

| Parameter          | Type                                                                                                                                                      | Description                                           |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| `init`             | { `data`: `T`\[`"Data"`]; `getInitTxId`: () => `Promise`<`string`>; `getTxBlock`: () => `Promise`<{ `blockHeight`: `number`; `blockTime`: `number`; }>; } | Swap escrow initialization transaction and swap data  |
| `init.data`        | `T`\[`"Data"`]                                                                                                                                            | -                                                     |
| `init.getInitTxId` | () => `Promise`<`string`>                                                                                                                                 | -                                                     |
| `init.getTxBlock`  | () => `Promise`<{ `blockHeight`: `number`; `blockTime`: `number`; }>                                                                                      | -                                                     |
| `state?`           | `SwapCommitState`                                                                                                                                         | Current on-chain state of the swap                    |
| `contractVersion?` | `string`                                                                                                                                                  | -                                                     |
| `lp?`              | [`Intermediary`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/Intermediary.md)                                                   | Intermediary (LP) used as a counterparty for the swap |

#### Returns

`Promise`<`D`\[`"Swap"`]>

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`recoverFromSwapDataAndState`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#recoverfromswapdataandstate)

***

### 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`>

#### Inherited from

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

***

### 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`>

#### Inherited from

[`IEscrowSwapWrapper`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md).[`tick`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/IEscrowSwapWrapper.md#tick)
