@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,300 @@
1
+ import {IntermediaryDiscovery, SwapBounds} from "../intermediaries/IntermediaryDiscovery";
2
+ import {SwapType} from "../enums/SwapType";
3
+ import {LnForGasSwap} from "../swaps/trusted/ln/LnForGasSwap";
4
+ import {ISwap} from "../swaps/ISwap";
5
+ import {IToBTCSwap} from "../swaps/escrow_swaps/tobtc/IToBTCSwap";
6
+ import {ChainIds, MultiChain, SupportsSwapType} from "./Swapper";
7
+ import {FromBTCLNSwap} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
8
+ import {FromBTCSwap} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
9
+ import {ToBTCLNSwap} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
10
+ import {ToBTCSwap} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
11
+ import {SwapPriceWithChain} from "../prices/SwapPriceWithChain";
12
+ import {MempoolApi} from "../bitcoin/mempool/MempoolApi";
13
+ import {MempoolBitcoinRpc} from "../bitcoin/mempool/MempoolBitcoinRpc";
14
+ import {BTC_NETWORK} from "@scure/btc-signer/utils";
15
+ import {ToBTCOptions} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
16
+ import {ToBTCLNOptions} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
17
+ import {FromBTCOptions} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
18
+ import {FromBTCLNOptions} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
19
+ import {SwapperUtils} from "./SwapperUtils";
20
+ import {SpvFromBTCSwap} from "../swaps/spv_swaps/SpvFromBTCSwap";
21
+ import {SwapperWithChain} from "./SwapperWithChain";
22
+ import {SwapWithSigner, wrapSwapWithSigner} from "../types/SwapWithSigner";
23
+ import {OnchainForGasSwap} from "../swaps/trusted/onchain/OnchainForGasSwap";
24
+ import {FromBTCLNAutoSwap} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
25
+ import {FromBTCLNAutoOptions} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
26
+ import {TokenAmount} from "../types/TokenAmount";
27
+ import {BtcToken, SCToken, Token} from "../types/Token";
28
+ import {LNURLWithdraw} from "../types/lnurl/LNURLWithdraw";
29
+ import {LNURLPay} from "../types/lnurl/LNURLPay";
30
+
31
+ /**
32
+ * Chain and signer-specific wrapper for automatic signer injection into swap methods
33
+ * @category Core
34
+ */
35
+ export class SwapperWithSigner<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
36
+
37
+ readonly chainIdentifier: ChainIdentifier;
38
+ readonly swapper: SwapperWithChain<T, ChainIdentifier>;
39
+ readonly signer: T[ChainIdentifier]["Signer"];
40
+
41
+ get prices(): SwapPriceWithChain<T, ChainIdentifier> {
42
+ return this.swapper.prices;
43
+ }
44
+ get intermediaryDiscovery(): IntermediaryDiscovery {
45
+ return this.swapper.intermediaryDiscovery;
46
+ }
47
+ get mempoolApi(): MempoolApi {
48
+ return this.swapper.mempoolApi;
49
+ }
50
+ get bitcoinRpc(): MempoolBitcoinRpc {
51
+ return this.swapper.bitcoinRpc;
52
+ }
53
+ get bitcoinNetwork(): BTC_NETWORK {
54
+ return this.swapper.bitcoinNetwork;
55
+ }
56
+ get Utils(): SwapperUtils<T> {
57
+ return this.swapper.Utils;
58
+ }
59
+ get SwapTypeInfo() {
60
+ return this.swapper.SwapTypeInfo;
61
+ }
62
+
63
+ constructor(swapper: SwapperWithChain<T, ChainIdentifier>, signer: T[ChainIdentifier]["Signer"]) {
64
+ this.swapper = swapper;
65
+ this.signer = signer;
66
+ this.chainIdentifier = swapper.chainIdentifier;
67
+ }
68
+
69
+ createToBTCSwap(
70
+ tokenAddress: string,
71
+ address: string,
72
+ amount: bigint,
73
+ exactIn?: boolean,
74
+ additionalParams?: Record<string, any>,
75
+ options?: ToBTCOptions
76
+ ): Promise<SwapWithSigner<ToBTCSwap<T[ChainIdentifier]>>> {
77
+ return this.swapper.createToBTCSwap(this.signer.getAddress(), tokenAddress, address, amount, exactIn, additionalParams, options)
78
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
79
+ }
80
+
81
+ createToBTCLNSwap(
82
+ tokenAddress: string,
83
+ paymentRequest: string,
84
+ additionalParams?: Record<string, any>,
85
+ options?: ToBTCLNOptions & {comment?: string}
86
+ ): Promise<SwapWithSigner<ToBTCLNSwap<T[ChainIdentifier]>>> {
87
+ return this.swapper.createToBTCLNSwap(this.signer.getAddress(), tokenAddress, paymentRequest, additionalParams, options)
88
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
89
+ }
90
+
91
+ createToBTCLNSwapViaLNURL(
92
+ tokenAddress: string,
93
+ lnurlPay: string | LNURLPay,
94
+ amount: bigint,
95
+ exactIn?: boolean,
96
+ additionalParams?: Record<string, any>,
97
+ options?: ToBTCLNOptions
98
+ ): Promise<SwapWithSigner<ToBTCLNSwap<T[ChainIdentifier]>>> {
99
+ return this.swapper.createToBTCLNSwapViaLNURL(this.signer.getAddress(), tokenAddress, lnurlPay, amount, exactIn, additionalParams, options)
100
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
101
+ }
102
+
103
+ createFromBTCSwap(
104
+ tokenAddress: string,
105
+ amount: bigint,
106
+ exactOut?: boolean,
107
+ additionalParams?: Record<string, any>,
108
+ options?: FromBTCOptions
109
+ ): Promise<SwapWithSigner<FromBTCSwap<T[ChainIdentifier]>>> {
110
+ return this.swapper.createFromBTCSwap(this.signer.getAddress(), tokenAddress, amount, exactOut, additionalParams, options)
111
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
112
+ }
113
+
114
+ createFromBTCLNSwap(
115
+ tokenAddress: string,
116
+ amount: bigint,
117
+ exactOut?: boolean,
118
+ additionalParams?: Record<string, any>,
119
+ options?: FromBTCLNOptions
120
+ ): Promise<SwapWithSigner<FromBTCLNSwap<T[ChainIdentifier]>>> {
121
+ return this.swapper.createFromBTCLNSwap(this.signer.getAddress(), tokenAddress, amount, exactOut, additionalParams, options)
122
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
123
+ }
124
+
125
+ createFromBTCLNSwapViaLNURL(
126
+ tokenAddress: string,
127
+ lnurl: string | LNURLWithdraw,
128
+ amount: bigint,
129
+ exactOut?: boolean,
130
+ additionalParams?: Record<string, any>
131
+ ): Promise<SwapWithSigner<FromBTCLNSwap<T[ChainIdentifier]>>> {
132
+ return this.swapper.createFromBTCLNSwapViaLNURL(this.signer.getAddress(), tokenAddress, lnurl, amount, exactOut, additionalParams)
133
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
134
+ }
135
+
136
+ createFromBTCLNSwapNew(
137
+ tokenAddress: string,
138
+ amount: bigint,
139
+ exactOut?: boolean,
140
+ additionalParams?: Record<string, any>,
141
+ options?: FromBTCLNAutoOptions
142
+ ): Promise<SwapWithSigner<FromBTCLNAutoSwap<T[ChainIdentifier]>>> {
143
+ return this.swapper.createFromBTCLNSwapNew(this.signer.getAddress(), tokenAddress, amount, exactOut, additionalParams, options)
144
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
145
+ }
146
+
147
+ createFromBTCLNSwapNewViaLNURL(
148
+ tokenAddress: string,
149
+ lnurl: string | LNURLWithdraw,
150
+ amount: bigint,
151
+ exactOut?: boolean,
152
+ additionalParams?: Record<string, any>,
153
+ options?: FromBTCLNAutoOptions
154
+ ): Promise<SwapWithSigner<FromBTCLNAutoSwap<T[ChainIdentifier]>>> {
155
+ return this.swapper.createFromBTCLNSwapNewViaLNURL(this.signer.getAddress(), tokenAddress, lnurl, amount, exactOut, additionalParams, options)
156
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
157
+ }
158
+
159
+ createTrustedLNForGasSwap(amount: bigint, trustedIntermediaryUrl?: string): Promise<LnForGasSwap<T[ChainIdentifier]>> {
160
+ return this.swapper.createTrustedLNForGasSwap(this.signer.getAddress(), amount, trustedIntermediaryUrl);
161
+ }
162
+
163
+ createTrustedOnchainForGasSwap(amount: bigint, refundAddress?: string, trustedIntermediaryUrl?: string): Promise<OnchainForGasSwap<T[ChainIdentifier]>> {
164
+ return this.swapper.createTrustedOnchainForGasSwap(this.signer.getAddress(), amount, refundAddress, trustedIntermediaryUrl);
165
+ }
166
+
167
+ create(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean, lnurlWithdraw?: string | LNURLWithdraw): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>)>;
168
+ create(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
169
+ create(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[ChainIdentifier]>>;
170
+ create(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
171
+ create(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: false, lightningInvoice: string | LNURLWithdraw | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
172
+ /**
173
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
174
+ * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
175
+ * invoice's pre-set amount is used instead.
176
+ *
177
+ * @param srcToken Source token of the swap, user pays this token
178
+ * @param dstToken Destination token of the swap, user receives this token
179
+ * @param amount Amount of the swap
180
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
181
+ * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
182
+ * LNURL-withdrawal to withdraw money from
183
+ */
184
+ create(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>, amount: bigint, exactIn: boolean, addressLnurlLightningInvoice?: string | LNURLWithdraw | LNURLPay): Promise<SwapWithSigner<ISwap<T[ChainIdentifier]>>> {
185
+ return this.swapper.create(this.signer.getAddress(), srcToken as any, dstToken as any, amount, exactIn, addressLnurlLightningInvoice as any)
186
+ .then(swap => wrapSwapWithSigner(swap, this.signer));
187
+ }
188
+
189
+ /**
190
+ * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address
191
+ */
192
+ getAllSwaps(): Promise<ISwap<T[ChainIdentifier]>[]> {
193
+ return this.swapper.getAllSwaps(this.signer.getAddress());
194
+ }
195
+
196
+ /**
197
+ * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address
198
+ */
199
+ getActionableSwaps(): Promise<ISwap<T[ChainIdentifier]>[]> {
200
+ return this.swapper.getActionableSwaps(this.signer.getAddress());
201
+ }
202
+
203
+ /**
204
+ * Returns swaps that are refundable for the specific chain, optionally also for a specific signer's address
205
+ */
206
+ getRefundableSwaps(): Promise<IToBTCSwap<T[ChainIdentifier]>[]> {
207
+ return this.swapper.getRefundableSwaps(this.signer.getAddress());
208
+ }
209
+
210
+ /**
211
+ * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
212
+ */
213
+ getSwapById(id: string): Promise<ISwap<T[ChainIdentifier]>> {
214
+ return this.swapper.getSwapById(id, this.signer.getAddress());
215
+ }
216
+
217
+ /**
218
+ * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes
219
+ */
220
+ async _syncSwaps(): Promise<void> {
221
+ return this.swapper._syncSwaps(this.signer.getAddress());
222
+ }
223
+
224
+ supportsSwapType<
225
+ Type extends SwapType
226
+ >(swapType: Type): SupportsSwapType<T[ChainIdentifier], Type> {
227
+ return this.swapper.supportsSwapType(swapType);
228
+ }
229
+
230
+ /**
231
+ * Returns type of the swap based on input and output tokens specified
232
+ *
233
+ * @param srcToken
234
+ * @param dstToken
235
+ */
236
+ getSwapType(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN);
237
+ getSwapType(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC);
238
+ getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>): SwapType.TO_BTC;
239
+ getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
240
+ getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN;
241
+ getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN {
242
+ return this.swapper.getSwapType(srcToken, dstToken);
243
+ }
244
+
245
+ /**
246
+ * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
247
+ *
248
+ * @param srcToken
249
+ * @param dstToken
250
+ */
251
+ getSwapLimits<A extends Token<ChainIdentifier>, B extends Token<ChainIdentifier>>(srcToken: A, dstToken: B): {
252
+ input: {min: TokenAmount<string, A>, max?: TokenAmount<string, A>},
253
+ output: {min: TokenAmount<string, B>, max?: TokenAmount<string, B>}
254
+ } {
255
+ return this.swapper.getSwapLimits<A, B>(srcToken, dstToken);
256
+ }
257
+
258
+ /**
259
+ * Returns tokens that you can swap to (if input=true) from a given token,
260
+ * or tokens that you can swap from (if input=false) to a given token
261
+ */
262
+ getSwapCounterTokens(token: Token, input: boolean): Token<ChainIdentifier>[] {
263
+ return this.swapper.getSwapCounterTokens(token, input);
264
+ }
265
+
266
+
267
+ ///////////////////////////////////
268
+ /// Deprecated
269
+
270
+ /**
271
+ * Returns swap bounds (minimums & maximums) for different swap types & tokens
272
+ * @deprecated Use getSwapLimits() instead!
273
+ */
274
+ getSwapBounds(): SwapBounds {
275
+ return this.swapper.getSwapBounds();
276
+ }
277
+
278
+ /**
279
+ * Returns maximum possible swap amount
280
+ * @deprecated Use getSwapLimits() instead!
281
+ *
282
+ * @param type Type of the swap
283
+ * @param token Token of the swap
284
+ */
285
+ getMaximum(type: SwapType, token: string): bigint {
286
+ return this.swapper.getMaximum(type, token);
287
+ }
288
+
289
+ /**
290
+ * Returns minimum possible swap amount
291
+ * @deprecated Use getSwapLimits() instead!
292
+ *
293
+ * @param type Type of swap
294
+ * @param token Token of the swap
295
+ */
296
+ getMinimum(type: SwapType, token: string): bigint {
297
+ return this.swapper.getMinimum(type, token);
298
+ }
299
+
300
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Type guard to check if an object is an IAddressSwap
3
+ * @category Swaps
4
+ */
5
+ export function isIAddressSwap(obj: any): obj is IAddressSwap {
6
+ return obj!=null &&
7
+ typeof(obj.getAddress) === "function" &&
8
+ typeof(obj.getHyperlink) === "function";
9
+ }
10
+
11
+ /**
12
+ * Interface for swaps which require a user to send funds to a specific address
13
+ * @category Swaps
14
+ */
15
+ export interface IAddressSwap {
16
+
17
+ getAddress(): string;
18
+ getHyperlink(): string;
19
+
20
+ }
@@ -0,0 +1,77 @@
1
+ import {IBitcoinWallet} from "../bitcoin/wallet/IBitcoinWallet";
2
+ import {Transaction} from "@scure/btc-signer";
3
+ import {
4
+ MinimalBitcoinWalletInterface,
5
+ MinimalBitcoinWalletInterfaceWithSigner
6
+ } from "../bitcoin/wallet/MinimalBitcoinWalletInterface";
7
+ import {TokenAmount} from "../types/TokenAmount";
8
+ import {BtcToken} from "../types/Token";
9
+
10
+ /**
11
+ * Type guard to check if an object is an IBTCWalletSwap
12
+ * @category Swaps
13
+ */
14
+ export function isIBTCWalletSwap(obj: any): obj is IBTCWalletSwap {
15
+ return obj!=null &&
16
+ typeof(obj.getFundedPsbt) === "function" &&
17
+ typeof(obj.submitPsbt) === "function" &&
18
+ typeof(obj.estimateBitcoinFee) === "function" &&
19
+ typeof(obj.sendBitcoinTransaction) === "function" &&
20
+ typeof(obj.waitForBitcoinTransaction) === "function" &&
21
+ typeof(obj.getRequiredConfirmationsCount) === "function";
22
+ }
23
+
24
+ /**
25
+ * Interface for swaps requiring Bitcoin wallet interaction
26
+ * @category Swaps
27
+ */
28
+ export interface IBTCWalletSwap {
29
+
30
+ /**
31
+ * Returns the PSBT that is already funded with wallet's UTXOs (runs a coin-selection algorithm to choose UTXOs to use),
32
+ * also returns inputs indices that need to be signed by the wallet before submitting the PSBT back to the SDK with
33
+ * `swap.submitPsbt()`
34
+ *
35
+ * @param _bitcoinWallet Sender's bitcoin wallet
36
+ * @param feeRate Optional fee rate for the transaction, needs to be at least as big as {minimumBtcFeeRate} field
37
+ * @param additionalOutputs additional outputs to add to the PSBT - can be used to collect fees from users
38
+ */
39
+ getFundedPsbt(
40
+ _bitcoinWallet: IBitcoinWallet | MinimalBitcoinWalletInterface,
41
+ feeRate?: number,
42
+ additionalOutputs?: ({amount: bigint, outputScript: Uint8Array} | {amount: bigint, address: string})[]
43
+ ): Promise<{psbt: Transaction, psbtHex: string, psbtBase64: string, signInputs: number[]}>;
44
+
45
+ /**
46
+ * Submits a PSBT signed by the wallet back to the SDK
47
+ *
48
+ * @param psbt A psbt - either a Transaction object or a hex or base64 encoded PSBT string
49
+ */
50
+ submitPsbt(psbt: Transaction | string): Promise<string>;
51
+
52
+
53
+ estimateBitcoinFee(wallet: IBitcoinWallet | MinimalBitcoinWalletInterface, feeRate?: number): Promise<TokenAmount<any, BtcToken<false>> | null>;
54
+
55
+
56
+ sendBitcoinTransaction(
57
+ wallet: IBitcoinWallet | MinimalBitcoinWalletInterfaceWithSigner,
58
+ feeRate?: number
59
+ ): Promise<string>;
60
+
61
+ /**
62
+ * Waits till the bitcoin transaction confirms
63
+ *
64
+ * @param updateCallback Callback called when txId is found, and also called with subsequent confirmations
65
+ * @param checkIntervalSeconds How often to check the bitcoin transaction
66
+ * @param abortSignal Abort signal
67
+ * @throws {Error} if in invalid state (must be CLAIM_COMMITED)
68
+ */
69
+ waitForBitcoinTransaction(
70
+ updateCallback?: (txId?: string, confirmations?: number, targetConfirmations?: number, txEtaMs?: number) => void,
71
+ checkIntervalSeconds?: number,
72
+ abortSignal?: AbortSignal,
73
+ ): Promise<string>;
74
+
75
+ getRequiredConfirmationsCount(): number;
76
+
77
+ }
@@ -0,0 +1,30 @@
1
+ import {ChainType} from "@atomiqlabs/base";
2
+ import {ISwap} from "./ISwap";
3
+ import {ISwapWrapper, SwapTypeDefinition} from "./ISwapWrapper";
4
+
5
+ /**
6
+ * Type guard to check if an object is an IClaimableSwap
7
+ * @category Swaps
8
+ */
9
+ export function isIClaimableSwap(obj: any): obj is IClaimableSwap {
10
+ return obj!=null &&
11
+ typeof(obj.isClaimable) === "function" &&
12
+ typeof(obj.txsClaim) === "function" &&
13
+ typeof(obj.claim) === "function";
14
+ }
15
+
16
+ /**
17
+ * Interface for swaps that can be claimed
18
+ * @category Swaps
19
+ */
20
+ export interface IClaimableSwap<
21
+ T extends ChainType = ChainType,
22
+ D extends SwapTypeDefinition<T, ISwapWrapper<T, D>, IClaimableSwap<T, D, S>> = SwapTypeDefinition<T, ISwapWrapper<T, any>, IClaimableSwap<T, any, any>>,
23
+ S extends number = number
24
+ > extends ISwap<T, D, S> {
25
+
26
+ isClaimable(): boolean;
27
+ txsClaim(_signer?: T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
28
+ claim(_signer?: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
29
+
30
+ }
@@ -0,0 +1,9 @@
1
+ import {ISwap} from "./ISwap";
2
+ import {IClaimableSwap} from "./IClaimableSwap";
3
+
4
+
5
+ export interface IClaimableSwapWrapper<T extends ISwap & IClaimableSwap = ISwap & IClaimableSwap> {
6
+
7
+ claimableSwapStates: T["state"][];
8
+
9
+ }
@@ -0,0 +1,29 @@
1
+ import {ChainType} from "@atomiqlabs/base";
2
+ import {ISwap} from "./ISwap";
3
+ import {ISwapWrapper, SwapTypeDefinition} from "./ISwapWrapper";
4
+
5
+ /**
6
+ * Type guard to check if an object is an IRefundableSwap
7
+ * @category Swaps
8
+ */
9
+ export function isIRefundableSwap(obj: any): obj is IRefundableSwap {
10
+ return typeof(obj.isRefundable) === "function" &&
11
+ typeof(obj.txsRefund) === "function" &&
12
+ typeof(obj.refund) === "function";
13
+ }
14
+
15
+ /**
16
+ * Interface for swaps that can be refunded
17
+ * @category Swaps
18
+ */
19
+ export interface IRefundableSwap<
20
+ T extends ChainType = ChainType,
21
+ D extends SwapTypeDefinition<T, ISwapWrapper<T, D>, IRefundableSwap<T, D, S>> = SwapTypeDefinition<T, ISwapWrapper<T, any>, IRefundableSwap<T, any, any>>,
22
+ S extends number = number
23
+ > extends ISwap<T, D, S> {
24
+
25
+ isRefundable(): boolean;
26
+ txsRefund(_signer?: T["Signer"] | T["NativeSigner"]): Promise<T["TX"][]>;
27
+ refund(_signer?: T["Signer"] | T["NativeSigner"], abortSignal?: AbortSignal): Promise<string>;
28
+
29
+ }