@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
@@ -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
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,137 @@ 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
+ * Creates the escrow on the destination smart chain side, pre-locking the tokens from the intermediary (LP)
234
+ * into an escrow.
235
+ *
236
+ * @inheritDoc
167
237
  *
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
238
  * @throws {Error} When in invalid state to commit the swap
171
239
  */
172
240
  async txsCommit(skipChecks?: boolean): Promise<T["TX"][]> {
173
241
  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?");
242
+ if(this._data==null || this.signatureData==null) throw new Error("data or signature data is null, invalid state?");
175
243
 
176
244
  if(!this.initiated) {
177
245
  this.initiated = true;
178
246
  await this._saveAndEmit();
179
247
  }
180
248
 
181
- return await this.wrapper.contract.txsInit(
182
- this._getInitiator(), this.data, this.signatureData, skipChecks, this.feeRate
249
+ return await this.wrapper._contract.txsInit(
250
+ this._getInitiator(), this._data, this.signatureData, skipChecks, this.feeRate
183
251
  ).catch(e => Promise.reject(e instanceof SignatureVerificationError ? new Error("Request timed out") : e));
184
252
  }
185
253
 
186
254
  /**
187
- * Commits the swap on-chain, locking the tokens from the intermediary in an HTLC or PTLC
255
+ * Creates the escrow on the destination smart chain side, pre-locking the tokens from the intermediary (LP)
256
+ * into an escrow.
257
+ *
258
+ * @inheritDoc
188
259
  *
189
- * @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)
193
260
  * @throws {Error} If invalid signer is provided that doesn't match the swap data
194
261
  */
195
262
  abstract commit(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean): Promise<string>;
196
263
 
197
- abstract waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
198
-
199
264
 
200
265
  //////////////////////////////
201
266
  //// Claim
202
267
 
203
- getClaimFee(): Promise<bigint> {
204
- return this.wrapper.contract.getClaimFee(this._getInitiator(), this.getSwapData());
268
+ /**
269
+ * Returns the transaction fee required for the claim transaction to settle the escrow on the destination
270
+ * smart chain
271
+ */
272
+ async getClaimNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>> {
273
+ const swapContract: T["Contract"] = this.wrapper._contract;
274
+ return toTokenAmount(
275
+ await swapContract.getClaimFee(this._getInitiator(), this.getSwapData()),
276
+ this.wrapper._getNativeToken(),
277
+ this.wrapper._prices
278
+ );
205
279
  }
206
280
 
281
+ /**
282
+ * @inheritDoc
283
+ */
207
284
  abstract txsClaim(signer?: T["Signer"]): Promise<T["TX"][]>;
208
285
 
209
286
  /**
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
287
+ * @inheritDoc
214
288
  */
215
289
  abstract claim(signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
216
290
 
217
291
  /**
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
292
+ * @inheritDoc
224
293
  */
225
294
  abstract waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
226
295
 
@@ -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
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,