@atomiqlabs/sdk 8.1.8 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  2. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  3. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  4. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  5. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  7. package/dist/enums/FeeType.d.ts +7 -0
  8. package/dist/enums/FeeType.js +7 -0
  9. package/dist/enums/SwapAmountType.d.ts +7 -0
  10. package/dist/enums/SwapAmountType.js +7 -0
  11. package/dist/enums/SwapDirection.d.ts +7 -0
  12. package/dist/enums/SwapDirection.js +7 -0
  13. package/dist/enums/SwapType.d.ts +62 -1
  14. package/dist/enums/SwapType.js +62 -1
  15. package/dist/errors/IntermediaryError.d.ts +4 -0
  16. package/dist/errors/IntermediaryError.js +1 -0
  17. package/dist/errors/RequestError.d.ts +15 -1
  18. package/dist/errors/RequestError.js +8 -0
  19. package/dist/errors/UserError.d.ts +1 -0
  20. package/dist/errors/UserError.js +1 -0
  21. package/dist/index.d.ts +4 -5
  22. package/dist/index.js +3 -4
  23. package/dist/intermediaries/Intermediary.d.ts +57 -10
  24. package/dist/intermediaries/Intermediary.js +37 -10
  25. package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
  26. package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
  27. package/dist/prices/RedundantSwapPrice.d.ts +24 -3
  28. package/dist/prices/RedundantSwapPrice.js +21 -1
  29. package/dist/prices/SingleSwapPrice.d.ts +9 -6
  30. package/dist/prices/SingleSwapPrice.js +10 -7
  31. package/dist/prices/SwapPriceWithChain.d.ts +54 -16
  32. package/dist/prices/SwapPriceWithChain.js +58 -20
  33. package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
  34. package/dist/prices/abstract/ISwapPrice.js +103 -55
  35. package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
  36. package/dist/prices/providers/BinancePriceProvider.js +7 -0
  37. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
  38. package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
  39. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
  40. package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
  41. package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
  42. package/dist/prices/providers/CustomPriceProvider.js +11 -0
  43. package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
  44. package/dist/prices/providers/KrakenPriceProvider.js +9 -0
  45. package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
  46. package/dist/prices/providers/OKXPriceProvider.js +6 -0
  47. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  48. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  49. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  50. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  51. package/dist/storage/UnifiedSwapStorage.js +29 -1
  52. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  53. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  54. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  55. package/dist/storage-browser/LocalStorageManager.js +25 -1
  56. package/dist/swapper/Swapper.d.ts +302 -221
  57. package/dist/swapper/Swapper.js +376 -344
  58. package/dist/swapper/SwapperFactory.d.ts +41 -17
  59. package/dist/swapper/SwapperFactory.js +23 -2
  60. package/dist/swapper/SwapperUtils.d.ts +75 -28
  61. package/dist/swapper/SwapperUtils.js +107 -60
  62. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  63. package/dist/swapper/SwapperWithChain.js +218 -64
  64. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  65. package/dist/swapper/SwapperWithSigner.js +190 -44
  66. package/dist/swaps/IAddressSwap.d.ts +10 -1
  67. package/dist/swaps/IAddressSwap.js +2 -1
  68. package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
  69. package/dist/swaps/IBTCWalletSwap.js +2 -1
  70. package/dist/swaps/IClaimableSwap.d.ts +36 -4
  71. package/dist/swaps/IClaimableSwap.js +2 -1
  72. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  73. package/dist/swaps/IRefundableSwap.d.ts +29 -3
  74. package/dist/swaps/IRefundableSwap.js +2 -1
  75. package/dist/swaps/ISwap.d.ts +159 -21
  76. package/dist/swaps/ISwap.js +90 -33
  77. package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
  78. package/dist/swaps/ISwapWithGasDrop.js +1 -0
  79. package/dist/swaps/ISwapWrapper.d.ts +157 -48
  80. package/dist/swaps/ISwapWrapper.js +130 -72
  81. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
  82. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  83. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  84. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  85. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  86. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  87. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  88. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  89. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  93. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
  94. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
  95. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
  97. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
  98. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
  99. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  101. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
  102. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
  103. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  105. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
  106. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
  107. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  109. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
  110. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
  111. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  113. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
  114. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
  115. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  117. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
  118. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
  119. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  120. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
  121. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
  122. package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
  123. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  124. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  125. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
  126. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
  127. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  128. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  129. package/dist/types/AmountData.d.ts +2 -1
  130. package/dist/types/CustomPriceFunction.d.ts +7 -1
  131. package/dist/types/SwapExecutionAction.d.ts +74 -4
  132. package/dist/types/SwapWithSigner.d.ts +4 -1
  133. package/dist/types/SwapWithSigner.js +5 -2
  134. package/dist/types/Token.d.ts +11 -5
  135. package/dist/types/Token.js +6 -3
  136. package/dist/types/TokenAmount.d.ts +3 -0
  137. package/dist/types/TokenAmount.js +2 -0
  138. package/dist/types/fees/Fee.d.ts +2 -1
  139. package/dist/types/fees/FeeBreakdown.d.ts +2 -1
  140. package/dist/types/fees/PercentagePPM.d.ts +2 -0
  141. package/dist/types/fees/PercentagePPM.js +1 -0
  142. package/dist/types/lnurl/LNURLPay.d.ts +14 -6
  143. package/dist/types/lnurl/LNURLPay.js +6 -2
  144. package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
  145. package/dist/types/lnurl/LNURLWithdraw.js +6 -2
  146. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
  147. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  148. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  149. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
  150. package/dist/utils/BitcoinUtils.d.ts +1 -0
  151. package/dist/utils/BitcoinUtils.js +5 -1
  152. package/dist/utils/SwapUtils.d.ts +56 -1
  153. package/dist/utils/SwapUtils.js +53 -1
  154. package/dist/utils/TokenUtils.d.ts +10 -2
  155. package/dist/utils/TokenUtils.js +12 -4
  156. package/package.json +3 -3
  157. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  158. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  159. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  160. package/src/enums/FeeType.ts +7 -0
  161. package/src/enums/SwapAmountType.ts +7 -0
  162. package/src/enums/SwapDirection.ts +7 -0
  163. package/src/enums/SwapType.ts +62 -2
  164. package/src/errors/IntermediaryError.ts +4 -0
  165. package/src/errors/RequestError.ts +15 -1
  166. package/src/errors/UserError.ts +1 -0
  167. package/src/index.ts +6 -5
  168. package/src/intermediaries/Intermediary.ts +57 -10
  169. package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
  170. package/src/prices/RedundantSwapPrice.ts +24 -4
  171. package/src/prices/SingleSwapPrice.ts +10 -7
  172. package/src/prices/SwapPriceWithChain.ts +59 -21
  173. package/src/prices/abstract/ISwapPrice.ts +114 -65
  174. package/src/prices/providers/BinancePriceProvider.ts +7 -0
  175. package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
  176. package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
  177. package/src/prices/providers/CustomPriceProvider.ts +11 -0
  178. package/src/prices/providers/KrakenPriceProvider.ts +9 -0
  179. package/src/prices/providers/OKXPriceProvider.ts +6 -0
  180. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  181. package/src/storage/IUnifiedStorage.ts +19 -7
  182. package/src/storage/UnifiedSwapStorage.ts +33 -3
  183. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  184. package/src/storage-browser/LocalStorageManager.ts +25 -1
  185. package/src/swapper/Swapper.ts +512 -378
  186. package/src/swapper/SwapperFactory.ts +44 -21
  187. package/src/swapper/SwapperUtils.ts +107 -60
  188. package/src/swapper/SwapperWithChain.ts +320 -81
  189. package/src/swapper/SwapperWithSigner.ts +263 -56
  190. package/src/swaps/IAddressSwap.ts +11 -1
  191. package/src/swaps/IBTCWalletSwap.ts +24 -8
  192. package/src/swaps/IClaimableSwap.ts +39 -4
  193. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  194. package/src/swaps/IRefundableSwap.ts +32 -3
  195. package/src/swaps/ISwap.ts +221 -82
  196. package/src/swaps/ISwapWithGasDrop.ts +6 -0
  197. package/src/swaps/ISwapWrapper.ts +212 -94
  198. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
  199. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  200. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  201. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  202. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
  203. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  204. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
  205. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
  206. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
  207. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  208. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
  209. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  210. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
  211. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  212. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
  213. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  214. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
  215. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  216. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
  217. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
  218. package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
  219. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  220. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
  221. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  222. package/src/types/AmountData.ts +2 -1
  223. package/src/types/CustomPriceFunction.ts +7 -1
  224. package/src/types/SwapExecutionAction.ts +84 -5
  225. package/src/types/SwapWithSigner.ts +7 -3
  226. package/src/types/Token.ts +12 -5
  227. package/src/types/TokenAmount.ts +3 -0
  228. package/src/types/fees/Fee.ts +2 -1
  229. package/src/types/fees/FeeBreakdown.ts +2 -1
  230. package/src/types/fees/PercentagePPM.ts +2 -0
  231. package/src/types/lnurl/LNURLPay.ts +14 -6
  232. package/src/types/lnurl/LNURLWithdraw.ts +12 -5
  233. package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
  234. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  235. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
  236. package/src/utils/BitcoinUtils.ts +5 -0
  237. package/src/utils/SwapUtils.ts +61 -1
  238. package/src/utils/TokenUtils.ts +12 -4
  239. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  240. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  241. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  242. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  243. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  244. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  245. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  246. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  247. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  248. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  249. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  250. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  251. package/dist/errors/PaymentAuthError.d.ts +0 -11
  252. package/dist/errors/PaymentAuthError.js +0 -23
  253. package/src/errors/PaymentAuthError.ts +0 -26
@@ -10,9 +10,24 @@ export type IEscrowSelfInitSwapInit<T extends SwapData> = IEscrowSwapInit<T> & {
10
10
  };
11
11
  export declare function isIEscrowSelfInitSwapInit<T extends SwapData>(obj: any): obj is IEscrowSelfInitSwapInit<T>;
12
12
  export type IEscrowSelfInitSwapDefinition<T extends ChainType, W extends IEscrowSwapWrapper<T, any>, S extends IEscrowSelfInitSwap<T>> = SwapTypeDefinition<T, W, S>;
13
+ /**
14
+ * Base class for escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives) where the
15
+ * user needs to initiate the escrow on the smart chain side
16
+ *
17
+ * @category Swaps
18
+ */
13
19
  export declare abstract class IEscrowSelfInitSwap<T extends ChainType = ChainType, D extends IEscrowSelfInitSwapDefinition<T, IEscrowSwapWrapper<T, D>, IEscrowSelfInitSwap<T, D, S>> = IEscrowSwapDefinition<T, IEscrowSwapWrapper<T, any>, IEscrowSelfInitSwap<T, any, any>>, S extends number = number> extends IEscrowSwap<T, D, S> {
14
- feeRate: string;
15
- signatureData?: SignatureData;
20
+ /**
21
+ * Fee rate to be used for the escrow initiation transaction
22
+ * @internal
23
+ */
24
+ protected readonly feeRate: string;
25
+ /**
26
+ * Signature data received from the intermediary (LP) allowing the user
27
+ * to initiate the swap escrow
28
+ * @internal
29
+ */
30
+ protected signatureData?: SignatureData;
16
31
  protected constructor(wrapper: D["Wrapper"], obj: any);
17
32
  protected constructor(wrapper: D["Wrapper"], swapInit: IEscrowSelfInitSwapInit<T["Data"]>);
18
33
  /**
@@ -20,27 +35,52 @@ export declare abstract class IEscrowSelfInitSwap<T extends ChainType = ChainTyp
20
35
  *
21
36
  * @param intervalSeconds How often to check (in seconds), default to 5s
22
37
  * @param abortSignal
23
- * @protected
38
+ * @internal
24
39
  */
25
40
  protected watchdogWaitTillSignatureExpiry(intervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
26
41
  /**
27
42
  * Get the estimated smart chain fee of the commit transaction
43
+ * @internal
28
44
  */
29
45
  protected getCommitFee(): Promise<bigint>;
30
46
  /**
31
- * Returns the transaction fee paid on the smart chain
47
+ * Returns the transaction fee paid on the smart chain side to initiate the escrow
32
48
  */
33
49
  getSmartChainNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>>;
34
50
  /**
35
- * Checks if the initiator/sender has enough balance to cover the transaction fee for processing the swap
51
+ * Checks if the initiator/sender has enough balance on the smart chain side
52
+ * to cover the transaction fee for processing the swap
36
53
  */
37
54
  abstract hasEnoughForTxFees(): Promise<{
38
55
  enoughBalance: boolean;
39
56
  balance: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
40
57
  required: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
41
58
  }>;
59
+ /**
60
+ * Returns transactions for initiating (committing) the escrow on the smart chain side
61
+ *
62
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
63
+ * (this is handled on swap creation, if you commit right after quoting, you can use `skipChecks=true`)
64
+ */
42
65
  abstract txsCommit(skipChecks?: boolean): Promise<T["TX"][]>;
66
+ /**
67
+ * Initiates (commits) the escrow on the smart chain side
68
+ *
69
+ * @param _signer Signer to sign the transactions with, must be the same as used in the initialization
70
+ * @param abortSignal Abort signal
71
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
72
+ * (this is handled on swap creation, if you commit right after quoting, you can use `skipChecks=true`)
73
+ * @param onBeforeTxSent Callback called before the transactions are broadcasted
74
+ */
43
75
  abstract commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
76
+ /**
77
+ * Waits till a swap is initiated (committed) on-chain, should be called after sending the commit
78
+ * transactions ({@link txsCommit}) manually to wait till the SDK processes the escrow
79
+ * initialization and updates the swap state accordingly
80
+ *
81
+ * @param abortSignal AbortSignal
82
+ */
83
+ abstract waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
44
84
  /**
45
85
  * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be committed on-chain anymore)
46
86
  */
@@ -48,6 +88,9 @@ export declare abstract class IEscrowSelfInitSwap<T extends ChainType = ChainTyp
48
88
  /**
49
89
  * Checks if the swap's quote is still valid
50
90
  */
51
- verifyQuoteValid(): Promise<boolean>;
91
+ _verifyQuoteValid(): Promise<boolean>;
92
+ /**
93
+ * @inheritDoc
94
+ */
52
95
  serialize(): any;
53
96
  }
@@ -15,6 +15,12 @@ function isIEscrowSelfInitSwapInit(obj) {
15
15
  (0, IEscrowSwap_1.isIEscrowSwapInit)(obj);
16
16
  }
17
17
  exports.isIEscrowSelfInitSwapInit = isIEscrowSelfInitSwapInit;
18
+ /**
19
+ * Base class for escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives) where the
20
+ * user needs to initiate the escrow on the smart chain side
21
+ *
22
+ * @category Swaps
23
+ */
18
24
  class IEscrowSelfInitSwap extends IEscrowSwap_1.IEscrowSwap {
19
25
  constructor(wrapper, swapInitOrObj) {
20
26
  super(wrapper, swapInitOrObj);
@@ -39,17 +45,17 @@ class IEscrowSelfInitSwap extends IEscrowSwap_1.IEscrowSwap {
39
45
  *
40
46
  * @param intervalSeconds How often to check (in seconds), default to 5s
41
47
  * @param abortSignal
42
- * @protected
48
+ * @internal
43
49
  */
44
50
  async watchdogWaitTillSignatureExpiry(intervalSeconds, abortSignal) {
45
- if (this.data == null || this.signatureData == null)
51
+ if (this._data == null || this.signatureData == null)
46
52
  throw new Error("Tried to await signature expiry but data or signature is null, invalid state?");
47
53
  intervalSeconds ??= 5;
48
54
  let expired = false;
49
55
  while (!expired) {
50
56
  await (0, TimeoutUtils_1.timeoutPromise)(intervalSeconds * 1000, abortSignal);
51
57
  try {
52
- expired = await this.wrapper.contract.isInitAuthorizationExpired(this.data, this.signatureData);
58
+ expired = await this.wrapper._contract.isInitAuthorizationExpired(this._data, this.signatureData);
53
59
  }
54
60
  catch (e) {
55
61
  this.logger.error("watchdogWaitTillSignatureExpiry(): Error when checking signature expiry: ", e);
@@ -62,18 +68,19 @@ class IEscrowSelfInitSwap extends IEscrowSwap_1.IEscrowSwap {
62
68
  //// Amounts & fees
63
69
  /**
64
70
  * Get the estimated smart chain fee of the commit transaction
71
+ * @internal
65
72
  */
66
73
  getCommitFee() {
67
- return this.wrapper.contract.getCommitFee(this._getInitiator(), this.getSwapData(), this.feeRate);
74
+ return this.wrapper._contract.getCommitFee(this._getInitiator(), this.getSwapData(), this.feeRate);
68
75
  }
69
76
  /**
70
- * Returns the transaction fee paid on the smart chain
77
+ * Returns the transaction fee paid on the smart chain side to initiate the escrow
71
78
  */
72
79
  async getSmartChainNetworkFee() {
73
- const swapContract = this.wrapper.contract;
80
+ const swapContract = this.wrapper._contract;
74
81
  return (0, TokenAmount_1.toTokenAmount)(await (swapContract.getRawCommitFee != null ?
75
82
  swapContract.getRawCommitFee(this._getInitiator(), this.getSwapData(), this.feeRate) :
76
- swapContract.getCommitFee(this._getInitiator(), this.getSwapData(), this.feeRate)), this.wrapper.getNativeToken(), this.wrapper.prices);
83
+ swapContract.getCommitFee(this._getInitiator(), this.getSwapData(), this.feeRate)), this.wrapper._getNativeToken(), this.wrapper._prices);
77
84
  }
78
85
  //////////////////////////////
79
86
  //// Quote verification
@@ -81,18 +88,18 @@ class IEscrowSelfInitSwap extends IEscrowSwap_1.IEscrowSwap {
81
88
  * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be committed on-chain anymore)
82
89
  */
83
90
  async _verifyQuoteDefinitelyExpired() {
84
- if (this.data == null || this.signatureData == null)
91
+ if (this._data == null || this.signatureData == null)
85
92
  throw new Error("data or signature data are null!");
86
- return this.wrapper.contract.isInitAuthorizationExpired(this.data, this.signatureData);
93
+ return this.wrapper._contract.isInitAuthorizationExpired(this._data, this.signatureData);
87
94
  }
88
95
  /**
89
96
  * Checks if the swap's quote is still valid
90
97
  */
91
- async verifyQuoteValid() {
92
- if (this.data == null || this.signatureData == null)
98
+ async _verifyQuoteValid() {
99
+ if (this._data == null || this.signatureData == null)
93
100
  throw new Error("data or signature data are null!");
94
101
  try {
95
- await this.wrapper.contract.isValidInitAuthorization(this._getInitiator(), this.data, this.signatureData, this.feeRate);
102
+ await this.wrapper._contract.isValidInitAuthorization(this._getInitiator(), this._data, this.signatureData, this.feeRate);
96
103
  return true;
97
104
  }
98
105
  catch (e) {
@@ -102,6 +109,9 @@ class IEscrowSelfInitSwap extends IEscrowSwap_1.IEscrowSwap {
102
109
  throw e;
103
110
  }
104
111
  }
112
+ /**
113
+ * @inheritDoc
114
+ */
105
115
  serialize() {
106
116
  return {
107
117
  ...super.serialize(),
@@ -8,43 +8,74 @@ export type IEscrowSwapInit<T extends SwapData> = ISwapInit & {
8
8
  data?: T;
9
9
  };
10
10
  export declare function isIEscrowSwapInit<T extends SwapData>(obj: any): obj is IEscrowSwapInit<T>;
11
+ /**
12
+ * Base class for escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
13
+ *
14
+ * @category Swaps
15
+ */
11
16
  export declare abstract class IEscrowSwap<T extends ChainType = ChainType, D extends IEscrowSwapDefinition<T, IEscrowSwapWrapper<T, D>, IEscrowSwap<T, D, S>> = IEscrowSwapDefinition<T, IEscrowSwapWrapper<T, any>, IEscrowSwap<T, any, any>>, S extends number = number> extends ISwap<T, D, S> {
12
- data?: T["Data"];
17
+ /**
18
+ * @internal
19
+ */
20
+ _data?: T["Data"];
13
21
  /**
14
22
  * Transaction IDs for the swap on the smart chain side
23
+ * @internal
24
+ */
25
+ _commitTxId?: string;
26
+ /**
27
+ * @internal
15
28
  */
16
- commitTxId?: string;
17
- refundTxId?: string;
18
- claimTxId?: string;
29
+ _refundTxId?: string;
30
+ /**
31
+ * @internal
32
+ */
33
+ _claimTxId?: string;
19
34
  protected constructor(wrapper: D["Wrapper"], obj: any);
20
35
  protected constructor(wrapper: D["Wrapper"], swapInit: IEscrowSwapInit<T["Data"]>);
36
+ /**
37
+ * Returns the swap escrow data for this swap
38
+ *
39
+ * @internal
40
+ */
21
41
  protected abstract getSwapData(): T["Data"];
22
42
  /**
23
43
  * Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for
24
44
  * lightning swaps the identifier hash is used instead of claim data hash
45
+ *
46
+ * @internal
25
47
  */
26
48
  protected getIdentifierHash(): Buffer;
27
49
  /**
28
50
  * Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for
29
51
  * lightning swaps the identifier hash is used instead of claim data hash
52
+ *
53
+ * @internal
30
54
  */
31
55
  protected getIdentifierHashString(): string;
56
+ /**
57
+ * @inheritDoc
58
+ * @internal
59
+ */
32
60
  _getEscrowHash(): string | null;
33
61
  /**
34
62
  * Returns the escrow hash - i.e. hash of the escrow data
35
63
  */
36
64
  getEscrowHash(): string | null;
37
65
  /**
38
- * Returns the claim data hash - i.e. hash passed to the claim handler
66
+ * Returns the claim data hash specifying the claim path of the escrow - i.e. hash passed to the claim handler
39
67
  */
40
68
  getClaimHash(): string;
69
+ /**
70
+ * @inheritDoc
71
+ */
41
72
  getId(): string;
42
73
  /**
43
74
  * Periodically checks the chain to see whether the swap is committed
44
75
  *
45
76
  * @param intervalSeconds How often to check (in seconds), default to 5s
46
77
  * @param abortSignal
47
- * @protected
78
+ * @internal
48
79
  */
49
80
  protected watchdogWaitTillCommited(intervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
50
81
  /**
@@ -52,19 +83,41 @@ export declare abstract class IEscrowSwap<T extends ChainType = ChainType, D ext
52
83
  *
53
84
  * @param intervalSeconds How often to check (in seconds), default to 5s
54
85
  * @param abortSignal
55
- * @protected
86
+ * @internal
56
87
  */
57
88
  protected watchdogWaitTillResult(intervalSeconds?: number, abortSignal?: AbortSignal): Promise<SwapPaidState | SwapExpiredState | SwapNotCommitedState>;
58
89
  /**
59
- * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be committed on-chain anymore)
90
+ * Whether on-chain state should be fetched for this swap
91
+ * @internal
60
92
  */
61
- abstract _verifyQuoteDefinitelyExpired(): Promise<boolean>;
93
+ abstract _shouldFetchOnchainState(): boolean;
62
94
  /**
63
- * Checks if the swap's quote is still valid
95
+ * Whether expiration status of the swap quote should be checked for this swap
96
+ * @internal
64
97
  */
65
- abstract verifyQuoteValid(): Promise<boolean>;
66
- abstract _shouldFetchCommitStatus(): boolean;
67
98
  abstract _shouldFetchExpiryStatus(): boolean;
99
+ /**
100
+ * @inheritDoc
101
+ *
102
+ * @param save Whether to save the new swap state or not
103
+ * @param quoteDefinitelyExpired Optionally pass whether the quote is definitely expired from a batch pre-fetch,
104
+ * fetched on-demand if not provided
105
+ * @param commitStatus Optionally pass the quote on-chain state from a batch pre-fetch, fetched on-demand if
106
+ * not provided
107
+ *
108
+ * @internal
109
+ */
68
110
  abstract _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState): Promise<boolean>;
111
+ /**
112
+ * Forcibly overrides current swap state from fetched on-chain swap state
113
+ *
114
+ * @param commitStatus Swap state fetched from the smart chain
115
+ *
116
+ * @internal
117
+ */
118
+ abstract _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
119
+ /**
120
+ * @inheritDoc
121
+ */
69
122
  serialize(): any;
70
123
  }
@@ -11,18 +11,23 @@ function isIEscrowSwapInit(obj) {
11
11
  (0, ISwap_1.isISwapInit)(obj);
12
12
  }
13
13
  exports.isIEscrowSwapInit = isIEscrowSwapInit;
14
+ /**
15
+ * Base class for escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
16
+ *
17
+ * @category Swaps
18
+ */
14
19
  class IEscrowSwap extends ISwap_1.ISwap {
15
20
  constructor(wrapper, swapInitOrObj) {
16
21
  super(wrapper, swapInitOrObj);
17
22
  if (isIEscrowSwapInit(swapInitOrObj)) {
18
- this.data = swapInitOrObj.data;
23
+ this._data = swapInitOrObj.data;
19
24
  }
20
25
  else {
21
26
  if (swapInitOrObj.data != null)
22
- this.data = new wrapper.swapDataDeserializer(swapInitOrObj.data);
23
- this.commitTxId = swapInitOrObj.commitTxId;
24
- this.claimTxId = swapInitOrObj.claimTxId;
25
- this.refundTxId = swapInitOrObj.refundTxId;
27
+ this._data = new wrapper._swapDataDeserializer(swapInitOrObj.data);
28
+ this._commitTxId = swapInitOrObj.commitTxId;
29
+ this._claimTxId = swapInitOrObj.claimTxId;
30
+ this._refundTxId = swapInitOrObj.refundTxId;
26
31
  }
27
32
  }
28
33
  //////////////////////////////
@@ -30,23 +35,31 @@ class IEscrowSwap extends ISwap_1.ISwap {
30
35
  /**
31
36
  * Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for
32
37
  * lightning swaps the identifier hash is used instead of claim data hash
38
+ *
39
+ * @internal
33
40
  */
34
41
  getIdentifierHash() {
35
42
  const claimHashBuffer = buffer_1.Buffer.from(this.getClaimHash(), "hex");
36
- if (this.randomNonce == null)
43
+ if (this._randomNonce == null)
37
44
  return claimHashBuffer;
38
- return buffer_1.Buffer.concat([claimHashBuffer, buffer_1.Buffer.from(this.randomNonce, "hex")]);
45
+ return buffer_1.Buffer.concat([claimHashBuffer, buffer_1.Buffer.from(this._randomNonce, "hex")]);
39
46
  }
40
47
  /**
41
48
  * Returns the identification hash of the swap, usually claim data hash, but can be overriden, e.g. for
42
49
  * lightning swaps the identifier hash is used instead of claim data hash
50
+ *
51
+ * @internal
43
52
  */
44
53
  getIdentifierHashString() {
45
54
  const identifierHash = this.getIdentifierHash();
46
55
  return identifierHash.toString("hex");
47
56
  }
57
+ /**
58
+ * @inheritDoc
59
+ * @internal
60
+ */
48
61
  _getEscrowHash() {
49
- return this.data?.getEscrowHash() ?? null;
62
+ return this._data?.getEscrowHash() ?? null;
50
63
  }
51
64
  /**
52
65
  * Returns the escrow hash - i.e. hash of the escrow data
@@ -55,11 +68,14 @@ class IEscrowSwap extends ISwap_1.ISwap {
55
68
  return this._getEscrowHash();
56
69
  }
57
70
  /**
58
- * Returns the claim data hash - i.e. hash passed to the claim handler
71
+ * Returns the claim data hash specifying the claim path of the escrow - i.e. hash passed to the claim handler
59
72
  */
60
73
  getClaimHash() {
61
74
  return this.getSwapData().getClaimHash();
62
75
  }
76
+ /**
77
+ * @inheritDoc
78
+ */
63
79
  getId() {
64
80
  return this.getIdentifierHashString();
65
81
  }
@@ -70,17 +86,17 @@ class IEscrowSwap extends ISwap_1.ISwap {
70
86
  *
71
87
  * @param intervalSeconds How often to check (in seconds), default to 5s
72
88
  * @param abortSignal
73
- * @protected
89
+ * @internal
74
90
  */
75
91
  async watchdogWaitTillCommited(intervalSeconds, abortSignal) {
76
- if (this.data == null)
92
+ if (this._data == null)
77
93
  throw new Error("Tried to await commitment but data is null, invalid state?");
78
94
  intervalSeconds ??= 5;
79
95
  let status = { type: base_1.SwapCommitStateType.NOT_COMMITED };
80
96
  while (status?.type === base_1.SwapCommitStateType.NOT_COMMITED) {
81
97
  await (0, TimeoutUtils_1.timeoutPromise)(intervalSeconds * 1000, abortSignal);
82
98
  try {
83
- status = await this.wrapper.contract.getCommitStatus(this._getInitiator(), this.data);
99
+ status = await this.wrapper._contract.getCommitStatus(this._getInitiator(), this._data);
84
100
  if (status?.type === base_1.SwapCommitStateType.NOT_COMMITED &&
85
101
  await this._verifyQuoteDefinitelyExpired())
86
102
  return false;
@@ -98,17 +114,17 @@ class IEscrowSwap extends ISwap_1.ISwap {
98
114
  *
99
115
  * @param intervalSeconds How often to check (in seconds), default to 5s
100
116
  * @param abortSignal
101
- * @protected
117
+ * @internal
102
118
  */
103
119
  async watchdogWaitTillResult(intervalSeconds, abortSignal) {
104
- if (this.data == null)
120
+ if (this._data == null)
105
121
  throw new Error("Tried to await result but data is null, invalid state?");
106
122
  intervalSeconds ??= 5;
107
123
  let status = { type: base_1.SwapCommitStateType.COMMITED };
108
124
  while (status?.type === base_1.SwapCommitStateType.COMMITED || status?.type === base_1.SwapCommitStateType.REFUNDABLE) {
109
125
  await (0, TimeoutUtils_1.timeoutPromise)(intervalSeconds * 1000, abortSignal);
110
126
  try {
111
- status = await this.wrapper.contract.getCommitStatus(this._getInitiator(), this.data);
127
+ status = await this.wrapper._contract.getCommitStatus(this._getInitiator(), this._data);
112
128
  }
113
129
  catch (e) {
114
130
  this.logger.error("watchdogWaitTillResult(): Error when fetching commit status: ", e);
@@ -118,13 +134,16 @@ class IEscrowSwap extends ISwap_1.ISwap {
118
134
  abortSignal.throwIfAborted();
119
135
  return status;
120
136
  }
137
+ /**
138
+ * @inheritDoc
139
+ */
121
140
  serialize() {
122
141
  return {
123
142
  ...super.serialize(),
124
- data: this.data != null ? this.data.serialize() : null,
125
- commitTxId: this.commitTxId,
126
- claimTxId: this.claimTxId,
127
- refundTxId: this.refundTxId
143
+ data: this._data != null ? this._data.serialize() : null,
144
+ commitTxId: this._commitTxId,
145
+ claimTxId: this._claimTxId,
146
+ refundTxId: this._refundTxId
128
147
  };
129
148
  }
130
149
  ;
@@ -10,10 +10,21 @@ import { SwapType } from "../../enums/SwapType";
10
10
  import { IEscrowSwap } from "./IEscrowSwap";
11
11
  import { Intermediary } from "../../intermediaries/Intermediary";
12
12
  export type IEscrowSwapDefinition<T extends ChainType, W extends IEscrowSwapWrapper<T, any>, S extends IEscrowSwap<T>> = SwapTypeDefinition<T, W, S>;
13
+ /**
14
+ * Base class for wrappers of escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
15
+ *
16
+ * @category Swaps
17
+ */
13
18
  export declare abstract class IEscrowSwapWrapper<T extends ChainType, D extends IEscrowSwapDefinition<T, IEscrowSwapWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends ISwapWrapper<T, D, O> {
14
19
  readonly abstract TYPE: SwapType;
15
- readonly contract: T["Contract"];
16
- readonly swapDataDeserializer: new (data: any) => T["Data"];
20
+ /**
21
+ * @internal
22
+ */
23
+ readonly _contract: T["Contract"];
24
+ /**
25
+ * @internal
26
+ */
27
+ readonly _swapDataDeserializer: new (data: any) => T["Data"];
17
28
  constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["Contract"], prices: ISwapPrice, tokens: WrapperCtorTokens, swapDataDeserializer: new (data: any) => T["Data"], options: O, events?: EventEmitter<{
18
29
  swapState: [ISwap];
19
30
  }>);
@@ -21,8 +32,9 @@ export declare abstract class IEscrowSwapWrapper<T extends ChainType, D extends
21
32
  * Pre-fetches signature verification data from the server's pre-sent promise, doesn't throw, instead returns null
22
33
  *
23
34
  * @param signDataPrefetch Promise that resolves when we receive "signDataPrefetch" from the LP in streaming mode
24
- * @protected
25
35
  * @returns Pre-fetched signature verification data or null if failed
36
+ *
37
+ * @internal
26
38
  */
27
39
  protected preFetchSignData(signDataPrefetch: Promise<any | null>): Promise<T["PreFetchVerification"] | undefined>;
28
40
  /**
@@ -34,47 +46,65 @@ export declare abstract class IEscrowSwapWrapper<T extends ChainType, D extends
34
46
  * @param feeRatePromise Pre-fetched fee rate promise
35
47
  * @param preFetchSignatureVerificationData Pre-fetched signature verification data
36
48
  * @param abortSignal
37
- * @protected
38
49
  * @returns Swap initialization signature expiry
39
50
  * @throws {SignatureVerificationError} when swap init signature is invalid
51
+ *
52
+ * @internal
40
53
  */
41
54
  protected verifyReturnedSignature(initiator: string, data: T["Data"], signature: SignatureData, feeRatePromise: Promise<any>, preFetchSignatureVerificationData: Promise<any>, abortSignal?: AbortSignal): Promise<number>;
42
55
  /**
43
56
  * Processes InitializeEvent for a given swap
44
57
  * @param swap
45
58
  * @param event
46
- * @protected
47
59
  * @returns Whether the swap was updated/changed
60
+ *
61
+ * @internal
48
62
  */
49
63
  protected abstract processEventInitialize(swap: D["Swap"], event: InitializeEvent<T["Data"]>): Promise<boolean>;
50
64
  /**
51
65
  * Processes ClaimEvent for a given swap
52
66
  * @param swap
53
67
  * @param event
54
- * @protected
55
68
  * @returns Whether the swap was updated/changed
69
+ *
70
+ * @internal
56
71
  */
57
72
  protected abstract processEventClaim(swap: D["Swap"], event: ClaimEvent<T["Data"]>): Promise<boolean>;
58
73
  /**
59
74
  * Processes RefundEvent for a given swap
60
75
  * @param swap
61
76
  * @param event
62
- * @protected
63
77
  * @returns Whether the swap was updated/changed
78
+ *
79
+ * @internal
64
80
  */
65
81
  protected abstract processEventRefund(swap: D["Swap"], event: RefundEvent<T["Data"]>): Promise<boolean>;
66
82
  /**
67
83
  * Processes a single SC on-chain event
68
- * @private
69
84
  * @param event
70
85
  * @param swap
86
+ *
87
+ * @internal
71
88
  */
72
89
  protected processEvent(event: SwapEvent<T["Data"]>, swap: D["Swap"]): Promise<void>;
90
+ /**
91
+ * @inheritDoc
92
+ * @internal
93
+ */
73
94
  protected _checkPastSwaps(pastSwaps: D["Swap"][]): Promise<{
74
95
  changedSwaps: D["Swap"][];
75
96
  removeSwaps: D["Swap"][];
76
97
  }>;
77
- recoverFromSwapDataAndState(init: {
98
+ /**
99
+ * Recovers a swap from smart chain on-chain data, please note that not all values for the recovered
100
+ * swaps might be populated, as some data is purely off-chain and can never be recovered purely
101
+ * from on-chain data.
102
+ *
103
+ * @param init Swap escrow initialization transaction and swap data
104
+ * @param state Current on-chain state of the swap
105
+ * @param lp Intermediary (LP) used as a counterparty for the swap
106
+ */
107
+ abstract recoverFromSwapDataAndState(init: {
78
108
  data: T["Data"];
79
109
  getInitTxId: () => Promise<string>;
80
110
  getTxBlock: () => Promise<{