@atomiqlabs/sdk 8.1.8 → 8.3.5

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 (261) hide show
  1. package/dist/bitcoin/coinselect2/utils.d.ts +6 -0
  2. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  3. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  4. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  5. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  7. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  8. package/dist/enums/FeeType.d.ts +8 -1
  9. package/dist/enums/FeeType.js +8 -1
  10. package/dist/enums/SwapAmountType.d.ts +7 -0
  11. package/dist/enums/SwapAmountType.js +7 -0
  12. package/dist/enums/SwapDirection.d.ts +7 -0
  13. package/dist/enums/SwapDirection.js +7 -0
  14. package/dist/enums/SwapType.d.ts +62 -1
  15. package/dist/enums/SwapType.js +62 -1
  16. package/dist/errors/IntermediaryError.d.ts +4 -0
  17. package/dist/errors/IntermediaryError.js +1 -0
  18. package/dist/errors/RequestError.d.ts +15 -1
  19. package/dist/errors/RequestError.js +8 -0
  20. package/dist/errors/UserError.d.ts +1 -0
  21. package/dist/errors/UserError.js +1 -0
  22. package/dist/index.d.ts +5 -5
  23. package/dist/index.js +7 -6
  24. package/dist/intermediaries/Intermediary.d.ts +61 -14
  25. package/dist/intermediaries/Intermediary.js +38 -11
  26. package/dist/intermediaries/IntermediaryDiscovery.d.ts +62 -29
  27. package/dist/intermediaries/IntermediaryDiscovery.js +39 -24
  28. package/dist/prices/RedundantSwapPrice.d.ts +26 -5
  29. package/dist/prices/RedundantSwapPrice.js +22 -2
  30. package/dist/prices/SingleSwapPrice.d.ts +10 -7
  31. package/dist/prices/SingleSwapPrice.js +11 -8
  32. package/dist/prices/SwapPriceWithChain.d.ts +56 -19
  33. package/dist/prices/SwapPriceWithChain.js +62 -25
  34. package/dist/prices/abstract/IPriceProvider.d.ts +4 -4
  35. package/dist/prices/abstract/IPriceProvider.js +1 -1
  36. package/dist/prices/abstract/ISwapPrice.d.ts +95 -46
  37. package/dist/prices/abstract/ISwapPrice.js +104 -56
  38. package/dist/prices/providers/BinancePriceProvider.d.ts +8 -1
  39. package/dist/prices/providers/BinancePriceProvider.js +8 -1
  40. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +7 -1
  41. package/dist/prices/providers/CoinGeckoPriceProvider.js +7 -1
  42. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +7 -1
  43. package/dist/prices/providers/CoinPaprikaPriceProvider.js +7 -1
  44. package/dist/prices/providers/CustomPriceProvider.d.ts +12 -1
  45. package/dist/prices/providers/CustomPriceProvider.js +12 -1
  46. package/dist/prices/providers/KrakenPriceProvider.d.ts +10 -1
  47. package/dist/prices/providers/KrakenPriceProvider.js +10 -1
  48. package/dist/prices/providers/OKXPriceProvider.d.ts +7 -1
  49. package/dist/prices/providers/OKXPriceProvider.js +7 -1
  50. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  51. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  52. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  53. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  54. package/dist/storage/UnifiedSwapStorage.js +29 -1
  55. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  56. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  57. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  58. package/dist/storage-browser/LocalStorageManager.js +25 -1
  59. package/dist/swapper/Swapper.d.ts +380 -226
  60. package/dist/swapper/Swapper.js +383 -349
  61. package/dist/swapper/SwapperFactory.d.ts +66 -18
  62. package/dist/swapper/SwapperFactory.js +24 -3
  63. package/dist/swapper/SwapperUtils.d.ts +75 -28
  64. package/dist/swapper/SwapperUtils.js +107 -60
  65. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  66. package/dist/swapper/SwapperWithChain.js +218 -64
  67. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  68. package/dist/swapper/SwapperWithSigner.js +190 -44
  69. package/dist/swaps/IAddressSwap.d.ts +12 -3
  70. package/dist/swaps/IAddressSwap.js +3 -2
  71. package/dist/swaps/IBTCWalletSwap.d.ts +26 -8
  72. package/dist/swaps/IBTCWalletSwap.js +3 -2
  73. package/dist/swaps/IClaimableSwap.d.ts +38 -6
  74. package/dist/swaps/IClaimableSwap.js +3 -2
  75. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  76. package/dist/swaps/IRefundableSwap.d.ts +31 -5
  77. package/dist/swaps/IRefundableSwap.js +3 -2
  78. package/dist/swaps/ISwap.d.ts +162 -24
  79. package/dist/swaps/ISwap.js +92 -35
  80. package/dist/swaps/ISwapWithGasDrop.d.ts +8 -2
  81. package/dist/swaps/ISwapWithGasDrop.js +2 -1
  82. package/dist/swaps/ISwapWrapper.d.ts +161 -52
  83. package/dist/swaps/ISwapWrapper.js +131 -73
  84. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +51 -6
  85. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  86. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  87. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  88. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  89. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +97 -28
  93. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +91 -27
  94. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  95. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +278 -60
  97. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +519 -241
  98. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +77 -26
  99. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +132 -50
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +313 -52
  101. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +544 -194
  102. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  103. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +222 -55
  105. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +462 -244
  106. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  107. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +195 -58
  109. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +324 -191
  110. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  111. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +61 -20
  113. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +75 -32
  114. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  115. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +37 -14
  117. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +66 -20
  118. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  119. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  120. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +350 -88
  121. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +482 -215
  122. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  123. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +247 -124
  124. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +148 -20
  125. package/dist/swaps/trusted/ln/LnForGasSwap.js +175 -45
  126. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  127. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  128. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +202 -49
  129. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +232 -80
  130. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  131. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  132. package/dist/types/AmountData.d.ts +2 -1
  133. package/dist/types/CustomPriceFunction.d.ts +8 -2
  134. package/dist/types/PriceInfoType.d.ts +4 -4
  135. package/dist/types/PriceInfoType.js +3 -3
  136. package/dist/types/SwapExecutionAction.d.ts +85 -4
  137. package/dist/types/SwapWithSigner.d.ts +5 -2
  138. package/dist/types/SwapWithSigner.js +5 -2
  139. package/dist/types/Token.d.ts +11 -5
  140. package/dist/types/Token.js +6 -3
  141. package/dist/types/TokenAmount.d.ts +3 -0
  142. package/dist/types/TokenAmount.js +2 -0
  143. package/dist/types/fees/Fee.d.ts +3 -2
  144. package/dist/types/fees/FeeBreakdown.d.ts +3 -2
  145. package/dist/types/fees/PercentagePPM.d.ts +4 -2
  146. package/dist/types/fees/PercentagePPM.js +2 -1
  147. package/dist/types/lnurl/LNURLPay.d.ts +20 -12
  148. package/dist/types/lnurl/LNURLPay.js +8 -4
  149. package/dist/types/lnurl/LNURLWithdraw.d.ts +17 -10
  150. package/dist/types/lnurl/LNURLWithdraw.js +8 -4
  151. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -0
  152. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  153. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  154. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +4 -2
  155. package/dist/utils/BitcoinUtils.d.ts +1 -0
  156. package/dist/utils/BitcoinUtils.js +5 -1
  157. package/dist/utils/SwapUtils.d.ts +58 -1
  158. package/dist/utils/SwapUtils.js +55 -1
  159. package/dist/utils/TokenUtils.d.ts +10 -2
  160. package/dist/utils/TokenUtils.js +12 -4
  161. package/package.json +3 -3
  162. package/src/bitcoin/coinselect2/utils.ts +6 -0
  163. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  164. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  165. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  166. package/src/enums/FeeType.ts +8 -1
  167. package/src/enums/SwapAmountType.ts +7 -0
  168. package/src/enums/SwapDirection.ts +7 -0
  169. package/src/enums/SwapType.ts +62 -2
  170. package/src/errors/IntermediaryError.ts +4 -0
  171. package/src/errors/RequestError.ts +15 -1
  172. package/src/errors/UserError.ts +1 -0
  173. package/src/index.ts +12 -5
  174. package/src/intermediaries/Intermediary.ts +61 -14
  175. package/src/intermediaries/IntermediaryDiscovery.ts +69 -34
  176. package/src/prices/RedundantSwapPrice.ts +26 -6
  177. package/src/prices/SingleSwapPrice.ts +11 -8
  178. package/src/prices/SwapPriceWithChain.ts +63 -26
  179. package/src/prices/abstract/IPriceProvider.ts +4 -4
  180. package/src/prices/abstract/ISwapPrice.ts +115 -66
  181. package/src/prices/providers/BinancePriceProvider.ts +8 -1
  182. package/src/prices/providers/CoinGeckoPriceProvider.ts +7 -1
  183. package/src/prices/providers/CoinPaprikaPriceProvider.ts +7 -1
  184. package/src/prices/providers/CustomPriceProvider.ts +12 -1
  185. package/src/prices/providers/KrakenPriceProvider.ts +10 -1
  186. package/src/prices/providers/OKXPriceProvider.ts +7 -1
  187. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  188. package/src/storage/IUnifiedStorage.ts +19 -7
  189. package/src/storage/UnifiedSwapStorage.ts +33 -3
  190. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  191. package/src/storage-browser/LocalStorageManager.ts +25 -1
  192. package/src/swapper/Swapper.ts +599 -390
  193. package/src/swapper/SwapperFactory.ts +73 -24
  194. package/src/swapper/SwapperUtils.ts +107 -60
  195. package/src/swapper/SwapperWithChain.ts +320 -81
  196. package/src/swapper/SwapperWithSigner.ts +263 -56
  197. package/src/swaps/IAddressSwap.ts +13 -3
  198. package/src/swaps/IBTCWalletSwap.ts +26 -10
  199. package/src/swaps/IClaimableSwap.ts +41 -6
  200. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  201. package/src/swaps/IRefundableSwap.ts +34 -5
  202. package/src/swaps/ISwap.ts +224 -85
  203. package/src/swaps/ISwapWithGasDrop.ts +8 -2
  204. package/src/swaps/ISwapWrapper.ts +216 -98
  205. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +64 -18
  206. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  207. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  208. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  209. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +123 -50
  210. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  211. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +562 -258
  212. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +156 -62
  213. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +592 -227
  214. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  215. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +483 -245
  216. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  217. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +350 -195
  218. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  219. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +87 -40
  220. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  221. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +89 -34
  222. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  223. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +556 -259
  224. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +292 -148
  225. package/src/swaps/trusted/ln/LnForGasSwap.ts +186 -47
  226. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  227. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +262 -88
  228. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  229. package/src/types/AmountData.ts +2 -1
  230. package/src/types/CustomPriceFunction.ts +8 -2
  231. package/src/types/PriceInfoType.ts +4 -4
  232. package/src/types/SwapExecutionAction.ts +97 -5
  233. package/src/types/SwapWithSigner.ts +8 -4
  234. package/src/types/Token.ts +12 -5
  235. package/src/types/TokenAmount.ts +3 -0
  236. package/src/types/fees/Fee.ts +3 -2
  237. package/src/types/fees/FeeBreakdown.ts +3 -2
  238. package/src/types/fees/PercentagePPM.ts +4 -2
  239. package/src/types/lnurl/LNURLPay.ts +20 -12
  240. package/src/types/lnurl/LNURLWithdraw.ts +17 -10
  241. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -0
  242. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  243. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +4 -2
  244. package/src/utils/BitcoinUtils.ts +5 -0
  245. package/src/utils/SwapUtils.ts +63 -1
  246. package/src/utils/TokenUtils.ts +12 -4
  247. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  248. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  249. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  250. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  251. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  252. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  253. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  254. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  255. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  256. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  257. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  258. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  259. package/dist/errors/PaymentAuthError.d.ts +0 -11
  260. package/dist/errors/PaymentAuthError.js +0 -23
  261. package/src/errors/PaymentAuthError.ts +0 -26
@@ -7,14 +7,24 @@ import {FeeType} from "../../../enums/FeeType";
7
7
  import {ppmToPercentage} from "../../../types/fees/PercentagePPM";
8
8
  import {TokenAmount, toTokenAmount} from "../../../types/TokenAmount";
9
9
  import {BtcToken, SCToken} from "../../../types/Token";
10
+ import {IClaimableSwap} from "../../IClaimableSwap";
10
11
 
11
12
  export type IFromBTCSelfInitDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IFromBTCSelfInitSwap<T>> = IEscrowSelfInitSwapDefinition<T, W, S>;
12
13
 
14
+ /**
15
+ * Base class for legacy escrow-based Bitcoin (on-chain & lightning) -> Smart chain swaps,
16
+ * which require the user to manually initiate the escrow on the destination smart chain
17
+ *
18
+ * @category Swaps/Abstract
19
+ */
13
20
  export abstract class IFromBTCSelfInitSwap<
14
21
  T extends ChainType = ChainType,
15
22
  D extends IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, D>, IFromBTCSelfInitSwap<T, D, S>> = IFromBTCSelfInitDefinition<T, IFromBTCWrapper<T, any>, IFromBTCSelfInitSwap<T, any, any>>,
16
23
  S extends number = number
17
- > extends IEscrowSelfInitSwap<T, D, S> implements IAddressSwap {
24
+ > extends IEscrowSelfInitSwap<T, D, S> implements IAddressSwap, IClaimableSwap<T, D, S> {
25
+ /**
26
+ * @internal
27
+ */
18
28
  protected abstract readonly inputToken: BtcToken;
19
29
 
20
30
  protected constructor(wrapper: D["Wrapper"], init: IEscrowSelfInitSwapInit<T["Data"]>);
@@ -27,8 +37,8 @@ export abstract class IFromBTCSelfInitSwap<
27
37
  }
28
38
 
29
39
  /**
30
- * In case swapFee in BTC is not supplied it recalculates it based on swap price
31
- * @protected
40
+ * @inheritDoc
41
+ * @internal
32
42
  */
33
43
  protected tryRecomputeSwapPrice() {
34
44
  const input = this.getInput();
@@ -43,35 +53,51 @@ export abstract class IFromBTCSelfInitSwap<
43
53
  //// Getters & utils
44
54
 
45
55
  /**
46
- * Returns the bitcoin address or lightning invoice to be paid for the swap
56
+ * @inheritDoc
47
57
  */
48
58
  abstract getAddress(): string;
49
59
 
50
60
  /**
51
- * Returns a string that can be displayed as QR code representation of the address or lightning invoice
52
- * (with bitcoin: or lightning: prefix)
61
+ * @inheritDoc
53
62
  */
54
63
  abstract getHyperlink(): string;
55
64
 
65
+ /**
66
+ * @inheritDoc
67
+ */
56
68
  abstract isClaimable(): boolean;
57
69
 
58
70
  /**
59
71
  * Returns if the swap can be committed
72
+ * @internal
60
73
  */
61
74
  protected abstract canCommit(): boolean;
62
75
 
76
+ /**
77
+ * @inheritDoc
78
+ * @internal
79
+ */
63
80
  _getInitiator(): string {
64
81
  return this.getSwapData().getClaimer();
65
82
  }
66
83
 
84
+ /**
85
+ * @inheritDoc
86
+ */
67
87
  getOutputTxId(): string | null {
68
- return this.claimTxId ?? null;
88
+ return this._claimTxId ?? null;
69
89
  }
70
90
 
91
+ /**
92
+ * @inheritDoc
93
+ */
71
94
  getOutputAddress(): string | null {
72
95
  return this._getInitiator();
73
96
  }
74
97
 
98
+ /**
99
+ * @inheritDoc
100
+ */
75
101
  requiresAction(): boolean {
76
102
  return this.isClaimable();
77
103
  }
@@ -80,10 +106,21 @@ export abstract class IFromBTCSelfInitSwap<
80
106
  //////////////////////////////
81
107
  //// Amounts & fees
82
108
 
109
+ /**
110
+ * Returns the swap output amount in destination token based units without any fees, this
111
+ * value is therefore always higher than the actual received output.
112
+ *
113
+ * @internal
114
+ */
83
115
  protected getOutAmountWithoutFee(): bigint {
84
116
  return this.getSwapData().getAmount() + this.swapFee;
85
117
  }
86
118
 
119
+ /**
120
+ * Returns the swap fee charged by the intermediary (LP) on this swap
121
+ *
122
+ * @internal
123
+ */
87
124
  protected getSwapFee(): Fee<T["ChainId"], BtcToken, SCToken<T["ChainId"]>> {
88
125
  if(this.pricingInfo==null) throw new Error("No pricing info known, cannot estimate fee!");
89
126
 
@@ -91,24 +128,30 @@ export abstract class IFromBTCSelfInitSwap<
91
128
  const inputWithoutFee = this.getInputWithoutFee();
92
129
  const swapFeePPM = inputWithoutFee.rawAmount==null ? 0n : feeWithoutBaseFee * 1000000n / inputWithoutFee.rawAmount;
93
130
 
94
- const amountInSrcToken = toTokenAmount(this.swapFeeBtc, this.inputToken, this.wrapper.prices, this.pricingInfo);
131
+ const amountInSrcToken = toTokenAmount(this.swapFeeBtc, this.inputToken, this.wrapper._prices, this.pricingInfo);
95
132
  return {
96
133
  amountInSrcToken,
97
- amountInDstToken: toTokenAmount(this.swapFee, this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices, this.pricingInfo),
134
+ amountInDstToken: toTokenAmount(this.swapFee, this.wrapper._tokens[this.getSwapData().getToken()], this.wrapper._prices, this.pricingInfo),
98
135
  currentUsdValue: amountInSrcToken.currentUsdValue,
99
136
  usdValue: amountInSrcToken.usdValue,
100
137
  pastUsdValue: amountInSrcToken.pastUsdValue,
101
138
  composition: {
102
- base: toTokenAmount(this.pricingInfo.satsBaseFee, this.inputToken, this.wrapper.prices, this.pricingInfo),
139
+ base: toTokenAmount(this.pricingInfo.satsBaseFee, this.inputToken, this.wrapper._prices, this.pricingInfo),
103
140
  percentage: ppmToPercentage(swapFeePPM)
104
141
  }
105
142
  };
106
143
  }
107
144
 
145
+ /**
146
+ * @inheritDoc
147
+ */
108
148
  getFee(): Fee {
109
149
  return this.getSwapFee();
110
150
  }
111
151
 
152
+ /**
153
+ * @inheritDoc
154
+ */
112
155
  getFeeBreakdown(): [{type: FeeType.SWAP, fee: Fee<T["ChainId"], BtcToken, SCToken<T["ChainId"]>>}] {
113
156
  return [{
114
157
  type: FeeType.SWAP,
@@ -116,111 +159,141 @@ export abstract class IFromBTCSelfInitSwap<
116
159
  }];
117
160
  }
118
161
 
162
+ /**
163
+ * @inheritDoc
164
+ */
119
165
  getOutputToken(): SCToken<T["ChainId"]> {
120
- return this.wrapper.tokens[this.getSwapData().getToken()];
166
+ return this.wrapper._tokens[this.getSwapData().getToken()];
121
167
  }
122
168
 
169
+ /**
170
+ * @inheritDoc
171
+ */
123
172
  getOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
124
- return toTokenAmount(this.getSwapData().getAmount(), this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices, this.pricingInfo);
173
+ return toTokenAmount(this.getSwapData().getAmount(), this.wrapper._tokens[this.getSwapData().getToken()], this.wrapper._prices, this.pricingInfo);
125
174
  }
126
175
 
176
+ /**
177
+ * @inheritDoc
178
+ */
127
179
  abstract getInput(): TokenAmount<T["ChainId"], BtcToken>;
128
180
 
181
+ /**
182
+ * @inheritDoc
183
+ */
129
184
  getInputWithoutFee(): TokenAmount<T["ChainId"], BtcToken> {
130
185
  const input = this.getInput();
131
- if(input.rawAmount==null) return toTokenAmount(null, this.inputToken, this.wrapper.prices, this.pricingInfo);
132
- return toTokenAmount(input.rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper.prices, this.pricingInfo);
133
- }
134
-
135
- getSecurityDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
136
- return toTokenAmount(this.getSwapData().getSecurityDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
137
- }
138
-
139
- getTotalDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
140
- return toTokenAmount(this.getSwapData().getTotalDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
186
+ if(input.rawAmount==null) return toTokenAmount(null, this.inputToken, this.wrapper._prices, this.pricingInfo);
187
+ return toTokenAmount(input.rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper._prices, this.pricingInfo);
141
188
  }
142
189
 
190
+ /**
191
+ * @inheritDoc
192
+ */
143
193
  async hasEnoughForTxFees(): Promise<{
144
194
  enoughBalance: boolean,
145
195
  balance: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>,
146
196
  required: TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>
147
197
  }> {
148
198
  const [balance, commitFee] = await Promise.all([
149
- this.wrapper.contract.getBalance(this._getInitiator(), this.wrapper.chain.getNativeCurrencyAddress(), false),
199
+ this.wrapper._contract.getBalance(this._getInitiator(), this.wrapper._chain.getNativeCurrencyAddress(), false),
150
200
  this.getCommitFee()
151
201
  ]);
152
202
  const totalFee = commitFee + this.getSwapData().getTotalDeposit();
153
203
  return {
154
204
  enoughBalance: balance >= totalFee,
155
- balance: toTokenAmount(balance, this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo),
156
- required: toTokenAmount(totalFee, this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo)
205
+ balance: toTokenAmount(balance, this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo),
206
+ required: toTokenAmount(totalFee, this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo)
157
207
  };
158
208
  }
159
209
 
210
+ /**
211
+ * Returns the amount of native token of the destination chain locked up during initialization of the escrow
212
+ * to act as a security deposit that can be taken by the intermediary (LP) if the user doesn't go through
213
+ * with the swap
214
+ */
215
+ getSecurityDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
216
+ return toTokenAmount(this.getSwapData().getSecurityDeposit(), this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo);
217
+ }
218
+
219
+ /**
220
+ * Returns the total amount of native token of the destination chain locked up during initialization of the escrow.
221
+ * This covers the security deposit and the watchtower fee (if applicable), it is calculated a maximum of those
222
+ * two values.
223
+ */
224
+ getTotalDeposit(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true> {
225
+ return toTokenAmount(this.getSwapData().getTotalDeposit(), this.wrapper._getNativeToken(), this.wrapper._prices, this.pricingInfo);
226
+ }
227
+
160
228
 
161
229
  //////////////////////////////
162
230
  //// Commit
163
231
 
164
232
  /**
165
- * Returns the transactions required for committing the swap on-chain, locking the tokens from the intermediary
166
- * in an HTLC or PTLC
233
+ * Returns transactions for initiating (committing) the escrow on the destination smart chain side, pre-locking the
234
+ * tokens from the intermediary (LP) into an escrow.
235
+ *
236
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited
237
+ * yet (this is handled on swap creation, if you commit right after quoting, you can use skipChecks=true)
167
238
  *
168
- * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
169
- * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
170
239
  * @throws {Error} When in invalid state to commit the swap
171
240
  */
172
241
  async txsCommit(skipChecks?: boolean): Promise<T["TX"][]> {
173
242
  if(!this.canCommit()) throw new Error("Must be in CREATED state!");
174
- if(this.data==null || this.signatureData==null) throw new Error("data or signature data is null, invalid state?");
243
+ if(this._data==null || this.signatureData==null) throw new Error("data or signature data is null, invalid state?");
175
244
 
176
245
  if(!this.initiated) {
177
246
  this.initiated = true;
178
247
  await this._saveAndEmit();
179
248
  }
180
249
 
181
- return await this.wrapper.contract.txsInit(
182
- this._getInitiator(), this.data, this.signatureData, skipChecks, this.feeRate
250
+ return await this.wrapper._contract.txsInit(
251
+ this._getInitiator(), this._data, this.signatureData, skipChecks, this.feeRate
183
252
  ).catch(e => Promise.reject(e instanceof SignatureVerificationError ? new Error("Request timed out") : e));
184
253
  }
185
254
 
186
255
  /**
187
- * Commits the swap on-chain, locking the tokens from the intermediary in an HTLC or PTLC
256
+ * Creates the escrow on the destination smart chain side, pre-locking the tokens from the intermediary (LP)
257
+ * into an escrow.
188
258
  *
189
259
  * @param signer Signer to sign the transactions with, must be the same as used in the initialization
190
- * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort
191
- * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
192
- * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
260
+ * @param abortSignal Abort signal
261
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited
262
+ * yet (this is handled on swap creation, if you commit right after quoting, you can use skipChecks=true)
263
+ *
193
264
  * @throws {Error} If invalid signer is provided that doesn't match the swap data
194
265
  */
195
266
  abstract commit(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean): Promise<string>;
196
267
 
197
- abstract waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
198
-
199
268
 
200
269
  //////////////////////////////
201
270
  //// Claim
202
271
 
203
- getClaimFee(): Promise<bigint> {
204
- return this.wrapper.contract.getClaimFee(this._getInitiator(), this.getSwapData());
272
+ /**
273
+ * Returns the transaction fee required for the claim transaction to settle the escrow on the destination
274
+ * smart chain
275
+ */
276
+ async getClaimNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>> {
277
+ const swapContract: T["Contract"] = this.wrapper._contract;
278
+ return toTokenAmount(
279
+ await swapContract.getClaimFee(this._getInitiator(), this.getSwapData()),
280
+ this.wrapper._getNativeToken(),
281
+ this.wrapper._prices
282
+ );
205
283
  }
206
284
 
285
+ /**
286
+ * @inheritDoc
287
+ */
207
288
  abstract txsClaim(signer?: T["Signer"]): Promise<T["TX"][]>;
208
289
 
209
290
  /**
210
- * Claims and finishes the swap
211
- *
212
- * @param signer Signer to sign the transactions with, can also be different to the initializer
213
- * @param abortSignal Abort signal to stop waiting for transaction confirmation
291
+ * @inheritDoc
214
292
  */
215
293
  abstract claim(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
216
294
 
217
295
  /**
218
- * Waits till the swap is successfully claimed
219
- *
220
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
221
- * @param abortSignal AbortSignal
222
- * @throws {Error} If swap is in invalid state (must be COMMIT)
223
- * @returns {boolean} whether the swap was claimed in time or not
296
+ * @inheritDoc
224
297
  */
225
298
  abstract waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
226
299
 
@@ -9,6 +9,11 @@ import {AmountData} from "../../../types/AmountData";
9
9
 
10
10
  export type IFromBTCDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IEscrowSwap<T>> = IEscrowSwapDefinition<T, W, S>;
11
11
 
12
+ /**
13
+ * Base class for wrappers of escrow-based Bitcoin (on-chain & lightning) -> Smart chain swaps
14
+ *
15
+ * @category Swaps/Abstract
16
+ */
12
17
  export abstract class IFromBTCWrapper<
13
18
  T extends ChainType,
14
19
  D extends IFromBTCDefinition<T, IFromBTCWrapper<T, D>, IEscrowSwap<T, D>>,
@@ -18,22 +23,25 @@ export abstract class IFromBTCWrapper<
18
23
  /**
19
24
  * Returns a random sequence to be used for swaps
20
25
  *
21
- * @protected
22
26
  * @returns Random 64-bit sequence number
27
+ *
28
+ * @internal
23
29
  */
24
30
  protected getRandomSequence(): bigint {
25
31
  return BigIntBufferUtils.fromBuffer(randomBytes(8));
26
32
  }
27
33
 
28
34
  /**
29
- * Pre-fetches feeRate for a given swap
35
+ * Pre-fetches smart chain fee rate for initiating a swap escrow on the smart chain side
30
36
  *
31
37
  * @param signer Address initiating the swap
32
38
  * @param amountData
33
39
  * @param claimHash optional claim hash of the swap or null
34
40
  * @param abortController
35
- * @protected
41
+ *
36
42
  * @returns Fee rate
43
+ *
44
+ * @internal
37
45
  */
38
46
  protected preFetchFeeRate(
39
47
  signer: string,
@@ -41,7 +49,7 @@ export abstract class IFromBTCWrapper<
41
49
  claimHash: string | undefined,
42
50
  abortController: AbortController
43
51
  ): Promise<string | undefined> {
44
- return this.contract.getInitFeeRate(this.chain.randomAddress(), signer, amountData.token, claimHash)
52
+ return this._contract.getInitFeeRate(this._chain.randomAddress(), signer, amountData.token, claimHash)
45
53
  .catch(e => {
46
54
  this.logger.warn("preFetchFeeRate(): Error: ", e);
47
55
  abortController.abort(e);
@@ -50,15 +58,18 @@ export abstract class IFromBTCWrapper<
50
58
  }
51
59
 
52
60
  /**
53
- * Pre-fetches intermediary's available SC on-chain liquidity
61
+ * Pre-fetches intermediary (LP) available smart chain liquidity
62
+ *
54
63
  * @param amountData
55
64
  * @param lp Intermediary
56
65
  * @param abortController
57
- * @protected
66
+ *
58
67
  * @returns Intermediary's liquidity balance
68
+ *
69
+ * @internal
59
70
  */
60
71
  protected preFetchIntermediaryLiquidity(amountData: AmountData, lp: Intermediary, abortController: AbortController): Promise<bigint | undefined> {
61
- return lp.getLiquidity(this.chainIdentifier, this.contract, amountData.token.toString(), abortController.signal).catch(e => {
72
+ return lp.getLiquidity(this.chainIdentifier, this._contract, amountData.token.toString(), abortController.signal).catch(e => {
62
73
  this.logger.warn("preFetchIntermediaryLiquidity(): Error: ", e);
63
74
  abortController.abort(e);
64
75
  return undefined;
@@ -66,12 +77,14 @@ export abstract class IFromBTCWrapper<
66
77
  }
67
78
 
68
79
  /**
69
- * Verifies whether the intermediary has enough available liquidity such that we can initiate the swap
80
+ * Verifies whether the intermediary (LP) has enough available liquidity such that we can initiate the swap
81
+ *
82
+ * @param amount Swap amount that the recipient should receive
83
+ * @param liquidityPromise pre-fetched liquidity promise as obtained from {@link preFetchIntermediaryLiquidity}
70
84
  *
71
- * @param amount Swap amount that we should receive
72
- * @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()
73
- * @protected
74
85
  * @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap
86
+ *
87
+ * @internal
75
88
  */
76
89
  protected async verifyIntermediaryLiquidity(
77
90
  amount: bigint,