@atomiqlabs/sdk 8.9.1 → 8.9.2

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 +765 -770
  120. package/dist/swapper/Swapper.js +1749 -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 +2557 -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,650 +1,650 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { SwapType } from "../../../../enums/SwapType";
4
- import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
5
- import { Buffer } from "buffer";
6
- import { Fee } from "../../../../types/fees/Fee";
7
- import { IAddressSwap } from "../../../IAddressSwap";
8
- import { FromBTCLNAutoDefinition, FromBTCLNAutoWrapper } from "./FromBTCLNAutoWrapper";
9
- import { ISwapWithGasDrop } from "../../../ISwapWithGasDrop";
10
- import { MinimalLightningNetworkWalletInterface } from "../../../../types/wallets/MinimalLightningNetworkWalletInterface";
11
- import { IClaimableSwap } from "../../../IClaimableSwap";
12
- import { IEscrowSwap, IEscrowSwapInit } from "../../IEscrowSwap";
13
- import { FeeType } from "../../../../enums/FeeType";
14
- import { TokenAmount } from "../../../../types/TokenAmount";
15
- import { BtcToken, SCToken } from "../../../../types/Token";
16
- import { LoggerType } from "../../../../utils/Logger";
17
- import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
18
- import { PriceInfoType } from "../../../../types/PriceInfoType";
19
- import { SwapExecutionActionSendToAddress, SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../../../types/SwapExecutionAction";
20
- import { SwapExecutionStepPayment, SwapExecutionStepSettlement } from "../../../../types/SwapExecutionStep";
21
- import { SwapStateInfo } from "../../../../types/SwapStateInfo";
22
- /**
23
- * State enum for FromBTCLNAuto swaps
24
- * @category Swaps/Lightning → Smart chain
25
- */
26
- export declare enum FromBTCLNAutoSwapState {
27
- /**
28
- * Swap has failed as the user didn't settle the HTLC on the destination before expiration
29
- */
30
- FAILED = -4,
31
- /**
32
- * Swap has expired for good and there is no way how it can be executed anymore
33
- */
34
- QUOTE_EXPIRED = -3,
35
- /**
36
- * A swap is almost expired, and it should be presented to the user as expired, though
37
- * there is still a chance that it will be processed
38
- */
39
- QUOTE_SOFT_EXPIRED = -2,
40
- /**
41
- * Swap HTLC on the destination chain has expired, it is not safe anymore to settle (claim) the
42
- * swap on the destination smart chain.
43
- */
44
- EXPIRED = -1,
45
- /**
46
- * Swap quote was created, use {@link FromBTCLNAutoSwap.getAddress} or {@link FromBTCLNAutoSwap.getHyperlink}
47
- * to get the bolt11 lightning network invoice to pay to initiate the swap, then use the
48
- * {@link FromBTCLNAutoSwap.waitForPayment} to wait till the lightning network payment is received
49
- * by the intermediary (LP) and the destination HTLC escrow is created
50
- */
51
- PR_CREATED = 0,
52
- /**
53
- * Lightning network payment has been received by the intermediary (LP), but the destination chain
54
- * HTLC escrow hasn't been created yet. Use {@link FromBTCLNAutoSwap.waitForPayment} to continue waiting
55
- * till the destination HTLC escrow is created.
56
- */
57
- PR_PAID = 1,
58
- /**
59
- * Swap escrow HTLC has been created on the destination chain, wait for automatic settlement by the watchtowers
60
- * using the {@link FromBTCLNAutoSwap.waitTillClaimed} function or settle manually using the
61
- * {@link FromBTCLNAutoSwap.claim} or {@link FromBTCLNAutoSwap.txsClaim} function.
62
- */
63
- CLAIM_COMMITED = 2,
64
- /**
65
- * Swap successfully settled and funds received on the destination chain
66
- */
67
- CLAIM_CLAIMED = 3
68
- }
69
- export type FromBTCLNAutoSwapInit<T extends SwapData> = IEscrowSwapInit<T> & {
70
- pr?: string;
71
- secret?: string;
72
- initialSwapData: T;
73
- btcAmountSwap?: bigint;
74
- btcAmountGas?: bigint;
75
- gasSwapFeeBtc: bigint;
76
- gasSwapFee: bigint;
77
- gasPricingInfo?: PriceInfoType;
78
- lnurl?: string;
79
- lnurlK1?: string;
80
- lnurlCallback?: string;
81
- };
82
- export declare function isFromBTCLNAutoSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNAutoSwapInit<T>;
83
- /**
84
- * New escrow based (HTLC) swaps for Bitcoin Lightning -> Smart chain swaps not requiring manual settlement on
85
- * the destination by the user, and instead letting the LP initiate the escrow. Permissionless watchtower network
86
- * handles the claiming of HTLC, with the swap secret broadcasted over Nostr. Also adds a possibility for the user
87
- * to receive a native token on the destination chain as part of the swap (a "gas drop" feature).
88
- *
89
- * @category Swaps/Lightning → Smart chain
90
- */
91
- export declare class FromBTCLNAutoSwap<T extends ChainType = ChainType> extends IEscrowSwap<T, FromBTCLNAutoDefinition<T>> implements IAddressSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, FromBTCLNAutoDefinition<T>, FromBTCLNAutoSwapState> {
92
- protected readonly TYPE: SwapType.FROM_BTCLN_AUTO;
93
- /**
94
- * @internal
95
- */
96
- protected readonly swapStateName: (state: number) => string;
97
- /**
98
- * @internal
99
- */
100
- protected readonly swapStateDescription: {
101
- [-4]: string;
102
- [-3]: string;
103
- [-2]: string;
104
- [-1]: string;
105
- 0: string;
106
- 1: string;
107
- 2: string;
108
- 3: string;
109
- };
110
- /**
111
- * @internal
112
- */
113
- protected readonly logger: LoggerType;
114
- /**
115
- * @internal
116
- */
117
- protected readonly inputToken: BtcToken<true>;
118
- /**
119
- * Timestamp at which the HTLC was commited on the smart chain side
120
- * @internal
121
- */
122
- _commitedAt?: number;
123
- private readonly lnurlFailSignal;
124
- private readonly usesClaimHashAsId;
125
- private readonly initialSwapData;
126
- private readonly btcAmountSwap?;
127
- private readonly btcAmountGas?;
128
- private readonly gasSwapFeeBtc;
129
- private readonly gasSwapFee;
130
- private readonly gasPricingInfo?;
131
- /**
132
- * In case the swap is recovered from on-chain data, the pr saved here is just a payment hash,
133
- * as it is impossible to retrieve the actual lightning network invoice paid purely from on-chain
134
- * data
135
- * @private
136
- */
137
- private pr?;
138
- private secret?;
139
- private lnurl?;
140
- private lnurlK1?;
141
- private lnurlCallback?;
142
- private prPosted?;
143
- private broadcastTickCounter;
144
- /**
145
- * Sets the LNURL data for the swap
146
- *
147
- * @internal
148
- */
149
- _setLNURLData(lnurl: string, lnurlK1: string, lnurlCallback: string): void;
150
- constructor(wrapper: FromBTCLNAutoWrapper<T>, init: FromBTCLNAutoSwapInit<T["Data"]>);
151
- constructor(wrapper: FromBTCLNAutoWrapper<T>, obj: any);
152
- /**
153
- * @inheritDoc
154
- * @internal
155
- */
156
- protected getSwapData(): T["Data"];
157
- /**
158
- * @inheritDoc
159
- * @internal
160
- */
161
- protected upgradeVersion(): void;
162
- /**
163
- * @inheritDoc
164
- * @internal
165
- */
166
- protected tryRecomputeSwapPrice(): void;
167
- /**
168
- * @inheritDoc
169
- */
170
- refreshPriceData(): Promise<void>;
171
- /**
172
- * @inheritDoc
173
- * @internal
174
- */
175
- _getEscrowHash(): string | null;
176
- /**
177
- * @inheritDoc
178
- * @internal
179
- */
180
- _getInitiator(): string;
181
- /**
182
- * @inheritDoc
183
- */
184
- getId(): string;
185
- /**
186
- * @inheritDoc
187
- */
188
- getOutputAddress(): string | null;
189
- /**
190
- * @inheritDoc
191
- */
192
- getOutputTxId(): string | null;
193
- /**
194
- * @inheritDoc
195
- */
196
- requiresAction(): boolean;
197
- /**
198
- * @inheritDoc
199
- * @internal
200
- */
201
- protected getIdentifierHashString(): string;
202
- /**
203
- * Returns the payment hash of the swap and lightning network invoice, or `null` if not known (i.e. if
204
- * the swap was recovered from on-chain data, the payment hash might not be known)
205
- *
206
- * @internal
207
- */
208
- protected getPaymentHash(): Buffer | null;
209
- /**
210
- * @inheritDoc
211
- */
212
- getInputAddress(): string | null;
213
- /**
214
- * @inheritDoc
215
- */
216
- getInputTxId(): string | null;
217
- /**
218
- * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
219
- */
220
- getAddress(): string;
221
- /**
222
- * @inheritDoc
223
- */
224
- getHyperlink(): string;
225
- /**
226
- * Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
227
- * if the LP doesn't make it expired sooner
228
- */
229
- getDefinitiveExpiryTime(): number;
230
- /**
231
- * Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
232
- */
233
- getHtlcTimeoutTime(): number | null;
234
- /**
235
- * @inheritDoc
236
- */
237
- isFinished(): boolean;
238
- /**
239
- * @inheritDoc
240
- */
241
- isClaimable(): boolean;
242
- /**
243
- * @inheritDoc
244
- */
245
- isSuccessful(): boolean;
246
- /**
247
- * @inheritDoc
248
- */
249
- isFailed(): boolean;
250
- /**
251
- * @inheritDoc
252
- */
253
- isInProgress(): boolean;
254
- /**
255
- * @inheritDoc
256
- */
257
- isQuoteExpired(): boolean;
258
- /**
259
- * @inheritDoc
260
- */
261
- isQuoteSoftExpired(): boolean;
262
- /**
263
- * @inheritDoc
264
- */
265
- _verifyQuoteDefinitelyExpired(): Promise<boolean>;
266
- /**
267
- * @inheritDoc
268
- */
269
- _verifyQuoteValid(): Promise<boolean>;
270
- /**
271
- * Returns the satoshi amount of the lightning network invoice, or `null` if the lightning network
272
- * invoice is not known (i.e. when the swap was recovered from on-chain data, the paid invoice
273
- * cannot be recovered because it is purely off-chain)
274
- *
275
- * @internal
276
- */
277
- protected getLightningInvoiceSats(): bigint | null;
278
- /**
279
- * Returns the watchtower fee paid in BTC satoshis, or null if known (i.e. if the swap was recovered from
280
- * on-chain data)
281
- *
282
- * @protected
283
- */
284
- protected getWatchtowerFeeAmountBtc(): bigint | null;
285
- /**
286
- * Returns the input amount for the actual swap (excluding the input amount used to cover the "gas drop"
287
- * part of the swap), excluding fees
288
- *
289
- * @internal
290
- */
291
- protected getInputSwapAmountWithoutFee(): bigint | null;
292
- /**
293
- * Returns the input amount purely for the "gas drop" part of the swap (this much BTC in sats will be
294
- * swapped into the native gas token on the destination chain), excluding fees
295
- *
296
- * @internal
297
- */
298
- protected getInputGasAmountWithoutFee(): bigint | null;
299
- /**
300
- * Get total btc amount in sats on the input, excluding the swap fee and watchtower fee
301
- *
302
- * @internal
303
- */
304
- protected getInputAmountWithoutFee(): bigint | null;
305
- /**
306
- * Returns the "would be" output amount if the swap charged no swap fee
307
- *
308
- * @internal
309
- */
310
- protected getOutputAmountWithoutFee(): bigint;
311
- /**
312
- * @inheritDoc
313
- */
314
- getInputToken(): BtcToken<true>;
315
- /**
316
- * @inheritDoc
317
- */
318
- getInput(): TokenAmount<BtcToken<true>>;
319
- /**
320
- * @inheritDoc
321
- */
322
- getInputWithoutFee(): TokenAmount<BtcToken<true>>;
323
- /**
324
- * @inheritDoc
325
- */
326
- getOutputToken(): SCToken<T["ChainId"]>;
327
- /**
328
- * @inheritDoc
329
- */
330
- getOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
331
- /**
332
- * @inheritDoc
333
- */
334
- getGasDropOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
335
- /**
336
- * Returns the swap fee charged by the intermediary (LP) on this swap
337
- *
338
- * @internal
339
- */
340
- protected getSwapFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
341
- /**
342
- * Returns the fee to be paid to watchtowers on the destination chain to automatically
343
- * process and settle this swap without requiring any user interaction
344
- *
345
- * @internal
346
- */
347
- protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
348
- /**
349
- * @inheritDoc
350
- */
351
- getFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
352
- /**
353
- * @inheritDoc
354
- */
355
- getFeeBreakdown(): [
356
- {
357
- type: FeeType.SWAP;
358
- fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
359
- },
360
- {
361
- type: FeeType.NETWORK_OUTPUT;
362
- fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
363
- }
364
- ];
365
- private isValidSecretPreimage;
366
- /**
367
- * Sets the secret preimage for the swap, in case it is not known already
368
- *
369
- * @param secret Secret preimage that matches the expected payment hash
370
- *
371
- * @throws {Error} If an invalid secret preimage is provided
372
- */
373
- setSecretPreimage(secret: string): Promise<void>;
374
- /**
375
- * Returns whether the secret preimage for this swap is known
376
- */
377
- hasSecretPreimage(): boolean;
378
- /**
379
- * Executes the swap with the provided bitcoin lightning network wallet or LNURL
380
- *
381
- * @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
382
- * link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
383
- * @param callbacks Callbacks to track the progress of the swap
384
- * @param options Optional options for the swap like AbortSignal, and timeouts/intervals
385
- * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
386
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
387
- *
388
- * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
389
- * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
390
- */
391
- execute(walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
392
- onSourceTransactionReceived?: (sourceTxId: string) => void;
393
- onSwapSettled?: (destinationTxId: string) => void;
394
- }, options?: {
395
- abortSignal?: AbortSignal;
396
- lightningTxCheckIntervalSeconds?: number;
397
- maxWaitTillAutomaticSettlementSeconds?: number;
398
- secret?: string;
399
- }): Promise<boolean>;
400
- /**
401
- * @internal
402
- */
403
- protected _getExecutionStatus(options?: {
404
- maxWaitTillAutomaticSettlementSeconds?: number;
405
- secret?: string;
406
- }): Promise<{
407
- steps: [SwapExecutionStepPayment<"LIGHTNING">, SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">];
408
- buildCurrentAction: (actionOptions?: {
409
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
410
- }) => Promise<SwapExecutionActionSendToAddress<true> | SwapExecutionActionWait<"LP" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
411
- state: number;
412
- }>;
413
- /**
414
- * @internal
415
- */
416
- private _buildLightningPaymentAction;
417
- /**
418
- * @internal
419
- */
420
- private _buildWaitLpAction;
421
- /**
422
- * @internal
423
- */
424
- private _buildWaitSettlementAction;
425
- /**
426
- * @inheritDoc
427
- * @internal
428
- */
429
- _submitExecutionTransactions(txs: (T["SignedTXType"] | string)[], abortSignal?: AbortSignal, requiredStates?: FromBTCLNAutoSwapState[], idempotent?: boolean): Promise<string[]>;
430
- /**
431
- * @internal
432
- */
433
- private _buildClaimSmartChainTxAction;
434
- /**
435
- *
436
- * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
437
- * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
438
- * the bitcoin transaction is confirmed (defaults to 60 seconds)
439
- * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
440
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
441
- */
442
- getExecutionAction(options?: {
443
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
444
- maxWaitTillAutomaticSettlementSeconds?: number;
445
- secret?: string;
446
- }): Promise<SwapExecutionActionSendToAddress<true> | SwapExecutionActionWait<"LP" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
447
- /**
448
- * @inheritDoc
449
- */
450
- getExecutionStatus(options?: {
451
- skipBuildingAction?: boolean;
452
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
453
- maxWaitTillAutomaticSettlementSeconds?: number;
454
- secret?: string;
455
- }): Promise<{
456
- steps: [
457
- SwapExecutionStepPayment<"LIGHTNING">,
458
- SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
459
- ];
460
- currentAction: SwapExecutionActionSendToAddress<true> | SwapExecutionActionWait<"LP" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined;
461
- stateInfo: SwapStateInfo<FromBTCLNAutoSwapState>;
462
- }>;
463
- /**
464
- * @inheritDoc
465
- */
466
- getExecutionSteps(options?: {
467
- maxWaitTillAutomaticSettlementSeconds?: number;
468
- }): Promise<[
469
- SwapExecutionStepPayment<"LIGHTNING">,
470
- SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
471
- ]>;
472
- /**
473
- * Checks whether the LP received the LN payment
474
- *
475
- * @param save If the new swap state should be saved
476
- *
477
- * @internal
478
- */
479
- _checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
480
- /**
481
- * Checks and overrides the swap data for this swap. This is used to set the swap data from
482
- * on-chain events.
483
- *
484
- * @param data Swap data of the escrow swap
485
- * @param save If the new data should be saved
486
- *
487
- * @internal
488
- */
489
- _saveRealSwapData(data: T["Data"], save?: boolean): Promise<boolean>;
490
- /**
491
- * Waits till a lightning network payment is received by the intermediary, and the intermediary
492
- * initiates the swap HTLC on the smart chain side. After the HTLC is initiated you can wait
493
- * for an automatic settlement by the watchtowers with the {@link waitTillClaimed} function,
494
- * or settle manually using the {@link claim} or {@link txsClaim} functions.
495
- *
496
- * If this swap is using an LNURL-withdraw link as input, it automatically posts the
497
- * generated invoice to the LNURL service to pay it.
498
- *
499
- * @remarks For internal use, rather use {@link waitForPayment} which properly waits till the LP also
500
- * offers a swap HTLC.
501
- *
502
- * @param abortSignal Abort signal to stop waiting for payment
503
- * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
504
- *
505
- * @internal
506
- */
507
- _waitForLpPaymentReceived(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
508
- /**
509
- * Checks the data returned by the intermediary in the payment auth request
510
- *
511
- * @param data Parsed swap data as returned by the intermediary
512
- *
513
- * @throws {IntermediaryError} If the returned are not valid
514
- * @throws {Error} If the swap is already committed on-chain
515
- *
516
- * @private
517
- */
518
- private checkIntermediaryReturnedData;
519
- /**
520
- * Waits till a lightning network payment is received by the intermediary, and the intermediary
521
- * initiates the swap HTLC on the smart chain side. After the HTLC is initiated you can wait
522
- * for an automatic settlement by the watchtowers with the {@link waitTillClaimed} function,
523
- * or settle manually using the {@link claim} or {@link txsClaim} functions.
524
- *
525
- * If this swap is using an LNURL-withdraw link as input, it automatically posts the
526
- * generated invoice to the LNURL service to pay it.
527
- *
528
- * @param onPaymentReceived Callback as for when the LP reports having received the ln payment
529
- * @param abortSignal Abort signal to stop waiting for payment
530
- * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
531
- */
532
- waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
533
- /**
534
- * Waits till the intermediary (LP) initiates the swap HTLC escrow on the destination smart chain side
535
- *
536
- * @param checkIntervalSeconds How often to check via a polling watchdog
537
- * @param abortSignal Abort signal
538
- *
539
- * @internal
540
- */
541
- protected waitTillCommited(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
542
- /**
543
- * @inheritDoc
544
- *
545
- * @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
546
- * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
547
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
548
- *
549
- * @throws {Error} If in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
550
- */
551
- txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"], secret?: string): Promise<T["TX"][]>;
552
- /**
553
- * @inheritDoc
554
- *
555
- * @param _signer Signer to sign the transactions with, can also be different to the initializer
556
- * @param abortSignal Abort signal to stop waiting for transaction confirmation
557
- * @param onBeforeTxSent
558
- * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
559
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
560
- */
561
- claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void, secret?: string): Promise<string>;
562
- /**
563
- * Waits till the swap is successfully settled (claimed), should be called after sending the claim (settlement)
564
- * transactions manually to wait till the SDK processes the settlement and updates the swap state accordingly.
565
- *
566
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
567
- * @param abortSignal AbortSignal
568
- * @param secret A swap secret to broadcast to watchtowers, generally only needed if the swap
569
- * was recovered from on-chain data, or the pre-image was generated outside the SDK
570
- * @param pollIntervalSeconds How often to poll via the watchdog
571
- *
572
- * @throws {Error} If swap is in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
573
- * @throws {Error} If the LP refunded sooner than we were able to claim
574
- * @returns {boolean} whether the swap was claimed in time or not
575
- */
576
- waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, secret?: string, pollIntervalSeconds?: number): Promise<boolean>;
577
- /**
578
- * Whether this swap uses an LNURL-withdraw link
579
- */
580
- isLNURL(): boolean;
581
- /**
582
- * Gets the used LNURL or `null` if this is not an LNURL-withdraw swap
583
- */
584
- getLNURL(): string | null;
585
- /**
586
- * Pay the generated lightning network invoice with an LNURL-withdraw link, this
587
- * is useful when you want to display a lightning payment QR code and also want to
588
- * allow payments using LNURL-withdraw NFC cards.
589
- *
590
- * Note that the swap needs to be created **without** an LNURL to begin with for this function
591
- * to work. If this swap is already using an LNURL-withdraw link, this function throws.
592
- */
593
- settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
594
- /**
595
- * @inheritDoc
596
- */
597
- serialize(): any;
598
- /**
599
- * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
600
- * data
601
- *
602
- * @private
603
- */
604
- private syncStateFromChain;
605
- /**
606
- * @inheritDoc
607
- * @internal
608
- */
609
- _shouldFetchOnchainState(): boolean;
610
- /**
611
- * @inheritDoc
612
- * @internal
613
- */
614
- _shouldFetchExpiryStatus(): boolean;
615
- /**
616
- * @inheritDoc
617
- * @internal
618
- */
619
- _shouldCheckIntermediary(): boolean;
620
- /**
621
- * @inheritDoc
622
- * @internal
623
- */
624
- _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
625
- /**
626
- * @inheritDoc
627
- * @internal
628
- */
629
- _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
630
- /**
631
- * Broadcasts the swap secret to the underlying data propagation layer (e.g. Nostr by default)
632
- *
633
- * @param noCheckExpiry Whether a swap expiration check should be skipped broadcasting
634
- * @param secret An optional secret pre-image for the swap to broadcast
635
- *
636
- * @internal
637
- */
638
- _broadcastSecret(noCheckExpiry?: boolean, secret?: string): Promise<void>;
639
- /**
640
- * @inheritDoc
641
- * @internal
642
- */
643
- _tick(save?: boolean): Promise<boolean>;
644
- /**
645
- * Forcibly sets the swap secret pre-image from on-chain data
646
- *
647
- * @internal
648
- */
649
- _setSwapSecret(secret: string): void;
650
- }
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { SwapType } from "../../../../enums/SwapType";
4
+ import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
5
+ import { Buffer } from "buffer";
6
+ import { Fee } from "../../../../types/fees/Fee";
7
+ import { IAddressSwap } from "../../../IAddressSwap";
8
+ import { FromBTCLNAutoDefinition, FromBTCLNAutoWrapper } from "./FromBTCLNAutoWrapper";
9
+ import { ISwapWithGasDrop } from "../../../ISwapWithGasDrop";
10
+ import { MinimalLightningNetworkWalletInterface } from "../../../../types/wallets/MinimalLightningNetworkWalletInterface";
11
+ import { IClaimableSwap } from "../../../IClaimableSwap";
12
+ import { IEscrowSwap, IEscrowSwapInit } from "../../IEscrowSwap";
13
+ import { FeeType } from "../../../../enums/FeeType";
14
+ import { TokenAmount } from "../../../../types/TokenAmount";
15
+ import { BtcToken, SCToken } from "../../../../types/Token";
16
+ import { LoggerType } from "../../../../utils/Logger";
17
+ import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
18
+ import { PriceInfoType } from "../../../../types/PriceInfoType";
19
+ import { SwapExecutionActionSendToAddress, SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../../../types/SwapExecutionAction";
20
+ import { SwapExecutionStepPayment, SwapExecutionStepSettlement } from "../../../../types/SwapExecutionStep";
21
+ import { SwapStateInfo } from "../../../../types/SwapStateInfo";
22
+ /**
23
+ * State enum for FromBTCLNAuto swaps
24
+ * @category Swaps/Lightning → Smart chain
25
+ */
26
+ export declare enum FromBTCLNAutoSwapState {
27
+ /**
28
+ * Swap has failed as the user didn't settle the HTLC on the destination before expiration
29
+ */
30
+ FAILED = -4,
31
+ /**
32
+ * Swap has expired for good and there is no way how it can be executed anymore
33
+ */
34
+ QUOTE_EXPIRED = -3,
35
+ /**
36
+ * A swap is almost expired, and it should be presented to the user as expired, though
37
+ * there is still a chance that it will be processed
38
+ */
39
+ QUOTE_SOFT_EXPIRED = -2,
40
+ /**
41
+ * Swap HTLC on the destination chain has expired, it is not safe anymore to settle (claim) the
42
+ * swap on the destination smart chain.
43
+ */
44
+ EXPIRED = -1,
45
+ /**
46
+ * Swap quote was created, use {@link FromBTCLNAutoSwap.getAddress} or {@link FromBTCLNAutoSwap.getHyperlink}
47
+ * to get the bolt11 lightning network invoice to pay to initiate the swap, then use the
48
+ * {@link FromBTCLNAutoSwap.waitForPayment} to wait till the lightning network payment is received
49
+ * by the intermediary (LP) and the destination HTLC escrow is created
50
+ */
51
+ PR_CREATED = 0,
52
+ /**
53
+ * Lightning network payment has been received by the intermediary (LP), but the destination chain
54
+ * HTLC escrow hasn't been created yet. Use {@link FromBTCLNAutoSwap.waitForPayment} to continue waiting
55
+ * till the destination HTLC escrow is created.
56
+ */
57
+ PR_PAID = 1,
58
+ /**
59
+ * Swap escrow HTLC has been created on the destination chain, wait for automatic settlement by the watchtowers
60
+ * using the {@link FromBTCLNAutoSwap.waitTillClaimed} function or settle manually using the
61
+ * {@link FromBTCLNAutoSwap.claim} or {@link FromBTCLNAutoSwap.txsClaim} function.
62
+ */
63
+ CLAIM_COMMITED = 2,
64
+ /**
65
+ * Swap successfully settled and funds received on the destination chain
66
+ */
67
+ CLAIM_CLAIMED = 3
68
+ }
69
+ export type FromBTCLNAutoSwapInit<T extends SwapData> = IEscrowSwapInit<T> & {
70
+ pr?: string;
71
+ secret?: string;
72
+ initialSwapData: T;
73
+ btcAmountSwap?: bigint;
74
+ btcAmountGas?: bigint;
75
+ gasSwapFeeBtc: bigint;
76
+ gasSwapFee: bigint;
77
+ gasPricingInfo?: PriceInfoType;
78
+ lnurl?: string;
79
+ lnurlK1?: string;
80
+ lnurlCallback?: string;
81
+ };
82
+ export declare function isFromBTCLNAutoSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNAutoSwapInit<T>;
83
+ /**
84
+ * New escrow based (HTLC) swaps for Bitcoin Lightning -> Smart chain swaps not requiring manual settlement on
85
+ * the destination by the user, and instead letting the LP initiate the escrow. Permissionless watchtower network
86
+ * handles the claiming of HTLC, with the swap secret broadcasted over Nostr. Also adds a possibility for the user
87
+ * to receive a native token on the destination chain as part of the swap (a "gas drop" feature).
88
+ *
89
+ * @category Swaps/Lightning → Smart chain
90
+ */
91
+ export declare class FromBTCLNAutoSwap<T extends ChainType = ChainType> extends IEscrowSwap<T, FromBTCLNAutoDefinition<T>> implements IAddressSwap, ISwapWithGasDrop<T>, IClaimableSwap<T, FromBTCLNAutoDefinition<T>, FromBTCLNAutoSwapState> {
92
+ protected readonly TYPE: SwapType.FROM_BTCLN_AUTO;
93
+ /**
94
+ * @internal
95
+ */
96
+ protected readonly swapStateName: (state: number) => string;
97
+ /**
98
+ * @internal
99
+ */
100
+ protected readonly swapStateDescription: {
101
+ [-4]: string;
102
+ [-3]: string;
103
+ [-2]: string;
104
+ [-1]: string;
105
+ 0: string;
106
+ 1: string;
107
+ 2: string;
108
+ 3: string;
109
+ };
110
+ /**
111
+ * @internal
112
+ */
113
+ protected readonly logger: LoggerType;
114
+ /**
115
+ * @internal
116
+ */
117
+ protected readonly inputToken: BtcToken<true>;
118
+ /**
119
+ * Timestamp at which the HTLC was commited on the smart chain side
120
+ * @internal
121
+ */
122
+ _commitedAt?: number;
123
+ private readonly lnurlFailSignal;
124
+ private readonly usesClaimHashAsId;
125
+ private readonly initialSwapData;
126
+ private readonly btcAmountSwap?;
127
+ private readonly btcAmountGas?;
128
+ private readonly gasSwapFeeBtc;
129
+ private readonly gasSwapFee;
130
+ private readonly gasPricingInfo?;
131
+ /**
132
+ * In case the swap is recovered from on-chain data, the pr saved here is just a payment hash,
133
+ * as it is impossible to retrieve the actual lightning network invoice paid purely from on-chain
134
+ * data
135
+ * @private
136
+ */
137
+ private pr?;
138
+ private secret?;
139
+ private lnurl?;
140
+ private lnurlK1?;
141
+ private lnurlCallback?;
142
+ private prPosted?;
143
+ private broadcastTickCounter;
144
+ /**
145
+ * Sets the LNURL data for the swap
146
+ *
147
+ * @internal
148
+ */
149
+ _setLNURLData(lnurl: string, lnurlK1: string, lnurlCallback: string): void;
150
+ constructor(wrapper: FromBTCLNAutoWrapper<T>, init: FromBTCLNAutoSwapInit<T["Data"]>);
151
+ constructor(wrapper: FromBTCLNAutoWrapper<T>, obj: any);
152
+ /**
153
+ * @inheritDoc
154
+ * @internal
155
+ */
156
+ protected getSwapData(): T["Data"];
157
+ /**
158
+ * @inheritDoc
159
+ * @internal
160
+ */
161
+ protected upgradeVersion(): void;
162
+ /**
163
+ * @inheritDoc
164
+ * @internal
165
+ */
166
+ protected tryRecomputeSwapPrice(): void;
167
+ /**
168
+ * @inheritDoc
169
+ */
170
+ refreshPriceData(): Promise<void>;
171
+ /**
172
+ * @inheritDoc
173
+ * @internal
174
+ */
175
+ _getEscrowHash(): string | null;
176
+ /**
177
+ * @inheritDoc
178
+ * @internal
179
+ */
180
+ _getInitiator(): string;
181
+ /**
182
+ * @inheritDoc
183
+ */
184
+ getId(): string;
185
+ /**
186
+ * @inheritDoc
187
+ */
188
+ getOutputAddress(): string | null;
189
+ /**
190
+ * @inheritDoc
191
+ */
192
+ getOutputTxId(): string | null;
193
+ /**
194
+ * @inheritDoc
195
+ */
196
+ requiresAction(): boolean;
197
+ /**
198
+ * @inheritDoc
199
+ * @internal
200
+ */
201
+ protected getIdentifierHashString(): string;
202
+ /**
203
+ * Returns the payment hash of the swap and lightning network invoice, or `null` if not known (i.e. if
204
+ * the swap was recovered from on-chain data, the payment hash might not be known)
205
+ *
206
+ * @internal
207
+ */
208
+ protected getPaymentHash(): Buffer | null;
209
+ /**
210
+ * @inheritDoc
211
+ */
212
+ getInputAddress(): string | null;
213
+ /**
214
+ * @inheritDoc
215
+ */
216
+ getInputTxId(): string | null;
217
+ /**
218
+ * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
219
+ */
220
+ getAddress(): string;
221
+ /**
222
+ * @inheritDoc
223
+ */
224
+ getHyperlink(): string;
225
+ /**
226
+ * Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
227
+ * if the LP doesn't make it expired sooner
228
+ */
229
+ getDefinitiveExpiryTime(): number;
230
+ /**
231
+ * Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
232
+ */
233
+ getHtlcTimeoutTime(): number | null;
234
+ /**
235
+ * @inheritDoc
236
+ */
237
+ isFinished(): boolean;
238
+ /**
239
+ * @inheritDoc
240
+ */
241
+ isClaimable(): boolean;
242
+ /**
243
+ * @inheritDoc
244
+ */
245
+ isSuccessful(): boolean;
246
+ /**
247
+ * @inheritDoc
248
+ */
249
+ isFailed(): boolean;
250
+ /**
251
+ * @inheritDoc
252
+ */
253
+ isInProgress(): boolean;
254
+ /**
255
+ * @inheritDoc
256
+ */
257
+ isQuoteExpired(): boolean;
258
+ /**
259
+ * @inheritDoc
260
+ */
261
+ isQuoteSoftExpired(): boolean;
262
+ /**
263
+ * @inheritDoc
264
+ */
265
+ _verifyQuoteDefinitelyExpired(): Promise<boolean>;
266
+ /**
267
+ * @inheritDoc
268
+ */
269
+ _verifyQuoteValid(): Promise<boolean>;
270
+ /**
271
+ * Returns the satoshi amount of the lightning network invoice, or `null` if the lightning network
272
+ * invoice is not known (i.e. when the swap was recovered from on-chain data, the paid invoice
273
+ * cannot be recovered because it is purely off-chain)
274
+ *
275
+ * @internal
276
+ */
277
+ protected getLightningInvoiceSats(): bigint | null;
278
+ /**
279
+ * Returns the watchtower fee paid in BTC satoshis, or null if known (i.e. if the swap was recovered from
280
+ * on-chain data)
281
+ *
282
+ * @protected
283
+ */
284
+ protected getWatchtowerFeeAmountBtc(): bigint | null;
285
+ /**
286
+ * Returns the input amount for the actual swap (excluding the input amount used to cover the "gas drop"
287
+ * part of the swap), excluding fees
288
+ *
289
+ * @internal
290
+ */
291
+ protected getInputSwapAmountWithoutFee(): bigint | null;
292
+ /**
293
+ * Returns the input amount purely for the "gas drop" part of the swap (this much BTC in sats will be
294
+ * swapped into the native gas token on the destination chain), excluding fees
295
+ *
296
+ * @internal
297
+ */
298
+ protected getInputGasAmountWithoutFee(): bigint | null;
299
+ /**
300
+ * Get total btc amount in sats on the input, excluding the swap fee and watchtower fee
301
+ *
302
+ * @internal
303
+ */
304
+ protected getInputAmountWithoutFee(): bigint | null;
305
+ /**
306
+ * Returns the "would be" output amount if the swap charged no swap fee
307
+ *
308
+ * @internal
309
+ */
310
+ protected getOutputAmountWithoutFee(): bigint;
311
+ /**
312
+ * @inheritDoc
313
+ */
314
+ getInputToken(): BtcToken<true>;
315
+ /**
316
+ * @inheritDoc
317
+ */
318
+ getInput(): TokenAmount<BtcToken<true>>;
319
+ /**
320
+ * @inheritDoc
321
+ */
322
+ getInputWithoutFee(): TokenAmount<BtcToken<true>>;
323
+ /**
324
+ * @inheritDoc
325
+ */
326
+ getOutputToken(): SCToken<T["ChainId"]>;
327
+ /**
328
+ * @inheritDoc
329
+ */
330
+ getOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
331
+ /**
332
+ * @inheritDoc
333
+ */
334
+ getGasDropOutput(): TokenAmount<SCToken<T["ChainId"]>, true>;
335
+ /**
336
+ * Returns the swap fee charged by the intermediary (LP) on this swap
337
+ *
338
+ * @internal
339
+ */
340
+ protected getSwapFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
341
+ /**
342
+ * Returns the fee to be paid to watchtowers on the destination chain to automatically
343
+ * process and settle this swap without requiring any user interaction
344
+ *
345
+ * @internal
346
+ */
347
+ protected getWatchtowerFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
348
+ /**
349
+ * @inheritDoc
350
+ */
351
+ getFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
352
+ /**
353
+ * @inheritDoc
354
+ */
355
+ getFeeBreakdown(): [
356
+ {
357
+ type: FeeType.SWAP;
358
+ fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
359
+ },
360
+ {
361
+ type: FeeType.NETWORK_OUTPUT;
362
+ fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>;
363
+ }
364
+ ];
365
+ private isValidSecretPreimage;
366
+ /**
367
+ * Sets the secret preimage for the swap, in case it is not known already
368
+ *
369
+ * @param secret Secret preimage that matches the expected payment hash
370
+ *
371
+ * @throws {Error} If an invalid secret preimage is provided
372
+ */
373
+ setSecretPreimage(secret: string): Promise<void>;
374
+ /**
375
+ * Returns whether the secret preimage for this swap is known
376
+ */
377
+ hasSecretPreimage(): boolean;
378
+ /**
379
+ * Executes the swap with the provided bitcoin lightning network wallet or LNURL
380
+ *
381
+ * @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
382
+ * link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
383
+ * @param callbacks Callbacks to track the progress of the swap
384
+ * @param options Optional options for the swap like AbortSignal, and timeouts/intervals
385
+ * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
386
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
387
+ *
388
+ * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
389
+ * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
390
+ */
391
+ execute(walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
392
+ onSourceTransactionReceived?: (sourceTxId: string) => void;
393
+ onSwapSettled?: (destinationTxId: string) => void;
394
+ }, options?: {
395
+ abortSignal?: AbortSignal;
396
+ lightningTxCheckIntervalSeconds?: number;
397
+ maxWaitTillAutomaticSettlementSeconds?: number;
398
+ secret?: string;
399
+ }): Promise<boolean>;
400
+ /**
401
+ * @internal
402
+ */
403
+ protected _getExecutionStatus(options?: {
404
+ maxWaitTillAutomaticSettlementSeconds?: number;
405
+ secret?: string;
406
+ }): Promise<{
407
+ steps: [SwapExecutionStepPayment<"LIGHTNING">, SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">];
408
+ buildCurrentAction: (actionOptions?: {
409
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
410
+ }) => Promise<SwapExecutionActionSendToAddress<true> | SwapExecutionActionWait<"LP" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
411
+ state: number;
412
+ }>;
413
+ /**
414
+ * @internal
415
+ */
416
+ private _buildLightningPaymentAction;
417
+ /**
418
+ * @internal
419
+ */
420
+ private _buildWaitLpAction;
421
+ /**
422
+ * @internal
423
+ */
424
+ private _buildWaitSettlementAction;
425
+ /**
426
+ * @inheritDoc
427
+ * @internal
428
+ */
429
+ _submitExecutionTransactions(txs: (T["SignedTXType"] | string)[], abortSignal?: AbortSignal, requiredStates?: FromBTCLNAutoSwapState[], idempotent?: boolean): Promise<string[]>;
430
+ /**
431
+ * @internal
432
+ */
433
+ private _buildClaimSmartChainTxAction;
434
+ /**
435
+ *
436
+ * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
437
+ * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
438
+ * the bitcoin transaction is confirmed (defaults to 60 seconds)
439
+ * @param options.secret A swap secret to broadcast to watchtowers, generally only needed if the swap
440
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
441
+ */
442
+ getExecutionAction(options?: {
443
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
444
+ maxWaitTillAutomaticSettlementSeconds?: number;
445
+ secret?: string;
446
+ }): Promise<SwapExecutionActionSendToAddress<true> | SwapExecutionActionWait<"LP" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
447
+ /**
448
+ * @inheritDoc
449
+ */
450
+ getExecutionStatus(options?: {
451
+ skipBuildingAction?: boolean;
452
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
453
+ maxWaitTillAutomaticSettlementSeconds?: number;
454
+ secret?: string;
455
+ }): Promise<{
456
+ steps: [
457
+ SwapExecutionStepPayment<"LIGHTNING">,
458
+ SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
459
+ ];
460
+ currentAction: SwapExecutionActionSendToAddress<true> | SwapExecutionActionWait<"LP" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined;
461
+ stateInfo: SwapStateInfo<FromBTCLNAutoSwapState>;
462
+ }>;
463
+ /**
464
+ * @inheritDoc
465
+ */
466
+ getExecutionSteps(options?: {
467
+ maxWaitTillAutomaticSettlementSeconds?: number;
468
+ }): Promise<[
469
+ SwapExecutionStepPayment<"LIGHTNING">,
470
+ SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
471
+ ]>;
472
+ /**
473
+ * Checks whether the LP received the LN payment
474
+ *
475
+ * @param save If the new swap state should be saved
476
+ *
477
+ * @internal
478
+ */
479
+ _checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
480
+ /**
481
+ * Checks and overrides the swap data for this swap. This is used to set the swap data from
482
+ * on-chain events.
483
+ *
484
+ * @param data Swap data of the escrow swap
485
+ * @param save If the new data should be saved
486
+ *
487
+ * @internal
488
+ */
489
+ _saveRealSwapData(data: T["Data"], save?: boolean): Promise<boolean>;
490
+ /**
491
+ * Waits till a lightning network payment is received by the intermediary, and the intermediary
492
+ * initiates the swap HTLC on the smart chain side. After the HTLC is initiated you can wait
493
+ * for an automatic settlement by the watchtowers with the {@link waitTillClaimed} function,
494
+ * or settle manually using the {@link claim} or {@link txsClaim} functions.
495
+ *
496
+ * If this swap is using an LNURL-withdraw link as input, it automatically posts the
497
+ * generated invoice to the LNURL service to pay it.
498
+ *
499
+ * @remarks For internal use, rather use {@link waitForPayment} which properly waits till the LP also
500
+ * offers a swap HTLC.
501
+ *
502
+ * @param abortSignal Abort signal to stop waiting for payment
503
+ * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
504
+ *
505
+ * @internal
506
+ */
507
+ _waitForLpPaymentReceived(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
508
+ /**
509
+ * Checks the data returned by the intermediary in the payment auth request
510
+ *
511
+ * @param data Parsed swap data as returned by the intermediary
512
+ *
513
+ * @throws {IntermediaryError} If the returned are not valid
514
+ * @throws {Error} If the swap is already committed on-chain
515
+ *
516
+ * @private
517
+ */
518
+ private checkIntermediaryReturnedData;
519
+ /**
520
+ * Waits till a lightning network payment is received by the intermediary, and the intermediary
521
+ * initiates the swap HTLC on the smart chain side. After the HTLC is initiated you can wait
522
+ * for an automatic settlement by the watchtowers with the {@link waitTillClaimed} function,
523
+ * or settle manually using the {@link claim} or {@link txsClaim} functions.
524
+ *
525
+ * If this swap is using an LNURL-withdraw link as input, it automatically posts the
526
+ * generated invoice to the LNURL service to pay it.
527
+ *
528
+ * @param onPaymentReceived Callback as for when the LP reports having received the ln payment
529
+ * @param abortSignal Abort signal to stop waiting for payment
530
+ * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
531
+ */
532
+ waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
533
+ /**
534
+ * Waits till the intermediary (LP) initiates the swap HTLC escrow on the destination smart chain side
535
+ *
536
+ * @param checkIntervalSeconds How often to check via a polling watchdog
537
+ * @param abortSignal Abort signal
538
+ *
539
+ * @internal
540
+ */
541
+ protected waitTillCommited(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<void>;
542
+ /**
543
+ * @inheritDoc
544
+ *
545
+ * @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
546
+ * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
547
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
548
+ *
549
+ * @throws {Error} If in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
550
+ */
551
+ txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"], secret?: string): Promise<T["TX"][]>;
552
+ /**
553
+ * @inheritDoc
554
+ *
555
+ * @param _signer Signer to sign the transactions with, can also be different to the initializer
556
+ * @param abortSignal Abort signal to stop waiting for transaction confirmation
557
+ * @param onBeforeTxSent
558
+ * @param secret A swap secret to use for the claim transaction, generally only needed if the swap
559
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
560
+ */
561
+ claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void, secret?: string): Promise<string>;
562
+ /**
563
+ * Waits till the swap is successfully settled (claimed), should be called after sending the claim (settlement)
564
+ * transactions manually to wait till the SDK processes the settlement and updates the swap state accordingly.
565
+ *
566
+ * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
567
+ * @param abortSignal AbortSignal
568
+ * @param secret A swap secret to broadcast to watchtowers, generally only needed if the swap
569
+ * was recovered from on-chain data, or the pre-image was generated outside the SDK
570
+ * @param pollIntervalSeconds How often to poll via the watchdog
571
+ *
572
+ * @throws {Error} If swap is in invalid state (must be {@link FromBTCLNAutoSwapState.CLAIM_COMMITED})
573
+ * @throws {Error} If the LP refunded sooner than we were able to claim
574
+ * @returns {boolean} whether the swap was claimed in time or not
575
+ */
576
+ waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, secret?: string, pollIntervalSeconds?: number): Promise<boolean>;
577
+ /**
578
+ * Whether this swap uses an LNURL-withdraw link
579
+ */
580
+ isLNURL(): boolean;
581
+ /**
582
+ * Gets the used LNURL or `null` if this is not an LNURL-withdraw swap
583
+ */
584
+ getLNURL(): string | null;
585
+ /**
586
+ * Pay the generated lightning network invoice with an LNURL-withdraw link, this
587
+ * is useful when you want to display a lightning payment QR code and also want to
588
+ * allow payments using LNURL-withdraw NFC cards.
589
+ *
590
+ * Note that the swap needs to be created **without** an LNURL to begin with for this function
591
+ * to work. If this swap is already using an LNURL-withdraw link, this function throws.
592
+ */
593
+ settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
594
+ /**
595
+ * @inheritDoc
596
+ */
597
+ serialize(): any;
598
+ /**
599
+ * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
600
+ * data
601
+ *
602
+ * @private
603
+ */
604
+ private syncStateFromChain;
605
+ /**
606
+ * @inheritDoc
607
+ * @internal
608
+ */
609
+ _shouldFetchOnchainState(): boolean;
610
+ /**
611
+ * @inheritDoc
612
+ * @internal
613
+ */
614
+ _shouldFetchExpiryStatus(): boolean;
615
+ /**
616
+ * @inheritDoc
617
+ * @internal
618
+ */
619
+ _shouldCheckIntermediary(): boolean;
620
+ /**
621
+ * @inheritDoc
622
+ * @internal
623
+ */
624
+ _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
625
+ /**
626
+ * @inheritDoc
627
+ * @internal
628
+ */
629
+ _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
630
+ /**
631
+ * Broadcasts the swap secret to the underlying data propagation layer (e.g. Nostr by default)
632
+ *
633
+ * @param noCheckExpiry Whether a swap expiration check should be skipped broadcasting
634
+ * @param secret An optional secret pre-image for the swap to broadcast
635
+ *
636
+ * @internal
637
+ */
638
+ _broadcastSecret(noCheckExpiry?: boolean, secret?: string): Promise<void>;
639
+ /**
640
+ * @inheritDoc
641
+ * @internal
642
+ */
643
+ _tick(save?: boolean): Promise<boolean>;
644
+ /**
645
+ * Forcibly sets the swap secret pre-image from on-chain data
646
+ *
647
+ * @internal
648
+ */
649
+ _setSwapSecret(secret: string): void;
650
+ }