@atomiqlabs/sdk 7.0.12 → 8.0.8

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 (364) hide show
  1. package/README.md +45 -29
  2. package/dist/SmartChainAssets.d.ts +11 -3
  3. package/dist/SmartChainAssets.js +7 -3
  4. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +68 -0
  5. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +2 -0
  6. package/dist/bitcoin/LightningNetworkApi.d.ts +12 -0
  7. package/dist/bitcoin/LightningNetworkApi.js +2 -0
  8. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -0
  9. package/dist/bitcoin/coinselect2/accumulative.js +52 -0
  10. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -0
  11. package/dist/bitcoin/coinselect2/blackjack.js +38 -0
  12. package/dist/bitcoin/coinselect2/index.d.ts +19 -0
  13. package/dist/bitcoin/coinselect2/index.js +69 -0
  14. package/dist/bitcoin/coinselect2/utils.d.ts +71 -0
  15. package/dist/bitcoin/coinselect2/utils.js +123 -0
  16. package/dist/bitcoin/mempool/MempoolApi.d.ts +350 -0
  17. package/dist/bitcoin/mempool/MempoolApi.js +311 -0
  18. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +44 -0
  19. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +48 -0
  20. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +119 -0
  21. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +361 -0
  22. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +22 -0
  23. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +105 -0
  24. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +93 -0
  25. package/dist/bitcoin/wallet/BitcoinWallet.js +273 -0
  26. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +28 -0
  27. package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -0
  28. package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.d.ts +21 -0
  29. package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.js +2 -0
  30. package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.d.ts +7 -0
  31. package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.js +2 -0
  32. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +40 -0
  33. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +86 -0
  34. package/dist/enums/FeeType.d.ts +8 -0
  35. package/dist/enums/FeeType.js +12 -0
  36. package/dist/enums/SwapAmountType.d.ts +8 -0
  37. package/dist/enums/SwapAmountType.js +12 -0
  38. package/dist/enums/SwapDirection.d.ts +8 -0
  39. package/dist/enums/SwapDirection.js +12 -0
  40. package/dist/enums/SwapType.d.ts +14 -0
  41. package/dist/enums/SwapType.js +18 -0
  42. package/dist/errors/IntermediaryError.d.ts +9 -0
  43. package/dist/errors/IntermediaryError.js +26 -0
  44. package/dist/errors/PaymentAuthError.d.ts +11 -0
  45. package/dist/errors/PaymentAuthError.js +23 -0
  46. package/dist/errors/RequestError.d.ts +18 -0
  47. package/dist/errors/RequestError.js +46 -0
  48. package/dist/errors/UserError.d.ts +7 -0
  49. package/dist/errors/UserError.js +15 -0
  50. package/dist/events/UnifiedSwapEventListener.d.ts +23 -0
  51. package/dist/events/UnifiedSwapEventListener.js +130 -0
  52. package/dist/http/HttpUtils.d.ts +27 -0
  53. package/dist/http/HttpUtils.js +91 -0
  54. package/dist/http/paramcoders/IParamReader.d.ts +8 -0
  55. package/dist/http/paramcoders/IParamReader.js +2 -0
  56. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -0
  57. package/dist/http/paramcoders/ParamDecoder.js +132 -0
  58. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -0
  59. package/dist/http/paramcoders/ParamEncoder.js +31 -0
  60. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -0
  61. package/dist/http/paramcoders/SchemaVerifier.js +145 -0
  62. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -0
  63. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -0
  64. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -0
  65. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -0
  66. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -0
  67. package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -0
  68. package/dist/index.d.ts +82 -4
  69. package/dist/index.js +128 -4
  70. package/dist/intermediaries/Intermediary.d.ts +111 -0
  71. package/dist/intermediaries/Intermediary.js +115 -0
  72. package/dist/intermediaries/IntermediaryDiscovery.d.ts +166 -0
  73. package/dist/intermediaries/IntermediaryDiscovery.js +390 -0
  74. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +436 -0
  75. package/dist/intermediaries/apis/IntermediaryAPI.js +600 -0
  76. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +154 -0
  77. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +136 -0
  78. package/dist/lnurl/LNURL.d.ts +102 -0
  79. package/dist/lnurl/LNURL.js +321 -0
  80. package/dist/prices/RedundantSwapPrice.d.ts +89 -0
  81. package/dist/prices/RedundantSwapPrice.js +202 -0
  82. package/dist/prices/SingleSwapPrice.d.ts +31 -0
  83. package/dist/prices/SingleSwapPrice.js +41 -0
  84. package/dist/prices/SwapPriceWithChain.d.ts +70 -0
  85. package/dist/prices/SwapPriceWithChain.js +91 -0
  86. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -0
  87. package/dist/prices/abstract/ICachedSwapPrice.js +62 -0
  88. package/dist/prices/abstract/IPriceProvider.d.ts +81 -0
  89. package/dist/prices/abstract/IPriceProvider.js +74 -0
  90. package/dist/prices/abstract/ISwapPrice.d.ts +117 -0
  91. package/dist/prices/abstract/ISwapPrice.js +219 -0
  92. package/dist/prices/providers/BinancePriceProvider.d.ts +16 -0
  93. package/dist/prices/providers/BinancePriceProvider.js +23 -0
  94. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +17 -0
  95. package/dist/prices/providers/CoinGeckoPriceProvider.js +23 -0
  96. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +19 -0
  97. package/dist/prices/providers/CoinPaprikaPriceProvider.js +23 -0
  98. package/dist/prices/providers/CustomPriceProvider.d.ts +13 -0
  99. package/dist/prices/providers/CustomPriceProvider.js +24 -0
  100. package/dist/prices/providers/KrakenPriceProvider.d.ts +29 -0
  101. package/dist/prices/providers/KrakenPriceProvider.js +36 -0
  102. package/dist/prices/providers/OKXPriceProvider.d.ts +28 -0
  103. package/dist/prices/providers/OKXPriceProvider.js +23 -0
  104. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +14 -0
  105. package/dist/prices/providers/abstract/ExchangePriceProvider.js +18 -0
  106. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -0
  107. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -0
  108. package/dist/storage/IUnifiedStorage.d.ts +73 -0
  109. package/dist/storage/IUnifiedStorage.js +2 -0
  110. package/dist/storage/UnifiedSwapStorage.d.ts +82 -0
  111. package/dist/storage/UnifiedSwapStorage.js +83 -0
  112. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +39 -0
  113. package/dist/storage-browser/IndexedDBUnifiedStorage.js +275 -0
  114. package/dist/{storage → storage-browser}/LocalStorageManager.d.ts +1 -0
  115. package/dist/{storage → storage-browser}/LocalStorageManager.js +2 -1
  116. package/dist/swapper/Swapper.d.ts +533 -0
  117. package/dist/swapper/Swapper.js +1566 -0
  118. package/dist/swapper/SwapperFactory.d.ts +87 -0
  119. package/dist/{SwapperFactory.js → swapper/SwapperFactory.js} +37 -19
  120. package/dist/swapper/SwapperUtils.d.ts +153 -0
  121. package/dist/swapper/SwapperUtils.js +420 -0
  122. package/dist/swapper/SwapperWithChain.d.ts +214 -0
  123. package/dist/swapper/SwapperWithChain.js +315 -0
  124. package/dist/swapper/SwapperWithSigner.d.ts +178 -0
  125. package/dist/swapper/SwapperWithSigner.js +172 -0
  126. package/dist/swaps/IAddressSwap.d.ts +13 -0
  127. package/dist/swaps/IAddressSwap.js +13 -0
  128. package/dist/swaps/IBTCWalletSwap.d.ts +55 -0
  129. package/dist/swaps/IBTCWalletSwap.js +17 -0
  130. package/dist/swaps/IClaimableSwap.d.ts +17 -0
  131. package/dist/swaps/IClaimableSwap.js +14 -0
  132. package/dist/swaps/IClaimableSwapWrapper.d.ts +5 -0
  133. package/dist/swaps/IClaimableSwapWrapper.js +2 -0
  134. package/dist/swaps/IRefundableSwap.d.ts +17 -0
  135. package/dist/swaps/IRefundableSwap.js +13 -0
  136. package/dist/swaps/ISwap.d.ts +207 -0
  137. package/dist/swaps/ISwap.js +264 -0
  138. package/dist/swaps/ISwapWithGasDrop.d.ts +15 -0
  139. package/dist/swaps/ISwapWithGasDrop.js +11 -0
  140. package/dist/swaps/ISwapWrapper.d.ts +153 -0
  141. package/dist/swaps/ISwapWrapper.js +227 -0
  142. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +53 -0
  143. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +116 -0
  144. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +70 -0
  145. package/dist/swaps/escrow_swaps/IEscrowSwap.js +132 -0
  146. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +85 -0
  147. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +122 -0
  148. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +86 -0
  149. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +115 -0
  150. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +93 -0
  151. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +121 -0
  152. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +45 -0
  153. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +65 -0
  154. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +263 -0
  155. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +933 -0
  156. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +110 -0
  157. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +307 -0
  158. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +236 -0
  159. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +898 -0
  160. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +125 -0
  161. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +393 -0
  162. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +245 -0
  163. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +841 -0
  164. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +120 -0
  165. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +294 -0
  166. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +228 -0
  167. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +721 -0
  168. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +37 -0
  169. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +93 -0
  170. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +86 -0
  171. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +213 -0
  172. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +170 -0
  173. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -0
  174. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +50 -0
  175. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +109 -0
  176. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +93 -0
  177. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +217 -0
  178. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +315 -0
  179. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1098 -0
  180. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +125 -0
  181. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +631 -0
  182. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +107 -0
  183. package/dist/swaps/trusted/ln/LnForGasSwap.js +343 -0
  184. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +21 -0
  185. package/dist/swaps/trusted/ln/LnForGasWrapper.js +62 -0
  186. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +164 -0
  187. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +520 -0
  188. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +48 -0
  189. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +74 -0
  190. package/dist/types/AmountData.d.ts +9 -0
  191. package/dist/types/AmountData.js +2 -0
  192. package/dist/types/CustomPriceFunction.d.ts +5 -0
  193. package/dist/types/CustomPriceFunction.js +2 -0
  194. package/dist/types/PriceInfoType.d.ts +28 -0
  195. package/dist/types/PriceInfoType.js +57 -0
  196. package/dist/types/SwapExecutionAction.d.ts +7 -0
  197. package/dist/types/SwapExecutionAction.js +2 -0
  198. package/dist/types/SwapWithSigner.d.ts +14 -0
  199. package/dist/types/SwapWithSigner.js +40 -0
  200. package/dist/types/Token.d.ts +53 -0
  201. package/dist/types/Token.js +58 -0
  202. package/dist/types/TokenAmount.d.ts +57 -0
  203. package/dist/types/TokenAmount.js +47 -0
  204. package/dist/types/fees/Fee.d.ts +49 -0
  205. package/dist/types/fees/Fee.js +2 -0
  206. package/dist/types/fees/FeeBreakdown.d.ts +10 -0
  207. package/dist/types/fees/FeeBreakdown.js +2 -0
  208. package/dist/types/fees/PercentagePPM.d.ts +15 -0
  209. package/dist/types/fees/PercentagePPM.js +17 -0
  210. package/dist/types/lnurl/LNURLPay.d.ts +54 -0
  211. package/dist/types/lnurl/LNURLPay.js +28 -0
  212. package/dist/types/lnurl/LNURLWithdraw.d.ts +42 -0
  213. package/dist/types/lnurl/LNURLWithdraw.js +24 -0
  214. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -0
  215. package/dist/utils/AutomaticClockDriftCorrection.js +70 -0
  216. package/dist/utils/BitcoinUtils.d.ts +13 -0
  217. package/dist/utils/BitcoinUtils.js +98 -0
  218. package/dist/utils/BitcoinWalletUtils.d.ts +7 -0
  219. package/dist/utils/BitcoinWalletUtils.js +14 -0
  220. package/dist/utils/Logger.d.ts +7 -0
  221. package/dist/utils/Logger.js +12 -0
  222. package/dist/utils/RetryUtils.d.ts +21 -0
  223. package/dist/utils/RetryUtils.js +66 -0
  224. package/dist/utils/SwapUtils.d.ts +31 -0
  225. package/dist/utils/SwapUtils.js +18 -0
  226. package/dist/{Utils.d.ts → utils/TimeoutUtils.d.ts} +9 -3
  227. package/dist/utils/TimeoutUtils.js +55 -0
  228. package/dist/utils/TokenUtils.d.ts +11 -0
  229. package/dist/utils/TokenUtils.js +29 -0
  230. package/dist/utils/TypeUtils.d.ts +7 -0
  231. package/dist/utils/TypeUtils.js +2 -0
  232. package/dist/utils/Utils.d.ts +57 -0
  233. package/dist/utils/Utils.js +178 -0
  234. package/package.json +14 -6
  235. package/src/SmartChainAssets.ts +11 -3
  236. package/src/bitcoin/BitcoinRpcWithAddressIndex.ts +87 -0
  237. package/src/bitcoin/LightningNetworkApi.ts +16 -0
  238. package/src/bitcoin/coinselect2/accumulative.ts +68 -0
  239. package/src/bitcoin/coinselect2/blackjack.ts +49 -0
  240. package/src/bitcoin/coinselect2/index.ts +92 -0
  241. package/src/bitcoin/coinselect2/utils.ts +189 -0
  242. package/src/bitcoin/mempool/MempoolApi.ts +554 -0
  243. package/src/bitcoin/mempool/MempoolBitcoinBlock.ts +88 -0
  244. package/src/bitcoin/mempool/MempoolBitcoinRpc.ts +437 -0
  245. package/src/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.ts +134 -0
  246. package/src/bitcoin/wallet/BitcoinWallet.ts +375 -0
  247. package/src/bitcoin/wallet/IBitcoinWallet.ts +44 -0
  248. package/src/bitcoin/wallet/MinimalBitcoinWalletInterface.ts +19 -0
  249. package/src/bitcoin/wallet/MinimalLightningNetworkWalletInterface.ts +7 -0
  250. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +108 -0
  251. package/src/enums/FeeType.ts +9 -0
  252. package/src/enums/SwapAmountType.ts +9 -0
  253. package/src/enums/SwapDirection.ts +9 -0
  254. package/src/enums/SwapType.ts +15 -0
  255. package/src/errors/IntermediaryError.ts +24 -0
  256. package/src/errors/PaymentAuthError.ts +26 -0
  257. package/src/errors/RequestError.ts +51 -0
  258. package/src/errors/UserError.ts +14 -0
  259. package/src/events/UnifiedSwapEventListener.ts +171 -0
  260. package/src/http/HttpUtils.ts +92 -0
  261. package/src/http/paramcoders/IParamReader.ts +10 -0
  262. package/src/http/paramcoders/ParamDecoder.ts +142 -0
  263. package/src/http/paramcoders/ParamEncoder.ts +37 -0
  264. package/src/http/paramcoders/SchemaVerifier.ts +153 -0
  265. package/src/http/paramcoders/client/ResponseParamDecoder.ts +58 -0
  266. package/src/http/paramcoders/client/StreamParamEncoder.ts +29 -0
  267. package/src/http/paramcoders/client/StreamingFetchPromise.ts +193 -0
  268. package/src/index.ts +102 -4
  269. package/src/intermediaries/Intermediary.ts +204 -0
  270. package/src/intermediaries/IntermediaryDiscovery.ts +485 -0
  271. package/src/intermediaries/apis/IntermediaryAPI.ts +940 -0
  272. package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -0
  273. package/src/lnurl/LNURL.ts +403 -0
  274. package/src/prices/RedundantSwapPrice.ts +245 -0
  275. package/src/prices/SingleSwapPrice.ts +47 -0
  276. package/src/prices/SwapPriceWithChain.ts +157 -0
  277. package/src/prices/abstract/ICachedSwapPrice.ts +86 -0
  278. package/src/prices/abstract/IPriceProvider.ts +128 -0
  279. package/src/prices/abstract/ISwapPrice.ts +328 -0
  280. package/src/prices/providers/BinancePriceProvider.ts +41 -0
  281. package/src/prices/providers/CoinGeckoPriceProvider.ts +40 -0
  282. package/src/prices/providers/CoinPaprikaPriceProvider.ts +44 -0
  283. package/src/prices/providers/CustomPriceProvider.ts +29 -0
  284. package/src/prices/providers/KrakenPriceProvider.ts +74 -0
  285. package/src/prices/providers/OKXPriceProvider.ts +53 -0
  286. package/src/prices/providers/abstract/ExchangePriceProvider.ts +29 -0
  287. package/src/prices/providers/abstract/HttpPriceProvider.ts +15 -0
  288. package/src/storage/IUnifiedStorage.ts +83 -0
  289. package/src/storage/UnifiedSwapStorage.ts +104 -0
  290. package/src/storage-browser/IndexedDBUnifiedStorage.ts +328 -0
  291. package/src/{storage → storage-browser}/LocalStorageManager.ts +2 -1
  292. package/src/swapper/Swapper.ts +2107 -0
  293. package/src/{SwapperFactory.ts → swapper/SwapperFactory.ts} +113 -72
  294. package/src/swapper/SwapperUtils.ts +510 -0
  295. package/src/swapper/SwapperWithChain.ts +464 -0
  296. package/src/swapper/SwapperWithSigner.ts +300 -0
  297. package/src/swaps/IAddressSwap.ts +20 -0
  298. package/src/swaps/IBTCWalletSwap.ts +77 -0
  299. package/src/swaps/IClaimableSwap.ts +30 -0
  300. package/src/swaps/IClaimableSwapWrapper.ts +9 -0
  301. package/src/swaps/IRefundableSwap.ts +29 -0
  302. package/src/swaps/ISwap.ts +490 -0
  303. package/src/swaps/ISwapWithGasDrop.ts +19 -0
  304. package/src/swaps/ISwapWrapper.ts +344 -0
  305. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +168 -0
  306. package/src/swaps/escrow_swaps/IEscrowSwap.ts +197 -0
  307. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +210 -0
  308. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +150 -0
  309. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +219 -0
  310. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +84 -0
  311. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1082 -0
  312. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +429 -0
  313. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1078 -0
  314. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +549 -0
  315. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +974 -0
  316. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +443 -0
  317. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +860 -0
  318. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +104 -0
  319. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +256 -0
  320. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +716 -0
  321. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +151 -0
  322. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +299 -0
  323. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1394 -0
  324. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +796 -0
  325. package/src/swaps/trusted/ln/LnForGasSwap.ts +402 -0
  326. package/src/swaps/trusted/ln/LnForGasWrapper.ts +70 -0
  327. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +633 -0
  328. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +110 -0
  329. package/src/types/AmountData.ts +9 -0
  330. package/src/types/CustomPriceFunction.ts +5 -0
  331. package/src/types/PriceInfoType.ts +67 -0
  332. package/src/types/SwapExecutionAction.ts +8 -0
  333. package/src/types/SwapWithSigner.ts +57 -0
  334. package/src/types/Token.ts +90 -0
  335. package/src/types/TokenAmount.ts +110 -0
  336. package/src/types/fees/Fee.ts +55 -0
  337. package/src/types/fees/FeeBreakdown.ts +11 -0
  338. package/src/types/fees/PercentagePPM.ts +24 -0
  339. package/src/types/lnurl/LNURLPay.ts +72 -0
  340. package/src/types/lnurl/LNURLWithdraw.ts +55 -0
  341. package/src/utils/AutomaticClockDriftCorrection.ts +71 -0
  342. package/src/utils/BitcoinUtils.ts +86 -0
  343. package/src/utils/BitcoinWalletUtils.ts +16 -0
  344. package/src/utils/Logger.ts +15 -0
  345. package/src/utils/RetryUtils.ts +71 -0
  346. package/src/utils/SwapUtils.ts +38 -0
  347. package/src/utils/TimeoutUtils.ts +50 -0
  348. package/src/utils/TokenUtils.ts +25 -0
  349. package/src/utils/TypeUtils.ts +9 -0
  350. package/src/utils/Utils.ts +182 -0
  351. package/dist/SwapperFactory.d.ts +0 -52
  352. package/dist/Utils.js +0 -37
  353. package/dist/fs-storage/FileSystemStorageManager.d.ts +0 -15
  354. package/dist/fs-storage/FileSystemStorageManager.js +0 -60
  355. package/dist/fs-storage/index.d.ts +0 -1
  356. package/dist/fs-storage/index.js +0 -17
  357. package/src/SmartChainAssets.js +0 -75
  358. package/src/SwapperFactory.js +0 -120
  359. package/src/Utils.js +0 -37
  360. package/src/Utils.ts +0 -31
  361. package/src/fs-storage/FileSystemStorageManager.ts +0 -71
  362. package/src/fs-storage/index.ts +0 -1
  363. package/src/index.js +0 -21
  364. package/src/storage/LocalStorageManager.js +0 -72
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IFromBTCSelfInitSwap = void 0;
4
+ const base_1 = require("@atomiqlabs/base");
5
+ const IEscrowSelfInitSwap_1 = require("../IEscrowSelfInitSwap");
6
+ const FeeType_1 = require("../../../enums/FeeType");
7
+ const PercentagePPM_1 = require("../../../types/fees/PercentagePPM");
8
+ const TokenAmount_1 = require("../../../types/TokenAmount");
9
+ class IFromBTCSelfInitSwap extends IEscrowSelfInitSwap_1.IEscrowSelfInitSwap {
10
+ constructor(wrapper, initOrObj) {
11
+ super(wrapper, initOrObj);
12
+ }
13
+ /**
14
+ * In case swapFee in BTC is not supplied it recalculates it based on swap price
15
+ * @protected
16
+ */
17
+ tryRecomputeSwapPrice() {
18
+ if (this.swapFeeBtc == null) {
19
+ this.swapFeeBtc = this.swapFee * this.getInput().rawAmount / this.getOutAmountWithoutFee();
20
+ }
21
+ super.tryRecomputeSwapPrice();
22
+ }
23
+ _getInitiator() {
24
+ return this.getSwapData().getClaimer();
25
+ }
26
+ getOutputTxId() {
27
+ return this.claimTxId ?? null;
28
+ }
29
+ getOutputAddress() {
30
+ return this._getInitiator();
31
+ }
32
+ requiresAction() {
33
+ return this.isClaimable();
34
+ }
35
+ //////////////////////////////
36
+ //// Amounts & fees
37
+ getOutAmountWithoutFee() {
38
+ return this.getSwapData().getAmount() + this.swapFee;
39
+ }
40
+ getSwapFee() {
41
+ if (this.pricingInfo == null)
42
+ throw new Error("No pricing info known, cannot estimate fee!");
43
+ const feeWithoutBaseFee = this.swapFeeBtc - this.pricingInfo.satsBaseFee;
44
+ const swapFeePPM = feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;
45
+ const amountInSrcToken = (0, TokenAmount_1.toTokenAmount)(this.swapFeeBtc, this.inputToken, this.wrapper.prices, this.pricingInfo);
46
+ return {
47
+ amountInSrcToken,
48
+ amountInDstToken: (0, TokenAmount_1.toTokenAmount)(this.swapFee, this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices, this.pricingInfo),
49
+ currentUsdValue: amountInSrcToken.currentUsdValue,
50
+ usdValue: amountInSrcToken.usdValue,
51
+ pastUsdValue: amountInSrcToken.pastUsdValue,
52
+ composition: {
53
+ base: (0, TokenAmount_1.toTokenAmount)(this.pricingInfo.satsBaseFee, this.inputToken, this.wrapper.prices, this.pricingInfo),
54
+ percentage: (0, PercentagePPM_1.ppmToPercentage)(swapFeePPM)
55
+ }
56
+ };
57
+ }
58
+ getFee() {
59
+ return this.getSwapFee();
60
+ }
61
+ getFeeBreakdown() {
62
+ return [{
63
+ type: FeeType_1.FeeType.SWAP,
64
+ fee: this.getSwapFee()
65
+ }];
66
+ }
67
+ getOutputToken() {
68
+ return this.wrapper.tokens[this.getSwapData().getToken()];
69
+ }
70
+ getOutput() {
71
+ return (0, TokenAmount_1.toTokenAmount)(this.getSwapData().getAmount(), this.wrapper.tokens[this.getSwapData().getToken()], this.wrapper.prices, this.pricingInfo);
72
+ }
73
+ getInputWithoutFee() {
74
+ return (0, TokenAmount_1.toTokenAmount)(this.getInput().rawAmount - this.swapFeeBtc, this.inputToken, this.wrapper.prices, this.pricingInfo);
75
+ }
76
+ getSecurityDeposit() {
77
+ return (0, TokenAmount_1.toTokenAmount)(this.getSwapData().getSecurityDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
78
+ }
79
+ getTotalDeposit() {
80
+ return (0, TokenAmount_1.toTokenAmount)(this.getSwapData().getTotalDeposit(), this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo);
81
+ }
82
+ async hasEnoughForTxFees() {
83
+ const [balance, commitFee] = await Promise.all([
84
+ this.wrapper.contract.getBalance(this._getInitiator(), this.wrapper.chain.getNativeCurrencyAddress(), false),
85
+ this.getCommitFee()
86
+ ]);
87
+ const totalFee = commitFee + this.getSwapData().getTotalDeposit();
88
+ return {
89
+ enoughBalance: balance >= totalFee,
90
+ balance: (0, TokenAmount_1.toTokenAmount)(balance, this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo),
91
+ required: (0, TokenAmount_1.toTokenAmount)(totalFee, this.wrapper.getNativeToken(), this.wrapper.prices, this.pricingInfo)
92
+ };
93
+ }
94
+ //////////////////////////////
95
+ //// Commit
96
+ /**
97
+ * Returns the transactions required for committing the swap on-chain, locking the tokens from the intermediary
98
+ * in an HTLC or PTLC
99
+ *
100
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
101
+ * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
102
+ * @throws {Error} When in invalid state to commit the swap
103
+ */
104
+ async txsCommit(skipChecks) {
105
+ if (!this.canCommit())
106
+ throw new Error("Must be in CREATED state!");
107
+ if (this.data == null || this.signatureData == null)
108
+ throw new Error("data or signature data is null, invalid state?");
109
+ if (!this.initiated) {
110
+ this.initiated = true;
111
+ await this._saveAndEmit();
112
+ }
113
+ return await this.wrapper.contract.txsInit(this._getInitiator(), this.data, this.signatureData, skipChecks, this.feeRate).catch(e => Promise.reject(e instanceof base_1.SignatureVerificationError ? new Error("Request timed out") : e));
114
+ }
115
+ //////////////////////////////
116
+ //// Claim
117
+ getClaimFee() {
118
+ return this.wrapper.contract.getClaimFee(this._getInitiator(), this.getSwapData());
119
+ }
120
+ }
121
+ exports.IFromBTCSelfInitSwap = IFromBTCSelfInitSwap;
@@ -0,0 +1,45 @@
1
+ import { ISwapWrapperOptions } from "../../ISwapWrapper";
2
+ import { Intermediary } from "../../../intermediaries/Intermediary";
3
+ import { ChainType } from "@atomiqlabs/base";
4
+ import { IEscrowSwapDefinition, IEscrowSwapWrapper } from "../IEscrowSwapWrapper";
5
+ import { IEscrowSwap } from "../IEscrowSwap";
6
+ import { AmountData } from "../../../types/AmountData";
7
+ export type IFromBTCDefinition<T extends ChainType, W extends IFromBTCWrapper<T, any>, S extends IEscrowSwap<T>> = IEscrowSwapDefinition<T, W, S>;
8
+ export declare abstract class IFromBTCWrapper<T extends ChainType, D extends IFromBTCDefinition<T, IFromBTCWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends IEscrowSwapWrapper<T, D, O> {
9
+ /**
10
+ * Returns a random sequence to be used for swaps
11
+ *
12
+ * @protected
13
+ * @returns Random 64-bit sequence number
14
+ */
15
+ protected getRandomSequence(): bigint;
16
+ /**
17
+ * Pre-fetches feeRate for a given swap
18
+ *
19
+ * @param signer Address initiating the swap
20
+ * @param amountData
21
+ * @param claimHash optional claim hash of the swap or null
22
+ * @param abortController
23
+ * @protected
24
+ * @returns Fee rate
25
+ */
26
+ protected preFetchFeeRate(signer: string, amountData: AmountData, claimHash: string | undefined, abortController: AbortController): Promise<string | undefined>;
27
+ /**
28
+ * Pre-fetches intermediary's available SC on-chain liquidity
29
+ * @param amountData
30
+ * @param lp Intermediary
31
+ * @param abortController
32
+ * @protected
33
+ * @returns Intermediary's liquidity balance
34
+ */
35
+ protected preFetchIntermediaryLiquidity(amountData: AmountData, lp: Intermediary, abortController: AbortController): Promise<bigint | undefined>;
36
+ /**
37
+ * Verifies whether the intermediary has enough available liquidity such that we can initiate the swap
38
+ *
39
+ * @param amount Swap amount that we should receive
40
+ * @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()
41
+ * @protected
42
+ * @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap
43
+ */
44
+ protected verifyIntermediaryLiquidity(amount: bigint, liquidityPromise: Promise<bigint>): Promise<void>;
45
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IFromBTCWrapper = void 0;
4
+ const IntermediaryError_1 = require("../../../errors/IntermediaryError");
5
+ const Utils_1 = require("../../../utils/Utils");
6
+ const base_1 = require("@atomiqlabs/base");
7
+ const IEscrowSwapWrapper_1 = require("../IEscrowSwapWrapper");
8
+ class IFromBTCWrapper extends IEscrowSwapWrapper_1.IEscrowSwapWrapper {
9
+ /**
10
+ * Returns a random sequence to be used for swaps
11
+ *
12
+ * @protected
13
+ * @returns Random 64-bit sequence number
14
+ */
15
+ getRandomSequence() {
16
+ return base_1.BigIntBufferUtils.fromBuffer((0, Utils_1.randomBytes)(8));
17
+ }
18
+ /**
19
+ * Pre-fetches feeRate for a given swap
20
+ *
21
+ * @param signer Address initiating the swap
22
+ * @param amountData
23
+ * @param claimHash optional claim hash of the swap or null
24
+ * @param abortController
25
+ * @protected
26
+ * @returns Fee rate
27
+ */
28
+ preFetchFeeRate(signer, amountData, claimHash, abortController) {
29
+ return this.contract.getInitFeeRate(this.chain.randomAddress(), signer, amountData.token, claimHash)
30
+ .catch(e => {
31
+ this.logger.warn("preFetchFeeRate(): Error: ", e);
32
+ abortController.abort(e);
33
+ return undefined;
34
+ });
35
+ }
36
+ /**
37
+ * Pre-fetches intermediary's available SC on-chain liquidity
38
+ * @param amountData
39
+ * @param lp Intermediary
40
+ * @param abortController
41
+ * @protected
42
+ * @returns Intermediary's liquidity balance
43
+ */
44
+ preFetchIntermediaryLiquidity(amountData, lp, abortController) {
45
+ return lp.getLiquidity(this.chainIdentifier, this.contract, amountData.token.toString(), abortController.signal).catch(e => {
46
+ this.logger.warn("preFetchIntermediaryLiquidity(): Error: ", e);
47
+ abortController.abort(e);
48
+ return undefined;
49
+ });
50
+ }
51
+ /**
52
+ * Verifies whether the intermediary has enough available liquidity such that we can initiate the swap
53
+ *
54
+ * @param amount Swap amount that we should receive
55
+ * @param liquidityPromise pre-fetched liquidity promise as obtained from preFetchIntermediaryLiquidity()
56
+ * @protected
57
+ * @throws {IntermediaryError} if intermediary's liquidity is lower than what's required for the swap
58
+ */
59
+ async verifyIntermediaryLiquidity(amount, liquidityPromise) {
60
+ const liquidity = await liquidityPromise;
61
+ if (liquidity < amount)
62
+ throw new IntermediaryError_1.IntermediaryError("Intermediary doesn't have enough liquidity");
63
+ }
64
+ }
65
+ exports.IFromBTCWrapper = IFromBTCWrapper;
@@ -0,0 +1,263 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { FromBTCLNDefinition, FromBTCLNWrapper } from "./FromBTCLNWrapper";
4
+ import { IFromBTCSelfInitSwap } from "../IFromBTCSelfInitSwap";
5
+ import { SwapType } from "../../../../enums/SwapType";
6
+ import { ChainType, SignatureData, SwapCommitState, SwapData } from "@atomiqlabs/base";
7
+ import { Buffer } from "buffer";
8
+ import { MinimalLightningNetworkWalletInterface } from "../../../../bitcoin/wallet/MinimalLightningNetworkWalletInterface";
9
+ import { IClaimableSwap } from "../../../IClaimableSwap";
10
+ import { IAddressSwap } from "../../../IAddressSwap";
11
+ import { IEscrowSelfInitSwapInit } from "../../IEscrowSelfInitSwap";
12
+ import { TokenAmount } from "../../../../types/TokenAmount";
13
+ import { BtcToken, SCToken } from "../../../../types/Token";
14
+ import { LoggerType } from "../../../../utils/Logger";
15
+ import { LNURLWithdraw } from "../../../../types/lnurl/LNURLWithdraw";
16
+ /**
17
+ * State enum for FromBTCLN swaps
18
+ * @category Swaps
19
+ */
20
+ export declare enum FromBTCLNSwapState {
21
+ FAILED = -4,
22
+ QUOTE_EXPIRED = -3,
23
+ QUOTE_SOFT_EXPIRED = -2,
24
+ EXPIRED = -1,
25
+ PR_CREATED = 0,
26
+ PR_PAID = 1,
27
+ CLAIM_COMMITED = 2,
28
+ CLAIM_CLAIMED = 3
29
+ }
30
+ export type FromBTCLNSwapInit<T extends SwapData> = IEscrowSelfInitSwapInit<T> & {
31
+ pr: string;
32
+ secret: string;
33
+ initialSwapData: T;
34
+ lnurl?: string;
35
+ lnurlK1?: string;
36
+ lnurlCallback?: string;
37
+ };
38
+ export declare function isFromBTCLNSwapInit<T extends SwapData>(obj: any): obj is FromBTCLNSwapInit<T>;
39
+ export declare class FromBTCLNSwap<T extends ChainType = ChainType> extends IFromBTCSelfInitSwap<T, FromBTCLNDefinition<T>, FromBTCLNSwapState> implements IAddressSwap, IClaimableSwap<T, FromBTCLNDefinition<T>, FromBTCLNSwapState> {
40
+ protected readonly logger: LoggerType;
41
+ protected readonly inputToken: BtcToken<true>;
42
+ protected readonly TYPE = SwapType.FROM_BTCLN;
43
+ protected readonly lnurlFailSignal: AbortController;
44
+ protected readonly pr: string;
45
+ protected readonly secret: string;
46
+ protected initialSwapData: T["Data"];
47
+ lnurl?: string;
48
+ lnurlK1?: string;
49
+ lnurlCallback?: string;
50
+ prPosted?: boolean;
51
+ protected getSwapData(): T["Data"];
52
+ constructor(wrapper: FromBTCLNWrapper<T>, init: FromBTCLNSwapInit<T["Data"]>);
53
+ constructor(wrapper: FromBTCLNWrapper<T>, obj: any);
54
+ protected upgradeVersion(): void;
55
+ protected getIdentifierHash(): Buffer;
56
+ protected getPaymentHash(): Buffer;
57
+ protected canCommit(): boolean;
58
+ getInputAddress(): string | null;
59
+ getInputTxId(): string;
60
+ /**
61
+ * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
62
+ */
63
+ getAddress(): string;
64
+ getHyperlink(): string;
65
+ /**
66
+ * Returns the timeout time (in UNIX milliseconds) when the swap will definitelly be considered as expired
67
+ * if the LP doesn't make it expired sooner
68
+ */
69
+ getDefinitiveExpiryTime(): number;
70
+ /**
71
+ * Returns timeout time (in UNIX milliseconds) when the LN invoice will expire
72
+ */
73
+ getTimeoutTime(): number;
74
+ /**
75
+ * Returns timeout time (in UNIX milliseconds) when the swap htlc will expire
76
+ */
77
+ getHtlcTimeoutTime(): number;
78
+ isFinished(): boolean;
79
+ isClaimable(): boolean;
80
+ isSuccessful(): boolean;
81
+ isFailed(): boolean;
82
+ isQuoteExpired(): boolean;
83
+ isQuoteSoftExpired(): boolean;
84
+ _verifyQuoteDefinitelyExpired(): Promise<boolean>;
85
+ verifyQuoteValid(): Promise<boolean>;
86
+ getInputToken(): BtcToken<true>;
87
+ getInput(): TokenAmount<T["ChainId"], BtcToken<true>>;
88
+ getSmartChainNetworkFee(): Promise<TokenAmount<T["ChainId"], SCToken<T["ChainId"]>>>;
89
+ hasEnoughForTxFees(): Promise<{
90
+ enoughBalance: boolean;
91
+ balance: TokenAmount;
92
+ required: TokenAmount;
93
+ }>;
94
+ /**
95
+ * Executes the swap with the provided bitcoin lightning network wallet or LNURL
96
+ *
97
+ * @param dstSigner Signer on the destination network, needs to have the same address as the one specified when
98
+ * quote was created, this is required for legacy swaps because the destination wallet needs to actively claim
99
+ * the swap funds on the destination (this also means you need native token to cover gas costs)
100
+ * @param walletOrLnurlWithdraw Bitcoin lightning wallet to use to pay the lightning network invoice, or an LNURL-withdraw
101
+ * link, wallet is not required and the LN invoice can be paid externally as well (just pass null or undefined here)
102
+ * @param callbacks Callbacks to track the progress of the swap
103
+ * @param options Optional options for the swap like feeRate, AbortSignal, and timeouts/intervals
104
+ */
105
+ execute(dstSigner: T["Signer"] | T["NativeSigner"], walletOrLnurlWithdraw?: MinimalLightningNetworkWalletInterface | LNURLWithdraw | string | null | undefined, callbacks?: {
106
+ onSourceTransactionReceived?: (sourceTxId: string) => void;
107
+ onDestinationCommitSent?: (destinationCommitTxId: string) => void;
108
+ onDestinationClaimSent?: (destinationClaimTxId: string) => void;
109
+ onSwapSettled?: (destinationTxId: string) => void;
110
+ }, options?: {
111
+ abortSignal?: AbortSignal;
112
+ lightningTxCheckIntervalSeconds?: number;
113
+ delayBetweenCommitAndClaimSeconds?: number;
114
+ }): Promise<void>;
115
+ txsExecute(options?: {
116
+ skipChecks?: boolean;
117
+ }): Promise<{
118
+ name: "Payment";
119
+ description: string;
120
+ chain: string;
121
+ txs: {
122
+ address: string;
123
+ hyperlink: string;
124
+ }[];
125
+ }[] | ({
126
+ name: "Commit";
127
+ description: string;
128
+ chain: T["ChainId"];
129
+ txs: T["TX"][];
130
+ } | {
131
+ name: "Claim";
132
+ description: string;
133
+ chain: T["ChainId"];
134
+ txs: T["TX"][];
135
+ })[]>;
136
+ /**
137
+ * Checks whether the LP received the LN payment and we can continue by committing & claiming the HTLC on-chain
138
+ *
139
+ * @param save If the new swap state should be saved
140
+ */
141
+ _checkIntermediaryPaymentReceived(save?: boolean): Promise<boolean | null>;
142
+ /**
143
+ * Checks the data returned by the intermediary in the payment auth request
144
+ *
145
+ * @param signer Smart chain signer's address initiating the swap
146
+ * @param data Parsed swap data as returned by the intermediary
147
+ * @param signature Signature data as returned by the intermediary
148
+ * @protected
149
+ * @throws {IntermediaryError} If the returned are not valid
150
+ * @throws {SignatureVerificationError} If the returned signature is not valid
151
+ * @throws {Error} If the swap is already committed on-chain
152
+ */
153
+ protected checkIntermediaryReturnedAuthData(signer: string, data: T["Data"], signature: SignatureData): Promise<void>;
154
+ /**
155
+ * Waits till an LN payment is received by the intermediary and client can continue commiting & claiming the HTLC
156
+ *
157
+ * @param onPaymentReceived Callback as for when the LP reports having received the ln payment
158
+ * @param abortSignal Abort signal to stop waiting for payment
159
+ * @param checkIntervalSeconds How often to poll the intermediary for answer
160
+ */
161
+ waitForPayment(onPaymentReceived?: (txId: string) => void, checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
162
+ /**
163
+ * Commits the swap on-chain, locking the tokens from the intermediary in an HTLC
164
+ *
165
+ * @param _signer Signer to sign the transactions with, must be the same as used in the initialization
166
+ * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort
167
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
168
+ * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
169
+ * @param onBeforeTxSent
170
+ * @throws {Error} If invalid signer is provided that doesn't match the swap data
171
+ */
172
+ commit(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeTxSent?: (txId: string) => void): Promise<string>;
173
+ waitTillCommited(abortSignal?: AbortSignal): Promise<void>;
174
+ /**
175
+ * Unsafe txs claim getter without state checking!
176
+ *
177
+ * @param _signer
178
+ * @private
179
+ */
180
+ private _txsClaim;
181
+ /**
182
+ * Returns transactions required for claiming the HTLC and finishing the swap by revealing the HTLC secret
183
+ * (hash preimage)
184
+ *
185
+ * @param _signer Optional signer address to use for claiming the swap, can also be different from the initializer
186
+ * @throws {Error} If in invalid state (must be CLAIM_COMMITED)
187
+ */
188
+ txsClaim(_signer?: T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
189
+ /**
190
+ * Claims and finishes the swap
191
+ *
192
+ * @param _signer Signer to sign the transactions with, can also be different to the initializer
193
+ * @param abortSignal Abort signal to stop waiting for transaction confirmation
194
+ * @param onBeforeTxSent
195
+ */
196
+ claim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, onBeforeTxSent?: (txId: string) => void): Promise<string>;
197
+ /**
198
+ * Waits till the swap is successfully claimed
199
+ *
200
+ * @param maxWaitTimeSeconds Maximum time in seconds to wait for the swap to be settled
201
+ * @param abortSignal AbortSignal
202
+ * @throws {Error} If swap is in invalid state (must be BTC_TX_CONFIRMED)
203
+ * @throws {Error} If the LP refunded sooner than we were able to claim
204
+ * @returns {boolean} whether the swap was claimed in time or not
205
+ */
206
+ waitTillClaimed(maxWaitTimeSeconds?: number, abortSignal?: AbortSignal): Promise<boolean>;
207
+ /**
208
+ * Estimated transaction fee for commit & claim txs combined
209
+ */
210
+ getCommitAndClaimFee(): Promise<bigint>;
211
+ canCommitAndClaimInOneShot(): boolean;
212
+ /**
213
+ * Returns transactions for both commit & claim operation together, such that they can be signed all at once by
214
+ * the wallet. CAUTION: transactions must be sent sequentially, such that the claim (2nd) transaction is only
215
+ * sent after the commit (1st) transaction confirms. Failure to do so can reveal the HTLC pre-image too soon,
216
+ * opening a possibility for the LP to steal funds.
217
+ *
218
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
219
+ * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
220
+ *
221
+ * @throws {Error} If in invalid state (must be PR_PAID or CLAIM_COMMITED)
222
+ */
223
+ txsCommitAndClaim(skipChecks?: boolean): Promise<T["TX"][]>;
224
+ /**
225
+ * Commits and claims the swap, in a way that the transactions can be signed together by the underlying provider and
226
+ * then sent sequentially
227
+ *
228
+ * @param _signer Signer to sign the transactions with, must be the same as used in the initialization
229
+ * @param abortSignal Abort signal to stop waiting for the transaction confirmation and abort
230
+ * @param skipChecks Skip checks like making sure init signature is still valid and swap wasn't commited yet
231
+ * (this is handled when swap is created (quoted), if you commit right after quoting, you can use skipChecks=true)
232
+ * @param onBeforeCommitTxSent
233
+ * @param onBeforeClaimTxSent
234
+ * @throws {Error} If in invalid state (must be PR_PAID or CLAIM_COMMITED)
235
+ * @throws {Error} If invalid signer is provided that doesn't match the swap data
236
+ */
237
+ commitAndClaim(_signer: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal, skipChecks?: boolean, onBeforeCommitTxSent?: (txId: string) => void, onBeforeClaimTxSent?: (txId: string) => void): Promise<string[]>;
238
+ /**
239
+ * Is this an LNURL-withdraw swap?
240
+ */
241
+ isLNURL(): boolean;
242
+ /**
243
+ * Gets the used LNURL or null if this is not an LNURL-withdraw swap
244
+ */
245
+ getLNURL(): string | null;
246
+ /**
247
+ * Pay the generated lightning network invoice with LNURL-withdraw
248
+ */
249
+ settleWithLNURLWithdraw(lnurl: string | LNURLWithdraw): Promise<void>;
250
+ serialize(): any;
251
+ /**
252
+ * Checks the swap's state on-chain and compares it to its internal state, updates/changes it according to on-chain
253
+ * data
254
+ *
255
+ * @private
256
+ */
257
+ private syncStateFromChain;
258
+ _shouldFetchExpiryStatus(): boolean;
259
+ _shouldFetchCommitStatus(): boolean;
260
+ _shouldCheckIntermediary(): boolean;
261
+ _sync(save?: boolean, quoteDefinitelyExpired?: boolean, commitStatus?: SwapCommitState, skipLpCheck?: boolean): Promise<boolean>;
262
+ _tick(save?: boolean): Promise<boolean>;
263
+ }