@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
@@ -3,26 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IEscrowSwapWrapper = void 0;
4
4
  const ISwapWrapper_1 = require("../ISwapWrapper");
5
5
  const base_1 = require("@atomiqlabs/base");
6
+ /**
7
+ * Base class for wrappers of escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
8
+ *
9
+ * @category Swaps
10
+ */
6
11
  class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
7
12
  constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, options, events) {
8
13
  super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, options, events);
9
- this.swapDataDeserializer = swapDataDeserializer;
10
- this.contract = contract;
14
+ this._swapDataDeserializer = swapDataDeserializer;
15
+ this._contract = contract;
11
16
  }
12
17
  /**
13
18
  * Pre-fetches signature verification data from the server's pre-sent promise, doesn't throw, instead returns null
14
19
  *
15
20
  * @param signDataPrefetch Promise that resolves when we receive "signDataPrefetch" from the LP in streaming mode
16
- * @protected
17
21
  * @returns Pre-fetched signature verification data or null if failed
22
+ *
23
+ * @internal
18
24
  */
19
25
  preFetchSignData(signDataPrefetch) {
20
- if (this.contract.preFetchForInitSignatureVerification == null)
26
+ if (this._contract.preFetchForInitSignatureVerification == null)
21
27
  return Promise.resolve(undefined);
22
28
  return signDataPrefetch.then(obj => {
23
29
  if (obj == null)
24
30
  return undefined;
25
- return this.contract.preFetchForInitSignatureVerification(obj);
31
+ return this._contract.preFetchForInitSignatureVerification(obj);
26
32
  }).catch(e => {
27
33
  this.logger.error("preFetchSignData(): Error: ", e);
28
34
  });
@@ -36,20 +42,22 @@ class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
36
42
  * @param feeRatePromise Pre-fetched fee rate promise
37
43
  * @param preFetchSignatureVerificationData Pre-fetched signature verification data
38
44
  * @param abortSignal
39
- * @protected
40
45
  * @returns Swap initialization signature expiry
41
46
  * @throws {SignatureVerificationError} when swap init signature is invalid
47
+ *
48
+ * @internal
42
49
  */
43
50
  async verifyReturnedSignature(initiator, data, signature, feeRatePromise, preFetchSignatureVerificationData, abortSignal) {
44
51
  const [feeRate, preFetchedSignatureData] = await Promise.all([feeRatePromise, preFetchSignatureVerificationData]);
45
- await this.contract.isValidInitAuthorization(initiator, data, signature, feeRate, preFetchedSignatureData);
46
- return await this.contract.getInitAuthorizationExpiry(data, signature, preFetchedSignatureData);
52
+ await this._contract.isValidInitAuthorization(initiator, data, signature, feeRate, preFetchedSignatureData);
53
+ return await this._contract.getInitAuthorizationExpiry(data, signature, preFetchedSignatureData);
47
54
  }
48
55
  /**
49
56
  * Processes a single SC on-chain event
50
- * @private
51
57
  * @param event
52
58
  * @param swap
59
+ *
60
+ * @internal
53
61
  */
54
62
  async processEvent(event, swap) {
55
63
  if (swap == null)
@@ -57,22 +65,22 @@ class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
57
65
  let swapChanged = false;
58
66
  if (event instanceof base_1.InitializeEvent) {
59
67
  swapChanged = await this.processEventInitialize(swap, event);
60
- if (event.meta?.txId != null && swap.commitTxId !== event.meta.txId) {
61
- swap.commitTxId = event.meta.txId;
68
+ if (event.meta?.txId != null && swap._commitTxId !== event.meta.txId) {
69
+ swap._commitTxId = event.meta.txId;
62
70
  swapChanged ||= true;
63
71
  }
64
72
  }
65
73
  if (event instanceof base_1.ClaimEvent) {
66
74
  swapChanged = await this.processEventClaim(swap, event);
67
- if (event.meta?.txId != null && swap.claimTxId !== event.meta.txId) {
68
- swap.claimTxId = event.meta.txId;
75
+ if (event.meta?.txId != null && swap._claimTxId !== event.meta.txId) {
76
+ swap._claimTxId = event.meta.txId;
69
77
  swapChanged ||= true;
70
78
  }
71
79
  }
72
80
  if (event instanceof base_1.RefundEvent) {
73
81
  swapChanged = await this.processEventRefund(swap, event);
74
- if (event.meta?.txId != null && swap.refundTxId !== event.meta.txId) {
75
- swap.refundTxId = event.meta.txId;
82
+ if (event.meta?.txId != null && swap._refundTxId !== event.meta.txId) {
83
+ swap._refundTxId = event.meta.txId;
76
84
  swapChanged ||= true;
77
85
  }
78
86
  }
@@ -81,6 +89,10 @@ class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
81
89
  await swap._saveAndEmit();
82
90
  }
83
91
  }
92
+ /**
93
+ * @inheritDoc
94
+ * @internal
95
+ */
84
96
  async _checkPastSwaps(pastSwaps) {
85
97
  const changedSwaps = [];
86
98
  const removeSwaps = [];
@@ -91,13 +103,13 @@ class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
91
103
  //Check expiry
92
104
  swapExpiredStatus[pastSwap.getId()] = await pastSwap._verifyQuoteDefinitelyExpired();
93
105
  }
94
- if (pastSwap._shouldFetchCommitStatus()) {
106
+ if (pastSwap._shouldFetchOnchainState()) {
95
107
  //Add to swaps for which status should be checked
96
- if (pastSwap.data != null)
108
+ if (pastSwap._data != null)
97
109
  checkStatusSwaps.push(pastSwap);
98
110
  }
99
111
  }
100
- const swapStatuses = await this.contract.getCommitStatuses(checkStatusSwaps.map(val => ({ signer: val._getInitiator(), swapData: val.data })));
112
+ const swapStatuses = await this._contract.getCommitStatuses(checkStatusSwaps.map(val => ({ signer: val._getInitiator(), swapData: val._data })));
101
113
  for (let pastSwap of checkStatusSwaps) {
102
114
  const escrowHash = pastSwap.getEscrowHash();
103
115
  const shouldSave = await pastSwap._sync(false, swapExpiredStatus[pastSwap.getId()], escrowHash == null ? undefined : swapStatuses[escrowHash]);
@@ -115,8 +127,5 @@ class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
115
127
  removeSwaps
116
128
  };
117
129
  }
118
- recoverFromSwapDataAndState(init, state, lp) {
119
- return Promise.resolve(null);
120
- }
121
130
  }
122
131
  exports.IEscrowSwapWrapper = IEscrowSwapWrapper;
@@ -14,7 +14,15 @@ import { PaymentRequestObject, TagsObject } from "@atomiqlabs/bolt11";
14
14
  import { IEscrowSwap } from "../IEscrowSwap";
15
15
  import { LNURLWithdrawParamsWithUrl } from "../../../types/lnurl/LNURLWithdraw";
16
16
  export type IFromBTCLNDefinition<T extends ChainType, W extends IFromBTCLNWrapper<T, any>, S extends IEscrowSwap<T>> = IFromBTCDefinition<T, W, S>;
17
+ /**
18
+ * Base class for wrappers of escrow-based Lightning -> Smart chain swaps
19
+ *
20
+ * @category Swaps
21
+ */
17
22
  export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends IFromBTCLNDefinition<T, IFromBTCLNWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends IFromBTCWrapper<T, D, O> {
23
+ /**
24
+ * @internal
25
+ */
18
26
  protected readonly lnApi: LightningNetworkApi;
19
27
  /**
20
28
  * @param chainIdentifier
@@ -33,16 +41,11 @@ export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends I
33
41
  swapState: [IEscrowSwap];
34
42
  }>);
35
43
  /**
36
- * Returns the swap expiry, leaving enough time for the user to claim the HTLC
37
- *
38
- * @param data Parsed swap data
39
- */
40
- getHtlcTimeout(data: SwapData): bigint;
41
- /**
42
- * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap\
44
+ * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap
43
45
  *
44
- * @private
45
46
  * @returns Hash pre-image & payment hash
47
+ *
48
+ * @internal
46
49
  */
47
50
  protected getSecretAndHash(): {
48
51
  secret: Buffer;
@@ -51,10 +54,12 @@ export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends I
51
54
  /**
52
55
  * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null
53
56
  *
54
- * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary thorugh
57
+ * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary through
55
58
  * streaming
56
- * @private
59
+ *
57
60
  * @returns LN Node liquidity
61
+ *
62
+ * @internal
58
63
  */
59
64
  protected preFetchLnCapacity(pubkeyPromise: Promise<string | null>): Promise<LNNodeLiquidity | null>;
60
65
  /**
@@ -62,13 +67,14 @@ export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends I
62
67
  *
63
68
  * @param lp Intermediary
64
69
  * @param decodedPr Decoded bolt11 lightning network invoice
65
- * @param amountIn Amount to be paid for the swap in sats
66
70
  * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()
67
- * @param abortSignal
68
- * @private
71
+ * @param abortSignal Abort signal
72
+ *
69
73
  * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity
70
74
  * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would
71
75
  * deplete more than half of the liquidity
76
+ *
77
+ * @internal
72
78
  */
73
79
  protected verifyLnNodeCapacity(lp: Intermediary, decodedPr: PaymentRequestObject & {
74
80
  tagsObject: TagsObject;
@@ -77,9 +83,19 @@ export declare abstract class IFromBTCLNWrapper<T extends ChainType, D extends I
77
83
  * Parses and fetches lnurl withdraw params from the specified lnurl
78
84
  *
79
85
  * @param lnurl LNURL to be parsed and fetched
80
- * @param abortSignal
81
- * @private
86
+ * @param abortSignal Abort signal
87
+ *
82
88
  * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw
89
+ *
90
+ * @internal
83
91
  */
84
92
  protected getLNURLWithdraw(lnurl: string | LNURLWithdrawParamsWithUrl, abortSignal: AbortSignal): Promise<LNURLWithdrawParamsWithUrl>;
93
+ /**
94
+ * Returns the swap expiry, leaving enough time for the user to claim the HTLC
95
+ *
96
+ * @param data Parsed swap data
97
+ *
98
+ * @internal
99
+ */
100
+ _getHtlcTimeout(data: SwapData): bigint;
85
101
  }
@@ -8,6 +8,11 @@ const IntermediaryError_1 = require("../../../errors/IntermediaryError");
8
8
  const LNURL_1 = require("../../../lnurl/LNURL");
9
9
  const UserError_1 = require("../../../errors/UserError");
10
10
  const sha256_1 = require("@noble/hashes/sha256");
11
+ /**
12
+ * Base class for wrappers of escrow-based Lightning -> Smart chain swaps
13
+ *
14
+ * @category Swaps
15
+ */
11
16
  class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
12
17
  /**
13
18
  * @param chainIdentifier
@@ -27,18 +32,11 @@ class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
27
32
  this.lnApi = lnApi;
28
33
  }
29
34
  /**
30
- * Returns the swap expiry, leaving enough time for the user to claim the HTLC
35
+ * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap
31
36
  *
32
- * @param data Parsed swap data
33
- */
34
- getHtlcTimeout(data) {
35
- return data.getExpiry() - 600n;
36
- }
37
- /**
38
- * Generates a new 32-byte secret to be used as pre-image for lightning network invoice & HTLC swap\
39
- *
40
- * @private
41
37
  * @returns Hash pre-image & payment hash
38
+ *
39
+ * @internal
42
40
  */
43
41
  getSecretAndHash() {
44
42
  const secret = (0, Utils_1.randomBytes)(32);
@@ -48,10 +46,12 @@ class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
48
46
  /**
49
47
  * Pre-fetches intermediary's LN node capacity, doesn't throw, instead returns null
50
48
  *
51
- * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary thorugh
49
+ * @param pubkeyPromise Promise that resolves when we receive "lnPublicKey" param from the intermediary through
52
50
  * streaming
53
- * @private
51
+ *
54
52
  * @returns LN Node liquidity
53
+ *
54
+ * @internal
55
55
  */
56
56
  preFetchLnCapacity(pubkeyPromise) {
57
57
  return pubkeyPromise.then(pubkey => {
@@ -68,13 +68,14 @@ class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
68
68
  *
69
69
  * @param lp Intermediary
70
70
  * @param decodedPr Decoded bolt11 lightning network invoice
71
- * @param amountIn Amount to be paid for the swap in sats
72
71
  * @param lnCapacityPrefetchPromise Pre-fetch for LN node capacity, preFetchLnCapacity()
73
- * @param abortSignal
74
- * @private
72
+ * @param abortSignal Abort signal
73
+ *
75
74
  * @throws {IntermediaryError} if the lightning network node doesn't have enough inbound liquidity
76
75
  * @throws {Error} if the lightning network node's inbound liquidity might be enough, but the swap would
77
76
  * deplete more than half of the liquidity
77
+ *
78
+ * @internal
78
79
  */
79
80
  async verifyLnNodeCapacity(lp, decodedPr, lnCapacityPrefetchPromise, abortSignal) {
80
81
  if (decodedPr.payeeNodeKey == null)
@@ -84,6 +85,8 @@ class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
84
85
  const _result = await lnCapacityPrefetchPromise ?? await this.lnApi.getLNNodeLiquidity(decodedPr.payeeNodeKey);
85
86
  if (_result === null)
86
87
  throw new IntermediaryError_1.IntermediaryError("LP's lightning node not found in the lightning network graph!");
88
+ if (abortSignal != null)
89
+ abortSignal.throwIfAborted();
87
90
  lp.lnData = _result;
88
91
  if (decodedPr.payeeNodeKey !== _result.publicKey)
89
92
  throw new IntermediaryError_1.IntermediaryError("Invalid pr returned - payee pubkey");
@@ -97,19 +100,31 @@ class IFromBTCLNWrapper extends IFromBTCWrapper_1.IFromBTCWrapper {
97
100
  * Parses and fetches lnurl withdraw params from the specified lnurl
98
101
  *
99
102
  * @param lnurl LNURL to be parsed and fetched
100
- * @param abortSignal
101
- * @private
103
+ * @param abortSignal Abort signal
104
+ *
102
105
  * @throws {UserError} if the LNURL is invalid or if it's not a LNURL-withdraw
106
+ *
107
+ * @internal
103
108
  */
104
109
  async getLNURLWithdraw(lnurl, abortSignal) {
105
110
  if (typeof (lnurl) !== "string")
106
111
  return lnurl;
107
- const res = await LNURL_1.LNURL.getLNURL(lnurl, true, this.options.getRequestTimeout, abortSignal);
112
+ const res = await LNURL_1.LNURL.getLNURL(lnurl, true, this._options.getRequestTimeout, abortSignal);
108
113
  if (res == null)
109
114
  throw new UserError_1.UserError("Invalid LNURL");
110
115
  if (res.tag !== "withdrawRequest")
111
116
  throw new UserError_1.UserError("Not a LNURL-withdrawal");
112
117
  return res;
113
118
  }
119
+ /**
120
+ * Returns the swap expiry, leaving enough time for the user to claim the HTLC
121
+ *
122
+ * @param data Parsed swap data
123
+ *
124
+ * @internal
125
+ */
126
+ _getHtlcTimeout(data) {
127
+ return data.getExpiry() - 600n;
128
+ }
114
129
  }
115
130
  exports.IFromBTCLNWrapper = IFromBTCLNWrapper;
@@ -6,88 +6,153 @@ import { IEscrowSelfInitSwap, IEscrowSelfInitSwapDefinition, IEscrowSelfInitSwap
6
6
  import { FeeType } from "../../../enums/FeeType";
7
7
  import { TokenAmount } from "../../../types/TokenAmount";
8
8
  import { BtcToken, SCToken } from "../../../types/Token";
9
+ import { IClaimableSwap } from "../../IClaimableSwap";
9
10
  export type IFromBTCSelfInitDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IFromBTCSelfInitSwap<T>> = IEscrowSelfInitSwapDefinition<T, W, S>;
10
- export declare abstract class IFromBTCSelfInitSwap<T extends ChainType = ChainType, D extends IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, D>, IFromBTCSelfInitSwap<T, D, S>> = IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, any>, IFromBTCSelfInitSwap<T, any, any>>, S extends number = number> extends IEscrowSelfInitSwap<T, D, S> implements IAddressSwap {
11
+ /**
12
+ * Base class for legacy escrow-based Bitcoin (on-chain & lightning) -> Smart chain swaps,
13
+ * which require the user to manually initiate the escrow on the destination smart chain
14
+ *
15
+ * @category Swaps
16
+ */
17
+ export declare abstract class IFromBTCSelfInitSwap<T extends ChainType = ChainType, D extends IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, D>, IFromBTCSelfInitSwap<T, D, S>> = IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, any>, IFromBTCSelfInitSwap<T, any, any>>, S extends number = number> extends IEscrowSelfInitSwap<T, D, S> implements IAddressSwap, IClaimableSwap<T, D, S> {
18
+ /**
19
+ * @internal
20
+ */
11
21
  protected abstract readonly inputToken: BtcToken;
12
22
  protected constructor(wrapper: D["Wrapper"], init: IEscrowSelfInitSwapInit<T["Data"]>);
13
23
  protected constructor(wrapper: D["Wrapper"], obj: any);
14
24
  /**
15
- * In case swapFee in BTC is not supplied it recalculates it based on swap price
16
- * @protected
25
+ * @inheritDoc
26
+ * @internal
17
27
  */
18
28
  protected tryRecomputeSwapPrice(): void;
19
29
  /**
20
- * Returns the bitcoin address or lightning invoice to be paid for the swap
30
+ * @inheritDoc
21
31
  */
22
32
  abstract getAddress(): string;
23
33
  /**
24
- * Returns a string that can be displayed as QR code representation of the address or lightning invoice
25
- * (with bitcoin: or lightning: prefix)
34
+ * @inheritDoc
26
35
  */
27
36
  abstract getHyperlink(): string;
37
+ /**
38
+ * @inheritDoc
39
+ */
28
40
  abstract isClaimable(): boolean;
29
41
  /**
30
42
  * Returns if the swap can be committed
43
+ * @internal
31
44
  */
32
45
  protected abstract canCommit(): boolean;
46
+ /**
47
+ * @inheritDoc
48
+ * @internal
49
+ */
33
50
  _getInitiator(): string;
51
+ /**
52
+ * @inheritDoc
53
+ */
34
54
  getOutputTxId(): string | null;
55
+ /**
56
+ * @inheritDoc
57
+ */
35
58
  getOutputAddress(): string | null;
59
+ /**
60
+ * @inheritDoc
61
+ */
36
62
  requiresAction(): boolean;
63
+ /**
64
+ * Returns the swap output amount in destination token based units without any fees, this
65
+ * value is therefore always higher than the actual received output.
66
+ *
67
+ * @internal
68
+ */
37
69
  protected getOutAmountWithoutFee(): bigint;
70
+ /**
71
+ * Returns the swap fee charged by the intermediary (LP) on this swap
72
+ *
73
+ * @internal
74
+ */
38
75
  protected getSwapFee(): Fee<T["ChainId"], BtcToken, SCToken<T["ChainId"]>>;
76
+ /**
77
+ * @inheritDoc
78
+ */
39
79
  getFee(): Fee;
80
+ /**
81
+ * @inheritDoc
82
+ */
40
83
  getFeeBreakdown(): [{
41
84
  type: FeeType.SWAP;
42
85
  fee: Fee<T["ChainId"], BtcToken, SCToken<T["ChainId"]>>;
43
86
  }];
87
+ /**
88
+ * @inheritDoc
89
+ */
44
90
  getOutputToken(): SCToken<T["ChainId"]>;
91
+ /**
92
+ * @inheritDoc
93
+ */
45
94
  getOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
95
+ /**
96
+ * @inheritDoc
97
+ */
46
98
  abstract getInput(): TokenAmount<T["ChainId"], BtcToken>;
99
+ /**
100
+ * @inheritDoc
101
+ */
47
102
  getInputWithoutFee(): TokenAmount<T["ChainId"], BtcToken>;
48
- getSecurityDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
49
- getTotalDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
103
+ /**
104
+ * @inheritDoc
105
+ */
50
106
  hasEnoughForTxFees(): Promise<{
51
107
  enoughBalance: boolean;
52
108
  balance: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
53
109
  required: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
54
110
  }>;
55
111
  /**
56
- * Returns the transactions required for committing the swap on-chain, locking the tokens from the intermediary
57
- * in an HTLC or PTLC
112
+ * Returns the amount of native token of the destination chain locked up during initialization of the escrow
113
+ * to act as a security deposit that can be taken by the intermediary (LP) if the user doesn't go through
114
+ * with the swap
115
+ */
116
+ getSecurityDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
117
+ /**
118
+ * Returns the total amount of native token of the destination chain locked up during initialization of the escrow.
119
+ * This covers the security deposit and the watchtower fee (if applicable), it is calculated a maximum of those
120
+ * two values.
121
+ */
122
+ getTotalDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
123
+ /**
124
+ * Creates the escrow on the destination smart chain side, pre-locking the tokens from the intermediary (LP)
125
+ * into an escrow.
126
+ *
127
+ * @inheritDoc
58
128
  *
59
- * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
60
- * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
61
129
  * @throws {Error} When in invalid state to commit the swap
62
130
  */
63
131
  txsCommit(skipChecks?: boolean): Promise<T["TX"][]>;
64
132
  /**
65
- * Commits the swap on-chain, locking the tokens from the intermediary in an HTLC or PTLC
133
+ * Creates the escrow on the destination smart chain side, pre-locking the tokens from the intermediary (LP)
134
+ * into an escrow.
135
+ *
136
+ * @inheritDoc
66
137
  *
67
- * @param signer Signer to sign the transactions with, must be the same as used in the initialization
68
- * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort
69
- * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
70
- * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
71
138
  * @throws {Error} If invalid signer is provided that doesn't match the swap data
72
139
  */
73
140
  abstract commit(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean): Promise<string>;
74
- abstract waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
75
- getClaimFee(): Promise<bigint>;
141
+ /**
142
+ * Returns the transaction fee required for the claim transaction to settle the escrow on the destination
143
+ * smart chain
144
+ */
145
+ getClaimNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>>;
146
+ /**
147
+ * @inheritDoc
148
+ */
76
149
  abstract txsClaim(signer?: T["Signer"]): Promise<T["TX"][]>;
77
150
  /**
78
- * Claims and finishes the swap
79
- *
80
- * @param signer Signer to sign the transactions with, can also be different to the initializer
81
- * @param abortSignal Abort signal to stop waiting for transaction confirmation
151
+ * @inheritDoc
82
152
  */
83
153
  abstract claim(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
84
154
  /**
85
- * Waits till the swap is successfully claimed
86
- *
87
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
88
- * @param abortSignal AbortSignal
89
- * @throws {Error} If swap is in invalid state (must be COMMIT)
90
- * @returns {boolean} whether the swap was claimed in time or not
155
+ * @inheritDoc
91
156
  */
92
157
  abstract waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
93
158
  }