@atomiqlabs/sdk 8.9.0 → 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 -765
  120. package/dist/swapper/Swapper.js +1749 -1749
  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 -2557
  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,446 +1,446 @@
1
- import { IToBTCDefinition, IToBTCWrapper } from "./IToBTCWrapper";
2
- import { ChainType, SignatureData, SwapCommitState, SwapData } from "@atomiqlabs/base";
3
- import { RefundAuthorizationResponse } from "../../../intermediaries/apis/IntermediaryAPI";
4
- import { Fee } from "../../../types/fees/Fee";
5
- import { IEscrowSelfInitSwap, IEscrowSelfInitSwapInit } from "../IEscrowSelfInitSwap";
6
- import { IRefundableSwap } from "../../IRefundableSwap";
7
- import { FeeType } from "../../../enums/FeeType";
8
- import { TokenAmount } from "../../../types/TokenAmount";
9
- import { BtcToken, SCToken } from "../../../types/Token";
10
- import { SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../../types/SwapExecutionAction";
11
- import { SwapExecutionStepPayment, SwapExecutionStepRefund, SwapExecutionStepSettlement } from "../../../types/SwapExecutionStep";
12
- import { SwapStateInfo } from "../../../types/SwapStateInfo";
13
- export type IToBTCSwapInit<T extends SwapData> = IEscrowSelfInitSwapInit<T> & {
14
- signatureData?: SignatureData;
15
- data: T;
16
- networkFee: bigint;
17
- networkFeeBtc: bigint;
18
- };
19
- export declare function isIToBTCSwapInit<T extends SwapData>(obj: any): obj is IToBTCSwapInit<T>;
20
- /**
21
- * State enum for escrow-based Smart chain -> Bitcoin (on-chain & lightning) swaps
22
- *
23
- * @category Swaps/Smart chain → Bitcoin
24
- */
25
- export declare enum ToBTCSwapState {
26
- /**
27
- * Intermediary (LP) was unable to process the swap and the funds were refunded on the
28
- * source chain
29
- */
30
- REFUNDED = -3,
31
- /**
32
- * Swap has expired for good and there is no way how it can be executed anymore
33
- */
34
- QUOTE_EXPIRED = -2,
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 = -1,
40
- /**
41
- * Swap was created, use the {@link IToBTCSwap.commit} or {@link IToBTCSwap.txsCommit} to
42
- * initiate it by creating the swap escrow on the source chain
43
- */
44
- CREATED = 0,
45
- /**
46
- * Swap escrow was initiated (committed) on the source chain, the intermediary (LP) will
47
- * now process the swap. You can wait till that happens with the {@link IToBTCSwap.waitForPayment}
48
- * function.
49
- */
50
- COMMITED = 1,
51
- /**
52
- * The intermediary (LP) has processed the transaction and sent out the funds on the destination chain,
53
- * but hasn't yet settled the escrow on the source chain.
54
- */
55
- SOFT_CLAIMED = 2,
56
- /**
57
- * Swap was successfully settled by the intermediary (LP) on the source chain
58
- */
59
- CLAIMED = 3,
60
- /**
61
- * Intermediary (LP) was unable to process the swap and the swap escrow on the source chain
62
- * is refundable, call {@link IToBTCSwap.refund} or {@link IToBTCSwap.txsRefund} to refund
63
- */
64
- REFUNDABLE = 4
65
- }
66
- /**
67
- * Base class for escrow-based Smart chain -> Bitcoin (on-chain & lightning) swaps
68
- *
69
- * @category Swaps/Smart chain → Bitcoin
70
- */
71
- export declare abstract class IToBTCSwap<T extends ChainType = ChainType, D extends IToBTCDefinition<T, IToBTCWrapper<T, D>, IToBTCSwap<T, D>> = IToBTCDefinition<T, IToBTCWrapper<T, any>, IToBTCSwap<T, any>>> extends IEscrowSelfInitSwap<T, D, ToBTCSwapState> implements IRefundableSwap<T, D, ToBTCSwapState> {
72
- /**
73
- * @internal
74
- */
75
- protected readonly swapStateDescription: {
76
- [-3]: string;
77
- [-2]: string;
78
- [-1]: string;
79
- 0: string;
80
- 1: string;
81
- 2: string;
82
- 3: string;
83
- 4: string;
84
- };
85
- /**
86
- * @internal
87
- */
88
- protected readonly swapStateName: (state: number) => string;
89
- /**
90
- * @internal
91
- */
92
- protected readonly abstract outputToken: BtcToken;
93
- /**
94
- * @internal
95
- */
96
- protected readonly networkFee: bigint;
97
- /**
98
- * @internal
99
- */
100
- protected networkFeeBtc: bigint;
101
- /**
102
- * @internal
103
- */
104
- readonly _data: T["Data"];
105
- protected constructor(wrapper: D["Wrapper"], serializedObject: any);
106
- protected constructor(wrapper: D["Wrapper"], init: IToBTCSwapInit<T["Data"]>);
107
- /**
108
- * @inheritDoc
109
- * @internal
110
- */
111
- protected getSwapData(): T["Data"];
112
- /**
113
- * @inheritDoc
114
- * @internal
115
- */
116
- protected upgradeVersion(): void;
117
- /**
118
- * @inheritDoc
119
- * @internal
120
- */
121
- protected tryRecomputeSwapPrice(): void;
122
- /**
123
- * Returns the payment hash identifier to be sent to the LP for getStatus and getRefund
124
- * @internal
125
- */
126
- protected getLpIdentifier(): string;
127
- /**
128
- * Sets the payment result for the swap, optionally also checking it (checking that tx exist or swap secret is valid)
129
- *
130
- * @param result Result returned by the LP
131
- * @param check Whether to check the passed result
132
- * @returns true if check passed, false if check failed with a soft error (e.g. tx not yet found in the mempool)
133
- * @throws {IntermediaryError} When the data returned by the intermediary isn't valid
134
- *
135
- * @internal
136
- */
137
- abstract _setPaymentResult(result: {
138
- secret?: string;
139
- txId?: string;
140
- }, check?: boolean): Promise<boolean>;
141
- /**
142
- * @inheritDoc
143
- */
144
- getInputAddress(): string | null;
145
- /**
146
- * @inheritDoc
147
- */
148
- getInputTxId(): string | null;
149
- /**
150
- * @inheritDoc
151
- */
152
- requiresAction(): boolean;
153
- /**
154
- * @inheritDoc
155
- */
156
- isFinished(): boolean;
157
- /**
158
- * @inheritDoc
159
- */
160
- isRefundable(): boolean;
161
- /**
162
- * @inheritDoc
163
- */
164
- isQuoteExpired(): boolean;
165
- /**
166
- * @inheritDoc
167
- */
168
- isQuoteSoftExpired(): boolean;
169
- /**
170
- * @inheritDoc
171
- */
172
- isSuccessful(): boolean;
173
- /**
174
- * @inheritDoc
175
- */
176
- isFailed(): boolean;
177
- /**
178
- * @inheritDoc
179
- */
180
- isInProgress(): boolean;
181
- /**
182
- * Returns the time (in UNIX milliseconds) at which the swap expires and the user is able to unilaterally
183
- * refund it with the {@link refund} or {@link txsRefund} function.
184
- */
185
- getExpiry(): number;
186
- /**
187
- * @inheritDoc
188
- * @internal
189
- */
190
- _getInitiator(): string;
191
- /**
192
- * Returns the swap fee charged by the intermediary (LP) on this swap
193
- *
194
- * @internal
195
- */
196
- protected getSwapFee(): Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
197
- /**
198
- * Returns network fee for on the destination chain for the swap
199
- *
200
- * @internal
201
- */
202
- protected getNetworkFee(): Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
203
- /**
204
- * @inheritDoc
205
- */
206
- getFee(): Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
207
- /**
208
- * @inheritDoc
209
- */
210
- getFeeBreakdown(): [
211
- {
212
- type: FeeType.SWAP;
213
- fee: Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
214
- },
215
- {
216
- type: FeeType.NETWORK_OUTPUT;
217
- fee: Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
218
- }
219
- ];
220
- /**
221
- * @inheritDoc
222
- */
223
- getInputToken(): SCToken<T["ChainId"]>;
224
- /**
225
- * @inheritDoc
226
- */
227
- getInput(): TokenAmount<SCToken<T["ChainId"]>, true>;
228
- /**
229
- * @inheritDoc
230
- */
231
- getInputWithoutFee(): TokenAmount<SCToken<T["ChainId"]>, true>;
232
- /**
233
- * Checks if the initiator/sender on the source chain has enough balance to go through with the swap
234
- */
235
- hasEnoughBalance(): Promise<{
236
- enoughBalance: boolean;
237
- balance: TokenAmount<SCToken<T["ChainId"]>, true>;
238
- required: TokenAmount<SCToken<T["ChainId"]>, true>;
239
- }>;
240
- /**
241
- * Checks if the initiator/sender on the source chain has enough native token balance
242
- * to cover the transaction fee of initiating the swap
243
- */
244
- hasEnoughForTxFees(): Promise<{
245
- enoughBalance: boolean;
246
- balance: TokenAmount<SCToken<T["ChainId"]>, true>;
247
- required: TokenAmount<SCToken<T["ChainId"]>, true>;
248
- }>;
249
- /**
250
- * Executes the swap with the provided smart chain wallet/signer
251
- *
252
- * @param signer Smart chain wallet/signer to use to sign the transaction on the source chain
253
- * @param callbacks Callbacks to track the progress of the swap
254
- * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
255
- *
256
- * @returns {boolean} Whether the swap was successfully processed by the LP, in case `false` is returned
257
- * the user can refund their funds back on the source chain by calling {@link refund}
258
- */
259
- execute(signer: T["Signer"] | T["NativeSigner"], callbacks?: {
260
- onSourceTransactionSent?: (sourceTxId: string) => void;
261
- onSourceTransactionConfirmed?: (sourceTxId: string) => void;
262
- onSwapSettled?: (destinationTxId: string) => void;
263
- }, options?: {
264
- abortSignal?: AbortSignal;
265
- paymentCheckIntervalSeconds?: number;
266
- maxWaitTillSwapProcessedSeconds?: number;
267
- }): Promise<boolean>;
268
- /**
269
- * @internal
270
- */
271
- protected _getExecutionStatus(): Promise<{
272
- steps: [SwapExecutionStepPayment<T["ChainId"]>, SwapExecutionStepSettlement<"BITCOIN" | "LIGHTNING", "soft_settled">, SwapExecutionStepRefund<T["ChainId"]>];
273
- buildCurrentAction: (actionOptions?: {
274
- skipChecks?: boolean;
275
- refundSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
276
- }) => Promise<SwapExecutionActionSignSmartChainTx<T> | SwapExecutionActionWait<"LP"> | undefined>;
277
- state: ToBTCSwapState;
278
- }>;
279
- /**
280
- * @inheritDoc
281
- * @internal
282
- */
283
- _submitExecutionTransactions(txs: (T["SignedTXType"] | string)[], abortSignal?: AbortSignal, requiredStates?: ToBTCSwapState[], idempotent?: boolean): Promise<string[]>;
284
- /**
285
- * @internal
286
- */
287
- private _buildInitSmartChainTxAction;
288
- /**
289
- * @internal
290
- */
291
- private _buildWaitLpAction;
292
- /**
293
- * @internal
294
- */
295
- private _buildRefundSmartChainTxAction;
296
- /**
297
- * @inheritDoc
298
- *
299
- * @param options.skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
300
- * (this is handled on swap creation, if you commit right after quoting, you can use `skipChecks=true`)
301
- * @param options.refundSmartChainSigner Optional smart chain signer to use when creating refunds transactions
302
- */
303
- getExecutionAction(options?: {
304
- skipChecks?: boolean;
305
- refundSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
306
- }): Promise<SwapExecutionActionSignSmartChainTx<T> | SwapExecutionActionWait<"LP"> | undefined>;
307
- /**
308
- * @inheritDoc
309
- */
310
- getExecutionStatus(options?: {
311
- skipBuildingAction?: boolean;
312
- skipChecks?: boolean;
313
- refundSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
314
- }): Promise<{
315
- steps: [
316
- SwapExecutionStepPayment<T["ChainId"]>,
317
- SwapExecutionStepSettlement<"BITCOIN" | "LIGHTNING", "soft_settled">,
318
- SwapExecutionStepRefund<T["ChainId"]>
319
- ];
320
- currentAction: SwapExecutionActionSignSmartChainTx<T> | SwapExecutionActionWait<"LP"> | undefined;
321
- stateInfo: SwapStateInfo<ToBTCSwapState>;
322
- }>;
323
- /**
324
- * @inheritDoc
325
- */
326
- getExecutionSteps(): Promise<[
327
- SwapExecutionStepPayment<T["ChainId"]>,
328
- SwapExecutionStepSettlement<"BITCOIN" | "LIGHTNING", "soft_settled">,
329
- SwapExecutionStepRefund<T["ChainId"]>
330
- ]>;
331
- /**
332
- * @inheritDoc
333
- *
334
- * @throws {Error} When in invalid state (not {@link ToBTCSwapState.CREATED})
335
- */
336
- txsCommit(skipChecks?: boolean): Promise<T["TX"][]>;
337
- /**
338
- * @inheritDoc
339
- *
340
- * @throws {Error} If invalid signer is provided that doesn't match the swap data
341
- */
342
- commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
343
- /**
344
- * @inheritDoc
345
- *
346
- * @throws {Error} If swap is not in the correct state (must be {@link ToBTCSwapState.CREATED})
347
- */
348
- waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
349
- /**
350
- * Waits till the swap is processed by the intermediary (LP)
351
- *
352
- * @param checkIntervalSeconds How often to poll the intermediary for status (5 seconds default)
353
- * @param abortSignal Abort signal
354
- * @internal
355
- */
356
- protected waitTillIntermediarySwapProcessed(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<RefundAuthorizationResponse>;
357
- /**
358
- * Checks whether the swap was already processed by the LP and is either successful (requires proof which is
359
- * either a HTLC pre-image for LN swaps or valid txId for on-chain swap) or failed and we can cooperatively
360
- * refund.
361
- *
362
- * @param save whether to save the data
363
- * @returns `true` if swap is processed, `false` if the swap is still ongoing
364
- *
365
- * @internal
366
- */
367
- protected checkIntermediarySwapProcessed(save?: boolean): Promise<boolean>;
368
- /**
369
- * A blocking promise resolving when swap was concluded by the intermediary (LP),
370
- * rejecting in case of failure
371
- *
372
- * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled, an error is thrown if the
373
- * swap is taking too long to claim
374
- * @param checkIntervalSeconds How often to poll the intermediary for answer
375
- * @param abortSignal Abort signal
376
- * @returns `true` if swap was successful, `false` if swap failed and we can refund
377
- *
378
- * @throws {IntermediaryError} If a swap is determined expired by the intermediary, but it is actually still valid
379
- * @throws {SignatureVerificationError} If the swap should be cooperatively refundable but the intermediary returned
380
- * invalid refund signature
381
- * @throws {Error} When swap expires or if the swap has invalid state (must be {@link ToBTCSwapState.COMMITED})
382
- */
383
- waitForPayment(maxWaitTimeSeconds?: number, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
384
- /**
385
- * Get the estimated smart chain transaction fee of the refund transaction
386
- */
387
- getRefundNetworkFee(): Promise<TokenAmount<SCToken<T["ChainId"]>, true>>;
388
- /**
389
- * @inheritDoc
390
- *
391
- * @throws {IntermediaryError} If intermediary returns invalid response in case cooperative refund should be used
392
- * @throws {SignatureVerificationError} If intermediary returned invalid cooperative refund signature
393
- * @throws {Error} When state is not refundable
394
- */
395
- txsRefund(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
396
- /**
397
- * @inheritDoc
398
- *
399
- * @throws {Error} If invalid signer is provided that doesn't match the swap data
400
- */
401
- refund(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
402
- /**
403
- * @inheritDoc
404
- *
405
- * @throws {Error} When swap is not in a valid state (must be {@link ToBTCSwapState.COMMITED} or
406
- * {@link ToBTCSwapState.REFUNDABLE})
407
- * @throws {Error} If we tried to refund but claimer was able to claim first
408
- */
409
- waitTillRefunded(abortSignal?: AbortSignal): Promise<void>;
410
- /**
411
- * @inheritDoc
412
- */
413
- serialize(): any;
414
- /**
415
- * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
416
- * data
417
- *
418
- * @private
419
- */
420
- private syncStateFromChain;
421
- /**
422
- * @inheritDoc
423
- * @internal
424
- */
425
- _shouldFetchOnchainState(): boolean;
426
- /**
427
- * @inheritDoc
428
- * @internal
429
- */
430
- _shouldFetchExpiryStatus(): boolean;
431
- /**
432
- * @inheritDoc
433
- * @internal
434
- */
435
- _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState): Promise<boolean>;
436
- /**
437
- * @inheritDoc
438
- * @internal
439
- */
440
- _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
441
- /**
442
- * @inheritDoc
443
- * @internal
444
- */
445
- _tick(save?: boolean): Promise<boolean>;
446
- }
1
+ import { IToBTCDefinition, IToBTCWrapper } from "./IToBTCWrapper";
2
+ import { ChainType, SignatureData, SwapCommitState, SwapData } from "@atomiqlabs/base";
3
+ import { RefundAuthorizationResponse } from "../../../intermediaries/apis/IntermediaryAPI";
4
+ import { Fee } from "../../../types/fees/Fee";
5
+ import { IEscrowSelfInitSwap, IEscrowSelfInitSwapInit } from "../IEscrowSelfInitSwap";
6
+ import { IRefundableSwap } from "../../IRefundableSwap";
7
+ import { FeeType } from "../../../enums/FeeType";
8
+ import { TokenAmount } from "../../../types/TokenAmount";
9
+ import { BtcToken, SCToken } from "../../../types/Token";
10
+ import { SwapExecutionActionSignSmartChainTx, SwapExecutionActionWait } from "../../../types/SwapExecutionAction";
11
+ import { SwapExecutionStepPayment, SwapExecutionStepRefund, SwapExecutionStepSettlement } from "../../../types/SwapExecutionStep";
12
+ import { SwapStateInfo } from "../../../types/SwapStateInfo";
13
+ export type IToBTCSwapInit<T extends SwapData> = IEscrowSelfInitSwapInit<T> & {
14
+ signatureData?: SignatureData;
15
+ data: T;
16
+ networkFee: bigint;
17
+ networkFeeBtc: bigint;
18
+ };
19
+ export declare function isIToBTCSwapInit<T extends SwapData>(obj: any): obj is IToBTCSwapInit<T>;
20
+ /**
21
+ * State enum for escrow-based Smart chain -> Bitcoin (on-chain & lightning) swaps
22
+ *
23
+ * @category Swaps/Smart chain → Bitcoin
24
+ */
25
+ export declare enum ToBTCSwapState {
26
+ /**
27
+ * Intermediary (LP) was unable to process the swap and the funds were refunded on the
28
+ * source chain
29
+ */
30
+ REFUNDED = -3,
31
+ /**
32
+ * Swap has expired for good and there is no way how it can be executed anymore
33
+ */
34
+ QUOTE_EXPIRED = -2,
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 = -1,
40
+ /**
41
+ * Swap was created, use the {@link IToBTCSwap.commit} or {@link IToBTCSwap.txsCommit} to
42
+ * initiate it by creating the swap escrow on the source chain
43
+ */
44
+ CREATED = 0,
45
+ /**
46
+ * Swap escrow was initiated (committed) on the source chain, the intermediary (LP) will
47
+ * now process the swap. You can wait till that happens with the {@link IToBTCSwap.waitForPayment}
48
+ * function.
49
+ */
50
+ COMMITED = 1,
51
+ /**
52
+ * The intermediary (LP) has processed the transaction and sent out the funds on the destination chain,
53
+ * but hasn't yet settled the escrow on the source chain.
54
+ */
55
+ SOFT_CLAIMED = 2,
56
+ /**
57
+ * Swap was successfully settled by the intermediary (LP) on the source chain
58
+ */
59
+ CLAIMED = 3,
60
+ /**
61
+ * Intermediary (LP) was unable to process the swap and the swap escrow on the source chain
62
+ * is refundable, call {@link IToBTCSwap.refund} or {@link IToBTCSwap.txsRefund} to refund
63
+ */
64
+ REFUNDABLE = 4
65
+ }
66
+ /**
67
+ * Base class for escrow-based Smart chain -> Bitcoin (on-chain & lightning) swaps
68
+ *
69
+ * @category Swaps/Smart chain → Bitcoin
70
+ */
71
+ export declare abstract class IToBTCSwap<T extends ChainType = ChainType, D extends IToBTCDefinition<T, IToBTCWrapper<T, D>, IToBTCSwap<T, D>> = IToBTCDefinition<T, IToBTCWrapper<T, any>, IToBTCSwap<T, any>>> extends IEscrowSelfInitSwap<T, D, ToBTCSwapState> implements IRefundableSwap<T, D, ToBTCSwapState> {
72
+ /**
73
+ * @internal
74
+ */
75
+ protected readonly swapStateDescription: {
76
+ [-3]: string;
77
+ [-2]: string;
78
+ [-1]: string;
79
+ 0: string;
80
+ 1: string;
81
+ 2: string;
82
+ 3: string;
83
+ 4: string;
84
+ };
85
+ /**
86
+ * @internal
87
+ */
88
+ protected readonly swapStateName: (state: number) => string;
89
+ /**
90
+ * @internal
91
+ */
92
+ protected readonly abstract outputToken: BtcToken;
93
+ /**
94
+ * @internal
95
+ */
96
+ protected readonly networkFee: bigint;
97
+ /**
98
+ * @internal
99
+ */
100
+ protected networkFeeBtc: bigint;
101
+ /**
102
+ * @internal
103
+ */
104
+ readonly _data: T["Data"];
105
+ protected constructor(wrapper: D["Wrapper"], serializedObject: any);
106
+ protected constructor(wrapper: D["Wrapper"], init: IToBTCSwapInit<T["Data"]>);
107
+ /**
108
+ * @inheritDoc
109
+ * @internal
110
+ */
111
+ protected getSwapData(): T["Data"];
112
+ /**
113
+ * @inheritDoc
114
+ * @internal
115
+ */
116
+ protected upgradeVersion(): void;
117
+ /**
118
+ * @inheritDoc
119
+ * @internal
120
+ */
121
+ protected tryRecomputeSwapPrice(): void;
122
+ /**
123
+ * Returns the payment hash identifier to be sent to the LP for getStatus and getRefund
124
+ * @internal
125
+ */
126
+ protected getLpIdentifier(): string;
127
+ /**
128
+ * Sets the payment result for the swap, optionally also checking it (checking that tx exist or swap secret is valid)
129
+ *
130
+ * @param result Result returned by the LP
131
+ * @param check Whether to check the passed result
132
+ * @returns true if check passed, false if check failed with a soft error (e.g. tx not yet found in the mempool)
133
+ * @throws {IntermediaryError} When the data returned by the intermediary isn't valid
134
+ *
135
+ * @internal
136
+ */
137
+ abstract _setPaymentResult(result: {
138
+ secret?: string;
139
+ txId?: string;
140
+ }, check?: boolean): Promise<boolean>;
141
+ /**
142
+ * @inheritDoc
143
+ */
144
+ getInputAddress(): string | null;
145
+ /**
146
+ * @inheritDoc
147
+ */
148
+ getInputTxId(): string | null;
149
+ /**
150
+ * @inheritDoc
151
+ */
152
+ requiresAction(): boolean;
153
+ /**
154
+ * @inheritDoc
155
+ */
156
+ isFinished(): boolean;
157
+ /**
158
+ * @inheritDoc
159
+ */
160
+ isRefundable(): boolean;
161
+ /**
162
+ * @inheritDoc
163
+ */
164
+ isQuoteExpired(): boolean;
165
+ /**
166
+ * @inheritDoc
167
+ */
168
+ isQuoteSoftExpired(): boolean;
169
+ /**
170
+ * @inheritDoc
171
+ */
172
+ isSuccessful(): boolean;
173
+ /**
174
+ * @inheritDoc
175
+ */
176
+ isFailed(): boolean;
177
+ /**
178
+ * @inheritDoc
179
+ */
180
+ isInProgress(): boolean;
181
+ /**
182
+ * Returns the time (in UNIX milliseconds) at which the swap expires and the user is able to unilaterally
183
+ * refund it with the {@link refund} or {@link txsRefund} function.
184
+ */
185
+ getExpiry(): number;
186
+ /**
187
+ * @inheritDoc
188
+ * @internal
189
+ */
190
+ _getInitiator(): string;
191
+ /**
192
+ * Returns the swap fee charged by the intermediary (LP) on this swap
193
+ *
194
+ * @internal
195
+ */
196
+ protected getSwapFee(): Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
197
+ /**
198
+ * Returns network fee for on the destination chain for the swap
199
+ *
200
+ * @internal
201
+ */
202
+ protected getNetworkFee(): Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
203
+ /**
204
+ * @inheritDoc
205
+ */
206
+ getFee(): Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
207
+ /**
208
+ * @inheritDoc
209
+ */
210
+ getFeeBreakdown(): [
211
+ {
212
+ type: FeeType.SWAP;
213
+ fee: Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
214
+ },
215
+ {
216
+ type: FeeType.NETWORK_OUTPUT;
217
+ fee: Fee<T["ChainId"], SCToken<T["ChainId"]>, BtcToken>;
218
+ }
219
+ ];
220
+ /**
221
+ * @inheritDoc
222
+ */
223
+ getInputToken(): SCToken<T["ChainId"]>;
224
+ /**
225
+ * @inheritDoc
226
+ */
227
+ getInput(): TokenAmount<SCToken<T["ChainId"]>, true>;
228
+ /**
229
+ * @inheritDoc
230
+ */
231
+ getInputWithoutFee(): TokenAmount<SCToken<T["ChainId"]>, true>;
232
+ /**
233
+ * Checks if the initiator/sender on the source chain has enough balance to go through with the swap
234
+ */
235
+ hasEnoughBalance(): Promise<{
236
+ enoughBalance: boolean;
237
+ balance: TokenAmount<SCToken<T["ChainId"]>, true>;
238
+ required: TokenAmount<SCToken<T["ChainId"]>, true>;
239
+ }>;
240
+ /**
241
+ * Checks if the initiator/sender on the source chain has enough native token balance
242
+ * to cover the transaction fee of initiating the swap
243
+ */
244
+ hasEnoughForTxFees(): Promise<{
245
+ enoughBalance: boolean;
246
+ balance: TokenAmount<SCToken<T["ChainId"]>, true>;
247
+ required: TokenAmount<SCToken<T["ChainId"]>, true>;
248
+ }>;
249
+ /**
250
+ * Executes the swap with the provided smart chain wallet/signer
251
+ *
252
+ * @param signer Smart chain wallet/signer to use to sign the transaction on the source chain
253
+ * @param callbacks Callbacks to track the progress of the swap
254
+ * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
255
+ *
256
+ * @returns {boolean} Whether the swap was successfully processed by the LP, in case `false` is returned
257
+ * the user can refund their funds back on the source chain by calling {@link refund}
258
+ */
259
+ execute(signer: T["Signer"] | T["NativeSigner"], callbacks?: {
260
+ onSourceTransactionSent?: (sourceTxId: string) => void;
261
+ onSourceTransactionConfirmed?: (sourceTxId: string) => void;
262
+ onSwapSettled?: (destinationTxId: string) => void;
263
+ }, options?: {
264
+ abortSignal?: AbortSignal;
265
+ paymentCheckIntervalSeconds?: number;
266
+ maxWaitTillSwapProcessedSeconds?: number;
267
+ }): Promise<boolean>;
268
+ /**
269
+ * @internal
270
+ */
271
+ protected _getExecutionStatus(): Promise<{
272
+ steps: [SwapExecutionStepPayment<T["ChainId"]>, SwapExecutionStepSettlement<"BITCOIN" | "LIGHTNING", "soft_settled">, SwapExecutionStepRefund<T["ChainId"]>];
273
+ buildCurrentAction: (actionOptions?: {
274
+ skipChecks?: boolean;
275
+ refundSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
276
+ }) => Promise<SwapExecutionActionSignSmartChainTx<T> | SwapExecutionActionWait<"LP"> | undefined>;
277
+ state: ToBTCSwapState;
278
+ }>;
279
+ /**
280
+ * @inheritDoc
281
+ * @internal
282
+ */
283
+ _submitExecutionTransactions(txs: (T["SignedTXType"] | string)[], abortSignal?: AbortSignal, requiredStates?: ToBTCSwapState[], idempotent?: boolean): Promise<string[]>;
284
+ /**
285
+ * @internal
286
+ */
287
+ private _buildInitSmartChainTxAction;
288
+ /**
289
+ * @internal
290
+ */
291
+ private _buildWaitLpAction;
292
+ /**
293
+ * @internal
294
+ */
295
+ private _buildRefundSmartChainTxAction;
296
+ /**
297
+ * @inheritDoc
298
+ *
299
+ * @param options.skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
300
+ * (this is handled on swap creation, if you commit right after quoting, you can use `skipChecks=true`)
301
+ * @param options.refundSmartChainSigner Optional smart chain signer to use when creating refunds transactions
302
+ */
303
+ getExecutionAction(options?: {
304
+ skipChecks?: boolean;
305
+ refundSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
306
+ }): Promise<SwapExecutionActionSignSmartChainTx<T> | SwapExecutionActionWait<"LP"> | undefined>;
307
+ /**
308
+ * @inheritDoc
309
+ */
310
+ getExecutionStatus(options?: {
311
+ skipBuildingAction?: boolean;
312
+ skipChecks?: boolean;
313
+ refundSmartChainSigner?: string | T["Signer"] | T["NativeSigner"];
314
+ }): Promise<{
315
+ steps: [
316
+ SwapExecutionStepPayment<T["ChainId"]>,
317
+ SwapExecutionStepSettlement<"BITCOIN" | "LIGHTNING", "soft_settled">,
318
+ SwapExecutionStepRefund<T["ChainId"]>
319
+ ];
320
+ currentAction: SwapExecutionActionSignSmartChainTx<T> | SwapExecutionActionWait<"LP"> | undefined;
321
+ stateInfo: SwapStateInfo<ToBTCSwapState>;
322
+ }>;
323
+ /**
324
+ * @inheritDoc
325
+ */
326
+ getExecutionSteps(): Promise<[
327
+ SwapExecutionStepPayment<T["ChainId"]>,
328
+ SwapExecutionStepSettlement<"BITCOIN" | "LIGHTNING", "soft_settled">,
329
+ SwapExecutionStepRefund<T["ChainId"]>
330
+ ]>;
331
+ /**
332
+ * @inheritDoc
333
+ *
334
+ * @throws {Error} When in invalid state (not {@link ToBTCSwapState.CREATED})
335
+ */
336
+ txsCommit(skipChecks?: boolean): Promise<T["TX"][]>;
337
+ /**
338
+ * @inheritDoc
339
+ *
340
+ * @throws {Error} If invalid signer is provided that doesn't match the swap data
341
+ */
342
+ commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
343
+ /**
344
+ * @inheritDoc
345
+ *
346
+ * @throws {Error} If swap is not in the correct state (must be {@link ToBTCSwapState.CREATED})
347
+ */
348
+ waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
349
+ /**
350
+ * Waits till the swap is processed by the intermediary (LP)
351
+ *
352
+ * @param checkIntervalSeconds How often to poll the intermediary for status (5 seconds default)
353
+ * @param abortSignal Abort signal
354
+ * @internal
355
+ */
356
+ protected waitTillIntermediarySwapProcessed(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<RefundAuthorizationResponse>;
357
+ /**
358
+ * Checks whether the swap was already processed by the LP and is either successful (requires proof which is
359
+ * either a HTLC pre-image for LN swaps or valid txId for on-chain swap) or failed and we can cooperatively
360
+ * refund.
361
+ *
362
+ * @param save whether to save the data
363
+ * @returns `true` if swap is processed, `false` if the swap is still ongoing
364
+ *
365
+ * @internal
366
+ */
367
+ protected checkIntermediarySwapProcessed(save?: boolean): Promise<boolean>;
368
+ /**
369
+ * A blocking promise resolving when swap was concluded by the intermediary (LP),
370
+ * rejecting in case of failure
371
+ *
372
+ * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled, an error is thrown if the
373
+ * swap is taking too long to claim
374
+ * @param checkIntervalSeconds How often to poll the intermediary for answer
375
+ * @param abortSignal Abort signal
376
+ * @returns `true` if swap was successful, `false` if swap failed and we can refund
377
+ *
378
+ * @throws {IntermediaryError} If a swap is determined expired by the intermediary, but it is actually still valid
379
+ * @throws {SignatureVerificationError} If the swap should be cooperatively refundable but the intermediary returned
380
+ * invalid refund signature
381
+ * @throws {Error} When swap expires or if the swap has invalid state (must be {@link ToBTCSwapState.COMMITED})
382
+ */
383
+ waitForPayment(maxWaitTimeSeconds?: number, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
384
+ /**
385
+ * Get the estimated smart chain transaction fee of the refund transaction
386
+ */
387
+ getRefundNetworkFee(): Promise<TokenAmount<SCToken<T["ChainId"]>, true>>;
388
+ /**
389
+ * @inheritDoc
390
+ *
391
+ * @throws {IntermediaryError} If intermediary returns invalid response in case cooperative refund should be used
392
+ * @throws {SignatureVerificationError} If intermediary returned invalid cooperative refund signature
393
+ * @throws {Error} When state is not refundable
394
+ */
395
+ txsRefund(_signer?: string | T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
396
+ /**
397
+ * @inheritDoc
398
+ *
399
+ * @throws {Error} If invalid signer is provided that doesn't match the swap data
400
+ */
401
+ refund(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
402
+ /**
403
+ * @inheritDoc
404
+ *
405
+ * @throws {Error} When swap is not in a valid state (must be {@link ToBTCSwapState.COMMITED} or
406
+ * {@link ToBTCSwapState.REFUNDABLE})
407
+ * @throws {Error} If we tried to refund but claimer was able to claim first
408
+ */
409
+ waitTillRefunded(abortSignal?: AbortSignal): Promise<void>;
410
+ /**
411
+ * @inheritDoc
412
+ */
413
+ serialize(): any;
414
+ /**
415
+ * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
416
+ * data
417
+ *
418
+ * @private
419
+ */
420
+ private syncStateFromChain;
421
+ /**
422
+ * @inheritDoc
423
+ * @internal
424
+ */
425
+ _shouldFetchOnchainState(): boolean;
426
+ /**
427
+ * @inheritDoc
428
+ * @internal
429
+ */
430
+ _shouldFetchExpiryStatus(): boolean;
431
+ /**
432
+ * @inheritDoc
433
+ * @internal
434
+ */
435
+ _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState): Promise<boolean>;
436
+ /**
437
+ * @inheritDoc
438
+ * @internal
439
+ */
440
+ _forciblySetOnchainState(commitStatus: SwapCommitState): Promise<boolean>;
441
+ /**
442
+ * @inheritDoc
443
+ * @internal
444
+ */
445
+ _tick(save?: boolean): Promise<boolean>;
446
+ }