@atomiqlabs/sdk 7.0.11 → 8.0.7

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} +40 -22
  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} +116 -75
  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,533 @@
1
+ /// <reference types="node" />
2
+ import { ISwapPrice } from "../prices/abstract/ISwapPrice";
3
+ import { BitcoinNetwork, BtcRelay, ChainData, ChainType, Messenger, RelaySynchronizer } from "@atomiqlabs/base";
4
+ import { InvoiceCreateService, ToBTCLNOptions, ToBTCLNWrapper } from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
5
+ import { ToBTCOptions, ToBTCWrapper } from "../swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
6
+ import { FromBTCLNOptions, FromBTCLNWrapper } from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
7
+ import { FromBTCOptions, FromBTCWrapper } from "../swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
8
+ import { IntermediaryDiscovery, MultichainSwapBounds, SwapBounds } from "../intermediaries/IntermediaryDiscovery";
9
+ import { ISwap } from "../swaps/ISwap";
10
+ import { SwapType } from "../enums/SwapType";
11
+ import { FromBTCLNSwap } from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
12
+ import { FromBTCSwap } from "../swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
13
+ import { ToBTCLNSwap } from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
14
+ import { ToBTCSwap } from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
15
+ import { LnForGasWrapper } from "../swaps/trusted/ln/LnForGasWrapper";
16
+ import { LnForGasSwap } from "../swaps/trusted/ln/LnForGasSwap";
17
+ import { EventEmitter } from "events";
18
+ import { Intermediary } from "../intermediaries/Intermediary";
19
+ import { WrapperCtorTokens } from "../swaps/ISwapWrapper";
20
+ import { SwapperWithChain } from "./SwapperWithChain";
21
+ import { OnchainForGasSwap } from "../swaps/trusted/onchain/OnchainForGasSwap";
22
+ import { OnchainForGasWrapper } from "../swaps/trusted/onchain/OnchainForGasWrapper";
23
+ import { BTC_NETWORK } from "@scure/btc-signer/utils";
24
+ import { IUnifiedStorage } from "../storage/IUnifiedStorage";
25
+ import { UnifiedSwapStorage, UnifiedSwapStorageCompositeIndexes, UnifiedSwapStorageIndexes } from "../storage/UnifiedSwapStorage";
26
+ import { UnifiedSwapEventListener } from "../events/UnifiedSwapEventListener";
27
+ import { IToBTCSwap } from "../swaps/escrow_swaps/tobtc/IToBTCSwap";
28
+ import { SpvFromBTCOptions, SpvFromBTCWrapper } from "../swaps/spv_swaps/SpvFromBTCWrapper";
29
+ import { SpvFromBTCSwap } from "../swaps/spv_swaps/SpvFromBTCSwap";
30
+ import { SwapperUtils } from "./SwapperUtils";
31
+ import { FromBTCLNAutoOptions, FromBTCLNAutoWrapper } from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
32
+ import { FromBTCLNAutoSwap } from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
33
+ import { SwapAmountType } from "../enums/SwapAmountType";
34
+ import { IClaimableSwap } from "../swaps/IClaimableSwap";
35
+ import { SwapTypeMapping } from "../utils/SwapUtils";
36
+ import { MempoolBitcoinBlock } from "../bitcoin/mempool/MempoolBitcoinBlock";
37
+ import { MempoolBitcoinRpc } from "../bitcoin/mempool/MempoolBitcoinRpc";
38
+ import { MempoolApi } from "../bitcoin/mempool/MempoolApi";
39
+ import { TokenAmount } from "../types/TokenAmount";
40
+ import { BtcToken, SCToken, Token } from "../types/Token";
41
+ import { LNURLWithdraw } from "../types/lnurl/LNURLWithdraw";
42
+ import { LNURLPay } from "../types/lnurl/LNURLPay";
43
+ import { NotNever } from "../utils/TypeUtils";
44
+ /**
45
+ * Configuration options for the Swapper
46
+ * @category Core
47
+ */
48
+ export type SwapperOptions = {
49
+ intermediaryUrl?: string | string[];
50
+ registryUrl?: string;
51
+ bitcoinNetwork?: BitcoinNetwork;
52
+ getRequestTimeout?: number;
53
+ postRequestTimeout?: number;
54
+ defaultAdditionalParameters?: {
55
+ [key: string]: any;
56
+ };
57
+ storagePrefix?: string;
58
+ defaultTrustedIntermediaryUrl?: string;
59
+ swapStorage?: <T extends ChainType>(chainId: T["ChainId"]) => IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
60
+ noTimers?: boolean;
61
+ noEvents?: boolean;
62
+ noSwapCache?: boolean;
63
+ dontCheckPastSwaps?: boolean;
64
+ dontFetchLPs?: boolean;
65
+ saveUninitializedSwaps?: boolean;
66
+ automaticClockDriftCorrection?: boolean;
67
+ };
68
+ /**
69
+ * Type representing multiple blockchain configurations
70
+ * @category Core
71
+ */
72
+ export type MultiChain = {
73
+ [chainIdentifier in string]: ChainType;
74
+ };
75
+ type ChainSpecificData<T extends ChainType> = {
76
+ wrappers: {
77
+ [SwapType.TO_BTCLN]: ToBTCLNWrapper<T>;
78
+ [SwapType.TO_BTC]: ToBTCWrapper<T>;
79
+ [SwapType.FROM_BTCLN]: FromBTCLNWrapper<T>;
80
+ [SwapType.FROM_BTC]: FromBTCWrapper<T>;
81
+ [SwapType.TRUSTED_FROM_BTCLN]: LnForGasWrapper<T>;
82
+ [SwapType.TRUSTED_FROM_BTC]: OnchainForGasWrapper<T>;
83
+ [SwapType.SPV_VAULT_FROM_BTC]: SpvFromBTCWrapper<T>;
84
+ [SwapType.FROM_BTCLN_AUTO]: FromBTCLNAutoWrapper<T>;
85
+ };
86
+ chainEvents: T["Events"];
87
+ swapContract: T["Contract"];
88
+ spvVaultContract: T["SpvVaultContract"];
89
+ chainInterface: T["ChainInterface"];
90
+ btcRelay: BtcRelay<any, T["TX"], MempoolBitcoinBlock, T["Signer"]>;
91
+ synchronizer: RelaySynchronizer<any, T["TX"], MempoolBitcoinBlock>;
92
+ unifiedChainEvents: UnifiedSwapEventListener<T>;
93
+ unifiedSwapStorage: UnifiedSwapStorage<T>;
94
+ reviver: (val: any) => ISwap<T>;
95
+ };
96
+ type MultiChainData<T extends MultiChain> = {
97
+ [chainIdentifier in keyof T]: ChainSpecificData<T[chainIdentifier]>;
98
+ };
99
+ type CtorMultiChainData<T extends MultiChain> = {
100
+ [chainIdentifier in keyof T]: ChainData<T[chainIdentifier]>;
101
+ };
102
+ /**
103
+ * Type extracting chain identifiers from a MultiChain type
104
+ * @category Core
105
+ */
106
+ export type ChainIds<T extends MultiChain> = keyof T & string;
107
+ /**
108
+ * Type helper to check if a chain supports a specific swap type
109
+ * @category Core
110
+ */
111
+ export type SupportsSwapType<C extends ChainType, Type extends SwapType> = Type extends SwapType.SPV_VAULT_FROM_BTC ? NotNever<C["SpvVaultContract"]> : Type extends (SwapType.TRUSTED_FROM_BTCLN | SwapType.TRUSTED_FROM_BTC) ? true : Type extends SwapType.FROM_BTCLN_AUTO ? (C["Contract"]["supportsInitWithoutClaimer"] extends true ? true : false) : NotNever<C["Contract"]>;
112
+ /**
113
+ * Core orchestrator for all swap operations with multi-chain support
114
+ * @category Core
115
+ */
116
+ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
117
+ lpsRemoved: [Intermediary[]];
118
+ lpsAdded: [Intermediary[]];
119
+ swapState: [ISwap];
120
+ swapLimitsChanged: [];
121
+ }> {
122
+ protected readonly logger: import("../utils/Logger").LoggerType;
123
+ protected readonly swapStateListener: (swap: ISwap) => void;
124
+ private defaultTrustedIntermediary?;
125
+ private readonly _bitcoinNetwork;
126
+ private readonly options;
127
+ readonly chains: MultiChainData<T>;
128
+ readonly prices: ISwapPrice<T>;
129
+ readonly intermediaryDiscovery: IntermediaryDiscovery;
130
+ readonly mempoolApi: MempoolApi;
131
+ readonly bitcoinRpc: MempoolBitcoinRpc;
132
+ readonly bitcoinNetwork: BTC_NETWORK;
133
+ readonly messenger: Messenger;
134
+ readonly Utils: SwapperUtils<T>;
135
+ readonly tokens: {
136
+ [chainId: string]: {
137
+ [tokenAddress: string]: SCToken;
138
+ };
139
+ };
140
+ readonly tokensByTicker: {
141
+ [chainId: string]: {
142
+ [tokenTicker: string]: SCToken;
143
+ };
144
+ };
145
+ constructor(bitcoinRpc: MempoolBitcoinRpc, chainsData: CtorMultiChainData<T>, pricing: ISwapPrice<T>, tokens: WrapperCtorTokens<T>, messenger: Messenger, options?: SwapperOptions);
146
+ private _init;
147
+ private initPromise?;
148
+ private initialized;
149
+ /**
150
+ * Initializes the swap storage and loads existing swaps, needs to be called before any other action
151
+ */
152
+ init(): Promise<void>;
153
+ /**
154
+ * Stops listening for onchain events and closes this Swapper instance
155
+ */
156
+ stop(): Promise<void>;
157
+ /**
158
+ * Creates swap & handles intermediary, quote selection
159
+ *
160
+ * @param chainIdentifier
161
+ * @param create Callback to create the
162
+ * @param amountData Amount data as passed to the function
163
+ * @param swapType Swap type of the execution
164
+ * @param maxWaitTimeMS Maximum waiting time after the first intermediary returns the quote
165
+ * @private
166
+ * @throws {Error} when no intermediary was found
167
+ * @throws {Error} if the chain with the provided identifier cannot be found
168
+ */
169
+ private createSwap;
170
+ /**
171
+ * Creates To BTC swap
172
+ *
173
+ * @param chainIdentifier
174
+ * @param signer
175
+ * @param tokenAddress Token address to pay with
176
+ * @param address Recipient's bitcoin address
177
+ * @param amount Amount to send in satoshis (bitcoin's smallest denomination)
178
+ * @param exactIn Whether to use exact in instead of exact out
179
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
180
+ * @param options
181
+ */
182
+ createToBTCSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, address: string, amount: bigint, exactIn?: boolean, additionalParams?: Record<string, any> | undefined, options?: ToBTCOptions): Promise<ToBTCSwap<T[ChainIdentifier]>>;
183
+ /**
184
+ * Creates To BTCLN swap
185
+ *
186
+ * @param chainIdentifier
187
+ * @param signer
188
+ * @param tokenAddress Token address to pay with
189
+ * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount)
190
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
191
+ * @param options
192
+ */
193
+ createToBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, paymentRequest: string, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
194
+ /**
195
+ * Creates To BTCLN swap via LNURL-pay
196
+ *
197
+ * @param chainIdentifier
198
+ * @param signer
199
+ * @param tokenAddress Token address to pay with
200
+ * @param lnurlPay LNURL-pay link to use for the payment
201
+ * @param amount Amount to be paid in sats
202
+ * @param exactIn Whether to do an exact in swap instead of exact out
203
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
204
+ * @param options
205
+ */
206
+ createToBTCLNSwapViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, lnurlPay: string | LNURLPay, amount: bigint, exactIn?: boolean, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions & {
207
+ comment?: string;
208
+ }): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
209
+ /**
210
+ * Creates To BTCLN swap via InvoiceCreationService
211
+ *
212
+ * @param chainIdentifier
213
+ * @param signer
214
+ * @param tokenAddress Token address to pay with
215
+ * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
216
+ * @param amount Amount to be paid in sats
217
+ * @param exactIn Whether to do an exact in swap instead of exact out
218
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
219
+ * @param options
220
+ */
221
+ createToBTCLNSwapViaInvoiceCreateService<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, service: InvoiceCreateService, amount: bigint, exactIn?: boolean, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
222
+ /**
223
+ * Creates From BTC swap
224
+ *
225
+ * @param chainIdentifier
226
+ * @param signer
227
+ * @param tokenAddress Token address to receive
228
+ * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
229
+ * @param exactOut Whether to use a exact out instead of exact in
230
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
231
+ * @param options
232
+ */
233
+ createFromBTCSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: SpvFromBTCOptions): Promise<SpvFromBTCSwap<T[ChainIdentifier]>>;
234
+ /**
235
+ * Creates From BTC swap
236
+ *
237
+ * @param chainIdentifier
238
+ * @param signer
239
+ * @param tokenAddress Token address to receive
240
+ * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
241
+ * @param exactOut Whether to use a exact out instead of exact in
242
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
243
+ * @param options
244
+ */
245
+ createFromBTCSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCOptions): Promise<FromBTCSwap<T[ChainIdentifier]>>;
246
+ /**
247
+ * Creates From BTCLN swap
248
+ *
249
+ * @param chainIdentifier
250
+ * @param signer
251
+ * @param tokenAddress Token address to receive
252
+ * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
253
+ * @param exactOut Whether to use exact out instead of exact in
254
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
255
+ * @param options
256
+ */
257
+ createFromBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNOptions): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
258
+ /**
259
+ * Creates From BTCLN swap, withdrawing from LNURL-withdraw
260
+ *
261
+ * @param chainIdentifier
262
+ * @param signer
263
+ * @param tokenAddress Token address to receive
264
+ * @param lnurl LNURL-withdraw to pull the funds from
265
+ * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
266
+ * @param exactOut Whether to use exact out instead of exact in
267
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
268
+ */
269
+ createFromBTCLNSwapViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
270
+ /**
271
+ * Creates From BTCLN swap using new protocol
272
+ *
273
+ * @param chainIdentifier
274
+ * @param signer
275
+ * @param tokenAddress Token address to receive
276
+ * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
277
+ * @param exactOut Whether to use exact out instead of exact in
278
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
279
+ * @param options
280
+ */
281
+ createFromBTCLNSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
282
+ /**
283
+ * Creates From BTCLN swap using new protocol, withdrawing from LNURL-withdraw
284
+ *
285
+ * @param chainIdentifier
286
+ * @param signer
287
+ * @param tokenAddress Token address to receive
288
+ * @param lnurl LNURL-withdraw to pull the funds from
289
+ * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
290
+ * @param exactOut Whether to use exact out instead of exact in
291
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
292
+ * @param options
293
+ */
294
+ createFromBTCLNSwapNewViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
295
+ /**
296
+ * Creates trusted LN for Gas swap
297
+ *
298
+ * @param chainId
299
+ * @param signer
300
+ * @param amount Amount of native token to receive, in base units
301
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
302
+ * @throws {Error} If no trusted intermediary specified
303
+ */
304
+ createTrustedLNForGasSwap<C extends ChainIds<T>>(chainId: C, signer: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[C]>>;
305
+ /**
306
+ * Creates trusted BTC on-chain for Gas swap
307
+ *
308
+ * @param chainId
309
+ * @param signer
310
+ * @param amount Amount of native token to receive, in base units
311
+ * @param refundAddress Bitcoin refund address, in case the swap fails
312
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
313
+ * @throws {Error} If no trusted intermediary specified
314
+ */
315
+ createTrustedOnchainForGasSwap<C extends ChainIds<T>>(chainId: C, signer: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[C]>>;
316
+ create<C extends ChainIds<T>>(signer: string, srcToken: BtcToken<true>, dstToken: SCToken<C>, amount: bigint, exactIn: boolean, lnurlWithdraw?: string | LNURLWithdraw): Promise<(SupportsSwapType<T[C], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[C]> : FromBTCLNSwap<T[C]>)>;
317
+ create<C extends ChainIds<T>>(signer: string, srcToken: BtcToken<false>, dstToken: SCToken<C>, amount: bigint, exactIn: boolean): Promise<(SupportsSwapType<T[C], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[C]> : FromBTCSwap<T[C]>)>;
318
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[C]>>;
319
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[C]>>;
320
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint, exactIn: false, lightningInvoice: string): Promise<ToBTCLNSwap<T[C]>>;
321
+ create<C extends ChainIds<T>>(signer: string, srcToken: Token<C>, dstToken: Token<C>, amount: bigint, exactIn: boolean, addressLnurlLightningInvoice?: string | LNURLWithdraw | LNURLPay): Promise<ISwap<T[C]>>;
322
+ swap<C extends ChainIds<T>>(srcToken: BtcToken<true>, dstToken: SCToken<C>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dstSmartchainWallet: string, options?: (SupportsSwapType<T[C], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoOptions : FromBTCLNOptions)): Promise<(SupportsSwapType<T[C], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[C]> : FromBTCLNSwap<T[C]>)>;
323
+ swap<C extends ChainIds<T>>(srcToken: BtcToken<false>, dstToken: SCToken<C>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string, dstSmartchainWallet: string, options?: (SupportsSwapType<T[C], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCOptions : FromBTCOptions)): Promise<(SupportsSwapType<T[C], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[C]> : FromBTCSwap<T[C]>)>;
324
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[C]>>;
325
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | InvoiceCreateService, options?: ToBTCLNOptions & {
326
+ comment?: string;
327
+ }): Promise<ToBTCLNSwap<T[C]>>;
328
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[C]>>;
329
+ swap<C extends ChainIds<T>>(srcToken: Token<C> | string, dstToken: Token<C> | string, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | InvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {
330
+ comment?: string;
331
+ }) | FromBTCLNAutoOptions): Promise<ISwap<T[C]>>;
332
+ /**
333
+ * Returns all swaps
334
+ */
335
+ getAllSwaps(): Promise<ISwap[]>;
336
+ /**
337
+ * Returns all swaps for the specific chain, and optionally also for a specific signer's address
338
+ */
339
+ getAllSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
340
+ /**
341
+ * Returns all swaps where an action is required (either claim or refund)
342
+ */
343
+ getActionableSwaps(): Promise<ISwap[]>;
344
+ /**
345
+ * Returns swaps where an action is required (either claim or refund) for the specific chain, and optionally also for a specific signer's address
346
+ */
347
+ getActionableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
348
+ /**
349
+ * Returns all swaps that are refundable
350
+ */
351
+ getRefundableSwaps(): Promise<IToBTCSwap[]>;
352
+ /**
353
+ * Returns swaps which are refundable for the specific chain, and optionally also for a specific signer's address
354
+ */
355
+ getRefundableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IToBTCSwap<T[C]>[]>;
356
+ /**
357
+ * Returns all swaps that are manually claimable
358
+ */
359
+ getClaimableSwaps(): Promise<IClaimableSwap[]>;
360
+ /**
361
+ * Returns all swaps that are manually claimable for the specific chain, and optionally also for a specific signer's address
362
+ */
363
+ getClaimableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IClaimableSwap<T[C]>[]>;
364
+ /**
365
+ * Returns swap with a specific id (identifier)
366
+ */
367
+ getSwapById(id: string): Promise<ISwap>;
368
+ /**
369
+ * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
370
+ */
371
+ getSwapById<C extends ChainIds<T>>(id: string, chainId: C, signer?: string): Promise<ISwap<T[C]>>;
372
+ /**
373
+ * Returns the swap with a proper return type, or undefined, if not found, or has wrong type
374
+ *
375
+ * @param id
376
+ * @param chainId
377
+ * @param swapType
378
+ * @param signer
379
+ */
380
+ getTypedSwapById<C extends ChainIds<T>, S extends SwapType>(id: string, chainId: C, swapType: S, signer?: string): Promise<SwapTypeMapping<T[C]>[S] | undefined>;
381
+ private syncSwapsForChain;
382
+ /**
383
+ * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes
384
+ *
385
+ * @param chainId
386
+ * @param signer
387
+ */
388
+ _syncSwaps<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
389
+ /**
390
+ * Attempts to recover partial swap data from on-chain historical data
391
+ *
392
+ * @param chainId
393
+ * @param signer
394
+ * @param startBlockheight
395
+ */
396
+ recoverSwaps<C extends ChainIds<T>>(chainId: C, signer: string, startBlockheight?: number): Promise<ISwap<T[C]>[]>;
397
+ getToken(tickerOrAddress: string): Token;
398
+ /**
399
+ * Creates a child swapper instance with a given smart chain
400
+ *
401
+ * @param chainIdentifier
402
+ */
403
+ withChain<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapperWithChain<T, ChainIdentifier>;
404
+ /**
405
+ * Returns supported smart chains
406
+ */
407
+ getSmartChains(): ChainIds<T>[];
408
+ /**
409
+ * Returns whether the SDK supports a given swap type on a given chain based on currently known LPs
410
+ *
411
+ * @param chainId
412
+ * @param swapType
413
+ */
414
+ supportsSwapType<ChainIdentifier extends ChainIds<T>, Type extends SwapType>(chainId: ChainIdentifier, swapType: Type): SupportsSwapType<T[ChainIdentifier], Type>;
415
+ /**
416
+ * Returns type of the swap based on input and output tokens specified
417
+ *
418
+ * @param srcToken
419
+ * @param dstToken
420
+ */
421
+ getSwapType<C extends ChainIds<T>>(srcToken: BtcToken<true>, dstToken: SCToken<C>): (SupportsSwapType<T[C], SwapType.FROM_BTCLN_AUTO> extends true ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN);
422
+ getSwapType<C extends ChainIds<T>>(srcToken: BtcToken<false>, dstToken: SCToken<C>): (SupportsSwapType<T[C], SwapType.SPV_VAULT_FROM_BTC> extends true ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC);
423
+ getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>): SwapType.TO_BTC;
424
+ getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
425
+ getSwapType<C extends ChainIds<T>>(srcToken: Token<C>, dstToken: Token<C>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN;
426
+ readonly SwapTypeInfo: {
427
+ readonly 2: {
428
+ readonly requiresInputWallet: true;
429
+ readonly requiresOutputWallet: false;
430
+ readonly supportsGasDrop: false;
431
+ };
432
+ readonly 3: {
433
+ readonly requiresInputWallet: true;
434
+ readonly requiresOutputWallet: false;
435
+ readonly supportsGasDrop: false;
436
+ };
437
+ readonly 0: {
438
+ readonly requiresInputWallet: false;
439
+ readonly requiresOutputWallet: true;
440
+ readonly supportsGasDrop: false;
441
+ };
442
+ readonly 1: {
443
+ readonly requiresInputWallet: false;
444
+ readonly requiresOutputWallet: true;
445
+ readonly supportsGasDrop: false;
446
+ };
447
+ readonly 6: {
448
+ readonly requiresInputWallet: true;
449
+ readonly requiresOutputWallet: false;
450
+ readonly supportsGasDrop: true;
451
+ };
452
+ readonly 7: {
453
+ readonly requiresInputWallet: false;
454
+ readonly requiresOutputWallet: false;
455
+ readonly supportsGasDrop: true;
456
+ };
457
+ readonly 4: {
458
+ readonly requiresInputWallet: false;
459
+ readonly requiresOutputWallet: false;
460
+ readonly supportsGasDrop: false;
461
+ };
462
+ readonly 5: {
463
+ readonly requiresInputWallet: false;
464
+ readonly requiresOutputWallet: false;
465
+ readonly supportsGasDrop: false;
466
+ };
467
+ };
468
+ /**
469
+ * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
470
+ *
471
+ * @param srcToken
472
+ * @param dstToken
473
+ */
474
+ getSwapLimits<C extends ChainIds<T>, A extends Token<C>, B extends Token<C>>(srcToken: A, dstToken: B): {
475
+ input: {
476
+ min: TokenAmount<string, A>;
477
+ max?: TokenAmount<string, A>;
478
+ };
479
+ output: {
480
+ min: TokenAmount<string, B>;
481
+ max?: TokenAmount<string, B>;
482
+ };
483
+ };
484
+ /**
485
+ * Returns supported tokens for a given direction
486
+ *
487
+ * @param input Whether to return input tokens or output tokens
488
+ */
489
+ getSupportedTokens(input: boolean): Token[];
490
+ /**
491
+ * Returns a set of supported tokens by all the intermediaries offering a specific swap service
492
+ *
493
+ * @param _swapType Swap service type to check supported tokens for
494
+ */
495
+ private getSupportedTokensForSwapType;
496
+ /**
497
+ * Returns the set of supported token addresses by all the intermediaries we know of offering a specific swapType service
498
+ *
499
+ * @param chainIdentifier
500
+ * @param swapType Specific swap type for which to obtain supported tokens
501
+ */
502
+ private getSupportedTokenAddresses;
503
+ /**
504
+ * Returns tokens that you can swap to (if input=true) from a given token,
505
+ * or tokens that you can swap from (if input=false) to a given token
506
+ */
507
+ getSwapCounterTokens(token: Token, input: boolean): Token[];
508
+ /**
509
+ * Returns swap bounds (minimums & maximums) for different swap types & tokens
510
+ * @deprecated Use getSwapLimits() instead!
511
+ */
512
+ getSwapBounds<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapBounds;
513
+ getSwapBounds(): MultichainSwapBounds;
514
+ /**
515
+ * Returns maximum possible swap amount
516
+ * @deprecated Use getSwapLimits() instead!
517
+ *
518
+ * @param chainIdentifier
519
+ * @param type Type of the swap
520
+ * @param token Token of the swap
521
+ */
522
+ getMaximum<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, type: SwapType, token: string): bigint;
523
+ /**
524
+ * Returns minimum possible swap amount
525
+ * @deprecated Use getSwapLimits() instead!
526
+ *
527
+ * @param chainIdentifier
528
+ * @param type Type of swap
529
+ * @param token Token of the swap
530
+ */
531
+ getMinimum<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, type: SwapType, token: string): bigint;
532
+ }
533
+ export {};