@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,453 +1,453 @@
1
- /// <reference types="node" />
2
- import { SwapType } from "../enums/SwapType";
3
- import { EventEmitter } from "events";
4
- import { ISwapWrapper, SwapTypeDefinition } from "./ISwapWrapper";
5
- import { ChainType } from "@atomiqlabs/base";
6
- import { SwapDirection } from "../enums/SwapDirection";
7
- import { Fee } from "../types/fees/Fee";
8
- import { FeeBreakdown } from "../types/fees/FeeBreakdown";
9
- import { PercentagePPM } from "../types/fees/PercentagePPM";
10
- import { TokenAmount } from "../types/TokenAmount";
11
- import { Token } from "../types/Token";
12
- import { SwapExecutionAction } from "../types/SwapExecutionAction";
13
- import { LoggerType } from "../utils/Logger";
14
- import { PriceInfoType } from "../types/PriceInfoType";
15
- import { SwapStateInfo } from "../types/SwapStateInfo";
16
- import { SwapExecutionStep } from "../types/SwapExecutionStep";
17
- /**
18
- * Initialization data for creating a swap
19
- *
20
- * @category Swaps/Base
21
- */
22
- export type ISwapInit = {
23
- pricingInfo: PriceInfoType;
24
- url?: string;
25
- expiry: number;
26
- swapFee: bigint;
27
- swapFeeBtc: bigint;
28
- exactIn: boolean;
29
- contractVersion: string;
30
- };
31
- /**
32
- * Type guard to check if an object is an ISwapInit
33
- *
34
- * @category Swaps/Base
35
- */
36
- export declare function isISwapInit(obj: any): obj is ISwapInit;
37
- /**
38
- * Base abstract class for all swap types
39
- *
40
- * @category Swaps/Base
41
- */
42
- export declare abstract class ISwap<T extends ChainType = ChainType, D extends SwapTypeDefinition<T, ISwapWrapper<T, D>, ISwap<T, D, S>> = SwapTypeDefinition<T, ISwapWrapper<T, any>, ISwap<T, any, any>>, S extends number = number> {
43
- /**
44
- * Swap type
45
- */
46
- protected readonly abstract TYPE: SwapType;
47
- /**
48
- * Description for the states
49
- * @internal
50
- */
51
- protected readonly abstract swapStateDescription: Record<S, string>;
52
- /**
53
- * Name of the states
54
- * @internal
55
- */
56
- protected readonly abstract swapStateName: (state: number) => string;
57
- /**
58
- * Swap logger
59
- * @internal
60
- */
61
- protected readonly abstract logger: LoggerType;
62
- /**
63
- * Current newest defined version of the swap
64
- * @internal
65
- */
66
- protected readonly currentVersion: number;
67
- /**
68
- * Wrapper instance holding this swap
69
- * @internal
70
- */
71
- protected readonly wrapper: D["Wrapper"];
72
- /**
73
- * The current version of the swap
74
- * @internal
75
- */
76
- protected version: number;
77
- /**
78
- * Whether a swap was initialized, a swap is considered initialize on first interaction with it, i.e.
79
- * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
80
- * direction. Not initiated swaps are not saved to the persistent storage by default (see
81
- * {@link SwapperOptions.saveUninitializedSwaps})
82
- * @internal
83
- */
84
- protected initiated: boolean;
85
- /**
86
- * Expiration of the swap quote
87
- * @internal
88
- */
89
- protected expiry: number;
90
- /**
91
- * Pricing information of the swap
92
- * @internal
93
- */
94
- protected pricingInfo?: PriceInfoType;
95
- /**
96
- * Swap fee in the non-bitcoin token
97
- * @internal
98
- */
99
- protected swapFee: bigint;
100
- /**
101
- * Swap fee in bitcoin satoshis
102
- * @internal
103
- */
104
- protected swapFeeBtc: bigint;
105
- /**
106
- * Swap state
107
- * @internal
108
- */
109
- _state: S;
110
- /**
111
- * Random nonce to differentiate the swap from others with the same identifier hash (i.e. when quoting the same swap
112
- * from multiple LPs)
113
- * @internal
114
- */
115
- _randomNonce: string;
116
- /**
117
- * Whether the swap is saved in the persistent storage or not.
118
- *
119
- * @remarks This field itself is not persisted but is instead derived during runtime
120
- *
121
- * @internal
122
- */
123
- _persisted: boolean;
124
- /**
125
- * @internal
126
- */
127
- _contractVersion?: string;
128
- /**
129
- * Storage specific metadata that can be used for e.g. optimistic concurrency
130
- *
131
- * @internal
132
- */
133
- _meta?: any;
134
- /**
135
- * Event emitter emitting `"swapState"` event when swap's state changes
136
- */
137
- readonly events: EventEmitter<{
138
- swapState: [D["Swap"]];
139
- }>;
140
- /**
141
- * URL of the intermediary (LP) used for this swap, already has the swap service specific path appended
142
- */
143
- readonly url?: string;
144
- /**
145
- * Smart chain identifier string corresponding to this swap
146
- */
147
- readonly chainIdentifier: T["ChainId"];
148
- /**
149
- * Whether a swap is an exact input swap
150
- */
151
- readonly exactIn: boolean;
152
- /**
153
- * A UNIX milliseconds timestamps of when this swap was created
154
- */
155
- createdAt: number;
156
- protected constructor(wrapper: D["Wrapper"], obj: any);
157
- protected constructor(wrapper: D["Wrapper"], swapInit: ISwapInit);
158
- /**
159
- * Called when swap is deserialized to potentially update the version of the data for the swap
160
- *
161
- * @internal
162
- */
163
- protected abstract upgradeVersion(): void;
164
- /**
165
- * Waits till the swap reaches a specific state
166
- *
167
- * @param targetState The state to wait for
168
- * @param type Whether to wait for the state exactly or also to a state with a higher number
169
- * @param abortSignal Abort signal
170
- * @internal
171
- */
172
- protected waitTillState(targetState: S, type?: "eq" | "gte" | "neq", abortSignal?: AbortSignal): Promise<void>;
173
- /**
174
- * Executes the swap with the provided wallet, the exact arguments for this functions differ for various swap
175
- * types. Check the `execute()` function signature in the respective swap class to see the required arguments.
176
- *
177
- * @param args Execution arguments, usually contains a source wallet object, callbacks and options, for exact
178
- * syntax check the respective swap class.
179
- *
180
- * @returns Whether a swap was successfully executed or not, if it wasn't the user can refund or claim manually
181
- */
182
- abstract execute(...args: any[]): Promise<boolean>;
183
- /**
184
- * This attempts to populate missing fields in the pricing info based on the swap amounts
185
- *
186
- * @internal
187
- */
188
- protected tryRecomputeSwapPrice(): void;
189
- /**
190
- * Returns the specific state along with the human-readable description of that state
191
- *
192
- * @internal
193
- */
194
- protected _getStateInfo(state: S): SwapStateInfo<S>;
195
- /**
196
- * Re-fetches & revalidates the price data based on the current market prices
197
- */
198
- refreshPriceData(): Promise<void>;
199
- /**
200
- * Checks if the pricing for the swap is valid, according to max allowed price difference set in the ISwapPrice
201
- */
202
- hasValidPrice(): boolean;
203
- /**
204
- * Returns pricing info about the swap
205
- */
206
- getPriceInfo(): {
207
- marketPrice?: number;
208
- swapPrice: number;
209
- difference: PercentagePPM;
210
- };
211
- /**
212
- * Asserts a given signer is the initiator of this swap
213
- *
214
- * @param signer Signer to check with this swap's initiator
215
- * @throws {Error} When signer's address doesn't match with the swap's initiator one
216
- * @internal
217
- */
218
- protected checkSigner(signer: T["Signer"] | string): void;
219
- /**
220
- * Await and prepares a list of passed transactions
221
- *
222
- * @param txsPromise
223
- * @internal
224
- */
225
- protected prepareTransactions(txsPromise: Promise<T["TX"][]>): Promise<T["TX"][]>;
226
- /**
227
- * Returns an escrow hash of the swap
228
- *
229
- * @internal
230
- */
231
- abstract _getEscrowHash(): string | null;
232
- /**
233
- * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be initiated anymore)
234
- * @internal
235
- */
236
- abstract _verifyQuoteDefinitelyExpired(): Promise<boolean>;
237
- /**
238
- * Checks if the swap's quote is still valid
239
- * @internal
240
- */
241
- abstract _verifyQuoteValid(): Promise<boolean>;
242
- /**
243
- * Returns the intiator address of the swap - address that created this swap
244
- * @internal
245
- */
246
- abstract _getInitiator(): string;
247
- /**
248
- * Sets this swap as initiated
249
- * @internal
250
- */
251
- _setInitiated(): void;
252
- /**
253
- * Returns source address of the swap
254
- */
255
- abstract getInputAddress(): string | null;
256
- /**
257
- * Returns destination address of the swap
258
- */
259
- abstract getOutputAddress(): string | null;
260
- /**
261
- * Returns swap input transaction ID on the source chain
262
- */
263
- abstract getInputTxId(): string | null;
264
- /**
265
- * Returns swap output transaction ID on the destination chain
266
- */
267
- abstract getOutputTxId(): string | null;
268
- /**
269
- * Returns the ID of the swap, as used in the storage
270
- */
271
- abstract getId(): string;
272
- /**
273
- * Checks whether there is some action required from the user for this swap - can mean either refundable or claimable
274
- */
275
- abstract requiresAction(): boolean;
276
- /**
277
- * Returns whether the swap is finished and in its terminal state (this can mean successful, refunded or failed)
278
- */
279
- abstract isFinished(): boolean;
280
- /**
281
- * Checks whether the swap's quote has definitely expired and cannot be committed anymore, we can remove such swap
282
- */
283
- abstract isQuoteExpired(): boolean;
284
- /**
285
- * Checks whether the swap's quote is soft expired (this means there is not enough time buffer for it to commit,
286
- * but it still can happen)
287
- */
288
- abstract isQuoteSoftExpired(): boolean;
289
- /**
290
- * Returns whether the swap finished successful
291
- */
292
- abstract isSuccessful(): boolean;
293
- /**
294
- * Returns whether the swap failed (e.g. was refunded)
295
- */
296
- abstract isFailed(): boolean;
297
- /**
298
- * Returns whether the swap is currently being processed
299
- */
300
- abstract isInProgress(): boolean;
301
- /**
302
- * Whether a swap was initialized, a swap is considered initialized on first interaction with it, i.e.
303
- * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
304
- * direction. Not initiated swaps are not saved to the persistent storage by default (see
305
- * {@link SwapperOptions.saveUninitializedSwaps})
306
- */
307
- isInitiated(): boolean;
308
- /**
309
- * Returns quote expiry in UNIX millis
310
- */
311
- getQuoteExpiry(): number;
312
- /**
313
- * Returns the type of the swap
314
- */
315
- getType(): SwapType;
316
- /**
317
- * Returns the direction of the swap
318
- */
319
- getDirection(): SwapDirection;
320
- /**
321
- * Returns the current state of the swap
322
- */
323
- getState(): S;
324
- /**
325
- * Returns the current state of the swap along with the human-readable description of the state
326
- */
327
- getStateInfo(): SwapStateInfo<S>;
328
- /**
329
- * Returns a current state-dependent action for the user to execute, or `undefined` if there is no more action
330
- * required for this swap - this means that the swap is probably finished (either expired, failed or settled).
331
- *
332
- * @param options Optional options argument for the additional action context (i.e. passing bitcoin wallet info to
333
- * get funded PSBTs or passing the externally-generated swap secret), see the actual type in the respective swap
334
- * classes
335
- */
336
- abstract getExecutionAction(options?: any): Promise<SwapExecutionAction | undefined>;
337
- /**
338
- * Returns a list of execution steps the user has to go through for a given swap, to see the possible execution
339
- * steps check out {@link SwapExecutionStep}.
340
- *
341
- * @param options Optional options argument for the additional steps context (i.e. automatic settlement timeout),
342
- * see the actual type in the respective swap classes
343
- */
344
- abstract getExecutionSteps(options?: any): Promise<SwapExecutionStep[]>;
345
- /**
346
- * Returns the current action and the full execution steps for a given swap. Prefer this to calling
347
- * {@link getExecutionSteps} and {@link getExecutionAction} separately - if called sequentially they might
348
- * return the respective steps/actions in different states if you hit the state transition boundary.
349
- *
350
- * @param options Optional options argument for the additional execution status context, see the actual type in
351
- * the respective swap classes
352
- */
353
- abstract getExecutionStatus(options?: {
354
- skipBuildingAction?: boolean;
355
- } & any): Promise<{
356
- steps: SwapExecutionStep[];
357
- currentAction: SwapExecutionAction | undefined;
358
- stateInfo: SwapStateInfo<S>;
359
- }>;
360
- /**
361
- * Submits signed transactions obtained from the execution action back to the swap.
362
- *
363
- * @remarks This endpoint will also wait till the submitted transactions are confirmed (on a smart-chain side)
364
- * and till the swap state change is observed from the authoritative chain/intermediary state.
365
- *
366
- * If invalid transactions are submitted, i.e. sending a simple noop or transfer transaction instead of the
367
- * expected tx, this call may wait indefinitely unless aborted via the AbortSignal.
368
- *
369
- * @param txs Signed transactions
370
- * @param abortSignal Abort signal
371
- * @param requiredStates Optional list of states that the swap has to be in for the transactions to be
372
- * submitted, else throws
373
- * @param idempotent Whether the tx submission should be handled idempotently, meaning if any of the supplied
374
- * transactions are already processed as e.g. init, claim, refund or execution transactions the function just
375
- * returns these transaction IDs without actually submitting them
376
- *
377
- * @internal
378
- */
379
- abstract _submitExecutionTransactions(txs: (T["SignedTXType"] | string | any)[], abortSignal?: AbortSignal, requiredStates?: S[], idempotent?: boolean): Promise<string[]>;
380
- /**
381
- * Returns output amount of the swap, user receives this much
382
- */
383
- abstract getOutput(): TokenAmount;
384
- /**
385
- * Returns the output token of the swap
386
- */
387
- abstract getOutputToken(): Token<T["ChainId"]>;
388
- /**
389
- * Returns input amount of the swap, user needs to pay this much
390
- */
391
- abstract getInput(): TokenAmount;
392
- /**
393
- * Returns the input token of the swap
394
- */
395
- abstract getInputToken(): Token<T["ChainId"]>;
396
- /**
397
- * Returns input amount of the swap without the fees (swap fee, network fee)
398
- */
399
- abstract getInputWithoutFee(): TokenAmount;
400
- /**
401
- * Returns total fee for the swap, the fee is represented in source currency & destination currency, but is
402
- * paid only once
403
- */
404
- abstract getFee(): Fee;
405
- /**
406
- * Returns the breakdown of all the fees paid
407
- */
408
- abstract getFeeBreakdown(): FeeBreakdown<T["ChainId"]>;
409
- /**
410
- * Saves the swap data to the underlying storage, or removes it if it is in a quote expired state
411
- *
412
- * @internal
413
- */
414
- _save(): Promise<void>;
415
- /**
416
- * Saves the swap data and also emits a swap state change
417
- *
418
- * @param state Optional state to set before the swap is saved an event emitted
419
- *
420
- * @internal
421
- */
422
- _saveAndEmit(state?: S): Promise<void>;
423
- /**
424
- * Serializes the swap to a JSON stringifiable representation (i.e. no bigints, buffers etc.)
425
- */
426
- serialize(): any;
427
- /**
428
- * Emits a `swapState` event with the current swap
429
- *
430
- * @internal
431
- */
432
- _emitEvent(): void;
433
- /**
434
- * Synchronizes swap state from chain and/or LP node, usually ran on startup
435
- *
436
- * @param save whether to save the new swap state or not
437
- *
438
- * @returns {boolean} true if the swap changed, false if the swap hasn't changed
439
- *
440
- * @internal
441
- */
442
- abstract _sync(save?: boolean): Promise<boolean>;
443
- /**
444
- * Runs quick checks on the swap, such as checking the expiry, usually ran periodically every few seconds
445
- *
446
- * @param save whether to save the new swap state or not
447
- *
448
- * @returns {boolean} true if the swap changed, false if the swap hasn't changed
449
- *
450
- * @internal
451
- */
452
- abstract _tick(save?: boolean): Promise<boolean>;
453
- }
1
+ /// <reference types="node" />
2
+ import { SwapType } from "../enums/SwapType";
3
+ import { EventEmitter } from "events";
4
+ import { ISwapWrapper, SwapTypeDefinition } from "./ISwapWrapper";
5
+ import { ChainType } from "@atomiqlabs/base";
6
+ import { SwapDirection } from "../enums/SwapDirection";
7
+ import { Fee } from "../types/fees/Fee";
8
+ import { FeeBreakdown } from "../types/fees/FeeBreakdown";
9
+ import { PercentagePPM } from "../types/fees/PercentagePPM";
10
+ import { TokenAmount } from "../types/TokenAmount";
11
+ import { Token } from "../types/Token";
12
+ import { SwapExecutionAction } from "../types/SwapExecutionAction";
13
+ import { LoggerType } from "../utils/Logger";
14
+ import { PriceInfoType } from "../types/PriceInfoType";
15
+ import { SwapStateInfo } from "../types/SwapStateInfo";
16
+ import { SwapExecutionStep } from "../types/SwapExecutionStep";
17
+ /**
18
+ * Initialization data for creating a swap
19
+ *
20
+ * @category Swaps/Base
21
+ */
22
+ export type ISwapInit = {
23
+ pricingInfo: PriceInfoType;
24
+ url?: string;
25
+ expiry: number;
26
+ swapFee: bigint;
27
+ swapFeeBtc: bigint;
28
+ exactIn: boolean;
29
+ contractVersion: string;
30
+ };
31
+ /**
32
+ * Type guard to check if an object is an ISwapInit
33
+ *
34
+ * @category Swaps/Base
35
+ */
36
+ export declare function isISwapInit(obj: any): obj is ISwapInit;
37
+ /**
38
+ * Base abstract class for all swap types
39
+ *
40
+ * @category Swaps/Base
41
+ */
42
+ export declare abstract class ISwap<T extends ChainType = ChainType, D extends SwapTypeDefinition<T, ISwapWrapper<T, D>, ISwap<T, D, S>> = SwapTypeDefinition<T, ISwapWrapper<T, any>, ISwap<T, any, any>>, S extends number = number> {
43
+ /**
44
+ * Swap type
45
+ */
46
+ protected readonly abstract TYPE: SwapType;
47
+ /**
48
+ * Description for the states
49
+ * @internal
50
+ */
51
+ protected readonly abstract swapStateDescription: Record<S, string>;
52
+ /**
53
+ * Name of the states
54
+ * @internal
55
+ */
56
+ protected readonly abstract swapStateName: (state: number) => string;
57
+ /**
58
+ * Swap logger
59
+ * @internal
60
+ */
61
+ protected readonly abstract logger: LoggerType;
62
+ /**
63
+ * Current newest defined version of the swap
64
+ * @internal
65
+ */
66
+ protected readonly currentVersion: number;
67
+ /**
68
+ * Wrapper instance holding this swap
69
+ * @internal
70
+ */
71
+ protected readonly wrapper: D["Wrapper"];
72
+ /**
73
+ * The current version of the swap
74
+ * @internal
75
+ */
76
+ protected version: number;
77
+ /**
78
+ * Whether a swap was initialized, a swap is considered initialize on first interaction with it, i.e.
79
+ * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
80
+ * direction. Not initiated swaps are not saved to the persistent storage by default (see
81
+ * {@link SwapperOptions.saveUninitializedSwaps})
82
+ * @internal
83
+ */
84
+ protected initiated: boolean;
85
+ /**
86
+ * Expiration of the swap quote
87
+ * @internal
88
+ */
89
+ protected expiry: number;
90
+ /**
91
+ * Pricing information of the swap
92
+ * @internal
93
+ */
94
+ protected pricingInfo?: PriceInfoType;
95
+ /**
96
+ * Swap fee in the non-bitcoin token
97
+ * @internal
98
+ */
99
+ protected swapFee: bigint;
100
+ /**
101
+ * Swap fee in bitcoin satoshis
102
+ * @internal
103
+ */
104
+ protected swapFeeBtc: bigint;
105
+ /**
106
+ * Swap state
107
+ * @internal
108
+ */
109
+ _state: S;
110
+ /**
111
+ * Random nonce to differentiate the swap from others with the same identifier hash (i.e. when quoting the same swap
112
+ * from multiple LPs)
113
+ * @internal
114
+ */
115
+ _randomNonce: string;
116
+ /**
117
+ * Whether the swap is saved in the persistent storage or not.
118
+ *
119
+ * @remarks This field itself is not persisted but is instead derived during runtime
120
+ *
121
+ * @internal
122
+ */
123
+ _persisted: boolean;
124
+ /**
125
+ * @internal
126
+ */
127
+ _contractVersion?: string;
128
+ /**
129
+ * Storage specific metadata that can be used for e.g. optimistic concurrency
130
+ *
131
+ * @internal
132
+ */
133
+ _meta?: any;
134
+ /**
135
+ * Event emitter emitting `"swapState"` event when swap's state changes
136
+ */
137
+ readonly events: EventEmitter<{
138
+ swapState: [D["Swap"]];
139
+ }>;
140
+ /**
141
+ * URL of the intermediary (LP) used for this swap, already has the swap service specific path appended
142
+ */
143
+ readonly url?: string;
144
+ /**
145
+ * Smart chain identifier string corresponding to this swap
146
+ */
147
+ readonly chainIdentifier: T["ChainId"];
148
+ /**
149
+ * Whether a swap is an exact input swap
150
+ */
151
+ readonly exactIn: boolean;
152
+ /**
153
+ * A UNIX milliseconds timestamps of when this swap was created
154
+ */
155
+ createdAt: number;
156
+ protected constructor(wrapper: D["Wrapper"], obj: any);
157
+ protected constructor(wrapper: D["Wrapper"], swapInit: ISwapInit);
158
+ /**
159
+ * Called when swap is deserialized to potentially update the version of the data for the swap
160
+ *
161
+ * @internal
162
+ */
163
+ protected abstract upgradeVersion(): void;
164
+ /**
165
+ * Waits till the swap reaches a specific state
166
+ *
167
+ * @param targetState The state to wait for
168
+ * @param type Whether to wait for the state exactly or also to a state with a higher number
169
+ * @param abortSignal Abort signal
170
+ * @internal
171
+ */
172
+ protected waitTillState(targetState: S, type?: "eq" | "gte" | "neq", abortSignal?: AbortSignal): Promise<void>;
173
+ /**
174
+ * Executes the swap with the provided wallet, the exact arguments for this functions differ for various swap
175
+ * types. Check the `execute()` function signature in the respective swap class to see the required arguments.
176
+ *
177
+ * @param args Execution arguments, usually contains a source wallet object, callbacks and options, for exact
178
+ * syntax check the respective swap class.
179
+ *
180
+ * @returns Whether a swap was successfully executed or not, if it wasn't the user can refund or claim manually
181
+ */
182
+ abstract execute(...args: any[]): Promise<boolean>;
183
+ /**
184
+ * This attempts to populate missing fields in the pricing info based on the swap amounts
185
+ *
186
+ * @internal
187
+ */
188
+ protected tryRecomputeSwapPrice(): void;
189
+ /**
190
+ * Returns the specific state along with the human-readable description of that state
191
+ *
192
+ * @internal
193
+ */
194
+ protected _getStateInfo(state: S): SwapStateInfo<S>;
195
+ /**
196
+ * Re-fetches & revalidates the price data based on the current market prices
197
+ */
198
+ refreshPriceData(): Promise<void>;
199
+ /**
200
+ * Checks if the pricing for the swap is valid, according to max allowed price difference set in the ISwapPrice
201
+ */
202
+ hasValidPrice(): boolean;
203
+ /**
204
+ * Returns pricing info about the swap
205
+ */
206
+ getPriceInfo(): {
207
+ marketPrice?: number;
208
+ swapPrice: number;
209
+ difference: PercentagePPM;
210
+ };
211
+ /**
212
+ * Asserts a given signer is the initiator of this swap
213
+ *
214
+ * @param signer Signer to check with this swap's initiator
215
+ * @throws {Error} When signer's address doesn't match with the swap's initiator one
216
+ * @internal
217
+ */
218
+ protected checkSigner(signer: T["Signer"] | string): void;
219
+ /**
220
+ * Await and prepares a list of passed transactions
221
+ *
222
+ * @param txsPromise
223
+ * @internal
224
+ */
225
+ protected prepareTransactions(txsPromise: Promise<T["TX"][]>): Promise<T["TX"][]>;
226
+ /**
227
+ * Returns an escrow hash of the swap
228
+ *
229
+ * @internal
230
+ */
231
+ abstract _getEscrowHash(): string | null;
232
+ /**
233
+ * Checks if the swap's quote is expired for good (i.e. the swap strictly cannot be initiated anymore)
234
+ * @internal
235
+ */
236
+ abstract _verifyQuoteDefinitelyExpired(): Promise<boolean>;
237
+ /**
238
+ * Checks if the swap's quote is still valid
239
+ * @internal
240
+ */
241
+ abstract _verifyQuoteValid(): Promise<boolean>;
242
+ /**
243
+ * Returns the intiator address of the swap - address that created this swap
244
+ * @internal
245
+ */
246
+ abstract _getInitiator(): string;
247
+ /**
248
+ * Sets this swap as initiated
249
+ * @internal
250
+ */
251
+ _setInitiated(): void;
252
+ /**
253
+ * Returns source address of the swap
254
+ */
255
+ abstract getInputAddress(): string | null;
256
+ /**
257
+ * Returns destination address of the swap
258
+ */
259
+ abstract getOutputAddress(): string | null;
260
+ /**
261
+ * Returns swap input transaction ID on the source chain
262
+ */
263
+ abstract getInputTxId(): string | null;
264
+ /**
265
+ * Returns swap output transaction ID on the destination chain
266
+ */
267
+ abstract getOutputTxId(): string | null;
268
+ /**
269
+ * Returns the ID of the swap, as used in the storage
270
+ */
271
+ abstract getId(): string;
272
+ /**
273
+ * Checks whether there is some action required from the user for this swap - can mean either refundable or claimable
274
+ */
275
+ abstract requiresAction(): boolean;
276
+ /**
277
+ * Returns whether the swap is finished and in its terminal state (this can mean successful, refunded or failed)
278
+ */
279
+ abstract isFinished(): boolean;
280
+ /**
281
+ * Checks whether the swap's quote has definitely expired and cannot be committed anymore, we can remove such swap
282
+ */
283
+ abstract isQuoteExpired(): boolean;
284
+ /**
285
+ * Checks whether the swap's quote is soft expired (this means there is not enough time buffer for it to commit,
286
+ * but it still can happen)
287
+ */
288
+ abstract isQuoteSoftExpired(): boolean;
289
+ /**
290
+ * Returns whether the swap finished successful
291
+ */
292
+ abstract isSuccessful(): boolean;
293
+ /**
294
+ * Returns whether the swap failed (e.g. was refunded)
295
+ */
296
+ abstract isFailed(): boolean;
297
+ /**
298
+ * Returns whether the swap is currently being processed
299
+ */
300
+ abstract isInProgress(): boolean;
301
+ /**
302
+ * Whether a swap was initialized, a swap is considered initialized on first interaction with it, i.e.
303
+ * calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
304
+ * direction. Not initiated swaps are not saved to the persistent storage by default (see
305
+ * {@link SwapperOptions.saveUninitializedSwaps})
306
+ */
307
+ isInitiated(): boolean;
308
+ /**
309
+ * Returns quote expiry in UNIX millis
310
+ */
311
+ getQuoteExpiry(): number;
312
+ /**
313
+ * Returns the type of the swap
314
+ */
315
+ getType(): SwapType;
316
+ /**
317
+ * Returns the direction of the swap
318
+ */
319
+ getDirection(): SwapDirection;
320
+ /**
321
+ * Returns the current state of the swap
322
+ */
323
+ getState(): S;
324
+ /**
325
+ * Returns the current state of the swap along with the human-readable description of the state
326
+ */
327
+ getStateInfo(): SwapStateInfo<S>;
328
+ /**
329
+ * Returns a current state-dependent action for the user to execute, or `undefined` if there is no more action
330
+ * required for this swap - this means that the swap is probably finished (either expired, failed or settled).
331
+ *
332
+ * @param options Optional options argument for the additional action context (i.e. passing bitcoin wallet info to
333
+ * get funded PSBTs or passing the externally-generated swap secret), see the actual type in the respective swap
334
+ * classes
335
+ */
336
+ abstract getExecutionAction(options?: any): Promise<SwapExecutionAction | undefined>;
337
+ /**
338
+ * Returns a list of execution steps the user has to go through for a given swap, to see the possible execution
339
+ * steps check out {@link SwapExecutionStep}.
340
+ *
341
+ * @param options Optional options argument for the additional steps context (i.e. automatic settlement timeout),
342
+ * see the actual type in the respective swap classes
343
+ */
344
+ abstract getExecutionSteps(options?: any): Promise<SwapExecutionStep[]>;
345
+ /**
346
+ * Returns the current action and the full execution steps for a given swap. Prefer this to calling
347
+ * {@link getExecutionSteps} and {@link getExecutionAction} separately - if called sequentially they might
348
+ * return the respective steps/actions in different states if you hit the state transition boundary.
349
+ *
350
+ * @param options Optional options argument for the additional execution status context, see the actual type in
351
+ * the respective swap classes
352
+ */
353
+ abstract getExecutionStatus(options?: {
354
+ skipBuildingAction?: boolean;
355
+ } & any): Promise<{
356
+ steps: SwapExecutionStep[];
357
+ currentAction: SwapExecutionAction | undefined;
358
+ stateInfo: SwapStateInfo<S>;
359
+ }>;
360
+ /**
361
+ * Submits signed transactions obtained from the execution action back to the swap.
362
+ *
363
+ * @remarks This endpoint will also wait till the submitted transactions are confirmed (on a smart-chain side)
364
+ * and till the swap state change is observed from the authoritative chain/intermediary state.
365
+ *
366
+ * If invalid transactions are submitted, i.e. sending a simple noop or transfer transaction instead of the
367
+ * expected tx, this call may wait indefinitely unless aborted via the AbortSignal.
368
+ *
369
+ * @param txs Signed transactions
370
+ * @param abortSignal Abort signal
371
+ * @param requiredStates Optional list of states that the swap has to be in for the transactions to be
372
+ * submitted, else throws
373
+ * @param idempotent Whether the tx submission should be handled idempotently, meaning if any of the supplied
374
+ * transactions are already processed as e.g. init, claim, refund or execution transactions the function just
375
+ * returns these transaction IDs without actually submitting them
376
+ *
377
+ * @internal
378
+ */
379
+ abstract _submitExecutionTransactions(txs: (T["SignedTXType"] | string | any)[], abortSignal?: AbortSignal, requiredStates?: S[], idempotent?: boolean): Promise<string[]>;
380
+ /**
381
+ * Returns output amount of the swap, user receives this much
382
+ */
383
+ abstract getOutput(): TokenAmount;
384
+ /**
385
+ * Returns the output token of the swap
386
+ */
387
+ abstract getOutputToken(): Token<T["ChainId"]>;
388
+ /**
389
+ * Returns input amount of the swap, user needs to pay this much
390
+ */
391
+ abstract getInput(): TokenAmount;
392
+ /**
393
+ * Returns the input token of the swap
394
+ */
395
+ abstract getInputToken(): Token<T["ChainId"]>;
396
+ /**
397
+ * Returns input amount of the swap without the fees (swap fee, network fee)
398
+ */
399
+ abstract getInputWithoutFee(): TokenAmount;
400
+ /**
401
+ * Returns total fee for the swap, the fee is represented in source currency & destination currency, but is
402
+ * paid only once
403
+ */
404
+ abstract getFee(): Fee;
405
+ /**
406
+ * Returns the breakdown of all the fees paid
407
+ */
408
+ abstract getFeeBreakdown(): FeeBreakdown<T["ChainId"]>;
409
+ /**
410
+ * Saves the swap data to the underlying storage, or removes it if it is in a quote expired state
411
+ *
412
+ * @internal
413
+ */
414
+ _save(): Promise<void>;
415
+ /**
416
+ * Saves the swap data and also emits a swap state change
417
+ *
418
+ * @param state Optional state to set before the swap is saved an event emitted
419
+ *
420
+ * @internal
421
+ */
422
+ _saveAndEmit(state?: S): Promise<void>;
423
+ /**
424
+ * Serializes the swap to a JSON stringifiable representation (i.e. no bigints, buffers etc.)
425
+ */
426
+ serialize(): any;
427
+ /**
428
+ * Emits a `swapState` event with the current swap
429
+ *
430
+ * @internal
431
+ */
432
+ _emitEvent(): void;
433
+ /**
434
+ * Synchronizes swap state from chain and/or LP node, usually ran on startup
435
+ *
436
+ * @param save whether to save the new swap state or not
437
+ *
438
+ * @returns {boolean} true if the swap changed, false if the swap hasn't changed
439
+ *
440
+ * @internal
441
+ */
442
+ abstract _sync(save?: boolean): Promise<boolean>;
443
+ /**
444
+ * Runs quick checks on the swap, such as checking the expiry, usually ran periodically every few seconds
445
+ *
446
+ * @param save whether to save the new swap state or not
447
+ *
448
+ * @returns {boolean} true if the swap changed, false if the swap hasn't changed
449
+ *
450
+ * @internal
451
+ */
452
+ abstract _tick(save?: boolean): Promise<boolean>;
453
+ }