@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,491 +1,491 @@
1
- import { IFromBTCSelfInitSwap } from "../IFromBTCSelfInitSwap";
2
- import { SwapType } from "../../../../enums/SwapType";
3
- import { FromBTCDefinition, FromBTCWrapper } from "./FromBTCWrapper";
4
- import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
5
- import { IBitcoinWallet } from "../../../../bitcoin/wallet/IBitcoinWallet";
6
- import { IBTCWalletSwap } from "../../../IBTCWalletSwap";
7
- import { Transaction } from "@scure/btc-signer";
8
- import { MinimalBitcoinWalletInterface, MinimalBitcoinWalletInterfaceWithSigner } from "../../../../types/wallets/MinimalBitcoinWalletInterface";
9
- import { IClaimableSwap } from "../../../IClaimableSwap";
10
- import { IEscrowSelfInitSwapInit } from "../../IEscrowSelfInitSwap";
11
- import { IAddressSwap } from "../../../IAddressSwap";
12
- import { TokenAmount } from "../../../../types/TokenAmount";
13
- import { BtcToken, SCToken } from "../../../../types/Token";
14
- import { LoggerType } from "../../../../utils/Logger";
15
- import { SwapExecutionActionSendToAddress, SwapExecutionActionSignPSBT, SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../../../types/SwapExecutionAction";
16
- import { SwapExecutionStepPayment, SwapExecutionStepSettlement, SwapExecutionStepSetup } from "../../../../types/SwapExecutionStep";
17
- import { SwapStateInfo } from "../../../../types/SwapStateInfo";
18
- /**
19
- * State enum for legacy escrow based Bitcoin -> Smart chain swaps.
20
- *
21
- * @category Swaps/Legacy/Bitcoin → Smart chain
22
- */
23
- export declare enum FromBTCSwapState {
24
- /**
25
- * Bitcoin swap address has expired and the intermediary (LP) has already refunded
26
- * its funds. No BTC should be sent anymore!
27
- */
28
- FAILED = -4,
29
- /**
30
- * Bitcoin swap address has expired, user should not send any BTC anymore! Though
31
- * the intermediary (LP) hasn't refunded yet. So if there is a transaction already
32
- * in-flight the swap might still succeed.
33
- */
34
- EXPIRED = -3,
35
- /**
36
- * Swap has expired for good and there is no way how it can be executed anymore
37
- */
38
- QUOTE_EXPIRED = -2,
39
- /**
40
- * A swap is almost expired, and it should be presented to the user as expired, though
41
- * there is still a chance that it will be processed
42
- */
43
- QUOTE_SOFT_EXPIRED = -1,
44
- /**
45
- * Swap quote was created, use the {@link FromBTCSwap.commit} or {@link FromBTCSwap.txsCommit} functions
46
- * to initiate it by creating the swap escrow on the destination smart chain
47
- */
48
- PR_CREATED = 0,
49
- /**
50
- * Swap escrow was initiated (committed) on the destination chain, user can send the BTC to the
51
- * swap address with the {@link FromBTCSwap.getFundedPsbt}, {@link FromBTCSwap.getAddress} or
52
- * {@link FromBTCSwap.getHyperlink} functions.
53
- */
54
- CLAIM_COMMITED = 1,
55
- /**
56
- * Input bitcoin transaction was confirmed, wait for automatic settlement by the watchtowers
57
- * using the {@link FromBTCSwap.waitTillClaimed} function or settle manually using the {@link FromBTCSwap.claim}
58
- * or {@link FromBTCSwap.txsClaim} function.
59
- */
60
- BTC_TX_CONFIRMED = 2,
61
- /**
62
- * Swap successfully settled and funds received on the destination chain
63
- */
64
- CLAIM_CLAIMED = 3
65
- }
66
- export type FromBTCSwapInit<T extends SwapData> = IEscrowSelfInitSwapInit<T> & {
67
- data: T;
68
- address?: string;
69
- amount?: bigint;
70
- requiredConfirmations?: number;
71
- };
72
- export declare function isFromBTCSwapInit<T extends SwapData>(obj: any): obj is FromBTCSwapInit<T>;
73
- /**
74
- * Legacy escrow (PrTLC) based swap for Bitcoin -> Smart chains, requires manual initiation
75
- * of the swap escrow on the destination chain.
76
- *
77
- * @category Swaps/Legacy/Bitcoin → Smart chain
78
- */
79
- export declare class FromBTCSwap<T extends ChainType = ChainType> extends IFromBTCSelfInitSwap<T, FromBTCDefinition<T>, FromBTCSwapState> implements IBTCWalletSwap, IClaimableSwap<T, FromBTCDefinition<T>, FromBTCSwapState>, IAddressSwap {
80
- protected readonly TYPE: SwapType.FROM_BTC;
81
- /**
82
- * @internal
83
- */
84
- protected readonly swapStateName: (state: number) => string;
85
- /**
86
- * @internal
87
- */
88
- protected readonly swapStateDescription: {
89
- [-4]: string;
90
- [-3]: string;
91
- [-2]: string;
92
- [-1]: string;
93
- 0: string;
94
- 1: string;
95
- 2: string;
96
- 3: string;
97
- };
98
- /**
99
- * @internal
100
- */
101
- protected readonly logger: LoggerType;
102
- /**
103
- * @internal
104
- */
105
- protected readonly inputToken: BtcToken<false>;
106
- /**
107
- * @internal
108
- */
109
- protected readonly feeRate: string;
110
- /**
111
- * @internal
112
- */
113
- readonly _data: T["Data"];
114
- private address?;
115
- private amount?;
116
- private requiredConfirmations?;
117
- private senderAddress?;
118
- private txId?;
119
- private vout?;
120
- private btcTxConfirmedAt?;
121
- constructor(wrapper: FromBTCWrapper<T>, init: FromBTCSwapInit<T["Data"]>);
122
- constructor(wrapper: FromBTCWrapper<T>, obj: any);
123
- /**
124
- * @inheritDoc
125
- * @internal
126
- */
127
- protected getSwapData(): T["Data"];
128
- /**
129
- * @inheritDoc
130
- * @internal
131
- */
132
- protected upgradeVersion(): void;
133
- /**
134
- * Returns bitcoin address where the on-chain BTC should be sent to
135
- */
136
- getAddress(): string;
137
- /**
138
- * Unsafe bitcoin hyperlink getter, returns the address even before the swap is committed!
139
- *
140
- * @private
141
- */
142
- private _getHyperlink;
143
- /**
144
- * @inheritDoc
145
- */
146
- getHyperlink(): string;
147
- /**
148
- * @inheritDoc
149
- */
150
- getInputAddress(): string | null;
151
- /**
152
- * @inheritDoc
153
- */
154
- getInputTxId(): string | null;
155
- private _setSubmittedBitcoinTx;
156
- /**
157
- * Returns timeout time (in UNIX milliseconds) when the on-chain address will expire and no funds should be sent
158
- * to that address anymore
159
- */
160
- getTimeoutTime(): number;
161
- /**
162
- * @inheritDoc
163
- */
164
- requiresAction(): boolean;
165
- /**
166
- * @inheritDoc
167
- */
168
- isFinished(): boolean;
169
- /**
170
- * @inheritDoc
171
- */
172
- isClaimable(): boolean;
173
- /**
174
- * @inheritDoc
175
- */
176
- isSuccessful(): boolean;
177
- /**
178
- * @inheritDoc
179
- */
180
- isFailed(): boolean;
181
- /**
182
- * @inheritDoc
183
- */
184
- isInProgress(): boolean;
185
- /**
186
- * @inheritDoc
187
- */
188
- isQuoteExpired(): boolean;
189
- /**
190
- * @inheritDoc
191
- */
192
- isQuoteSoftExpired(): boolean;
193
- /**
194
- * @inheritDoc
195
- * @internal
196
- */
197
- protected canCommit(skipQuoteExpiryChecks?: boolean): boolean;
198
- /**
199
- * @inheritDoc
200
- */
201
- getInputToken(): BtcToken<false>;
202
- /**
203
- * @inheritDoc
204
- */
205
- getInput(): TokenAmount<BtcToken<false>>;
206
- /**
207
- * Returns claimer bounty, acting as a reward for watchtowers to claim the swap automatically,
208
- * this amount is pre-funded by the user on the destination chain when the swap escrow
209
- * is initiated. For total pre-funded deposit amount see {@link getTotalDeposit}.
210
- */
211
- getClaimerBounty(): TokenAmount<SCToken<T["ChainId"]>, true>;
212
- /**
213
- * If the required number of confirmations is not known, this function tries to infer it by looping through
214
- * possible confirmation targets and comparing the claim hashes
215
- *
216
- * @param btcTx Bitcoin transaction
217
- * @param vout Output index of the desired output in the bitcoin transaction
218
- *
219
- * @private
220
- */
221
- private inferRequiredConfirmationsCount;
222
- /**
223
- * @inheritDoc
224
- */
225
- getRequiredConfirmationsCount(): number;
226
- /**
227
- * Checks whether a bitcoin payment was already made, returns the payment or `null` when no payment has been made.
228
- *
229
- * @internal
230
- */
231
- protected getBitcoinPayment(): Promise<{
232
- txId: string;
233
- vout: number;
234
- confirmations: number;
235
- targetConfirmations: number;
236
- inputAddresses?: string[];
237
- } | null>;
238
- /**
239
- * Used to set the txId of the bitcoin payment from the on-chain events listener
240
- *
241
- * @param txId Transaction ID that settled the swap on the smart chain
242
- *
243
- * @internal
244
- */
245
- _setBitcoinTxId(txId: string): Promise<void>;
246
- /**
247
- * @inheritDoc
248
- *
249
- * @throws {Error} if in invalid state (must be {@link FromBTCSwapState.CLAIM_COMMITED})
250
- */
251
- waitForBitcoinTransaction(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<string>;
252
- /**
253
- * Private getter of the funded PSBT that doesn't check current state
254
- *
255
- * @param _bitcoinWallet Bitcoin wallet to fund the PSBT with
256
- * @param feeRate Optional bitcoin fee rate in sats/vB
257
- * @param additionalOutputs Optional additional outputs that should also be included in the generated PSBT
258
- *
259
- * @private
260
- */
261
- private _getFundedPsbt;
262
- /**
263
- * @inheritDoc
264
- */
265
- getFundedPsbt(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number, additionalOutputs?: ({
266
- amount: bigint;
267
- outputScript: Uint8Array;
268
- } | {
269
- amount: bigint;
270
- address: string;
271
- })[]): Promise<{
272
- psbt: Transaction;
273
- psbtHex: string;
274
- psbtBase64: string;
275
- signInputs: number[];
276
- feeRate: number;
277
- }>;
278
- /**
279
- * @inheritDoc
280
- *
281
- * @throws {Error} if the swap is in invalid state (not in {@link FromBTCSwapState.CLAIM_COMMITED}), or if
282
- * the swap bitcoin address already expired.
283
- */
284
- submitPsbt(_psbt: Transaction | string): Promise<string>;
285
- /**
286
- * @inheritDoc
287
- */
288
- estimateBitcoinFee(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number): Promise<TokenAmount<BtcToken<false>, true> | null>;
289
- /**
290
- * @inheritDoc
291
- */
292
- sendBitcoinTransaction(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, feeRate?: number): Promise<string>;
293
- /**
294
- * Executes the swap with the provided bitcoin wallet,
295
- *
296
- * @param dstSigner Signer on the destination network, needs to have the same address as the one specified when
297
- * quote was created, this is required for legacy swaps because the destination wallet needs to actively open
298
- * a bitcoin swap address to which the BTC is then sent, this means that the address also needs to have enough
299
- * native tokens to pay for gas on the destination network
300
- * @param wallet Bitcoin wallet to use to sign the bitcoin transaction, can also be null - then the execution waits
301
- * till a transaction is received from an external wallet
302
- * @param callbacks Callbacks to track the progress of the swap
303
- * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
304
- *
305
- * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
306
- * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
307
- */
308
- execute(dstSigner: T["Signer"] | T["NativeSigner"], wallet?: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner | null | undefined, callbacks?: {
309
- onDestinationCommitSent?: (destinationCommitTxId: string) => void;
310
- onSourceTransactionSent?: (sourceTxId: string) => void;
311
- onSourceTransactionConfirmationStatus?: (sourceTxId?: string, confirmations?: number, targetConfirations?: number, etaMs?: number) => void;
312
- onSourceTransactionConfirmed?: (sourceTxId: string) => void;
313
- onSwapSettled?: (destinationTxId: string) => void;
314
- }, options?: {
315
- feeRate?: number;
316
- abortSignal?: AbortSignal;
317
- btcTxCheckIntervalSeconds?: number;
318
- maxWaitTillAutomaticSettlementSeconds?: number;
319
- }): Promise<boolean>;
320
- /**
321
- * @internal
322
- */
323
- protected _getExecutionStatus(options?: {
324
- maxWaitTillAutomaticSettlementSeconds?: number;
325
- }): Promise<{
326
- steps: [SwapExecutionStepSetup<T["ChainId"]>, SwapExecutionStepPayment<"BITCOIN">, SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">];
327
- buildCurrentAction: (actionOptions?: {
328
- bitcoinFeeRate?: number;
329
- bitcoinWallet?: MinimalBitcoinWalletInterface;
330
- skipChecks?: boolean;
331
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
332
- }) => Promise<SwapExecutionActionSendToAddress<false> | SwapExecutionActionSignPSBT<"FUNDED_PSBT"> | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
333
- state: FromBTCSwapState;
334
- }>;
335
- /**
336
- * @inheritDoc
337
- * @internal
338
- */
339
- _submitExecutionTransactions(txs: (T["SignedTXType"] | Transaction | string)[], abortSignal?: AbortSignal, requiredStates?: FromBTCSwapState[], idempotent?: boolean): Promise<string[]>;
340
- /**
341
- * @internal
342
- */
343
- private _buildSendToAddressOrSignPsbtAction;
344
- /**
345
- * @internal
346
- */
347
- private _buildWaitBitcoinConfirmationsAction;
348
- /**
349
- * @internal
350
- */
351
- private _buildWaitSettlementAction;
352
- /**
353
- * @internal
354
- */
355
- private _buildInitSmartChainTxAction;
356
- /**
357
- * @inheritDoc
358
- * @internal
359
- */
360
- private _buildClaimSmartChainTxAction;
361
- /**
362
- * @inheritDoc
363
- *
364
- * @param options.bitcoinFeeRate Optional fee rate to use for the created Bitcoin transaction
365
- * @param options.bitcoinWallet Bitcoin wallet to use, when provided the function returns a funded
366
- * psbt (`"FUNDED_PSBT"`), if not passed just a bitcoin receive address is returned (`"ADDRESS"`)
367
- * @param options.skipChecks Skip checks like making sure init signature is still valid and swap
368
- * wasn't commited yet (this is handled on swap creation, if you commit right after quoting, you
369
- * can use `skipChecks=true`)
370
- * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
371
- * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
372
- * the bitcoin transaction is confirmed (defaults to 60 seconds)
373
- */
374
- getExecutionAction(options?: {
375
- bitcoinFeeRate?: number;
376
- bitcoinWallet?: MinimalBitcoinWalletInterface;
377
- skipChecks?: boolean;
378
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
379
- maxWaitTillAutomaticSettlementSeconds?: number;
380
- }): Promise<SwapExecutionActionSendToAddress<false> | SwapExecutionActionSignPSBT<"FUNDED_PSBT"> | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
381
- /**
382
- * @inheritDoc
383
- */
384
- getExecutionStatus(options?: {
385
- skipBuildingAction?: boolean;
386
- bitcoinFeeRate?: number;
387
- bitcoinWallet?: MinimalBitcoinWalletInterface;
388
- skipChecks?: boolean;
389
- manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
390
- maxWaitTillAutomaticSettlementSeconds?: number;
391
- }): Promise<{
392
- steps: [
393
- SwapExecutionStepSetup<T["ChainId"]>,
394
- SwapExecutionStepPayment<"BITCOIN">,
395
- SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
396
- ];
397
- currentAction: SwapExecutionActionSendToAddress<false> | SwapExecutionActionSignPSBT<"FUNDED_PSBT"> | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined;
398
- stateInfo: SwapStateInfo<FromBTCSwapState>;
399
- }>;
400
- /**
401
- * @inheritDoc
402
- */
403
- getExecutionSteps(options?: {
404
- maxWaitTillAutomaticSettlementSeconds?: number;
405
- }): Promise<[
406
- SwapExecutionStepSetup<T["ChainId"]>,
407
- SwapExecutionStepPayment<"BITCOIN">,
408
- SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
409
- ]>;
410
- /**
411
- * @inheritDoc
412
- *
413
- * @throws {Error} If invalid signer is provided that doesn't match the swap data
414
- */
415
- commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
416
- /**
417
- * @inheritDoc
418
- */
419
- waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
420
- /**
421
- * Returns transactions for settling (claiming) the swap if the swap requires manual settlement, you can check so
422
- * with isClaimable. After sending the transaction manually be sure to call the waitTillClaimed function to wait
423
- * till the claim transaction is observed, processed by the SDK and state of the swap properly updated.
424
- *
425
- * @remarks
426
- * Might also return transactions necessary to sync the bitcoin light client.
427
- *
428
- * @param _signer Address of the signer to create the claim transactions for
429
- *
430
- * @throws {Error} If the swap is in invalid state (must be {@link FromBTCSwapState.BTC_TX_CONFIRMED})
431
- */
432
- txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
433
- /**
434
- * Settles the swap by claiming the funds on the destination chain if the swap requires manual settlement, you can
435
- * check so with isClaimable.
436
- *
437
- * @remarks
438
- * Might also sync the bitcoin light client during the process.
439
- *
440
- * @param _signer Signer to use for signing the settlement transactions, can also be different to the recipient
441
- * @param abortSignal Abort signal
442
- * @param onBeforeTxSent Optional callback triggered before the claim transaction is broadcasted
443
- *
444
- * @returns Transaction ID of the settlement (claim) transaction on the destination smart chain
445
- */
446
- claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
447
- /**
448
- * @inheritDoc
449
- *
450
- * @throws {Error} If swap is in invalid state (must be {@link FromBTCSwapState.BTC_TX_CONFIRMED})
451
- * @throws {Error} If the LP refunded sooner than we were able to claim
452
- */
453
- waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, pollIntervalSeconds?: number): Promise<boolean>;
454
- /**
455
- * @inheritDoc
456
- */
457
- serialize(): any;
458
- /**
459
- * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
460
- * data
461
- *
462
- * @private
463
- */
464
- private syncStateFromChain;
465
- /**
466
- * @inheritDoc
467
- * @internal
468
- */
469
- _shouldFetchOnchainState(): boolean;
470
- /**
471
- * @inheritDoc
472
- * @internal
473
- */
474
- _shouldFetchExpiryStatus(): boolean;
475
- /**
476
- * @inheritDoc
477
- * @internal
478
- */
479
- _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState): Promise<boolean>;
480
- private btcTxLastChecked?;
481
- /**
482
- * @inheritDoc
483
- * @internal
484
- */
485
- _forciblySetOnchainState(status: SwapCommitState): Promise<boolean>;
486
- /**
487
- * @inheritDoc
488
- * @internal
489
- */
490
- _tick(save?: boolean): Promise<boolean>;
491
- }
1
+ import { IFromBTCSelfInitSwap } from "../IFromBTCSelfInitSwap";
2
+ import { SwapType } from "../../../../enums/SwapType";
3
+ import { FromBTCDefinition, FromBTCWrapper } from "./FromBTCWrapper";
4
+ import { ChainType, SwapCommitState, SwapData } from "@atomiqlabs/base";
5
+ import { IBitcoinWallet } from "../../../../bitcoin/wallet/IBitcoinWallet";
6
+ import { IBTCWalletSwap } from "../../../IBTCWalletSwap";
7
+ import { Transaction } from "@scure/btc-signer";
8
+ import { MinimalBitcoinWalletInterface, MinimalBitcoinWalletInterfaceWithSigner } from "../../../../types/wallets/MinimalBitcoinWalletInterface";
9
+ import { IClaimableSwap } from "../../../IClaimableSwap";
10
+ import { IEscrowSelfInitSwapInit } from "../../IEscrowSelfInitSwap";
11
+ import { IAddressSwap } from "../../../IAddressSwap";
12
+ import { TokenAmount } from "../../../../types/TokenAmount";
13
+ import { BtcToken, SCToken } from "../../../../types/Token";
14
+ import { LoggerType } from "../../../../utils/Logger";
15
+ import { SwapExecutionActionSendToAddress, SwapExecutionActionSignPSBT, SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../../../types/SwapExecutionAction";
16
+ import { SwapExecutionStepPayment, SwapExecutionStepSettlement, SwapExecutionStepSetup } from "../../../../types/SwapExecutionStep";
17
+ import { SwapStateInfo } from "../../../../types/SwapStateInfo";
18
+ /**
19
+ * State enum for legacy escrow based Bitcoin -> Smart chain swaps.
20
+ *
21
+ * @category Swaps/Legacy/Bitcoin → Smart chain
22
+ */
23
+ export declare enum FromBTCSwapState {
24
+ /**
25
+ * Bitcoin swap address has expired and the intermediary (LP) has already refunded
26
+ * its funds. No BTC should be sent anymore!
27
+ */
28
+ FAILED = -4,
29
+ /**
30
+ * Bitcoin swap address has expired, user should not send any BTC anymore! Though
31
+ * the intermediary (LP) hasn't refunded yet. So if there is a transaction already
32
+ * in-flight the swap might still succeed.
33
+ */
34
+ EXPIRED = -3,
35
+ /**
36
+ * Swap has expired for good and there is no way how it can be executed anymore
37
+ */
38
+ QUOTE_EXPIRED = -2,
39
+ /**
40
+ * A swap is almost expired, and it should be presented to the user as expired, though
41
+ * there is still a chance that it will be processed
42
+ */
43
+ QUOTE_SOFT_EXPIRED = -1,
44
+ /**
45
+ * Swap quote was created, use the {@link FromBTCSwap.commit} or {@link FromBTCSwap.txsCommit} functions
46
+ * to initiate it by creating the swap escrow on the destination smart chain
47
+ */
48
+ PR_CREATED = 0,
49
+ /**
50
+ * Swap escrow was initiated (committed) on the destination chain, user can send the BTC to the
51
+ * swap address with the {@link FromBTCSwap.getFundedPsbt}, {@link FromBTCSwap.getAddress} or
52
+ * {@link FromBTCSwap.getHyperlink} functions.
53
+ */
54
+ CLAIM_COMMITED = 1,
55
+ /**
56
+ * Input bitcoin transaction was confirmed, wait for automatic settlement by the watchtowers
57
+ * using the {@link FromBTCSwap.waitTillClaimed} function or settle manually using the {@link FromBTCSwap.claim}
58
+ * or {@link FromBTCSwap.txsClaim} function.
59
+ */
60
+ BTC_TX_CONFIRMED = 2,
61
+ /**
62
+ * Swap successfully settled and funds received on the destination chain
63
+ */
64
+ CLAIM_CLAIMED = 3
65
+ }
66
+ export type FromBTCSwapInit<T extends SwapData> = IEscrowSelfInitSwapInit<T> & {
67
+ data: T;
68
+ address?: string;
69
+ amount?: bigint;
70
+ requiredConfirmations?: number;
71
+ };
72
+ export declare function isFromBTCSwapInit<T extends SwapData>(obj: any): obj is FromBTCSwapInit<T>;
73
+ /**
74
+ * Legacy escrow (PrTLC) based swap for Bitcoin -> Smart chains, requires manual initiation
75
+ * of the swap escrow on the destination chain.
76
+ *
77
+ * @category Swaps/Legacy/Bitcoin → Smart chain
78
+ */
79
+ export declare class FromBTCSwap<T extends ChainType = ChainType> extends IFromBTCSelfInitSwap<T, FromBTCDefinition<T>, FromBTCSwapState> implements IBTCWalletSwap, IClaimableSwap<T, FromBTCDefinition<T>, FromBTCSwapState>, IAddressSwap {
80
+ protected readonly TYPE: SwapType.FROM_BTC;
81
+ /**
82
+ * @internal
83
+ */
84
+ protected readonly swapStateName: (state: number) => string;
85
+ /**
86
+ * @internal
87
+ */
88
+ protected readonly swapStateDescription: {
89
+ [-4]: string;
90
+ [-3]: string;
91
+ [-2]: string;
92
+ [-1]: string;
93
+ 0: string;
94
+ 1: string;
95
+ 2: string;
96
+ 3: string;
97
+ };
98
+ /**
99
+ * @internal
100
+ */
101
+ protected readonly logger: LoggerType;
102
+ /**
103
+ * @internal
104
+ */
105
+ protected readonly inputToken: BtcToken<false>;
106
+ /**
107
+ * @internal
108
+ */
109
+ protected readonly feeRate: string;
110
+ /**
111
+ * @internal
112
+ */
113
+ readonly _data: T["Data"];
114
+ private address?;
115
+ private amount?;
116
+ private requiredConfirmations?;
117
+ private senderAddress?;
118
+ private txId?;
119
+ private vout?;
120
+ private btcTxConfirmedAt?;
121
+ constructor(wrapper: FromBTCWrapper<T>, init: FromBTCSwapInit<T["Data"]>);
122
+ constructor(wrapper: FromBTCWrapper<T>, obj: any);
123
+ /**
124
+ * @inheritDoc
125
+ * @internal
126
+ */
127
+ protected getSwapData(): T["Data"];
128
+ /**
129
+ * @inheritDoc
130
+ * @internal
131
+ */
132
+ protected upgradeVersion(): void;
133
+ /**
134
+ * Returns bitcoin address where the on-chain BTC should be sent to
135
+ */
136
+ getAddress(): string;
137
+ /**
138
+ * Unsafe bitcoin hyperlink getter, returns the address even before the swap is committed!
139
+ *
140
+ * @private
141
+ */
142
+ private _getHyperlink;
143
+ /**
144
+ * @inheritDoc
145
+ */
146
+ getHyperlink(): string;
147
+ /**
148
+ * @inheritDoc
149
+ */
150
+ getInputAddress(): string | null;
151
+ /**
152
+ * @inheritDoc
153
+ */
154
+ getInputTxId(): string | null;
155
+ private _setSubmittedBitcoinTx;
156
+ /**
157
+ * Returns timeout time (in UNIX milliseconds) when the on-chain address will expire and no funds should be sent
158
+ * to that address anymore
159
+ */
160
+ getTimeoutTime(): number;
161
+ /**
162
+ * @inheritDoc
163
+ */
164
+ requiresAction(): boolean;
165
+ /**
166
+ * @inheritDoc
167
+ */
168
+ isFinished(): boolean;
169
+ /**
170
+ * @inheritDoc
171
+ */
172
+ isClaimable(): boolean;
173
+ /**
174
+ * @inheritDoc
175
+ */
176
+ isSuccessful(): boolean;
177
+ /**
178
+ * @inheritDoc
179
+ */
180
+ isFailed(): boolean;
181
+ /**
182
+ * @inheritDoc
183
+ */
184
+ isInProgress(): boolean;
185
+ /**
186
+ * @inheritDoc
187
+ */
188
+ isQuoteExpired(): boolean;
189
+ /**
190
+ * @inheritDoc
191
+ */
192
+ isQuoteSoftExpired(): boolean;
193
+ /**
194
+ * @inheritDoc
195
+ * @internal
196
+ */
197
+ protected canCommit(skipQuoteExpiryChecks?: boolean): boolean;
198
+ /**
199
+ * @inheritDoc
200
+ */
201
+ getInputToken(): BtcToken<false>;
202
+ /**
203
+ * @inheritDoc
204
+ */
205
+ getInput(): TokenAmount<BtcToken<false>>;
206
+ /**
207
+ * Returns claimer bounty, acting as a reward for watchtowers to claim the swap automatically,
208
+ * this amount is pre-funded by the user on the destination chain when the swap escrow
209
+ * is initiated. For total pre-funded deposit amount see {@link getTotalDeposit}.
210
+ */
211
+ getClaimerBounty(): TokenAmount<SCToken<T["ChainId"]>, true>;
212
+ /**
213
+ * If the required number of confirmations is not known, this function tries to infer it by looping through
214
+ * possible confirmation targets and comparing the claim hashes
215
+ *
216
+ * @param btcTx Bitcoin transaction
217
+ * @param vout Output index of the desired output in the bitcoin transaction
218
+ *
219
+ * @private
220
+ */
221
+ private inferRequiredConfirmationsCount;
222
+ /**
223
+ * @inheritDoc
224
+ */
225
+ getRequiredConfirmationsCount(): number;
226
+ /**
227
+ * Checks whether a bitcoin payment was already made, returns the payment or `null` when no payment has been made.
228
+ *
229
+ * @internal
230
+ */
231
+ protected getBitcoinPayment(): Promise<{
232
+ txId: string;
233
+ vout: number;
234
+ confirmations: number;
235
+ targetConfirmations: number;
236
+ inputAddresses?: string[];
237
+ } | null>;
238
+ /**
239
+ * Used to set the txId of the bitcoin payment from the on-chain events listener
240
+ *
241
+ * @param txId Transaction ID that settled the swap on the smart chain
242
+ *
243
+ * @internal
244
+ */
245
+ _setBitcoinTxId(txId: string): Promise<void>;
246
+ /**
247
+ * @inheritDoc
248
+ *
249
+ * @throws {Error} if in invalid state (must be {@link FromBTCSwapState.CLAIM_COMMITED})
250
+ */
251
+ waitForBitcoinTransaction(updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<string>;
252
+ /**
253
+ * Private getter of the funded PSBT that doesn't check current state
254
+ *
255
+ * @param _bitcoinWallet Bitcoin wallet to fund the PSBT with
256
+ * @param feeRate Optional bitcoin fee rate in sats/vB
257
+ * @param additionalOutputs Optional additional outputs that should also be included in the generated PSBT
258
+ *
259
+ * @private
260
+ */
261
+ private _getFundedPsbt;
262
+ /**
263
+ * @inheritDoc
264
+ */
265
+ getFundedPsbt(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number, additionalOutputs?: ({
266
+ amount: bigint;
267
+ outputScript: Uint8Array;
268
+ } | {
269
+ amount: bigint;
270
+ address: string;
271
+ })[]): Promise<{
272
+ psbt: Transaction;
273
+ psbtHex: string;
274
+ psbtBase64: string;
275
+ signInputs: number[];
276
+ feeRate: number;
277
+ }>;
278
+ /**
279
+ * @inheritDoc
280
+ *
281
+ * @throws {Error} if the swap is in invalid state (not in {@link FromBTCSwapState.CLAIM_COMMITED}), or if
282
+ * the swap bitcoin address already expired.
283
+ */
284
+ submitPsbt(_psbt: Transaction | string): Promise<string>;
285
+ /**
286
+ * @inheritDoc
287
+ */
288
+ estimateBitcoinFee(_bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number): Promise<TokenAmount<BtcToken<false>, true> | null>;
289
+ /**
290
+ * @inheritDoc
291
+ */
292
+ sendBitcoinTransaction(wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner, feeRate?: number): Promise<string>;
293
+ /**
294
+ * Executes the swap with the provided bitcoin wallet,
295
+ *
296
+ * @param dstSigner Signer on the destination network, needs to have the same address as the one specified when
297
+ * quote was created, this is required for legacy swaps because the destination wallet needs to actively open
298
+ * a bitcoin swap address to which the BTC is then sent, this means that the address also needs to have enough
299
+ * native tokens to pay for gas on the destination network
300
+ * @param wallet Bitcoin wallet to use to sign the bitcoin transaction, can also be null - then the execution waits
301
+ * till a transaction is received from an external wallet
302
+ * @param callbacks Callbacks to track the progress of the swap
303
+ * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
304
+ *
305
+ * @returns {boolean} Whether a swap was settled automatically by swap watchtowers or requires manual claim by the
306
+ * user, in case `false` is returned the user should call `swap.claim()` to settle the swap on the destination manually
307
+ */
308
+ execute(dstSigner: T["Signer"] | T["NativeSigner"], wallet?: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner | null | undefined, callbacks?: {
309
+ onDestinationCommitSent?: (destinationCommitTxId: string) => void;
310
+ onSourceTransactionSent?: (sourceTxId: string) => void;
311
+ onSourceTransactionConfirmationStatus?: (sourceTxId?: string, confirmations?: number, targetConfirations?: number, etaMs?: number) => void;
312
+ onSourceTransactionConfirmed?: (sourceTxId: string) => void;
313
+ onSwapSettled?: (destinationTxId: string) => void;
314
+ }, options?: {
315
+ feeRate?: number;
316
+ abortSignal?: AbortSignal;
317
+ btcTxCheckIntervalSeconds?: number;
318
+ maxWaitTillAutomaticSettlementSeconds?: number;
319
+ }): Promise<boolean>;
320
+ /**
321
+ * @internal
322
+ */
323
+ protected _getExecutionStatus(options?: {
324
+ maxWaitTillAutomaticSettlementSeconds?: number;
325
+ }): Promise<{
326
+ steps: [SwapExecutionStepSetup<T["ChainId"]>, SwapExecutionStepPayment<"BITCOIN">, SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">];
327
+ buildCurrentAction: (actionOptions?: {
328
+ bitcoinFeeRate?: number;
329
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
330
+ skipChecks?: boolean;
331
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
332
+ }) => Promise<SwapExecutionActionSendToAddress<false> | SwapExecutionActionSignPSBT<"FUNDED_PSBT"> | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
333
+ state: FromBTCSwapState;
334
+ }>;
335
+ /**
336
+ * @inheritDoc
337
+ * @internal
338
+ */
339
+ _submitExecutionTransactions(txs: (T["SignedTXType"] | Transaction | string)[], abortSignal?: AbortSignal, requiredStates?: FromBTCSwapState[], idempotent?: boolean): Promise<string[]>;
340
+ /**
341
+ * @internal
342
+ */
343
+ private _buildSendToAddressOrSignPsbtAction;
344
+ /**
345
+ * @internal
346
+ */
347
+ private _buildWaitBitcoinConfirmationsAction;
348
+ /**
349
+ * @internal
350
+ */
351
+ private _buildWaitSettlementAction;
352
+ /**
353
+ * @internal
354
+ */
355
+ private _buildInitSmartChainTxAction;
356
+ /**
357
+ * @inheritDoc
358
+ * @internal
359
+ */
360
+ private _buildClaimSmartChainTxAction;
361
+ /**
362
+ * @inheritDoc
363
+ *
364
+ * @param options.bitcoinFeeRate Optional fee rate to use for the created Bitcoin transaction
365
+ * @param options.bitcoinWallet Bitcoin wallet to use, when provided the function returns a funded
366
+ * psbt (`"FUNDED_PSBT"`), if not passed just a bitcoin receive address is returned (`"ADDRESS"`)
367
+ * @param options.skipChecks Skip checks like making sure init signature is still valid and swap
368
+ * wasn't commited yet (this is handled on swap creation, if you commit right after quoting, you
369
+ * can use `skipChecks=true`)
370
+ * @param options.manualSettlementSmartChainSigner Optional smart chain signer to create a manual claim (settlement) transaction
371
+ * @param options.maxWaitTillAutomaticSettlementSeconds Maximum time to wait for an automatic settlement after
372
+ * the bitcoin transaction is confirmed (defaults to 60 seconds)
373
+ */
374
+ getExecutionAction(options?: {
375
+ bitcoinFeeRate?: number;
376
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
377
+ skipChecks?: boolean;
378
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
379
+ maxWaitTillAutomaticSettlementSeconds?: number;
380
+ }): Promise<SwapExecutionActionSendToAddress<false> | SwapExecutionActionSignPSBT<"FUNDED_PSBT"> | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined>;
381
+ /**
382
+ * @inheritDoc
383
+ */
384
+ getExecutionStatus(options?: {
385
+ skipBuildingAction?: boolean;
386
+ bitcoinFeeRate?: number;
387
+ bitcoinWallet?: MinimalBitcoinWalletInterface;
388
+ skipChecks?: boolean;
389
+ manualSettlementSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
390
+ maxWaitTillAutomaticSettlementSeconds?: number;
391
+ }): Promise<{
392
+ steps: [
393
+ SwapExecutionStepSetup<T["ChainId"]>,
394
+ SwapExecutionStepPayment<"BITCOIN">,
395
+ SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
396
+ ];
397
+ currentAction: SwapExecutionActionSendToAddress<false> | SwapExecutionActionSignPSBT<"FUNDED_PSBT"> | SwapExecutionActionWait<"BITCOIN_CONFS" | "SETTLEMENT"> | SwapExecutionActionSignSmartChainTx<T> | undefined;
398
+ stateInfo: SwapStateInfo<FromBTCSwapState>;
399
+ }>;
400
+ /**
401
+ * @inheritDoc
402
+ */
403
+ getExecutionSteps(options?: {
404
+ maxWaitTillAutomaticSettlementSeconds?: number;
405
+ }): Promise<[
406
+ SwapExecutionStepSetup<T["ChainId"]>,
407
+ SwapExecutionStepPayment<"BITCOIN">,
408
+ SwapExecutionStepSettlement<T["ChainId"], "awaiting_automatic" | "awaiting_manual">
409
+ ]>;
410
+ /**
411
+ * @inheritDoc
412
+ *
413
+ * @throws {Error} If invalid signer is provided that doesn't match the swap data
414
+ */
415
+ commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
416
+ /**
417
+ * @inheritDoc
418
+ */
419
+ waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
420
+ /**
421
+ * Returns transactions for settling (claiming) the swap if the swap requires manual settlement, you can check so
422
+ * with isClaimable. After sending the transaction manually be sure to call the waitTillClaimed function to wait
423
+ * till the claim transaction is observed, processed by the SDK and state of the swap properly updated.
424
+ *
425
+ * @remarks
426
+ * Might also return transactions necessary to sync the bitcoin light client.
427
+ *
428
+ * @param _signer Address of the signer to create the claim transactions for
429
+ *
430
+ * @throws {Error} If the swap is in invalid state (must be {@link FromBTCSwapState.BTC_TX_CONFIRMED})
431
+ */
432
+ txsClaim(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
433
+ /**
434
+ * Settles the swap by claiming the funds on the destination chain if the swap requires manual settlement, you can
435
+ * check so with isClaimable.
436
+ *
437
+ * @remarks
438
+ * Might also sync the bitcoin light client during the process.
439
+ *
440
+ * @param _signer Signer to use for signing the settlement transactions, can also be different to the recipient
441
+ * @param abortSignal Abort signal
442
+ * @param onBeforeTxSent Optional callback triggered before the claim transaction is broadcasted
443
+ *
444
+ * @returns Transaction ID of the settlement (claim) transaction on the destination smart chain
445
+ */
446
+ claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
447
+ /**
448
+ * @inheritDoc
449
+ *
450
+ * @throws {Error} If swap is in invalid state (must be {@link FromBTCSwapState.BTC_TX_CONFIRMED})
451
+ * @throws {Error} If the LP refunded sooner than we were able to claim
452
+ */
453
+ waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal, pollIntervalSeconds?: number): Promise<boolean>;
454
+ /**
455
+ * @inheritDoc
456
+ */
457
+ serialize(): any;
458
+ /**
459
+ * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
460
+ * data
461
+ *
462
+ * @private
463
+ */
464
+ private syncStateFromChain;
465
+ /**
466
+ * @inheritDoc
467
+ * @internal
468
+ */
469
+ _shouldFetchOnchainState(): boolean;
470
+ /**
471
+ * @inheritDoc
472
+ * @internal
473
+ */
474
+ _shouldFetchExpiryStatus(): boolean;
475
+ /**
476
+ * @inheritDoc
477
+ * @internal
478
+ */
479
+ _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState): Promise<boolean>;
480
+ private btcTxLastChecked?;
481
+ /**
482
+ * @inheritDoc
483
+ * @internal
484
+ */
485
+ _forciblySetOnchainState(status: SwapCommitState): Promise<boolean>;
486
+ /**
487
+ * @inheritDoc
488
+ * @internal
489
+ */
490
+ _tick(save?: boolean): Promise<boolean>;
491
+ }