@atomiqlabs/sdk 8.9.1 → 8.9.3

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 (366) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +1760 -1760
  3. package/api/index.d.ts +1 -1
  4. package/api/index.js +3 -3
  5. package/dist/ApiList.d.ts +37 -37
  6. package/dist/ApiList.js +30 -30
  7. package/dist/SmartChainAssets.d.ts +181 -181
  8. package/dist/SmartChainAssets.js +181 -181
  9. package/dist/api/ApiEndpoints.d.ts +393 -393
  10. package/dist/api/ApiEndpoints.js +2 -2
  11. package/dist/api/ApiParser.d.ts +10 -10
  12. package/dist/api/ApiParser.js +134 -134
  13. package/dist/api/ApiTypes.d.ts +157 -157
  14. package/dist/api/ApiTypes.js +75 -75
  15. package/dist/api/SerializedAction.d.ts +40 -40
  16. package/dist/api/SerializedAction.js +59 -59
  17. package/dist/api/SwapperApi.d.ts +50 -50
  18. package/dist/api/SwapperApi.js +431 -431
  19. package/dist/api/index.d.ts +5 -5
  20. package/dist/api/index.js +24 -24
  21. package/dist/bitcoin/coinselect2/accumulative.d.ts +7 -7
  22. package/dist/bitcoin/coinselect2/accumulative.js +52 -52
  23. package/dist/bitcoin/coinselect2/blackjack.d.ts +7 -7
  24. package/dist/bitcoin/coinselect2/blackjack.js +38 -38
  25. package/dist/bitcoin/coinselect2/index.d.ts +20 -20
  26. package/dist/bitcoin/coinselect2/index.js +69 -69
  27. package/dist/bitcoin/coinselect2/utils.d.ts +82 -82
  28. package/dist/bitcoin/coinselect2/utils.js +158 -158
  29. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +113 -113
  30. package/dist/bitcoin/wallet/BitcoinWallet.js +335 -335
  31. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +116 -116
  32. package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -21
  33. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +106 -106
  34. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +196 -196
  35. package/dist/enums/FeeType.d.ts +15 -15
  36. package/dist/enums/FeeType.js +19 -19
  37. package/dist/enums/SwapAmountType.d.ts +15 -15
  38. package/dist/enums/SwapAmountType.js +19 -19
  39. package/dist/enums/SwapDirection.d.ts +15 -15
  40. package/dist/enums/SwapDirection.js +19 -19
  41. package/dist/enums/SwapSide.d.ts +15 -15
  42. package/dist/enums/SwapSide.js +19 -19
  43. package/dist/enums/SwapType.d.ts +75 -75
  44. package/dist/enums/SwapType.js +79 -79
  45. package/dist/errors/IntermediaryError.d.ts +13 -13
  46. package/dist/errors/IntermediaryError.js +27 -27
  47. package/dist/errors/RequestError.d.ts +32 -32
  48. package/dist/errors/RequestError.js +54 -54
  49. package/dist/errors/UserError.d.ts +8 -8
  50. package/dist/errors/UserError.js +16 -16
  51. package/dist/events/UnifiedSwapEventListener.d.ts +24 -24
  52. package/dist/events/UnifiedSwapEventListener.js +138 -138
  53. package/dist/http/HttpUtils.d.ts +29 -29
  54. package/dist/http/HttpUtils.js +97 -97
  55. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  56. package/dist/http/paramcoders/IParamReader.js +2 -2
  57. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -44
  58. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  59. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -20
  60. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  61. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  62. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  63. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  64. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  65. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -13
  66. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  67. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +17 -17
  68. package/dist/http/paramcoders/client/StreamingFetchPromise.js +175 -175
  69. package/dist/index.d.ts +86 -86
  70. package/dist/index.js +159 -159
  71. package/dist/intermediaries/Intermediary.d.ts +178 -178
  72. package/dist/intermediaries/Intermediary.js +166 -166
  73. package/dist/intermediaries/IntermediaryDiscovery.d.ts +216 -216
  74. package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
  75. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +607 -607
  76. package/dist/intermediaries/apis/IntermediaryAPI.js +764 -764
  77. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  78. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  79. package/dist/intermediaries/auth/SignedKeyBasedAuth.d.ts +14 -14
  80. package/dist/intermediaries/auth/SignedKeyBasedAuth.js +68 -68
  81. package/dist/lnurl/LNURL.d.ts +102 -102
  82. package/dist/lnurl/LNURL.js +321 -321
  83. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  84. package/dist/prices/RedundantSwapPrice.js +222 -222
  85. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  86. package/dist/prices/SingleSwapPrice.js +44 -44
  87. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  88. package/dist/prices/SwapPriceWithChain.js +128 -128
  89. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  90. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  91. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  92. package/dist/prices/abstract/IPriceProvider.js +74 -74
  93. package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
  94. package/dist/prices/abstract/ISwapPrice.js +279 -279
  95. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  96. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  97. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  98. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  99. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  100. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  101. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  102. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  103. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  104. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  105. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  106. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  107. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  108. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  109. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  110. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  111. package/dist/storage/IUnifiedStorage.d.ts +127 -127
  112. package/dist/storage/IUnifiedStorage.js +2 -2
  113. package/dist/storage/UnifiedSwapStorage.d.ts +120 -120
  114. package/dist/storage/UnifiedSwapStorage.js +154 -154
  115. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  116. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  117. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  118. package/dist/storage-browser/LocalStorageManager.js +93 -93
  119. package/dist/swapper/Swapper.d.ts +770 -770
  120. package/dist/swapper/Swapper.js +1758 -1758
  121. package/dist/swapper/SwapperFactory.d.ts +135 -135
  122. package/dist/swapper/SwapperFactory.js +162 -162
  123. package/dist/swapper/SwapperUtils.d.ts +222 -222
  124. package/dist/swapper/SwapperUtils.js +519 -519
  125. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  126. package/dist/swapper/SwapperWithChain.js +469 -469
  127. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  128. package/dist/swapper/SwapperWithSigner.js +318 -318
  129. package/dist/swaps/IAddressSwap.d.ts +22 -22
  130. package/dist/swaps/IAddressSwap.js +14 -14
  131. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  132. package/dist/swaps/IBTCWalletSwap.js +18 -18
  133. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  134. package/dist/swaps/IClaimableSwap.js +15 -15
  135. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  136. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  137. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  138. package/dist/swaps/IRefundableSwap.js +14 -14
  139. package/dist/swaps/ISwap.d.ts +453 -453
  140. package/dist/swaps/ISwap.js +371 -371
  141. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  142. package/dist/swaps/ISwapWithGasDrop.js +12 -12
  143. package/dist/swaps/ISwapWrapper.d.ts +295 -295
  144. package/dist/swaps/ISwapWrapper.js +373 -373
  145. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  146. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  147. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +139 -139
  148. package/dist/swaps/escrow_swaps/IEscrowSwap.js +172 -172
  149. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +129 -129
  150. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
  151. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +107 -107
  152. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  153. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  154. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  155. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +64 -64
  156. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +82 -82
  157. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +547 -547
  158. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1419 -1419
  159. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +192 -192
  160. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
  161. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +650 -650
  162. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1577 -1577
  163. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +237 -237
  164. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
  165. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +491 -491
  166. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1463 -1463
  167. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +204 -204
  168. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
  169. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +446 -446
  170. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +1097 -1097
  171. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +68 -68
  172. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +117 -117
  173. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -127
  174. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  175. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +252 -252
  176. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +535 -535
  177. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  178. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  179. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +134 -134
  180. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
  181. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +694 -694
  182. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1687 -1687
  183. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +259 -259
  184. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
  185. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +302 -302
  186. package/dist/swaps/trusted/ln/LnForGasSwap.js +625 -625
  187. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  188. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  189. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +343 -343
  190. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +698 -698
  191. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +71 -71
  192. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +93 -93
  193. package/dist/types/AmountData.d.ts +10 -10
  194. package/dist/types/AmountData.js +2 -2
  195. package/dist/types/CustomPriceFunction.d.ts +11 -11
  196. package/dist/types/CustomPriceFunction.js +2 -2
  197. package/dist/types/PriceInfoType.d.ts +28 -28
  198. package/dist/types/PriceInfoType.js +57 -57
  199. package/dist/types/SwapExecutionAction.d.ts +195 -195
  200. package/dist/types/SwapExecutionAction.js +106 -106
  201. package/dist/types/SwapExecutionStep.d.ts +144 -144
  202. package/dist/types/SwapExecutionStep.js +87 -87
  203. package/dist/types/SwapStateInfo.d.ts +5 -5
  204. package/dist/types/SwapStateInfo.js +2 -2
  205. package/dist/types/SwapWithSigner.d.ts +17 -17
  206. package/dist/types/SwapWithSigner.js +43 -43
  207. package/dist/types/Token.d.ts +99 -99
  208. package/dist/types/Token.js +76 -76
  209. package/dist/types/TokenAmount.d.ts +75 -75
  210. package/dist/types/TokenAmount.js +85 -85
  211. package/dist/types/fees/Fee.d.ts +50 -50
  212. package/dist/types/fees/Fee.js +2 -2
  213. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  214. package/dist/types/fees/FeeBreakdown.js +2 -2
  215. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  216. package/dist/types/fees/PercentagePPM.js +18 -18
  217. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  218. package/dist/types/lnurl/LNURLPay.js +31 -31
  219. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  220. package/dist/types/lnurl/LNURLWithdraw.js +27 -27
  221. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  222. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -15
  223. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  224. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  225. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  226. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  227. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  228. package/dist/utils/AutomaticClockDriftCorrection.js +70 -70
  229. package/dist/utils/BitcoinUtils.d.ts +18 -18
  230. package/dist/utils/BitcoinUtils.js +174 -174
  231. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  232. package/dist/utils/BitcoinWalletUtils.js +14 -14
  233. package/dist/utils/Logger.d.ts +7 -7
  234. package/dist/utils/Logger.js +12 -12
  235. package/dist/utils/RetryUtils.d.ts +22 -22
  236. package/dist/utils/RetryUtils.js +67 -67
  237. package/dist/utils/SwapUtils.d.ts +88 -88
  238. package/dist/utils/SwapUtils.js +72 -72
  239. package/dist/utils/TimeoutUtils.d.ts +17 -17
  240. package/dist/utils/TimeoutUtils.js +55 -55
  241. package/dist/utils/TokenUtils.d.ts +19 -19
  242. package/dist/utils/TokenUtils.js +37 -37
  243. package/dist/utils/TypeUtils.d.ts +7 -7
  244. package/dist/utils/TypeUtils.js +2 -2
  245. package/dist/utils/Utils.d.ts +69 -69
  246. package/dist/utils/Utils.js +214 -214
  247. package/package.json +46 -46
  248. package/src/SmartChainAssets.ts +186 -186
  249. package/src/api/ApiEndpoints.ts +427 -427
  250. package/src/api/ApiParser.ts +138 -138
  251. package/src/api/ApiTypes.ts +229 -229
  252. package/src/api/SerializedAction.ts +97 -97
  253. package/src/api/SwapperApi.ts +545 -545
  254. package/src/api/index.ts +5 -5
  255. package/src/bitcoin/coinselect2/accumulative.ts +69 -69
  256. package/src/bitcoin/coinselect2/blackjack.ts +50 -50
  257. package/src/bitcoin/coinselect2/index.ts +93 -93
  258. package/src/bitcoin/coinselect2/utils.ts +236 -236
  259. package/src/bitcoin/wallet/BitcoinWallet.ts +439 -439
  260. package/src/bitcoin/wallet/IBitcoinWallet.ts +140 -140
  261. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +225 -225
  262. package/src/enums/FeeType.ts +15 -15
  263. package/src/enums/SwapAmountType.ts +16 -16
  264. package/src/enums/SwapDirection.ts +15 -15
  265. package/src/enums/SwapSide.ts +16 -16
  266. package/src/enums/SwapType.ts +75 -75
  267. package/src/errors/IntermediaryError.ts +28 -28
  268. package/src/errors/RequestError.ts +64 -64
  269. package/src/errors/UserError.ts +15 -15
  270. package/src/events/UnifiedSwapEventListener.ts +181 -181
  271. package/src/http/HttpUtils.ts +97 -97
  272. package/src/http/paramcoders/IParamReader.ts +9 -9
  273. package/src/http/paramcoders/ParamDecoder.ts +145 -145
  274. package/src/http/paramcoders/ParamEncoder.ts +40 -40
  275. package/src/http/paramcoders/SchemaVerifier.ts +153 -153
  276. package/src/http/paramcoders/client/ResponseParamDecoder.ts +57 -57
  277. package/src/http/paramcoders/client/StreamParamEncoder.ts +28 -28
  278. package/src/http/paramcoders/client/StreamingFetchPromise.ts +194 -194
  279. package/src/index.ts +141 -141
  280. package/src/intermediaries/Intermediary.ts +280 -280
  281. package/src/intermediaries/IntermediaryDiscovery.ts +548 -548
  282. package/src/intermediaries/apis/IntermediaryAPI.ts +1247 -1247
  283. package/src/intermediaries/auth/SignedKeyBasedAuth.ts +69 -69
  284. package/src/lnurl/LNURL.ts +402 -402
  285. package/src/prices/RedundantSwapPrice.ts +264 -264
  286. package/src/prices/SingleSwapPrice.ts +50 -50
  287. package/src/prices/SwapPriceWithChain.ts +194 -194
  288. package/src/prices/abstract/ICachedSwapPrice.ts +85 -85
  289. package/src/prices/abstract/IPriceProvider.ts +127 -127
  290. package/src/prices/abstract/ISwapPrice.ts +390 -390
  291. package/src/prices/providers/BinancePriceProvider.ts +48 -48
  292. package/src/prices/providers/CoinGeckoPriceProvider.ts +46 -46
  293. package/src/prices/providers/CoinPaprikaPriceProvider.ts +49 -49
  294. package/src/prices/providers/CustomPriceProvider.ts +40 -40
  295. package/src/prices/providers/KrakenPriceProvider.ts +83 -83
  296. package/src/prices/providers/OKXPriceProvider.ts +59 -59
  297. package/src/prices/providers/abstract/ExchangePriceProvider.ts +31 -31
  298. package/src/prices/providers/abstract/HttpPriceProvider.ts +14 -14
  299. package/src/storage/IUnifiedStorage.ts +136 -136
  300. package/src/storage/UnifiedSwapStorage.ts +175 -175
  301. package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
  302. package/src/storage-browser/LocalStorageManager.ts +106 -106
  303. package/src/swapper/Swapper.ts +2570 -2570
  304. package/src/swapper/SwapperFactory.ts +307 -307
  305. package/src/swapper/SwapperUtils.ts +610 -610
  306. package/src/swapper/SwapperWithChain.ts +707 -707
  307. package/src/swapper/SwapperWithSigner.ts +511 -511
  308. package/src/swaps/IAddressSwap.ts +30 -30
  309. package/src/swaps/IBTCWalletSwap.ts +92 -92
  310. package/src/swaps/IClaimableSwap.ts +65 -65
  311. package/src/swaps/IClaimableSwapWrapper.ts +17 -17
  312. package/src/swaps/IRefundableSwap.ts +58 -58
  313. package/src/swaps/ISwap.ts +775 -775
  314. package/src/swaps/ISwapWithGasDrop.ts +25 -25
  315. package/src/swaps/ISwapWrapper.ts +564 -564
  316. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
  317. package/src/swaps/escrow_swaps/IEscrowSwap.ts +271 -271
  318. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +284 -284
  319. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +172 -172
  320. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +300 -300
  321. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +107 -107
  322. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1670 -1671
  323. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +603 -603
  324. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1883 -1883
  325. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +752 -752
  326. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1753 -1753
  327. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +612 -612
  328. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1327 -1327
  329. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +138 -138
  330. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +304 -304
  331. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +787 -787
  332. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
  333. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +403 -403
  334. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +2148 -2148
  335. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1238 -1238
  336. package/src/swaps/trusted/ln/LnForGasSwap.ts +753 -753
  337. package/src/swaps/trusted/ln/LnForGasWrapper.ts +90 -90
  338. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +843 -843
  339. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +133 -133
  340. package/src/types/AmountData.ts +9 -9
  341. package/src/types/CustomPriceFunction.ts +11 -11
  342. package/src/types/PriceInfoType.ts +66 -66
  343. package/src/types/SwapExecutionAction.ts +323 -323
  344. package/src/types/SwapExecutionStep.ts +224 -224
  345. package/src/types/SwapStateInfo.ts +6 -6
  346. package/src/types/SwapWithSigner.ts +61 -61
  347. package/src/types/Token.ts +163 -163
  348. package/src/types/TokenAmount.ts +167 -167
  349. package/src/types/fees/Fee.ts +56 -56
  350. package/src/types/fees/FeeBreakdown.ts +11 -11
  351. package/src/types/fees/PercentagePPM.ts +26 -26
  352. package/src/types/lnurl/LNURLPay.ts +79 -79
  353. package/src/types/lnurl/LNURLWithdraw.ts +61 -61
  354. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -30
  355. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +21 -21
  356. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +9 -9
  357. package/src/utils/AutomaticClockDriftCorrection.ts +71 -71
  358. package/src/utils/BitcoinUtils.ts +164 -164
  359. package/src/utils/BitcoinWalletUtils.ts +15 -15
  360. package/src/utils/Logger.ts +14 -14
  361. package/src/utils/RetryUtils.ts +78 -78
  362. package/src/utils/SwapUtils.ts +99 -99
  363. package/src/utils/TimeoutUtils.ts +49 -49
  364. package/src/utils/TokenUtils.ts +33 -33
  365. package/src/utils/TypeUtils.ts +8 -8
  366. package/src/utils/Utils.ts +221 -221
@@ -1,694 +1,694 @@
1
- import { ISwap, ISwapInit } from "../ISwap";
2
- import { BtcTx, ChainType, SpvWithdrawalClaimedState, SpvWithdrawalClosedState, SpvWithdrawalFrontedState } from "@atomiqlabs/base";
3
- import { SwapType } from "../../enums/SwapType";
4
- import { SpvFromBTCTypeDefinition, SpvFromBTCWrapper } from "./SpvFromBTCWrapper";
5
- import { Transaction } from "@scure/btc-signer";
6
- import { Fee } from "../../types/fees/Fee";
7
- import { BitcoinWalletUtxo, IBitcoinWallet } from "../../bitcoin/wallet/IBitcoinWallet";
8
- import { IBTCWalletSwap } from "../IBTCWalletSwap";
9
- import { ISwapWithGasDrop } from "../ISwapWithGasDrop";
10
- import { MinimalBitcoinWalletInterface, MinimalBitcoinWalletInterfaceWithSigner } from "../../types/wallets/MinimalBitcoinWalletInterface";
11
- import { IClaimableSwap } from "../IClaimableSwap";
12
- import { FeeType } from "../../enums/FeeType";
13
- import { TokenAmount } from "../../types/TokenAmount";
14
- import { BtcToken, SCToken } from "../../types/Token";
15
- import { LoggerType } from "../../utils/Logger";
16
- import { PriceInfoType } from "../../types/PriceInfoType";
17
- import { SwapExecutionActionSignPSBT, SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../types/SwapExecutionAction";
18
- import { SwapExecutionStepPayment, SwapExecutionStepSettlement } from "../../types/SwapExecutionStep";
19
- import { SwapStateInfo } from "../../types/SwapStateInfo";
20
- /**
21
- * State enum for SPV vault (UTXO-controlled vault) based swaps
22
- * @category Swaps/Bitcoin → Smart chain
23
- */
24
- export declare enum SpvFromBTCSwapState {
25
- /**
26
- * Catastrophic failure has occurred when processing the swap on the smart chain side,
27
- * this implies a bug in the smart contract code or the user and intermediary deliberately
28
- * creating a bitcoin transaction with invalid format unparsable by the smart contract.
29
- */
30
- CLOSED = -5,
31
- /**
32
- * Some of the bitcoin swap transaction inputs were double-spent, this means the swap
33
- * has failed and no BTC was sent
34
- */
35
- FAILED = -4,
36
- /**
37
- * The intermediary (LP) declined to co-sign the submitted PSBT, hence the swap failed
38
- */
39
- DECLINED = -3,
40
- /**
41
- * Swap has expired for good and there is no way how it can be executed anymore
42
- */
43
- QUOTE_EXPIRED = -2,
44
- /**
45
- * A swap is almost expired, and it should be presented to the user as expired, though
46
- * there is still a chance that it will be processed
47
- */
48
- QUOTE_SOFT_EXPIRED = -1,
49
- /**
50
- * Swap was created, use the {@link SpvFromBTCSwap.getFundedPsbt} or {@link SpvFromBTCSwap.getPsbt} functions
51
- * to get the bitcoin swap PSBT that should be signed by the user's wallet and then submitted via the
52
- * {@link SpvFromBTCSwap.submitPsbt} function.
53
- */
54
- CREATED = 0,
55
- /**
56
- * Swap bitcoin PSBT was submitted by the client to the SDK
57
- */
58
- SIGNED = 1,
59
- /**
60
- * Swap bitcoin PSBT sent to the intermediary (LP), waiting for the intermediary co-sign
61
- * it and broadcast. You can use the {@link SpvFromBTCSwap.waitTillClaimedOrFronted}
62
- * function to wait till the intermediary broadcasts the transaction and the transaction
63
- * confirms.
64
- */
65
- POSTED = 2,
66
- /**
67
- * Intermediary (LP) has co-signed and broadcasted the bitcoin transaction. You can use the
68
- * {@link SpvFromBTCSwap.waitTillClaimedOrFronted} function to wait till the transaction
69
- * confirms.
70
- */
71
- BROADCASTED = 3,
72
- /**
73
- * Settlement on the destination smart chain was fronted and funds were already received
74
- * by the user, even before the final settlement.
75
- */
76
- FRONTED = 4,
77
- /**
78
- * Bitcoin transaction confirmed with necessary amount of confirmations, wait for automatic
79
- * settlement by the watchtower with the {@link waitTillClaimedOrFronted} function, or settle manually
80
- * using the {@link FromBTCSwap.claim} or {@link FromBTCSwap.txsClaim} function.
81
- */
82
- BTC_TX_CONFIRMED = 5,
83
- /**
84
- * Swap settled on the smart chain and funds received
85
- */
86
- CLAIMED = 6
87
- }
88
- export type SpvFromBTCSwapInit = ISwapInit & {
89
- quoteId: string;
90
- recipient: string;
91
- vaultOwner: string;
92
- vaultId: bigint;
93
- vaultRequiredConfirmations: number;
94
- vaultTokenMultipliers: bigint[];
95
- vaultBtcAddress: string;
96
- vaultUtxo: string;
97
- vaultUtxoValue: bigint;
98
- btcDestinationAddress: string;
99
- btcAmount: bigint;
100
- btcAmountSwap: bigint;
101
- btcAmountGas: bigint;
102
- minimumBtcFeeRate: number;
103
- outputTotalSwap: bigint;
104
- outputSwapToken: string;
105
- outputTotalGas: bigint;
106
- outputGasToken: string;
107
- gasSwapFeeBtc: bigint;
108
- gasSwapFee: bigint;
109
- callerFeeShare: bigint;
110
- frontingFeeShare: bigint;
111
- executionFeeShare: bigint;
112
- genesisSmartChainBlockHeight: number;
113
- gasPricingInfo?: PriceInfoType;
114
- };
115
- export declare function isSpvFromBTCSwapInit(obj: any): obj is SpvFromBTCSwapInit;
116
- /**
117
- * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring
118
- * any initiation on the destination chain, and with the added possibility for the user to receive
119
- * a native token on the destination chain as part of the swap (a "gas drop" feature).
120
- *
121
- * @category Swaps/Bitcoin → Smart chain
122
- */
123
- export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFromBTCTypeDefinition<T>> implements IBTCWalletSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, SpvFromBTCTypeDefinition<T>, SpvFromBTCSwapState> {
124
- protected readonly currentVersion: number;
125
- readonly TYPE: SwapType.SPV_VAULT_FROM_BTC;
126
- /**
127
- * @internal
128
- */
129
- protected readonly swapStateDescription: {
130
- [-5]: string;
131
- [-4]: string;
132
- [-3]: string;
133
- [-2]: string;
134
- [-1]: string;
135
- 0: string;
136
- 1: string;
137
- 2: string;
138
- 3: string;
139
- 4: string;
140
- 5: string;
141
- 6: string;
142
- };
143
- /**
144
- * @internal
145
- */
146
- protected readonly swapStateName: (state: number) => string;
147
- /**
148
- * @inheritDoc
149
- * @internal
150
- */
151
- protected readonly logger: LoggerType;
152
- private readonly quoteId;
153
- private readonly recipient;
154
- private readonly vaultOwner;
155
- private readonly vaultId;
156
- private readonly vaultRequiredConfirmations;
157
- private readonly vaultTokenMultipliers;
158
- private readonly vaultBtcAddress;
159
- private readonly vaultUtxo;
160
- private readonly vaultUtxoValue;
161
- private readonly btcDestinationAddress;
162
- private readonly btcAmount;
163
- private readonly btcAmountSwap;
164
- private readonly btcAmountGas;
165
- private readonly outputTotalSwap;
166
- private readonly outputSwapToken;
167
- private readonly outputTotalGas;
168
- private readonly outputGasToken;
169
- private readonly gasSwapFeeBtc;
170
- private readonly gasSwapFee;
171
- private readonly callerFeeShare;
172
- private readonly frontingFeeShare;
173
- private readonly executionFeeShare;
174
- private readonly gasPricingInfo?;
175
- private posted?;
176
- /**
177
- * @internal
178
- */
179
- readonly _genesisSmartChainBlockHeight: number;
180
- /**
181
- * @internal
182
- */
183
- _senderAddress?: string;
184
- /**
185
- * @internal
186
- */
187
- _claimTxId?: string;
188
- /**
189
- * @internal
190
- */
191
- _frontTxId?: string;
192
- /**
193
- * @internal
194
- */
195
- _data?: T["SpvVaultWithdrawalData"];
196
- /**
197
- * Minimum fee rate in sats/vB that the input bitcoin transaction needs to pay
198
- */
199
- readonly minimumBtcFeeRate: number;
200
- /**
201
- * Time at which the SDK realized the bitcoin transaction was confirmed
202
- * @private
203
- */
204
- private btcTxConfirmedAt?;
205
- private _contract;
206
- constructor(wrapper: SpvFromBTCWrapper<T>, init: SpvFromBTCSwapInit);
207
- constructor(wrapper: SpvFromBTCWrapper<T>, obj: any);
208
- /**
209
- * @inheritDoc
210
- * @internal
211
- */
212
- protected upgradeVersion(): void;
213
- /**
214
- * @inheritDoc
215
- * @internal
216
- */
217
- protected tryCalculateSwapFee(): void;
218
- /**
219
- * @inheritDoc
220
- */
221
- refreshPriceData(): Promise<void>;
222
- /**
223
- * @inheritDoc
224
- * @internal
225
- */
226
- _getInitiator(): string;
227
- /**
228
- * @inheritDoc
229
- * @internal
230
- */
231
- _getEscrowHash(): string | null;
232
- /**
233
- * @inheritDoc
234
- */
235
- getId(): string;
236
- /**
237
- * @inheritDoc
238
- */
239
- getQuoteExpiry(): number;
240
- /**
241
- * @inheritDoc
242
- * @internal
243
- */
244
- _verifyQuoteDefinitelyExpired(): Promise<boolean>;
245
- /**
246
- * @inheritDoc
247
- * @internal
248
- */
249
- _verifyQuoteValid(): Promise<boolean>;
250
- /**
251
- * @inheritDoc
252
- */
253
- getOutputAddress(): string | null;
254
- /**
255
- * @inheritDoc
256
- */
257
- getOutputTxId(): string | null;
258
- /**
259
- * @inheritDoc
260
- */
261
- getInputAddress(): string | null;
262
- /**
263
- * @inheritDoc
264
- */
265
- getInputTxId(): string | null;
266
- /**
267
- * @inheritDoc
268
- */
269
- requiresAction(): boolean;
270
- /**
271
- * @inheritDoc
272
- */
273
- isFinished(): boolean;
274
- /**
275
- * @inheritDoc
276
- */
277
- isClaimable(): boolean;
278
- /**
279
- * @inheritDoc
280
- */
281
- isSuccessful(): boolean;
282
- /**
283
- * @inheritDoc
284
- */
285
- isFailed(): boolean;
286
- /**
287
- * @inheritDoc
288
- */
289
- isInProgress(): boolean;
290
- /**
291
- * @inheritDoc
292
- */
293
- isQuoteExpired(): boolean;
294
- /**
295
- * @inheritDoc
296
- */
297
- isQuoteSoftExpired(): boolean;
298
- /**
299
- * Returns the data about used spv vault (UTXO-controlled vault) to perform the swap
300
- */
301
- getSpvVaultData(): {
302
- owner: string;
303
- vaultId: bigint;
304
- utxo: string;
305
- };
306
- /**
307
- * Returns the input BTC amount in sats without any fees
308
- *
309
- * @internal
310
- */
311
- protected getInputSwapAmountWithoutFee(): bigint;
312
- /**
313
- * Returns the input gas BTC amount in sats without any fees
314
- *
315
- * @internal
316
- */
317
- protected getInputGasAmountWithoutFee(): bigint;
318
- /**
319
- * Returns to total input BTC amount in sats without any fees (this is BTC amount for the swap + BTC amount
320
- * for the gas drop).
321
- *
322
- * @internal
323
- */
324
- protected getInputAmountWithoutFee(): bigint;
325
- /**
326
- * Returns the swap output amount without any fees, this value is therefore always higher than
327
- * the actual received output.
328
- *
329
- * @internal
330
- */
331
- protected getOutputWithoutFee(): TokenAmount<SCToken<T["ChainId"]>, true>;
332
- /**
333
- * Returns the swap fee charged by the intermediary (LP) on this swap
334
- *
335
- * @internal
336
- */
337
- protected getSwapFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
338
- /**
339
- * Returns the fee to be paid to watchtowers on the destination chain to automatically
340
- * process and settle this swap without requiring any user interaction
341
- *
342
- * @internal
343
- */
344
- protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
345
- /**
346
- * @inheritDoc
347
- */
348
- getFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
349
- /**
350
- * @inheritDoc
351
- */
352
- getFeeBreakdown(): [
353
- {
354
- type: FeeType.SWAP;
355
- fee: Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
356
- },
357
- {
358
- type: FeeType.NETWORK_OUTPUT;
359
- fee: Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
360
- }
361
- ];
362
- /**
363
- * @inheritDoc
364
- */
365
- getOutputToken(): SCToken<T["ChainId"]>;
366
- /**
367
- * @inheritDoc
368
- */
369
- getOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
370
- /**
371
- * @inheritDoc
372
- */
373
- getGasDropOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
374
- /**
375
- * @inheritDoc
376
- */
377
- getInputWithoutFee(): TokenAmount<BtcToken<false>, true>;
378
- /**
379
- * @inheritDoc
380
- */
381
- getInputToken(): BtcToken<false>;
382
- /**
383
- * @inheritDoc
384
- */
385
- getInput(): TokenAmount<BtcToken<false>, true>;
386
- /**
387
- * @inheritDoc
388
- */
389
- getRequiredConfirmationsCount(): number;
390
- /**
391
- * Returns raw transaction details that can be used to manually create a swap PSBT. It is better to use
392
- * the {@link getPsbt} or {@link getFundedPsbt} function retrieve an already prepared PSBT.
393
- */
394
- getTransactionDetails(): Promise<{
395
- in0txid: string;
396
- in0vout: number;
397
- in0sequence: number;
398
- vaultAmount: bigint;
399
- vaultScript: Uint8Array;
400
- in1sequence: number;
401
- out1script: Uint8Array;
402
- out2amount: bigint;
403
- out2script: Uint8Array;
404
- locktime: number;
405
- }>;
406
- /**
407
- * Returns the raw PSBT (not funded), the wallet should fund the PSBT (add its inputs) and importantly **set the nSequence field of the
408
- * 2nd input** (input 1 - indexing from 0) to the value returned in `in1sequence`, sign the PSBT and then pass
409
- * it back to the swap with {@link submitPsbt} function. The transaction should use at least the returned `feeRate`
410
- * sats/vB as the transaction fee.
411
- */
412
- getPsbt(): Promise<{
413
- psbt: Transaction;
414
- psbtHex: string;
415
- psbtBase64: string;
416
- in1sequence: number;
417
- feeRate: number;
418
- }>;
419
- /**
420
- * Returns the PSBT that is already funded with wallet's UTXOs (runs a coin-selection algorithm to choose UTXOs to use),
421
- * also returns inputs indices that need to be signed by the wallet before submitting the PSBT back to the SDK with
422
- * {@link submitPsbt}
423
- *
424
- * @remarks
425
- * Note that when passing the `feeRate` argument, the fee must be at least {@link minimumBtcFeeRate} sats/vB.
426
- *
427
- * @param _bitcoinWallet Sender's bitcoin wallet
428
- * @param feeRate Optional fee rate in sats/vB for the transaction
429
- * @param additionalOutputs additional outputs to add to the PSBT - can be used to collect fees from users
430
- * @param utxos Pre-fetched list of UTXOs to spend from
431
- * @param spendFully Instructs the wallet to spend all the passed UTXOs in the transaction without creating any
432
- * change output, if the `feeRate` is passed, it will also enforce that the feeRate in sats/vB for the resulting
433
- * transaction is not more than 50% and 10 sats/vB larger (considering also the CPFP adjustments)
434
- */
435
- getFundedPsbt(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number, additionalOutputs?: ({
436
- amount: bigint;
437
- outputScript: Uint8Array;
438
- } | {
439
- amount: bigint;
440
- address: string;
441
- })[], utxos?: BitcoinWalletUtxo[], spendFully?: boolean): Promise<{
442
- psbt: Transaction;
443
- psbtHex: string;
444
- psbtBase64: string;
445
- signInputs: number[];
446
- feeRate: number;
447
- }>;
448
- /**
449
- * @inheritDoc
450
- */
451
- submitPsbt(_psbt: Transaction | string): Promise<string>;
452
- /**
453
- * @inheritDoc
454
- */
455
- estimateBitcoinFee(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number): Promise<TokenAmount<BtcToken<false>, true> | null>;
456
- /**
457
- * @inheritDoc
458
- */
459
- sendBitcoinTransaction(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, feeRate?: number, utxos?: BitcoinWalletUtxo[], spendFully?: boolean): Promise<string>;
460
- /**
461
- * Executes the swap with the provided bitcoin wallet
462
- *
463
- * @param wallet Bitcoin wallet to use to sign the bitcoin transaction
464
- * @param callbacks Callbacks to track the progress of the swap
465
- * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
466
- *
467
- * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
468
- * user, in case `false` is returned the user should call the {@link claim} function to settle the swap on the
469
- * destination manually
470
- */
471
- execute(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, callbacks?: {
472
- onSourceTransactionSent?: (sourceTxId: string) => void;
473
- onSourceTransactionConfirmationStatus?: (sourceTxId?: string, confirmations?: number, targetConfirations?: number, etaMs?: number) => void;
474
- onSourceTransactionConfirmed?: (sourceTxId: string) => void;
475
- onSwapSettled?: (destinationTxId: string) => void;
476
- }, options?: {
477
- feeRate?: number;
478
- abortSignal?: AbortSignal;
479
- btcTxCheckIntervalSeconds?: number;
480
- maxWaitTillAutomaticSettlementSeconds?: number;
481
- utxos?: BitcoinWalletUtxo[];
482
- spendFully?: boolean;
483
- }): Promise<boolean>;
484
- /**
485
- * @internal
486
- */
487
- protected _getExecutionStatus(options?: {
488
- bitcoinFeeRate?: number;
489
- bitcoinWallet?: MinimalBitcoinWalletInterface;
490
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
491
- maxWaitTillAutomaticSettlementSeconds?: number;
492
- }): Promise<{
493
- steps: [SwapExecutionStepPayment<"BITCOIN">, SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">];
494
- buildCurrentAction: (actionOptions?: {
495
- bitcoinFeeRate?: number;
496
- bitcoinWallet?: MinimalBitcoinWalletInterface;
497
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
498
- maxWaitTillAutomaticSettlementSeconds?: number;
499
- }) => Promise<SwapExecutionActionSignPSBT | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
500
- state: number;
501
- }>;
502
- /**
503
- * @inheritDoc
504
- * @internal
505
- */
506
- _submitExecutionTransactions(txs: (T["SignedTXType"] | Transaction | string)[], abortSignal?: AbortSignal, requiredStates?: SpvFromBTCSwapState[], idempotent?: boolean): Promise<string[]>;
507
- /**
508
- * @internal
509
- */
510
- private _buildDepositPsbtAction;
511
- /**
512
- * @internal
513
- */
514
- private _buildWaitBitcoinConfirmationsAction;
515
- /**
516
- * @internal
517
- */
518
- private _buildWaitSettlementAction;
519
- /**
520
- * @internal
521
- */
522
- private _buildClaimSmartChainTxAction;
523
- /**
524
- * @inheritDoc
525
- *
526
- * @param options.bitcoinFeeRate Optional fee rate to use for the created Bitcoin transaction
527
- * @param options.bitcoinWallet Optional bitcoin wallet address specification to return a funded PSBT,
528
- * if not provided a raw PSBT is returned instead which necessitates the implementor to manually add
529
- * inputs to the bitcoin transaction and **set the nSequence field of the 2nd input** (input 1 -
530
- * indexing from 0) to the value returned in `in1sequence`
531
- * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
532
- * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
533
- * the bitcoin transaction is confirmed (defaults to 60 seconds)
534
- */
535
- getExecutionAction(options?: {
536
- bitcoinFeeRate?: number;
537
- bitcoinWallet?: MinimalBitcoinWalletInterface;
538
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
539
- maxWaitTillAutomaticSettlementSeconds?: number;
540
- }): Promise<SwapExecutionActionSignPSBT | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
541
- /**
542
- * @inheritDoc
543
- */
544
- getExecutionStatus(options?: {
545
- skipBuildingAction?: boolean;
546
- bitcoinFeeRate?: number;
547
- bitcoinWallet?: MinimalBitcoinWalletInterface;
548
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
549
- maxWaitTillAutomaticSettlementSeconds?: number;
550
- }): Promise<{
551
- steps: [
552
- SwapExecutionStepPayment<"BITCOIN">,
553
- SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
554
- ];
555
- currentAction: SwapExecutionActionSignPSBT | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined;
556
- stateInfo: SwapStateInfo<SpvFromBTCSwapState>;
557
- }>;
558
- /**
559
- * @inheritDoc
560
- */
561
- getExecutionSteps(options?: {
562
- maxWaitTillAutomaticSettlementSeconds?: number;
563
- }): Promise<[
564
- SwapExecutionStepPayment<"BITCOIN">,
565
- SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
566
- ]>;
567
- /**
568
- * Checks whether a bitcoin payment was already made, returns the payment or null when no payment has been made.
569
- * @internal
570
- */
571
- protected getBitcoinPayment(): Promise<{
572
- txId: string;
573
- confirmations: number;
574
- targetConfirmations: number;
575
- btcTx: BtcTx;
576
- inputAddresses?: string[];
577
- } | null>;
578
- /**
579
- * @inheritDoc
580
- *
581
- * @throws {Error} if in invalid state (must be {@link SpvFromBTCSwapState.POSTED} or
582
- * {@link SpvFromBTCSwapState.BROADCASTED} states)
583
- */
584
- waitForBitcoinTransaction(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<string>;
585
- /**
586
- * Returns transactions for settling (claiming) the swap if the swap requires manual settlement, you can check so
587
- * with isClaimable. After sending the transaction manually be sure to call the waitTillClaimed function to wait
588
- * till the claim transaction is observed, processed by the SDK and state of the swap properly updated.
589
- *
590
- * @remarks
591
- * Might also return transactions necessary to sync the bitcoin light client.
592
- *
593
- * @param _signer Address of the signer to create the claim transactions for, can also be different to the recipient
594
- *
595
- * @throws {Error} If the swap is in invalid state (must be {@link SpvFromBTCSwapState.BTC_TX_CONFIRMED})
596
- */
597
- txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
598
- /**
599
- * Settles the swap by claiming the funds on the destination chain if the swap requires manual settlement, you can
600
- * check so with isClaimable.
601
- *
602
- * @remarks
603
- * Might also sync the bitcoin light client during the process.
604
- *
605
- * @param _signer Signer to use for signing the settlement transactions, can also be different to the recipient
606
- * @param abortSignal Abort signal
607
- * @param onBeforeTxSent Optional callback triggered before the claim transaction is broadcasted
608
- *
609
- * @throws {Error} If the swap is in invalid state (must be {@link SpvFromBTCSwapState.BTC_TX_CONFIRMED})
610
- */
611
- claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
612
- /**
613
- * Periodically checks the chain to see whether the swap was finished (claimed or refunded)
614
- *
615
- * @param interval How often to check (in seconds), default to 5s
616
- * @param abortSignal
617
- * @internal
618
- */
619
- protected watchdogWaitTillResult(interval?: number, abortSignal?: AbortSignal): Promise<SpvWithdrawalClaimedState | SpvWithdrawalFrontedState | SpvWithdrawalClosedState>;
620
- /**
621
- * Waits till the swap is successfully settled (claimed), should be called after sending the claim (settlement)
622
- * transactions manually to wait till the SDK processes the settlement and updates the swap state accordingly.
623
- *
624
- * @remarks
625
- * This is an alias for the {@link waitTillClaimedOrFronted} function and will also resolve if the swap has
626
- * been fronted (not necessarily claimed)
627
- *
628
- * @param maxWaitTimeSeconds – Maximum time in seconds to wait for the swap to be settled
629
- * @param abortSignal – AbortSignal
630
- *
631
- * @returns Whether the swap was claimed in time or not
632
- */
633
- waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
634
- /**
635
- * Waits till the swap is successfully fronted or settled on the destination chain
636
- *
637
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled (by default
638
- * it waits indefinitely)
639
- * @param abortSignal Abort signal
640
- * @param pollIntervalSeconds How often to poll via the watchdog
641
- *
642
- * @returns {boolean} whether the swap was claimed or fronted automatically or not, if the swap was not claimed
643
- * the user can claim manually through the {@link claim} function
644
- */
645
- waitTillClaimedOrFronted(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, pollIntervalSeconds?: number): Promise<boolean>;
646
- /**
647
- * Waits till the bitcoin transaction confirms and swap settled on the destination chain
648
- *
649
- * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations
650
- * @param checkIntervalSeconds How often to check the bitcoin transaction (5 seconds by default)
651
- * @param abortSignal Abort signal
652
- *
653
- * @throws {Error} if in invalid state (must be {@link SpvFromBTCSwapState.POSTED} or
654
- * {@link SpvFromBTCSwapState.BROADCASTED} states)
655
- */
656
- waitTillExecuted(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
657
- /**
658
- * @inheritDoc
659
- */
660
- serialize(): any;
661
- /**
662
- * Used to set the txId of the bitcoin payment from the on-chain events listener
663
- *
664
- * @param txId
665
- * @internal
666
- */
667
- _setBitcoinTxId(txId: string): Promise<void>;
668
- private btcTxLastChecked?;
669
- /**
670
- * @internal
671
- */
672
- _syncStateFromBitcoin(save?: boolean): Promise<boolean>;
673
- /**
674
- * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
675
- * data
676
- */
677
- private syncStateFromChain;
678
- /**
679
- * @inheritDoc
680
- * @internal
681
- */
682
- _sync(save?: boolean): Promise<boolean>;
683
- /**
684
- * @inheritDoc
685
- * @internal
686
- */
687
- _tick(save?: boolean): Promise<boolean>;
688
- /**
689
- * Checks whether an on-chain withdrawal state should be fetched for this specific swap
690
- *
691
- * @internal
692
- */
693
- _shouldCheckWithdrawalState(frontingAddress?: string | null, vaultDataUtxo?: string | null): Promise<boolean>;
694
- }
1
+ import { ISwap, ISwapInit } from "../ISwap";
2
+ import { BtcTx, ChainType, SpvWithdrawalClaimedState, SpvWithdrawalClosedState, SpvWithdrawalFrontedState } from "@atomiqlabs/base";
3
+ import { SwapType } from "../../enums/SwapType";
4
+ import { SpvFromBTCTypeDefinition, SpvFromBTCWrapper } from "./SpvFromBTCWrapper";
5
+ import { Transaction } from "@scure/btc-signer";
6
+ import { Fee } from "../../types/fees/Fee";
7
+ import { BitcoinWalletUtxo, IBitcoinWallet } from "../../bitcoin/wallet/IBitcoinWallet";
8
+ import { IBTCWalletSwap } from "../IBTCWalletSwap";
9
+ import { ISwapWithGasDrop } from "../ISwapWithGasDrop";
10
+ import { MinimalBitcoinWalletInterface, MinimalBitcoinWalletInterfaceWithSigner } from "../../types/wallets/MinimalBitcoinWalletInterface";
11
+ import { IClaimableSwap } from "../IClaimableSwap";
12
+ import { FeeType } from "../../enums/FeeType";
13
+ import { TokenAmount } from "../../types/TokenAmount";
14
+ import { BtcToken, SCToken } from "../../types/Token";
15
+ import { LoggerType } from "../../utils/Logger";
16
+ import { PriceInfoType } from "../../types/PriceInfoType";
17
+ import { SwapExecutionActionSignPSBT, SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../types/SwapExecutionAction";
18
+ import { SwapExecutionStepPayment, SwapExecutionStepSettlement } from "../../types/SwapExecutionStep";
19
+ import { SwapStateInfo } from "../../types/SwapStateInfo";
20
+ /**
21
+ * State enum for SPV vault (UTXO-controlled vault) based swaps
22
+ * @category Swaps/Bitcoin → Smart chain
23
+ */
24
+ export declare enum SpvFromBTCSwapState {
25
+ /**
26
+ * Catastrophic failure has occurred when processing the swap on the smart chain side,
27
+ * this implies a bug in the smart contract code or the user and intermediary deliberately
28
+ * creating a bitcoin transaction with invalid format unparsable by the smart contract.
29
+ */
30
+ CLOSED = -5,
31
+ /**
32
+ * Some of the bitcoin swap transaction inputs were double-spent, this means the swap
33
+ * has failed and no BTC was sent
34
+ */
35
+ FAILED = -4,
36
+ /**
37
+ * The intermediary (LP) declined to co-sign the submitted PSBT, hence the swap failed
38
+ */
39
+ DECLINED = -3,
40
+ /**
41
+ * Swap has expired for good and there is no way how it can be executed anymore
42
+ */
43
+ QUOTE_EXPIRED = -2,
44
+ /**
45
+ * A swap is almost expired, and it should be presented to the user as expired, though
46
+ * there is still a chance that it will be processed
47
+ */
48
+ QUOTE_SOFT_EXPIRED = -1,
49
+ /**
50
+ * Swap was created, use the {@link SpvFromBTCSwap.getFundedPsbt} or {@link SpvFromBTCSwap.getPsbt} functions
51
+ * to get the bitcoin swap PSBT that should be signed by the user's wallet and then submitted via the
52
+ * {@link SpvFromBTCSwap.submitPsbt} function.
53
+ */
54
+ CREATED = 0,
55
+ /**
56
+ * Swap bitcoin PSBT was submitted by the client to the SDK
57
+ */
58
+ SIGNED = 1,
59
+ /**
60
+ * Swap bitcoin PSBT sent to the intermediary (LP), waiting for the intermediary co-sign
61
+ * it and broadcast. You can use the {@link SpvFromBTCSwap.waitTillClaimedOrFronted}
62
+ * function to wait till the intermediary broadcasts the transaction and the transaction
63
+ * confirms.
64
+ */
65
+ POSTED = 2,
66
+ /**
67
+ * Intermediary (LP) has co-signed and broadcasted the bitcoin transaction. You can use the
68
+ * {@link SpvFromBTCSwap.waitTillClaimedOrFronted} function to wait till the transaction
69
+ * confirms.
70
+ */
71
+ BROADCASTED = 3,
72
+ /**
73
+ * Settlement on the destination smart chain was fronted and funds were already received
74
+ * by the user, even before the final settlement.
75
+ */
76
+ FRONTED = 4,
77
+ /**
78
+ * Bitcoin transaction confirmed with necessary amount of confirmations, wait for automatic
79
+ * settlement by the watchtower with the {@link waitTillClaimedOrFronted} function, or settle manually
80
+ * using the {@link FromBTCSwap.claim} or {@link FromBTCSwap.txsClaim} function.
81
+ */
82
+ BTC_TX_CONFIRMED = 5,
83
+ /**
84
+ * Swap settled on the smart chain and funds received
85
+ */
86
+ CLAIMED = 6
87
+ }
88
+ export type SpvFromBTCSwapInit = ISwapInit & {
89
+ quoteId: string;
90
+ recipient: string;
91
+ vaultOwner: string;
92
+ vaultId: bigint;
93
+ vaultRequiredConfirmations: number;
94
+ vaultTokenMultipliers: bigint[];
95
+ vaultBtcAddress: string;
96
+ vaultUtxo: string;
97
+ vaultUtxoValue: bigint;
98
+ btcDestinationAddress: string;
99
+ btcAmount: bigint;
100
+ btcAmountSwap: bigint;
101
+ btcAmountGas: bigint;
102
+ minimumBtcFeeRate: number;
103
+ outputTotalSwap: bigint;
104
+ outputSwapToken: string;
105
+ outputTotalGas: bigint;
106
+ outputGasToken: string;
107
+ gasSwapFeeBtc: bigint;
108
+ gasSwapFee: bigint;
109
+ callerFeeShare: bigint;
110
+ frontingFeeShare: bigint;
111
+ executionFeeShare: bigint;
112
+ genesisSmartChainBlockHeight: number;
113
+ gasPricingInfo?: PriceInfoType;
114
+ };
115
+ export declare function isSpvFromBTCSwapInit(obj: any): obj is SpvFromBTCSwapInit;
116
+ /**
117
+ * New spv vault (UTXO-controlled vault) based swaps for Bitcoin -> Smart chain swaps not requiring
118
+ * any initiation on the destination chain, and with the added possibility for the user to receive
119
+ * a native token on the destination chain as part of the swap (a "gas drop" feature).
120
+ *
121
+ * @category Swaps/Bitcoin → Smart chain
122
+ */
123
+ export declare class SpvFromBTCSwap<T extends ChainType> extends ISwap<T, SpvFromBTCTypeDefinition<T>> implements IBTCWalletSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, SpvFromBTCTypeDefinition<T>, SpvFromBTCSwapState> {
124
+ protected readonly currentVersion: number;
125
+ readonly TYPE: SwapType.SPV_VAULT_FROM_BTC;
126
+ /**
127
+ * @internal
128
+ */
129
+ protected readonly swapStateDescription: {
130
+ [-5]: string;
131
+ [-4]: string;
132
+ [-3]: string;
133
+ [-2]: string;
134
+ [-1]: string;
135
+ 0: string;
136
+ 1: string;
137
+ 2: string;
138
+ 3: string;
139
+ 4: string;
140
+ 5: string;
141
+ 6: string;
142
+ };
143
+ /**
144
+ * @internal
145
+ */
146
+ protected readonly swapStateName: (state: number) => string;
147
+ /**
148
+ * @inheritDoc
149
+ * @internal
150
+ */
151
+ protected readonly logger: LoggerType;
152
+ private readonly quoteId;
153
+ private readonly recipient;
154
+ private readonly vaultOwner;
155
+ private readonly vaultId;
156
+ private readonly vaultRequiredConfirmations;
157
+ private readonly vaultTokenMultipliers;
158
+ private readonly vaultBtcAddress;
159
+ private readonly vaultUtxo;
160
+ private readonly vaultUtxoValue;
161
+ private readonly btcDestinationAddress;
162
+ private readonly btcAmount;
163
+ private readonly btcAmountSwap;
164
+ private readonly btcAmountGas;
165
+ private readonly outputTotalSwap;
166
+ private readonly outputSwapToken;
167
+ private readonly outputTotalGas;
168
+ private readonly outputGasToken;
169
+ private readonly gasSwapFeeBtc;
170
+ private readonly gasSwapFee;
171
+ private readonly callerFeeShare;
172
+ private readonly frontingFeeShare;
173
+ private readonly executionFeeShare;
174
+ private readonly gasPricingInfo?;
175
+ private posted?;
176
+ /**
177
+ * @internal
178
+ */
179
+ readonly _genesisSmartChainBlockHeight: number;
180
+ /**
181
+ * @internal
182
+ */
183
+ _senderAddress?: string;
184
+ /**
185
+ * @internal
186
+ */
187
+ _claimTxId?: string;
188
+ /**
189
+ * @internal
190
+ */
191
+ _frontTxId?: string;
192
+ /**
193
+ * @internal
194
+ */
195
+ _data?: T["SpvVaultWithdrawalData"];
196
+ /**
197
+ * Minimum fee rate in sats/vB that the input bitcoin transaction needs to pay
198
+ */
199
+ readonly minimumBtcFeeRate: number;
200
+ /**
201
+ * Time at which the SDK realized the bitcoin transaction was confirmed
202
+ * @private
203
+ */
204
+ private btcTxConfirmedAt?;
205
+ private _contract;
206
+ constructor(wrapper: SpvFromBTCWrapper<T>, init: SpvFromBTCSwapInit);
207
+ constructor(wrapper: SpvFromBTCWrapper<T>, obj: any);
208
+ /**
209
+ * @inheritDoc
210
+ * @internal
211
+ */
212
+ protected upgradeVersion(): void;
213
+ /**
214
+ * @inheritDoc
215
+ * @internal
216
+ */
217
+ protected tryCalculateSwapFee(): void;
218
+ /**
219
+ * @inheritDoc
220
+ */
221
+ refreshPriceData(): Promise<void>;
222
+ /**
223
+ * @inheritDoc
224
+ * @internal
225
+ */
226
+ _getInitiator(): string;
227
+ /**
228
+ * @inheritDoc
229
+ * @internal
230
+ */
231
+ _getEscrowHash(): string | null;
232
+ /**
233
+ * @inheritDoc
234
+ */
235
+ getId(): string;
236
+ /**
237
+ * @inheritDoc
238
+ */
239
+ getQuoteExpiry(): number;
240
+ /**
241
+ * @inheritDoc
242
+ * @internal
243
+ */
244
+ _verifyQuoteDefinitelyExpired(): Promise<boolean>;
245
+ /**
246
+ * @inheritDoc
247
+ * @internal
248
+ */
249
+ _verifyQuoteValid(): Promise<boolean>;
250
+ /**
251
+ * @inheritDoc
252
+ */
253
+ getOutputAddress(): string | null;
254
+ /**
255
+ * @inheritDoc
256
+ */
257
+ getOutputTxId(): string | null;
258
+ /**
259
+ * @inheritDoc
260
+ */
261
+ getInputAddress(): string | null;
262
+ /**
263
+ * @inheritDoc
264
+ */
265
+ getInputTxId(): string | null;
266
+ /**
267
+ * @inheritDoc
268
+ */
269
+ requiresAction(): boolean;
270
+ /**
271
+ * @inheritDoc
272
+ */
273
+ isFinished(): boolean;
274
+ /**
275
+ * @inheritDoc
276
+ */
277
+ isClaimable(): boolean;
278
+ /**
279
+ * @inheritDoc
280
+ */
281
+ isSuccessful(): boolean;
282
+ /**
283
+ * @inheritDoc
284
+ */
285
+ isFailed(): boolean;
286
+ /**
287
+ * @inheritDoc
288
+ */
289
+ isInProgress(): boolean;
290
+ /**
291
+ * @inheritDoc
292
+ */
293
+ isQuoteExpired(): boolean;
294
+ /**
295
+ * @inheritDoc
296
+ */
297
+ isQuoteSoftExpired(): boolean;
298
+ /**
299
+ * Returns the data about used spv vault (UTXO-controlled vault) to perform the swap
300
+ */
301
+ getSpvVaultData(): {
302
+ owner: string;
303
+ vaultId: bigint;
304
+ utxo: string;
305
+ };
306
+ /**
307
+ * Returns the input BTC amount in sats without any fees
308
+ *
309
+ * @internal
310
+ */
311
+ protected getInputSwapAmountWithoutFee(): bigint;
312
+ /**
313
+ * Returns the input gas BTC amount in sats without any fees
314
+ *
315
+ * @internal
316
+ */
317
+ protected getInputGasAmountWithoutFee(): bigint;
318
+ /**
319
+ * Returns to total input BTC amount in sats without any fees (this is BTC amount for the swap + BTC amount
320
+ * for the gas drop).
321
+ *
322
+ * @internal
323
+ */
324
+ protected getInputAmountWithoutFee(): bigint;
325
+ /**
326
+ * Returns the swap output amount without any fees, this value is therefore always higher than
327
+ * the actual received output.
328
+ *
329
+ * @internal
330
+ */
331
+ protected getOutputWithoutFee(): TokenAmount<SCToken<T["ChainId"]>, true>;
332
+ /**
333
+ * Returns the swap fee charged by the intermediary (LP) on this swap
334
+ *
335
+ * @internal
336
+ */
337
+ protected getSwapFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
338
+ /**
339
+ * Returns the fee to be paid to watchtowers on the destination chain to automatically
340
+ * process and settle this swap without requiring any user interaction
341
+ *
342
+ * @internal
343
+ */
344
+ protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
345
+ /**
346
+ * @inheritDoc
347
+ */
348
+ getFee(): Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
349
+ /**
350
+ * @inheritDoc
351
+ */
352
+ getFeeBreakdown(): [
353
+ {
354
+ type: FeeType.SWAP;
355
+ fee: Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
356
+ },
357
+ {
358
+ type: FeeType.NETWORK_OUTPUT;
359
+ fee: Fee<T["ChainId"], BtcToken<false>, SCToken<T["ChainId"]>>;
360
+ }
361
+ ];
362
+ /**
363
+ * @inheritDoc
364
+ */
365
+ getOutputToken(): SCToken<T["ChainId"]>;
366
+ /**
367
+ * @inheritDoc
368
+ */
369
+ getOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
370
+ /**
371
+ * @inheritDoc
372
+ */
373
+ getGasDropOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
374
+ /**
375
+ * @inheritDoc
376
+ */
377
+ getInputWithoutFee(): TokenAmount<BtcToken<false>, true>;
378
+ /**
379
+ * @inheritDoc
380
+ */
381
+ getInputToken(): BtcToken<false>;
382
+ /**
383
+ * @inheritDoc
384
+ */
385
+ getInput(): TokenAmount<BtcToken<false>, true>;
386
+ /**
387
+ * @inheritDoc
388
+ */
389
+ getRequiredConfirmationsCount(): number;
390
+ /**
391
+ * Returns raw transaction details that can be used to manually create a swap PSBT. It is better to use
392
+ * the {@link getPsbt} or {@link getFundedPsbt} function retrieve an already prepared PSBT.
393
+ */
394
+ getTransactionDetails(): Promise<{
395
+ in0txid: string;
396
+ in0vout: number;
397
+ in0sequence: number;
398
+ vaultAmount: bigint;
399
+ vaultScript: Uint8Array;
400
+ in1sequence: number;
401
+ out1script: Uint8Array;
402
+ out2amount: bigint;
403
+ out2script: Uint8Array;
404
+ locktime: number;
405
+ }>;
406
+ /**
407
+ * Returns the raw PSBT (not funded), the wallet should fund the PSBT (add its inputs) and importantly **set the nSequence field of the
408
+ * 2nd input** (input 1 - indexing from 0) to the value returned in `in1sequence`, sign the PSBT and then pass
409
+ * it back to the swap with {@link submitPsbt} function. The transaction should use at least the returned `feeRate`
410
+ * sats/vB as the transaction fee.
411
+ */
412
+ getPsbt(): Promise<{
413
+ psbt: Transaction;
414
+ psbtHex: string;
415
+ psbtBase64: string;
416
+ in1sequence: number;
417
+ feeRate: number;
418
+ }>;
419
+ /**
420
+ * Returns the PSBT that is already funded with wallet's UTXOs (runs a coin-selection algorithm to choose UTXOs to use),
421
+ * also returns inputs indices that need to be signed by the wallet before submitting the PSBT back to the SDK with
422
+ * {@link submitPsbt}
423
+ *
424
+ * @remarks
425
+ * Note that when passing the `feeRate` argument, the fee must be at least {@link minimumBtcFeeRate} sats/vB.
426
+ *
427
+ * @param _bitcoinWallet Sender's bitcoin wallet
428
+ * @param feeRate Optional fee rate in sats/vB for the transaction
429
+ * @param additionalOutputs additional outputs to add to the PSBT - can be used to collect fees from users
430
+ * @param utxos Pre-fetched list of UTXOs to spend from
431
+ * @param spendFully Instructs the wallet to spend all the passed UTXOs in the transaction without creating any
432
+ * change output, if the `feeRate` is passed, it will also enforce that the feeRate in sats/vB for the resulting
433
+ * transaction is not more than 50% and 10 sats/vB larger (considering also the CPFP adjustments)
434
+ */
435
+ getFundedPsbt(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number, additionalOutputs?: ({
436
+ amount: bigint;
437
+ outputScript: Uint8Array;
438
+ } | {
439
+ amount: bigint;
440
+ address: string;
441
+ })[], utxos?: BitcoinWalletUtxo[], spendFully?: boolean): Promise<{
442
+ psbt: Transaction;
443
+ psbtHex: string;
444
+ psbtBase64: string;
445
+ signInputs: number[];
446
+ feeRate: number;
447
+ }>;
448
+ /**
449
+ * @inheritDoc
450
+ */
451
+ submitPsbt(_psbt: Transaction | string): Promise<string>;
452
+ /**
453
+ * @inheritDoc
454
+ */
455
+ estimateBitcoinFee(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number): Promise<TokenAmount<BtcToken<false>, true> | null>;
456
+ /**
457
+ * @inheritDoc
458
+ */
459
+ sendBitcoinTransaction(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, feeRate?: number, utxos?: BitcoinWalletUtxo[], spendFully?: boolean): Promise<string>;
460
+ /**
461
+ * Executes the swap with the provided bitcoin wallet
462
+ *
463
+ * @param wallet Bitcoin wallet to use to sign the bitcoin transaction
464
+ * @param callbacks Callbacks to track the progress of the swap
465
+ * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
466
+ *
467
+ * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
468
+ * user, in case `false` is returned the user should call the {@link claim} function to settle the swap on the
469
+ * destination manually
470
+ */
471
+ execute(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, callbacks?: {
472
+ onSourceTransactionSent?: (sourceTxId: string) => void;
473
+ onSourceTransactionConfirmationStatus?: (sourceTxId?: string, confirmations?: number, targetConfirations?: number, etaMs?: number) => void;
474
+ onSourceTransactionConfirmed?: (sourceTxId: string) => void;
475
+ onSwapSettled?: (destinationTxId: string) => void;
476
+ }, options?: {
477
+ feeRate?: number;
478
+ abortSignal?: AbortSignal;
479
+ btcTxCheckIntervalSeconds?: number;
480
+ maxWaitTillAutomaticSettlementSeconds?: number;
481
+ utxos?: BitcoinWalletUtxo[];
482
+ spendFully?: boolean;
483
+ }): Promise<boolean>;
484
+ /**
485
+ * @internal
486
+ */
487
+ protected _getExecutionStatus(options?: {
488
+ bitcoinFeeRate?: number;
489
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
490
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
491
+ maxWaitTillAutomaticSettlementSeconds?: number;
492
+ }): Promise<{
493
+ steps: [SwapExecutionStepPayment<"BITCOIN">, SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">];
494
+ buildCurrentAction: (actionOptions?: {
495
+ bitcoinFeeRate?: number;
496
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
497
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
498
+ maxWaitTillAutomaticSettlementSeconds?: number;
499
+ }) => Promise<SwapExecutionActionSignPSBT | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
500
+ state: number;
501
+ }>;
502
+ /**
503
+ * @inheritDoc
504
+ * @internal
505
+ */
506
+ _submitExecutionTransactions(txs: (T["SignedTXType"] | Transaction | string)[], abortSignal?: AbortSignal, requiredStates?: SpvFromBTCSwapState[], idempotent?: boolean): Promise<string[]>;
507
+ /**
508
+ * @internal
509
+ */
510
+ private _buildDepositPsbtAction;
511
+ /**
512
+ * @internal
513
+ */
514
+ private _buildWaitBitcoinConfirmationsAction;
515
+ /**
516
+ * @internal
517
+ */
518
+ private _buildWaitSettlementAction;
519
+ /**
520
+ * @internal
521
+ */
522
+ private _buildClaimSmartChainTxAction;
523
+ /**
524
+ * @inheritDoc
525
+ *
526
+ * @param options.bitcoinFeeRate Optional fee rate to use for the created Bitcoin transaction
527
+ * @param options.bitcoinWallet Optional bitcoin wallet address specification to return a funded PSBT,
528
+ * if not provided a raw PSBT is returned instead which necessitates the implementor to manually add
529
+ * inputs to the bitcoin transaction and **set the nSequence field of the 2nd input** (input 1 -
530
+ * indexing from 0) to the value returned in `in1sequence`
531
+ * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
532
+ * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
533
+ * the bitcoin transaction is confirmed (defaults to 60 seconds)
534
+ */
535
+ getExecutionAction(options?: {
536
+ bitcoinFeeRate?: number;
537
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
538
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
539
+ maxWaitTillAutomaticSettlementSeconds?: number;
540
+ }): Promise<SwapExecutionActionSignPSBT | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
541
+ /**
542
+ * @inheritDoc
543
+ */
544
+ getExecutionStatus(options?: {
545
+ skipBuildingAction?: boolean;
546
+ bitcoinFeeRate?: number;
547
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
548
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
549
+ maxWaitTillAutomaticSettlementSeconds?: number;
550
+ }): Promise<{
551
+ steps: [
552
+ SwapExecutionStepPayment<"BITCOIN">,
553
+ SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
554
+ ];
555
+ currentAction: SwapExecutionActionSignPSBT | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined;
556
+ stateInfo: SwapStateInfo<SpvFromBTCSwapState>;
557
+ }>;
558
+ /**
559
+ * @inheritDoc
560
+ */
561
+ getExecutionSteps(options?: {
562
+ maxWaitTillAutomaticSettlementSeconds?: number;
563
+ }): Promise<[
564
+ SwapExecutionStepPayment<"BITCOIN">,
565
+ SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
566
+ ]>;
567
+ /**
568
+ * Checks whether a bitcoin payment was already made, returns the payment or null when no payment has been made.
569
+ * @internal
570
+ */
571
+ protected getBitcoinPayment(): Promise<{
572
+ txId: string;
573
+ confirmations: number;
574
+ targetConfirmations: number;
575
+ btcTx: BtcTx;
576
+ inputAddresses?: string[];
577
+ } | null>;
578
+ /**
579
+ * @inheritDoc
580
+ *
581
+ * @throws {Error} if in invalid state (must be {@link SpvFromBTCSwapState.POSTED} or
582
+ * {@link SpvFromBTCSwapState.BROADCASTED} states)
583
+ */
584
+ waitForBitcoinTransaction(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<string>;
585
+ /**
586
+ * Returns transactions for settling (claiming) the swap if the swap requires manual settlement, you can check so
587
+ * with isClaimable. After sending the transaction manually be sure to call the waitTillClaimed function to wait
588
+ * till the claim transaction is observed, processed by the SDK and state of the swap properly updated.
589
+ *
590
+ * @remarks
591
+ * Might also return transactions necessary to sync the bitcoin light client.
592
+ *
593
+ * @param _signer Address of the signer to create the claim transactions for, can also be different to the recipient
594
+ *
595
+ * @throws {Error} If the swap is in invalid state (must be {@link SpvFromBTCSwapState.BTC_TX_CONFIRMED})
596
+ */
597
+ txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
598
+ /**
599
+ * Settles the swap by claiming the funds on the destination chain if the swap requires manual settlement, you can
600
+ * check so with isClaimable.
601
+ *
602
+ * @remarks
603
+ * Might also sync the bitcoin light client during the process.
604
+ *
605
+ * @param _signer Signer to use for signing the settlement transactions, can also be different to the recipient
606
+ * @param abortSignal Abort signal
607
+ * @param onBeforeTxSent Optional callback triggered before the claim transaction is broadcasted
608
+ *
609
+ * @throws {Error} If the swap is in invalid state (must be {@link SpvFromBTCSwapState.BTC_TX_CONFIRMED})
610
+ */
611
+ claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
612
+ /**
613
+ * Periodically checks the chain to see whether the swap was finished (claimed or refunded)
614
+ *
615
+ * @param interval How often to check (in seconds), default to 5s
616
+ * @param abortSignal
617
+ * @internal
618
+ */
619
+ protected watchdogWaitTillResult(interval?: number, abortSignal?: AbortSignal): Promise<SpvWithdrawalClaimedState | SpvWithdrawalFrontedState | SpvWithdrawalClosedState>;
620
+ /**
621
+ * Waits till the swap is successfully settled (claimed), should be called after sending the claim (settlement)
622
+ * transactions manually to wait till the SDK processes the settlement and updates the swap state accordingly.
623
+ *
624
+ * @remarks
625
+ * This is an alias for the {@link waitTillClaimedOrFronted} function and will also resolve if the swap has
626
+ * been fronted (not necessarily claimed)
627
+ *
628
+ * @param maxWaitTimeSeconds – Maximum time in seconds to wait for the swap to be settled
629
+ * @param abortSignal – AbortSignal
630
+ *
631
+ * @returns Whether the swap was claimed in time or not
632
+ */
633
+ waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
634
+ /**
635
+ * Waits till the swap is successfully fronted or settled on the destination chain
636
+ *
637
+ * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled (by default
638
+ * it waits indefinitely)
639
+ * @param abortSignal Abort signal
640
+ * @param pollIntervalSeconds How often to poll via the watchdog
641
+ *
642
+ * @returns {boolean} whether the swap was claimed or fronted automatically or not, if the swap was not claimed
643
+ * the user can claim manually through the {@link claim} function
644
+ */
645
+ waitTillClaimedOrFronted(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, pollIntervalSeconds?: number): Promise<boolean>;
646
+ /**
647
+ * Waits till the bitcoin transaction confirms and swap settled on the destination chain
648
+ *
649
+ * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations
650
+ * @param checkIntervalSeconds How often to check the bitcoin transaction (5 seconds by default)
651
+ * @param abortSignal Abort signal
652
+ *
653
+ * @throws {Error} if in invalid state (must be {@link SpvFromBTCSwapState.POSTED} or
654
+ * {@link SpvFromBTCSwapState.BROADCASTED} states)
655
+ */
656
+ waitTillExecuted(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
657
+ /**
658
+ * @inheritDoc
659
+ */
660
+ serialize(): any;
661
+ /**
662
+ * Used to set the txId of the bitcoin payment from the on-chain events listener
663
+ *
664
+ * @param txId
665
+ * @internal
666
+ */
667
+ _setBitcoinTxId(txId: string): Promise<void>;
668
+ private btcTxLastChecked?;
669
+ /**
670
+ * @internal
671
+ */
672
+ _syncStateFromBitcoin(save?: boolean): Promise<boolean>;
673
+ /**
674
+ * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
675
+ * data
676
+ */
677
+ private syncStateFromChain;
678
+ /**
679
+ * @inheritDoc
680
+ * @internal
681
+ */
682
+ _sync(save?: boolean): Promise<boolean>;
683
+ /**
684
+ * @inheritDoc
685
+ * @internal
686
+ */
687
+ _tick(save?: boolean): Promise<boolean>;
688
+ /**
689
+ * Checks whether an on-chain withdrawal state should be fetched for this specific swap
690
+ *
691
+ * @internal
692
+ */
693
+ _shouldCheckWithdrawalState(frontingAddress?: string | null, vaultDataUtxo?: string | null): Promise<boolean>;
694
+ }