@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
@@ -14,22 +14,73 @@ import { TokenAmount } from "../../types/TokenAmount";
14
14
  import { BtcToken, SCToken } from "../../types/Token";
15
15
  import { LoggerType } from "../../utils/Logger";
16
16
  import { PriceInfoType } from "../../types/PriceInfoType";
17
+ import { SwapExecutionActionBitcoin } from "../../types/SwapExecutionAction";
17
18
  /**
18
- * State enum for SPV FromBTC swaps
19
+ * State enum for SPV vault (UTXO-controlled vault) based swaps
19
20
  * @category Swaps
20
21
  */
21
22
  export declare enum SpvFromBTCSwapState {
23
+ /**
24
+ * Catastrophic failure has occurred when processing the swap on the smart chain side,
25
+ * this implies a bug in the smart contract code or the user and intermediary deliberately
26
+ * creating a bitcoin transaction with invalid format unparsable by the smart contract.
27
+ */
22
28
  CLOSED = -5,
29
+ /**
30
+ * Some of the bitcoin swap transaction inputs were double-spent, this means the swap
31
+ * has failed and no BTC was sent
32
+ */
23
33
  FAILED = -4,
34
+ /**
35
+ * The intermediary (LP) declined to co-sign the submitted PSBT, hence the swap failed
36
+ */
24
37
  DECLINED = -3,
38
+ /**
39
+ * Swap has expired for good and there is no way how it can be executed anymore
40
+ */
25
41
  QUOTE_EXPIRED = -2,
42
+ /**
43
+ * A swap is almost expired, and it should be presented to the user as expired, though
44
+ * there is still a chance that it will be processed
45
+ */
26
46
  QUOTE_SOFT_EXPIRED = -1,
47
+ /**
48
+ * Swap was created, use the {@link SpvFromBTCSwap.getFundedPsbt} or {@link SpvFromBTCSwap.getPsbt} functions
49
+ * to get the bitcoin swap PSBT that should be signed by the user's wallet and then submitted via the
50
+ * {@link SpvFromBTCSwap.submitPsbt} function.
51
+ */
27
52
  CREATED = 0,
53
+ /**
54
+ * Swap bitcoin PSBT was submitted by the client to the SDK
55
+ */
28
56
  SIGNED = 1,
57
+ /**
58
+ * Swap bitcoin PSBT sent to the intermediary (LP), waiting for the intermediary co-sign
59
+ * it and broadcast. You can use the {@link SpvFromBTCSwap.waitTillClaimedOrFronted}
60
+ * function to wait till the intermediary broadcasts the transaction and the transaction
61
+ * confirms.
62
+ */
29
63
  POSTED = 2,
64
+ /**
65
+ * Intermediary (LP) has co-signed and broadcasted the bitcoin transaction. You can use the
66
+ * {@link SpvFromBTCSwap.waitTillClaimedOrFronted} function to wait till the transaction
67
+ * confirms.
68
+ */
30
69
  BROADCASTED = 3,
70
+ /**
71
+ * Settlement on the destination smart chain was fronted and funds were already received
72
+ * by the user, even before the final settlement.
73
+ */
31
74
  FRONTED = 4,
75
+ /**
76
+ * Bitcoin transaction confirmed with necessary amount of confirmations, wait for automatic
77
+ * settlement by the watchtower with the {@link waitTillClaimedOrFronted} function, or settle manually
78
+ * using the {@link FromBTCSwap.claim} or {@link FromBTCSwap.txsClaim} function.
79
+ */
32
80
  BTC_TX_CONFIRMED = 5,
81
+ /**
82
+ * Swap settled on the smart chain and funds received
83
+ */
33
84
  CLAIMED = 6
34
85
  }
35
86
  export type SpvFromBTCSwapInit = ISwapInit & {
@@ -60,70 +111,209 @@ export type SpvFromBTCSwapInit = ISwapInit & {
60
111
  gasPricingInfo?: PriceInfoType;
61
112
  };
62
113
  export declare function isSpvFromBTCSwapInit(obj: any): obj is SpvFromBTCSwapInit;
114
+ /**
115
+ * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring
116
+ * any initiation on the destination chain, and with the added possibility for the user to receive
117
+ * a native token on the destination chain as part of the swap (a "gas drop" feature).
118
+ *
119
+ * @category Swaps
120
+ */
63
121
  export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFromBTCTypeDefinition<T>> implements IBTCWalletSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, SpvFromBTCTypeDefinition<T>, SpvFromBTCSwapState> {
64
- readonly TYPE = SwapType.SPV_VAULT_FROM_BTC;
122
+ readonly TYPE: SwapType.SPV_VAULT_FROM_BTC;
123
+ /**
124
+ * @inheritDoc
125
+ * @internal
126
+ */
65
127
  protected readonly logger: LoggerType;
66
- readonly quoteId: string;
67
- readonly recipient: string;
68
- readonly vaultOwner: string;
69
- readonly vaultId: bigint;
70
- readonly vaultRequiredConfirmations: number;
71
- readonly vaultTokenMultipliers: bigint[];
72
- readonly vaultBtcAddress: string;
73
- readonly vaultUtxo: string;
74
- readonly vaultUtxoValue: bigint;
75
- readonly btcDestinationAddress: string;
76
- readonly btcAmount: bigint;
77
- readonly btcAmountSwap: bigint;
78
- readonly btcAmountGas: bigint;
128
+ private readonly quoteId;
129
+ private readonly recipient;
130
+ private readonly vaultOwner;
131
+ private readonly vaultId;
132
+ private readonly vaultRequiredConfirmations;
133
+ private readonly vaultTokenMultipliers;
134
+ private readonly vaultBtcAddress;
135
+ private readonly vaultUtxo;
136
+ private readonly vaultUtxoValue;
137
+ private readonly btcDestinationAddress;
138
+ private readonly btcAmount;
139
+ private readonly btcAmountSwap;
140
+ private readonly btcAmountGas;
141
+ private readonly outputTotalSwap;
142
+ private readonly outputSwapToken;
143
+ private readonly outputTotalGas;
144
+ private readonly outputGasToken;
145
+ private readonly gasSwapFeeBtc;
146
+ private readonly gasSwapFee;
147
+ private readonly callerFeeShare;
148
+ private readonly frontingFeeShare;
149
+ private readonly executionFeeShare;
150
+ private readonly gasPricingInfo?;
151
+ /**
152
+ * @internal
153
+ */
154
+ readonly _genesisSmartChainBlockHeight: number;
155
+ /**
156
+ * @internal
157
+ */
158
+ _senderAddress?: string;
159
+ /**
160
+ * @internal
161
+ */
162
+ _claimTxId?: string;
163
+ /**
164
+ * @internal
165
+ */
166
+ _frontTxId?: string;
167
+ /**
168
+ * @internal
169
+ */
170
+ _data?: T["SpvVaultWithdrawalData"];
171
+ /**
172
+ * Minimum fee rate in sats/vB that the input bitcoin transaction needs to pay
173
+ */
79
174
  readonly minimumBtcFeeRate: number;
80
- readonly outputTotalSwap: bigint;
81
- readonly outputSwapToken: string;
82
- readonly outputTotalGas: bigint;
83
- readonly outputGasToken: string;
84
- readonly gasSwapFeeBtc: bigint;
85
- readonly gasSwapFee: bigint;
86
- readonly callerFeeShare: bigint;
87
- readonly frontingFeeShare: bigint;
88
- readonly executionFeeShare: bigint;
89
- readonly genesisSmartChainBlockHeight: number;
90
- gasPricingInfo?: PriceInfoType;
91
- senderAddress?: string;
92
- claimTxId?: string;
93
- frontTxId?: string;
94
- data?: T["SpvVaultWithdrawalData"];
95
175
  constructor(wrapper: SpvFromBTCWrapper<T>, init: SpvFromBTCSwapInit);
96
176
  constructor(wrapper: SpvFromBTCWrapper<T>, obj: any);
177
+ /**
178
+ * @inheritDoc
179
+ * @internal
180
+ */
97
181
  protected upgradeVersion(): void;
98
182
  /**
99
- * In case swapFee in BTC is not supplied it recalculates it based on swap price
100
- * @protected
183
+ * @inheritDoc
184
+ * @internal
101
185
  */
102
186
  protected tryCalculateSwapFee(): void;
187
+ /**
188
+ * @inheritDoc
189
+ */
103
190
  refreshPriceData(): Promise<void>;
191
+ /**
192
+ * @inheritDoc
193
+ * @internal
194
+ */
104
195
  _getInitiator(): string;
196
+ /**
197
+ * @inheritDoc
198
+ * @internal
199
+ */
105
200
  _getEscrowHash(): string | null;
201
+ /**
202
+ * @inheritDoc
203
+ */
106
204
  getId(): string;
205
+ /**
206
+ * @inheritDoc
207
+ */
107
208
  getQuoteExpiry(): number;
108
- verifyQuoteValid(): Promise<boolean>;
209
+ /**
210
+ * @inheritDoc
211
+ * @internal
212
+ */
213
+ _verifyQuoteDefinitelyExpired(): Promise<boolean>;
214
+ /**
215
+ * @inheritDoc
216
+ * @internal
217
+ */
218
+ _verifyQuoteValid(): Promise<boolean>;
219
+ /**
220
+ * @inheritDoc
221
+ */
109
222
  getOutputAddress(): string | null;
223
+ /**
224
+ * @inheritDoc
225
+ */
110
226
  getOutputTxId(): string | null;
227
+ /**
228
+ * @inheritDoc
229
+ */
111
230
  getInputAddress(): string | null;
231
+ /**
232
+ * @inheritDoc
233
+ */
112
234
  getInputTxId(): string | null;
235
+ /**
236
+ * @inheritDoc
237
+ */
113
238
  requiresAction(): boolean;
239
+ /**
240
+ * @inheritDoc
241
+ */
114
242
  isFinished(): boolean;
243
+ /**
244
+ * @inheritDoc
245
+ */
115
246
  isClaimable(): boolean;
247
+ /**
248
+ * @inheritDoc
249
+ */
116
250
  isSuccessful(): boolean;
251
+ /**
252
+ * @inheritDoc
253
+ */
117
254
  isFailed(): boolean;
255
+ /**
256
+ * @inheritDoc
257
+ */
118
258
  isQuoteExpired(): boolean;
259
+ /**
260
+ * @inheritDoc
261
+ */
119
262
  isQuoteSoftExpired(): boolean;
263
+ /**
264
+ * Returns the data about used spv vault (UTXO-controlled vault) to perform the swap
265
+ */
266
+ getSpvVaultData(): {
267
+ owner: string;
268
+ vaultId: bigint;
269
+ utxo: string;
270
+ };
271
+ /**
272
+ * Returns the input BTC amount in sats without any fees
273
+ *
274
+ * @internal
275
+ */
120
276
  protected getInputSwapAmountWithoutFee(): bigint;
277
+ /**
278
+ * Returns the input gas BTC amount in sats without any fees
279
+ *
280
+ * @internal
281
+ */
121
282
  protected getInputGasAmountWithoutFee(): bigint;
283
+ /**
284
+ * Returns to total input BTC amount in sats without any fees (this is BTC amount for the swap + BTC amount
285
+ * for the gas drop).
286
+ *
287
+ * @internal
288
+ */
122
289
  protected getInputAmountWithoutFee(): bigint;
290
+ /**
291
+ * Returns the swap output amount without any fees, this value is therefore always higher than
292
+ * the actual received output.
293
+ *
294
+ * @internal
295
+ */
123
296
  protected getOutputWithoutFee(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
297
+ /**
298
+ * Returns the swap fee charged by the intermediary (LP) on this swap
299
+ *
300
+ * @internal
301
+ */
124
302
  protected getSwapFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
303
+ /**
304
+ * Returns the fee to be paid to watchtowers on the destination chain to automatically
305
+ * process and settle this swap without requiring any user interaction
306
+ *
307
+ * @internal
308
+ */
125
309
  protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
310
+ /**
311
+ * @inheritDoc
312
+ */
126
313
  getFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
314
+ /**
315
+ * @inheritDoc
316
+ */
127
317
  getFeeBreakdown(): [
128
318
  {
129
319
  type: FeeType.SWAP;
@@ -134,13 +324,38 @@ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFro
134
324
  fee: Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
135
325
  }
136
326
  ];
327
+ /**
328
+ * @inheritDoc
329
+ */
137
330
  getOutputToken(): SCToken<T["ChainId"]>;
331
+ /**
332
+ * @inheritDoc
333
+ */
138
334
  getOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
335
+ /**
336
+ * @inheritDoc
337
+ */
139
338
  getGasDropOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>, true>;
339
+ /**
340
+ * @inheritDoc
341
+ */
140
342
  getInputWithoutFee(): TokenAmount<T["ChainId"], BtcToken<false>, true>;
343
+ /**
344
+ * @inheritDoc
345
+ */
141
346
  getInputToken(): BtcToken<false>;
347
+ /**
348
+ * @inheritDoc
349
+ */
142
350
  getInput(): TokenAmount<T["ChainId"], BtcToken<false>, true>;
351
+ /**
352
+ * @inheritDoc
353
+ */
143
354
  getRequiredConfirmationsCount(): number;
355
+ /**
356
+ * Returns raw transaction details that can be used to manually create a swap PSBT. It is better to use
357
+ * the {@link getPsbt} or {@link getFundedPsbt} function retrieve an already prepared PSBT.
358
+ */
144
359
  getTransactionDetails(): Promise<{
145
360
  in0txid: string;
146
361
  in0vout: number;
@@ -154,9 +369,9 @@ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFro
154
369
  locktime: number;
155
370
  }>;
156
371
  /**
157
- * Returns the raw PSBT (not funded), the wallet should fund the PSBT (add its inputs), set the nSequence field of the
158
- * 2nd input (input 1 - indexing from 0) to the value returned in `in1sequence`, sign the PSBT and then pass
159
- * it back to the SDK with `swap.submitPsbt()`
372
+ * Returns the raw PSBT (not funded), the wallet should fund the PSBT (add its inputs) and importantly **set the nSequence field of the
373
+ * 2nd input** (input 1 - indexing from 0) to the value returned in `in1sequence`, sign the PSBT and then pass
374
+ * it back to the swap with {@link submitPsbt} function.
160
375
  */
161
376
  getPsbt(): Promise<{
162
377
  psbt: Transaction;
@@ -165,13 +380,9 @@ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFro
165
380
  in1sequence: number;
166
381
  }>;
167
382
  /**
168
- * Returns the PSBT that is already funded with wallet's UTXOs (runs a coin-selection algorithm to choose UTXOs to use),
169
- * also returns inputs indices that need to be signed by the wallet before submitting the PSBT back to the SDK with
170
- * `swap.submitPsbt()`
383
+ * Note that when passing the `feeRate` argument, the fee must be at least {@link minimumBtcFeeRate} sats/vB.
171
384
  *
172
- * @param _bitcoinWallet Sender's bitcoin wallet
173
- * @param feeRate Optional fee rate for the transaction, needs to be at least as big as {minimumBtcFeeRate} field
174
- * @param additionalOutputs additional outputs to add to the PSBT - can be used to collect fees from users
385
+ * @inheritDoc
175
386
  */
176
387
  getFundedPsbt(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number, additionalOutputs?: ({
177
388
  amount: bigint;
@@ -186,22 +397,27 @@ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFro
186
397
  signInputs: number[];
187
398
  }>;
188
399
  /**
189
- * Submits a PSBT signed by the wallet back to the SDK
190
- *
191
- * @param _psbt A psbt - either a Transaction object or a hex or base64 encoded PSBT string
400
+ * @inheritDoc
192
401
  */
193
402
  submitPsbt(_psbt: Transaction | string): Promise<string>;
403
+ /**
404
+ * @inheritDoc
405
+ */
194
406
  estimateBitcoinFee(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number): Promise<TokenAmount<any, BtcToken<false>, true> | null>;
407
+ /**
408
+ * @inheritDoc
409
+ */
195
410
  sendBitcoinTransaction(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, feeRate?: number): Promise<string>;
196
411
  /**
197
- * Executes the swap with the provided bitcoin wallet,
412
+ * Executes the swap with the provided bitcoin wallet
198
413
  *
199
414
  * @param wallet Bitcoin wallet to use to sign the bitcoin transaction
200
415
  * @param callbacks Callbacks to track the progress of the swap
201
416
  * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
202
417
  *
203
418
  * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
204
- * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
419
+ * user, in case `false` is returned the user should call the {@link claim} function to settle the swap on the
420
+ * destination manually
205
421
  */
206
422
  execute(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, callbacks?: {
207
423
  onSourceTransactionSent?: (sourceTxId: string) => void;
@@ -214,28 +430,22 @@ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFro
214
430
  btcTxCheckIntervalSeconds?: number;
215
431
  maxWaitTillAutomaticSettlementSeconds?: number;
216
432
  }): Promise<boolean>;
433
+ /**
434
+ * @inheritDoc
435
+ *
436
+ * @param options.bitcoinWallet Optional bitcoin wallet address specification to return a funded PSBT,
437
+ * if not provided a raw PSBT is returned instead which necessitates the implementor to manually add
438
+ * inputs to the bitcoin transaction and **set the nSequence field of the 2nd input** (input 1 -
439
+ * indexing from 0) to the value returned in `in1sequence`
440
+ */
217
441
  txsExecute(options?: {
218
442
  bitcoinWallet?: MinimalBitcoinWalletInterface;
219
- }): Promise<{
220
- name: "Payment";
221
- description: string;
222
- chain: string;
223
- txs: ({
224
- type: string;
225
- psbt: Transaction;
226
- psbtHex: string;
227
- psbtBase64: string;
228
- in1sequence: number;
229
- } | {
230
- type: string;
231
- psbt: Transaction;
232
- psbtHex: string;
233
- psbtBase64: string;
234
- signInputs: number[];
235
- })[];
236
- }[]>;
443
+ }): Promise<[
444
+ SwapExecutionActionBitcoin<"RAW_PSBT" | "FUNDED_PSBT">
445
+ ]>;
237
446
  /**
238
447
  * Checks whether a bitcoin payment was already made, returns the payment or null when no payment has been made.
448
+ * @internal
239
449
  */
240
450
  protected getBitcoinPayment(): Promise<{
241
451
  txId: string;
@@ -244,72 +454,98 @@ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFro
244
454
  inputAddresses?: string[];
245
455
  } | null>;
246
456
  /**
247
- * Waits till the bitcoin transaction confirms and swap becomes claimable
248
- *
249
- * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations
250
- * @param checkIntervalSeconds How often to check the bitcoin transaction
251
- * @param abortSignal Abort signal
252
- * @throws {Error} if in invalid state (must be CLAIM_COMMITED)
457
+ * @inheritDoc
458
+ * @throws {Error} if in invalid state (must be {@link SpvFromBTCSwapState.POSTED} or
459
+ * {@link SpvFromBTCSwapState.BROADCASTED} states)
253
460
  */
254
461
  waitForBitcoinTransaction(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<string>;
255
462
  /**
256
- * Returns transactions required to claim the swap on-chain (and possibly also sync the bitcoin light client)
257
- * after a bitcoin transaction was sent and confirmed
463
+ * Also possibly also syncs the bitcoin light client if necessary
258
464
  *
259
- * @throws {Error} If the swap is in invalid state (must be BTC_TX_CONFIRMED)
465
+ * @inheritDoc
466
+ *
467
+ * @throws {Error} If the swap is in invalid state (must be {@link SpvFromBTCSwapState.BTC_TX_CONFIRMED})
260
468
  */
261
469
  txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
262
470
  /**
263
- * Claims and finishes the swap
471
+ * Also possibly also syncs the bitcoin light client if necessary
472
+ *
473
+ * @inheritDoc
264
474
  *
265
- * @param _signer Signer to sign the transactions with, can also be different to the initializer
266
- * @param abortSignal Abort signal to stop waiting for transaction confirmation
475
+ * @throws {Error} If the swap is in invalid state (must be {@link SpvFromBTCSwapState.BTC_TX_CONFIRMED})
267
476
  */
268
- claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
477
+ claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
269
478
  /**
270
479
  * Periodically checks the chain to see whether the swap was finished (claimed or refunded)
271
480
  *
272
481
  * @param abortSignal
273
482
  * @param interval How often to check (in seconds), default to 5s
274
- * @protected
483
+ * @internal
275
484
  */
276
485
  protected watchdogWaitTillResult(abortSignal?: AbortSignal, interval?: number): Promise<SpvWithdrawalClaimedState | SpvWithdrawalFrontedState | SpvWithdrawalClosedState>;
277
486
  /**
278
- * Waits till the swap is successfully executed
487
+ * This is an alias for the {@link waitTillClaimedOrFronted} function and will
488
+ * also resolve if the swap has been fronted (not necessarily claimed)
489
+ *
490
+ * @inheritDoc
491
+ */
492
+ waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
493
+ /**
494
+ * Waits till the swap is successfully fronted or settled on the destination chain
495
+ *
496
+ * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled (by default
497
+ * it waits indefinitely)
498
+ * @param abortSignal Abort signal
279
499
  *
280
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
281
- * @param abortSignal
282
- * @throws {Error} If swap is in invalid state (must be BTC_TX_CONFIRMED)
283
- * @throws {Error} If the LP refunded sooner than we were able to claim
284
500
  * @returns {boolean} whether the swap was claimed or fronted automatically or not, if the swap was not claimed
285
- * the user can claim manually through `swap.claim()`
501
+ * the user can claim manually through the {@link claim} function
286
502
  */
287
503
  waitTillClaimedOrFronted(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
288
504
  /**
289
- * Waits till the bitcoin transaction confirms and swap is claimed
505
+ * Waits till the bitcoin transaction confirms and swap settled on the destination chain
290
506
  *
291
- * @param abortSignal Abort signal
292
- * @param checkIntervalSeconds How often to check the bitcoin transaction
293
507
  * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations
294
- * @throws {Error} if in invalid state (must be CLAIM_COMMITED)
508
+ * @param checkIntervalSeconds How often to check the bitcoin transaction (5 seconds by default)
509
+ * @param abortSignal Abort signal
510
+ *
511
+ * @throws {Error} if in invalid state (must be {@link SpvFromBTCSwapState.POSTED} or
512
+ * {@link SpvFromBTCSwapState.BROADCASTED} states)
295
513
  */
296
514
  waitTillExecuted(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
515
+ /**
516
+ * @inheritDoc
517
+ */
297
518
  serialize(): any;
298
519
  /**
299
- * For internal use! Used to set the txId of the bitcoin payment from the on-chain events listener
520
+ * Used to set the txId of the bitcoin payment from the on-chain events listener
300
521
  *
301
522
  * @param txId
523
+ * @internal
302
524
  */
303
525
  _setBitcoinTxId(txId: string): Promise<void>;
526
+ /**
527
+ * @internal
528
+ */
304
529
  _syncStateFromBitcoin(save?: boolean): Promise<boolean>;
305
530
  /**
306
531
  * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
307
532
  * data
308
- *
309
- * @private
310
533
  */
311
534
  private syncStateFromChain;
535
+ /**
536
+ * @inheritDoc
537
+ * @internal
538
+ */
312
539
  _sync(save?: boolean): Promise<boolean>;
540
+ /**
541
+ * @inheritDoc
542
+ * @internal
543
+ */
313
544
  _tick(save?: boolean): Promise<boolean>;
545
+ /**
546
+ * Checks whether an on-chain withdrawal state should be fetched for this specific swap
547
+ *
548
+ * @internal
549
+ */
314
550
  _shouldCheckWithdrawalState(frontingAddress?: string | null, vaultDataUtxo?: string | null): Promise<boolean>;
315
551
  }