@atomiqlabs/sdk 8.1.7 → 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 +303 -222
  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 +513 -379
  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
@@ -5,16 +5,34 @@ import { Intermediary, SingleChainReputationType } from "../../../intermediaries
5
5
  import { IEscrowSwapWrapper } from "../IEscrowSwapWrapper";
6
6
  import { AmountData } from "../../../types/AmountData";
7
7
  export type IToBTCDefinition<T extends ChainType, W extends IToBTCWrapper<T, any>, S extends IToBTCSwap<T>> = SwapTypeDefinition<T, W, S>;
8
+ /**
9
+ * Base class for wrappers of escrow-based Smart chain -> Bitcoin (on-chain & lightning) swaps
10
+ *
11
+ * @category Swaps
12
+ */
8
13
  export declare abstract class IToBTCWrapper<T extends ChainType, D extends IToBTCDefinition<T, IToBTCWrapper<T, D>, IToBTCSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends IEscrowSwapWrapper<T, D, O> {
14
+ /**
15
+ * @internal
16
+ */
17
+ protected readonly tickSwapState: ToBTCSwapState[];
18
+ /**
19
+ * @internal
20
+ */
21
+ readonly _pendingSwapStates: ToBTCSwapState[];
22
+ /**
23
+ * @internal
24
+ */
25
+ readonly _refundableSwapStates: ToBTCSwapState[];
9
26
  /**
10
27
  * Pre-fetches intermediary's reputation, doesn't throw, instead aborts via abortController and returns null
11
28
  *
12
29
  * @param amountData
13
30
  * @param lp Intermediary
14
31
  * @param abortController
15
- * @protected
16
32
  * @returns Intermediary's reputation or null if failed
17
33
  * @throws {IntermediaryError} If the intermediary vault doesn't exist
34
+ *
35
+ * @internal
18
36
  */
19
37
  protected preFetchIntermediaryReputation(amountData: Omit<AmountData, "amount">, lp: Intermediary, abortController: AbortController): Promise<SingleChainReputationType | undefined>;
20
38
  /**
@@ -24,14 +42,21 @@ export declare abstract class IToBTCWrapper<T extends ChainType, D extends IToBT
24
42
  * @param amountData
25
43
  * @param claimHash optional hash of the swap or null
26
44
  * @param abortController
27
- * @protected
28
45
  * @returns Fee rate
46
+ *
47
+ * @internal
29
48
  */
30
49
  protected preFetchFeeRate(signer: string, amountData: Omit<AmountData, "amount">, claimHash: string | undefined, abortController: AbortController): Promise<string | undefined>;
31
- readonly pendingSwapStates: ToBTCSwapState[];
32
- readonly tickSwapState: ToBTCSwapState[];
33
- readonly refundableSwapStates: ToBTCSwapState[];
50
+ /**
51
+ * @internal
52
+ */
34
53
  protected processEventInitialize(swap: D["Swap"], event: InitializeEvent<T["Data"]>): Promise<boolean>;
54
+ /**
55
+ * @internal
56
+ */
35
57
  protected processEventClaim(swap: D["Swap"], event: ClaimEvent<T["Data"]>): Promise<boolean>;
58
+ /**
59
+ * @internal
60
+ */
36
61
  protected processEventRefund(swap: D["Swap"], event: RefundEvent<T["Data"]>): Promise<boolean>;
37
62
  }
@@ -4,18 +4,32 @@ exports.IToBTCWrapper = void 0;
4
4
  const IToBTCSwap_1 = require("./IToBTCSwap");
5
5
  const IntermediaryError_1 = require("../../../errors/IntermediaryError");
6
6
  const IEscrowSwapWrapper_1 = require("../IEscrowSwapWrapper");
7
+ /**
8
+ * Base class for wrappers of escrow-based Smart chain -> Bitcoin (on-chain & lightning) swaps
9
+ *
10
+ * @category Swaps
11
+ */
7
12
  class IToBTCWrapper extends IEscrowSwapWrapper_1.IEscrowSwapWrapper {
8
13
  constructor() {
9
14
  super(...arguments);
10
- this.pendingSwapStates = [
15
+ /**
16
+ * @internal
17
+ */
18
+ this.tickSwapState = [IToBTCSwap_1.ToBTCSwapState.CREATED, IToBTCSwap_1.ToBTCSwapState.COMMITED, IToBTCSwap_1.ToBTCSwapState.SOFT_CLAIMED];
19
+ /**
20
+ * @internal
21
+ */
22
+ this._pendingSwapStates = [
11
23
  IToBTCSwap_1.ToBTCSwapState.CREATED,
12
24
  IToBTCSwap_1.ToBTCSwapState.QUOTE_SOFT_EXPIRED,
13
25
  IToBTCSwap_1.ToBTCSwapState.COMMITED,
14
26
  IToBTCSwap_1.ToBTCSwapState.SOFT_CLAIMED,
15
27
  IToBTCSwap_1.ToBTCSwapState.REFUNDABLE
16
28
  ];
17
- this.tickSwapState = [IToBTCSwap_1.ToBTCSwapState.CREATED, IToBTCSwap_1.ToBTCSwapState.COMMITED, IToBTCSwap_1.ToBTCSwapState.SOFT_CLAIMED];
18
- this.refundableSwapStates = [IToBTCSwap_1.ToBTCSwapState.REFUNDABLE];
29
+ /**
30
+ * @internal
31
+ */
32
+ this._refundableSwapStates = [IToBTCSwap_1.ToBTCSwapState.REFUNDABLE];
19
33
  }
20
34
  /**
21
35
  * Pre-fetches intermediary's reputation, doesn't throw, instead aborts via abortController and returns null
@@ -23,12 +37,13 @@ class IToBTCWrapper extends IEscrowSwapWrapper_1.IEscrowSwapWrapper {
23
37
  * @param amountData
24
38
  * @param lp Intermediary
25
39
  * @param abortController
26
- * @protected
27
40
  * @returns Intermediary's reputation or null if failed
28
41
  * @throws {IntermediaryError} If the intermediary vault doesn't exist
42
+ *
43
+ * @internal
29
44
  */
30
45
  preFetchIntermediaryReputation(amountData, lp, abortController) {
31
- return lp.getReputation(this.chainIdentifier, this.contract, [amountData.token.toString()], abortController.signal).then(res => {
46
+ return lp.getReputation(this.chainIdentifier, this._contract, [amountData.token.toString()], abortController.signal).then(res => {
32
47
  if (res == null)
33
48
  throw new IntermediaryError_1.IntermediaryError("Invalid data returned - invalid LP vault");
34
49
  return res;
@@ -45,46 +60,56 @@ class IToBTCWrapper extends IEscrowSwapWrapper_1.IEscrowSwapWrapper {
45
60
  * @param amountData
46
61
  * @param claimHash optional hash of the swap or null
47
62
  * @param abortController
48
- * @protected
49
63
  * @returns Fee rate
64
+ *
65
+ * @internal
50
66
  */
51
67
  preFetchFeeRate(signer, amountData, claimHash, abortController) {
52
- return this.contract.getInitPayInFeeRate(signer, this.chain.randomAddress(), amountData.token, claimHash)
68
+ return this._contract.getInitPayInFeeRate(signer, this._chain.randomAddress(), amountData.token, claimHash)
53
69
  .catch(e => {
54
70
  this.logger.warn("preFetchFeeRate(): Error: ", e);
55
71
  abortController.abort(e);
56
72
  return undefined;
57
73
  });
58
74
  }
75
+ /**
76
+ * @internal
77
+ */
59
78
  async processEventInitialize(swap, event) {
60
- if (swap.state === IToBTCSwap_1.ToBTCSwapState.CREATED || swap.state === IToBTCSwap_1.ToBTCSwapState.QUOTE_SOFT_EXPIRED) {
61
- swap.state = IToBTCSwap_1.ToBTCSwapState.COMMITED;
62
- if (swap.commitTxId == null)
63
- swap.commitTxId = event.meta?.txId;
79
+ if (swap._state === IToBTCSwap_1.ToBTCSwapState.CREATED || swap._state === IToBTCSwap_1.ToBTCSwapState.QUOTE_SOFT_EXPIRED) {
80
+ swap._state = IToBTCSwap_1.ToBTCSwapState.COMMITED;
81
+ if (swap._commitTxId == null)
82
+ swap._commitTxId = event.meta?.txId;
64
83
  return true;
65
84
  }
66
85
  return false;
67
86
  }
87
+ /**
88
+ * @internal
89
+ */
68
90
  async processEventClaim(swap, event) {
69
- if (swap.state !== IToBTCSwap_1.ToBTCSwapState.REFUNDED && swap.state !== IToBTCSwap_1.ToBTCSwapState.CLAIMED) {
91
+ if (swap._state !== IToBTCSwap_1.ToBTCSwapState.REFUNDED && swap._state !== IToBTCSwap_1.ToBTCSwapState.CLAIMED) {
70
92
  await swap._setPaymentResult({
71
93
  secret: event.result,
72
94
  txId: Buffer.from(event.result, "hex").reverse().toString("hex")
73
95
  }).catch(e => {
74
96
  this.logger.warn(`processEventClaim(): Failed to set payment result ${event.result}: `, e);
75
97
  });
76
- swap.state = IToBTCSwap_1.ToBTCSwapState.CLAIMED;
77
- if (swap.claimTxId == null)
78
- swap.claimTxId = event.meta?.txId;
98
+ swap._state = IToBTCSwap_1.ToBTCSwapState.CLAIMED;
99
+ if (swap._claimTxId == null)
100
+ swap._claimTxId = event.meta?.txId;
79
101
  return true;
80
102
  }
81
103
  return false;
82
104
  }
105
+ /**
106
+ * @internal
107
+ */
83
108
  processEventRefund(swap, event) {
84
- if (swap.state !== IToBTCSwap_1.ToBTCSwapState.CLAIMED && swap.state !== IToBTCSwap_1.ToBTCSwapState.REFUNDED) {
85
- swap.state = IToBTCSwap_1.ToBTCSwapState.REFUNDED;
86
- if (swap.refundTxId == null)
87
- swap.refundTxId = event.meta?.txId;
109
+ if (swap._state !== IToBTCSwap_1.ToBTCSwapState.CLAIMED && swap._state !== IToBTCSwap_1.ToBTCSwapState.REFUNDED) {
110
+ swap._state = IToBTCSwap_1.ToBTCSwapState.REFUNDED;
111
+ if (swap._refundTxId == null)
112
+ swap._refundTxId = event.meta?.txId;
88
113
  return Promise.resolve(true);
89
114
  }
90
115
  return Promise.resolve(false);
@@ -18,31 +18,56 @@ export type ToBTCLNSwapInit<T extends SwapData> = IToBTCSwapInit<T> & {
18
18
  };
19
19
  export declare function isToBTCLNSwapInit<T extends SwapData>(obj: any): obj is ToBTCLNSwapInit<T>;
20
20
  /**
21
- * Smart Chain to Lightning Network BTC swap
21
+ * Escrow based (HTLC) swap for Smart chains -> Bitcoin lightning
22
+ *
22
23
  * @category Swaps
23
24
  */
24
25
  export declare class ToBTCLNSwap<T extends ChainType = ChainType> extends IToBTCSwap<T, ToBTCLNDefinition<T>> {
25
- private readonly usesClaimHashAsId;
26
- protected outputToken: BtcToken<true>;
27
26
  protected readonly TYPE = SwapType.TO_BTCLN;
27
+ /**
28
+ * @internal
29
+ */
30
+ protected readonly outputToken: BtcToken<true>;
31
+ /**
32
+ * @internal
33
+ */
28
34
  protected readonly logger: LoggerType;
35
+ private readonly usesClaimHashAsId;
29
36
  private readonly confidence;
30
- private readonly pr?;
31
- readonly paymentHash?: string;
32
- lnurl?: string;
33
- successAction?: LNURLPaySuccessAction;
37
+ private pr?;
34
38
  private secret?;
39
+ private lnurl?;
40
+ private successAction?;
41
+ /**
42
+ * Sets the LNURL data for the swap
43
+ *
44
+ * @internal
45
+ */
46
+ _setLNURLData(lnurl: string, successAction?: LNURLPaySuccessAction): void;
35
47
  constructor(wrapper: ToBTCLNWrapper<T>, init: ToBTCLNSwapInit<T["Data"]>);
36
48
  constructor(wrapper: ToBTCLNWrapper<T>, obj: any);
49
+ /**
50
+ * @inheritDoc
51
+ * @internal
52
+ */
37
53
  _setPaymentResult(result: {
38
54
  secret?: string;
39
55
  txId?: string;
40
56
  }, check?: boolean): Promise<boolean>;
57
+ /**
58
+ * @inheritDoc
59
+ */
41
60
  getOutputToken(): BtcToken<true>;
61
+ /**
62
+ * @inheritDoc
63
+ */
42
64
  getOutput(): TokenAmount<T["ChainId"], BtcToken<true>>;
65
+ /**
66
+ * @inheritDoc
67
+ */
43
68
  getOutputTxId(): string | null;
44
69
  /**
45
- * Returns the lightning BOLT11 invoice where the BTC will be sent to
70
+ * @inheritDoc
46
71
  */
47
72
  getOutputAddress(): string | null;
48
73
  /**
@@ -50,37 +75,53 @@ export declare class ToBTCLNSwap<T extends ChainType = ChainType> extends IToBTC
50
75
  */
51
76
  getSecret(): string | null;
52
77
  /**
53
- * Returns the confidence of the intermediary that this payment will succeed
54
- * Value between 0 and 1, where 0 is not likely and 1 is very likely
78
+ * Returns the confidence of the intermediary that this payment will succeed.
79
+ *
80
+ * @returns Decimal value between 0 and 1, where 0 is not likely and 1 is very likely
55
81
  */
56
82
  getConfidence(): number;
57
83
  /**
58
- * Checks whether a swap is likely to fail, based on the confidence as reported by the LP
84
+ * Checks whether a swap is likely to fail, based on the confidence as reported by the intermediary (LP)
59
85
  */
60
86
  willLikelyFail(): boolean;
61
87
  /**
62
- * Tries to detect if the target lightning invoice is a non-custodial mobile wallet, care must be taken
63
- * for such a wallet to be online when attempting to make a swap
88
+ * Tries to detect if the target lightning invoice is a non-custodial mobile wallet, extract care must be taken
89
+ * for such a wallet **to be online** when attempting to make a swap sending to such a wallet
64
90
  */
65
91
  isPayingToNonCustodialWallet(): boolean;
66
- getIdentifierHash(): Buffer;
67
- getPaymentHash(): Buffer | null;
92
+ /**
93
+ * @inheritDoc
94
+ * @internal
95
+ */
96
+ protected getIdentifierHash(): Buffer;
97
+ /**
98
+ * @inheritDoc
99
+ * @internal
100
+ */
68
101
  protected getLpIdentifier(): string;
69
102
  /**
70
- * Is this an LNURL-pay swap?
103
+ * Returns the payment hash of the swap, i.e. a payment hash of the lightning network invoice that
104
+ * is about to be paid
105
+ */
106
+ getPaymentHash(): Buffer | null;
107
+ /**
108
+ * Whether this is an LNURL-pay swap
71
109
  */
72
110
  isLNURL(): boolean;
73
111
  /**
74
- * Gets the used LNURL or null if this is not an LNURL-pay swap
112
+ * Gets the used LNURL-pay link or `null` if this is not an LNURL-pay swap
75
113
  */
76
114
  getLNURL(): string | null;
77
115
  /**
78
- * Checks whether this LNURL payment contains a success message
116
+ * Checks whether this LNURL-pay payment contains a success action
79
117
  */
80
118
  hasSuccessAction(): boolean;
81
119
  /**
82
- * Returns the success action after a successful payment, else null
120
+ * Returns the success action after a successful payment, else `null`
83
121
  */
84
122
  getSuccessAction(): LNURLDecodedSuccessAction | null;
123
+ /**
124
+ * @inheritDoc
125
+ */
85
126
  serialize(): any;
86
127
  }
@@ -25,16 +25,29 @@ const SNOWFLAKE_LIST = new Set([
25
25
  "03a6ce61fcaacd38d31d4e3ce2d506602818e3856b4b44faff1dde9642ba705976"
26
26
  ]);
27
27
  /**
28
- * Smart Chain to Lightning Network BTC swap
28
+ * Escrow based (HTLC) swap for Smart chains -> Bitcoin lightning
29
+ *
29
30
  * @category Swaps
30
31
  */
31
32
  class ToBTCLNSwap extends IToBTCSwap_1.IToBTCSwap {
33
+ /**
34
+ * Sets the LNURL data for the swap
35
+ *
36
+ * @internal
37
+ */
38
+ _setLNURLData(lnurl, successAction) {
39
+ this.lnurl = lnurl;
40
+ this.successAction = successAction;
41
+ }
32
42
  constructor(wrapper, initOrObj) {
33
43
  if (isToBTCLNSwapInit(initOrObj) && initOrObj.url != null)
34
44
  initOrObj.url += "/tobtcln";
35
45
  super(wrapper, initOrObj);
36
- this.outputToken = Token_1.BitcoinTokens.BTCLN;
37
46
  this.TYPE = SwapType_1.SwapType.TO_BTCLN;
47
+ /**
48
+ * @internal
49
+ */
50
+ this.outputToken = Token_1.BitcoinTokens.BTCLN;
38
51
  if (isToBTCLNSwapInit(initOrObj)) {
39
52
  this.confidence = initOrObj.confidence;
40
53
  this.pr = initOrObj.pr;
@@ -50,49 +63,63 @@ class ToBTCLNSwap extends IToBTCSwap_1.IToBTCSwap {
50
63
  this.secret = initOrObj.secret;
51
64
  this.usesClaimHashAsId = initOrObj.usesClaimHashAsId ?? false;
52
65
  }
53
- const paymentHash = this.getPaymentHash();
54
- if (paymentHash != null)
55
- this.paymentHash = paymentHash.toString("hex");
56
66
  this.logger = (0, Logger_1.getLogger)("ToBTCLN(" + this.getIdentifierHashString() + "): ");
57
67
  this.tryRecomputeSwapPrice();
58
68
  }
69
+ /**
70
+ * @inheritDoc
71
+ * @internal
72
+ */
59
73
  _setPaymentResult(result, check = false) {
60
74
  if (result == null)
61
75
  return Promise.resolve(false);
62
76
  if (result.secret == null)
63
77
  throw new IntermediaryError_1.IntermediaryError("No payment secret returned!");
78
+ const secretBuffer = buffer_1.Buffer.from(result.secret, "hex");
79
+ const hash = buffer_1.Buffer.from((0, sha2_1.sha256)(secretBuffer));
64
80
  if (check) {
65
- const secretBuffer = buffer_1.Buffer.from(result.secret, "hex");
66
- const hash = buffer_1.Buffer.from((0, sha2_1.sha256)(secretBuffer));
67
- const claimHash = this.wrapper.contract.getHashForHtlc(hash);
81
+ const claimHash = this.wrapper._contract.getHashForHtlc(hash);
68
82
  const expectedClaimHash = buffer_1.Buffer.from(this.getClaimHash(), "hex");
69
83
  if (!claimHash.equals(expectedClaimHash))
70
84
  throw new IntermediaryError_1.IntermediaryError("Invalid payment secret returned");
71
85
  }
86
+ this.pr ??= hash.toString("hex");
72
87
  this.secret = result.secret;
73
88
  return Promise.resolve(true);
74
89
  }
75
90
  //////////////////////////////
76
91
  //// Amounts & fees
92
+ /**
93
+ * @inheritDoc
94
+ */
77
95
  getOutputToken() {
78
96
  return Token_1.BitcoinTokens.BTCLN;
79
97
  }
98
+ /**
99
+ * @inheritDoc
100
+ */
80
101
  getOutput() {
81
102
  if (this.pr == null || !this.pr.toLowerCase().startsWith("ln"))
82
- return (0, TokenAmount_1.toTokenAmount)(null, this.outputToken, this.wrapper.prices, this.pricingInfo);
103
+ return (0, TokenAmount_1.toTokenAmount)(null, this.outputToken, this.wrapper._prices, this.pricingInfo);
83
104
  const parsedPR = (0, bolt11_1.decode)(this.pr);
84
105
  if (parsedPR.millisatoshis == null)
85
106
  throw new Error("Swap invoice has no msat amount field!");
86
107
  const amount = (BigInt(parsedPR.millisatoshis) + 999n) / 1000n;
87
- return (0, TokenAmount_1.toTokenAmount)(amount, this.outputToken, this.wrapper.prices, this.pricingInfo);
108
+ return (0, TokenAmount_1.toTokenAmount)(amount, this.outputToken, this.wrapper._prices, this.pricingInfo);
88
109
  }
89
110
  //////////////////////////////
90
111
  //// Getters & utils
112
+ /**
113
+ * @inheritDoc
114
+ */
91
115
  getOutputTxId() {
92
- return this.getLpIdentifier();
116
+ const paymentHash = this.getPaymentHash();
117
+ if (paymentHash == null)
118
+ return null;
119
+ return paymentHash.toString("hex");
93
120
  }
94
121
  /**
95
- * Returns the lightning BOLT11 invoice where the BTC will be sent to
122
+ * @inheritDoc
96
123
  */
97
124
  getOutputAddress() {
98
125
  return this.lnurl ?? this.pr ?? null;
@@ -104,14 +131,15 @@ class ToBTCLNSwap extends IToBTCSwap_1.IToBTCSwap {
104
131
  return this.secret ?? null;
105
132
  }
106
133
  /**
107
- * Returns the confidence of the intermediary that this payment will succeed
108
- * Value between 0 and 1, where 0 is not likely and 1 is very likely
134
+ * Returns the confidence of the intermediary that this payment will succeed.
135
+ *
136
+ * @returns Decimal value between 0 and 1, where 0 is not likely and 1 is very likely
109
137
  */
110
138
  getConfidence() {
111
139
  return this.confidence;
112
140
  }
113
141
  /**
114
- * Checks whether a swap is likely to fail, based on the confidence as reported by the LP
142
+ * Checks whether a swap is likely to fail, based on the confidence as reported by the intermediary (LP)
115
143
  */
116
144
  willLikelyFail() {
117
145
  if (this.pr == null || !this.pr.toLowerCase().startsWith("ln"))
@@ -127,8 +155,8 @@ class ToBTCLNSwap extends IToBTCSwap_1.IToBTCSwap {
127
155
  return this.confidence === 0;
128
156
  }
129
157
  /**
130
- * Tries to detect if the target lightning invoice is a non-custodial mobile wallet, care must be taken
131
- * for such a wallet to be online when attempting to make a swap
158
+ * Tries to detect if the target lightning invoice is a non-custodial mobile wallet, extract care must be taken
159
+ * for such a wallet **to be online** when attempting to make a swap sending to such a wallet
132
160
  */
133
161
  isPayingToNonCustodialWallet() {
134
162
  if (this.pr == null || !this.pr.toLowerCase().startsWith("ln"))
@@ -139,64 +167,79 @@ class ToBTCLNSwap extends IToBTCSwap_1.IToBTCSwap {
139
167
  }
140
168
  return false;
141
169
  }
170
+ /**
171
+ * @inheritDoc
172
+ * @internal
173
+ */
142
174
  getIdentifierHash() {
143
175
  const idBuffer = this.usesClaimHashAsId
144
176
  ? buffer_1.Buffer.from(this.getClaimHash(), "hex")
145
177
  : this.getPaymentHash();
146
- if (this.randomNonce == null)
178
+ if (this._randomNonce == null)
147
179
  return idBuffer;
148
- return buffer_1.Buffer.concat([idBuffer, buffer_1.Buffer.from(this.randomNonce, "hex")]);
180
+ return buffer_1.Buffer.concat([idBuffer, buffer_1.Buffer.from(this._randomNonce, "hex")]);
149
181
  }
150
- getPaymentHash() {
182
+ /**
183
+ * @inheritDoc
184
+ * @internal
185
+ */
186
+ getLpIdentifier() {
151
187
  if (this.pr == null)
152
- return null;
188
+ return this._data.getEscrowHash();
153
189
  if (this.pr.toLowerCase().startsWith("ln")) {
154
190
  const parsed = (0, bolt11_1.decode)(this.pr);
155
191
  if (parsed.tagsObject.payment_hash == null)
156
192
  throw new Error("Swap invoice has no payment hash field!");
157
- return buffer_1.Buffer.from(parsed.tagsObject.payment_hash, "hex");
193
+ return parsed.tagsObject.payment_hash;
158
194
  }
159
- return buffer_1.Buffer.from(this.pr, "hex");
195
+ return this.pr;
160
196
  }
161
- getLpIdentifier() {
197
+ /**
198
+ * Returns the payment hash of the swap, i.e. a payment hash of the lightning network invoice that
199
+ * is about to be paid
200
+ */
201
+ getPaymentHash() {
162
202
  if (this.pr == null)
163
- return this.data.getEscrowHash();
203
+ return null;
164
204
  if (this.pr.toLowerCase().startsWith("ln")) {
165
205
  const parsed = (0, bolt11_1.decode)(this.pr);
166
206
  if (parsed.tagsObject.payment_hash == null)
167
207
  throw new Error("Swap invoice has no payment hash field!");
168
- return parsed.tagsObject.payment_hash;
208
+ return buffer_1.Buffer.from(parsed.tagsObject.payment_hash, "hex");
169
209
  }
170
- return this.pr;
210
+ return buffer_1.Buffer.from(this.pr, "hex");
171
211
  }
172
212
  //////////////////////////////
173
213
  //// LNURL-pay
174
214
  /**
175
- * Is this an LNURL-pay swap?
215
+ * Whether this is an LNURL-pay swap
176
216
  */
177
217
  isLNURL() {
178
218
  return this.lnurl != null;
179
219
  }
180
220
  /**
181
- * Gets the used LNURL or null if this is not an LNURL-pay swap
221
+ * Gets the used LNURL-pay link or `null` if this is not an LNURL-pay swap
182
222
  */
183
223
  getLNURL() {
184
224
  return this.lnurl ?? null;
185
225
  }
186
226
  /**
187
- * Checks whether this LNURL payment contains a success message
227
+ * Checks whether this LNURL-pay payment contains a success action
188
228
  */
189
229
  hasSuccessAction() {
190
230
  return this.successAction != null;
191
231
  }
192
232
  /**
193
- * Returns the success action after a successful payment, else null
233
+ * Returns the success action after a successful payment, else `null`
194
234
  */
195
235
  getSuccessAction() {
196
236
  return LNURL_1.LNURL.decodeSuccessAction(this.successAction, this.secret);
197
237
  }
198
238
  //////////////////////////////
199
239
  //// Storage
240
+ /**
241
+ * @inheritDoc
242
+ */
200
243
  serialize() {
201
244
  return {
202
245
  ...super.serialize(),