@atomiqlabs/sdk 8.9.1 → 8.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +1760 -1760
  3. package/api/index.d.ts +1 -1
  4. package/api/index.js +3 -3
  5. package/dist/ApiList.d.ts +37 -37
  6. package/dist/ApiList.js +30 -30
  7. package/dist/SmartChainAssets.d.ts +181 -181
  8. package/dist/SmartChainAssets.js +181 -181
  9. package/dist/api/ApiEndpoints.d.ts +393 -393
  10. package/dist/api/ApiEndpoints.js +2 -2
  11. package/dist/api/ApiParser.d.ts +10 -10
  12. package/dist/api/ApiParser.js +134 -134
  13. package/dist/api/ApiTypes.d.ts +157 -157
  14. package/dist/api/ApiTypes.js +75 -75
  15. package/dist/api/SerializedAction.d.ts +40 -40
  16. package/dist/api/SerializedAction.js +59 -59
  17. package/dist/api/SwapperApi.d.ts +50 -50
  18. package/dist/api/SwapperApi.js +431 -431
  19. package/dist/api/index.d.ts +5 -5
  20. package/dist/api/index.js +24 -24
  21. package/dist/bitcoin/coinselect2/accumulative.d.ts +7 -7
  22. package/dist/bitcoin/coinselect2/accumulative.js +52 -52
  23. package/dist/bitcoin/coinselect2/blackjack.d.ts +7 -7
  24. package/dist/bitcoin/coinselect2/blackjack.js +38 -38
  25. package/dist/bitcoin/coinselect2/index.d.ts +20 -20
  26. package/dist/bitcoin/coinselect2/index.js +69 -69
  27. package/dist/bitcoin/coinselect2/utils.d.ts +82 -82
  28. package/dist/bitcoin/coinselect2/utils.js +158 -158
  29. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +113 -113
  30. package/dist/bitcoin/wallet/BitcoinWallet.js +335 -335
  31. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +116 -116
  32. package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -21
  33. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +106 -106
  34. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +196 -196
  35. package/dist/enums/FeeType.d.ts +15 -15
  36. package/dist/enums/FeeType.js +19 -19
  37. package/dist/enums/SwapAmountType.d.ts +15 -15
  38. package/dist/enums/SwapAmountType.js +19 -19
  39. package/dist/enums/SwapDirection.d.ts +15 -15
  40. package/dist/enums/SwapDirection.js +19 -19
  41. package/dist/enums/SwapSide.d.ts +15 -15
  42. package/dist/enums/SwapSide.js +19 -19
  43. package/dist/enums/SwapType.d.ts +75 -75
  44. package/dist/enums/SwapType.js +79 -79
  45. package/dist/errors/IntermediaryError.d.ts +13 -13
  46. package/dist/errors/IntermediaryError.js +27 -27
  47. package/dist/errors/RequestError.d.ts +32 -32
  48. package/dist/errors/RequestError.js +54 -54
  49. package/dist/errors/UserError.d.ts +8 -8
  50. package/dist/errors/UserError.js +16 -16
  51. package/dist/events/UnifiedSwapEventListener.d.ts +24 -24
  52. package/dist/events/UnifiedSwapEventListener.js +138 -138
  53. package/dist/http/HttpUtils.d.ts +29 -29
  54. package/dist/http/HttpUtils.js +97 -97
  55. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  56. package/dist/http/paramcoders/IParamReader.js +2 -2
  57. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -44
  58. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  59. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -20
  60. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  61. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  62. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  63. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  64. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  65. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -13
  66. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  67. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +17 -17
  68. package/dist/http/paramcoders/client/StreamingFetchPromise.js +175 -175
  69. package/dist/index.d.ts +86 -86
  70. package/dist/index.js +159 -159
  71. package/dist/intermediaries/Intermediary.d.ts +178 -178
  72. package/dist/intermediaries/Intermediary.js +166 -166
  73. package/dist/intermediaries/IntermediaryDiscovery.d.ts +216 -216
  74. package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
  75. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +607 -607
  76. package/dist/intermediaries/apis/IntermediaryAPI.js +764 -764
  77. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  78. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  79. package/dist/intermediaries/auth/SignedKeyBasedAuth.d.ts +14 -14
  80. package/dist/intermediaries/auth/SignedKeyBasedAuth.js +68 -68
  81. package/dist/lnurl/LNURL.d.ts +102 -102
  82. package/dist/lnurl/LNURL.js +321 -321
  83. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  84. package/dist/prices/RedundantSwapPrice.js +222 -222
  85. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  86. package/dist/prices/SingleSwapPrice.js +44 -44
  87. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  88. package/dist/prices/SwapPriceWithChain.js +128 -128
  89. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  90. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  91. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  92. package/dist/prices/abstract/IPriceProvider.js +74 -74
  93. package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
  94. package/dist/prices/abstract/ISwapPrice.js +279 -279
  95. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  96. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  97. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  98. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  99. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  100. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  101. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  102. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  103. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  104. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  105. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  106. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  107. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  108. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  109. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  110. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  111. package/dist/storage/IUnifiedStorage.d.ts +127 -127
  112. package/dist/storage/IUnifiedStorage.js +2 -2
  113. package/dist/storage/UnifiedSwapStorage.d.ts +120 -120
  114. package/dist/storage/UnifiedSwapStorage.js +154 -154
  115. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  116. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  117. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  118. package/dist/storage-browser/LocalStorageManager.js +93 -93
  119. package/dist/swapper/Swapper.d.ts +770 -770
  120. package/dist/swapper/Swapper.js +1758 -1758
  121. package/dist/swapper/SwapperFactory.d.ts +135 -135
  122. package/dist/swapper/SwapperFactory.js +162 -162
  123. package/dist/swapper/SwapperUtils.d.ts +222 -222
  124. package/dist/swapper/SwapperUtils.js +519 -519
  125. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  126. package/dist/swapper/SwapperWithChain.js +469 -469
  127. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  128. package/dist/swapper/SwapperWithSigner.js +318 -318
  129. package/dist/swaps/IAddressSwap.d.ts +22 -22
  130. package/dist/swaps/IAddressSwap.js +14 -14
  131. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  132. package/dist/swaps/IBTCWalletSwap.js +18 -18
  133. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  134. package/dist/swaps/IClaimableSwap.js +15 -15
  135. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  136. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  137. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  138. package/dist/swaps/IRefundableSwap.js +14 -14
  139. package/dist/swaps/ISwap.d.ts +453 -453
  140. package/dist/swaps/ISwap.js +371 -371
  141. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  142. package/dist/swaps/ISwapWithGasDrop.js +12 -12
  143. package/dist/swaps/ISwapWrapper.d.ts +295 -295
  144. package/dist/swaps/ISwapWrapper.js +373 -373
  145. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  146. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  147. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +139 -139
  148. package/dist/swaps/escrow_swaps/IEscrowSwap.js +172 -172
  149. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +129 -129
  150. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
  151. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +107 -107
  152. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  153. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  154. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  155. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +64 -64
  156. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +82 -82
  157. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +547 -547
  158. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1419 -1419
  159. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +192 -192
  160. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
  161. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +650 -650
  162. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1577 -1577
  163. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +237 -237
  164. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
  165. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +491 -491
  166. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1463 -1463
  167. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +204 -204
  168. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
  169. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +446 -446
  170. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +1097 -1097
  171. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +68 -68
  172. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +117 -117
  173. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -127
  174. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  175. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +252 -252
  176. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +535 -535
  177. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  178. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  179. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +134 -134
  180. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
  181. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +694 -694
  182. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1687 -1687
  183. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +259 -259
  184. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
  185. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +302 -302
  186. package/dist/swaps/trusted/ln/LnForGasSwap.js +625 -625
  187. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  188. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  189. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +343 -343
  190. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +698 -698
  191. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +71 -71
  192. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +93 -93
  193. package/dist/types/AmountData.d.ts +10 -10
  194. package/dist/types/AmountData.js +2 -2
  195. package/dist/types/CustomPriceFunction.d.ts +11 -11
  196. package/dist/types/CustomPriceFunction.js +2 -2
  197. package/dist/types/PriceInfoType.d.ts +28 -28
  198. package/dist/types/PriceInfoType.js +57 -57
  199. package/dist/types/SwapExecutionAction.d.ts +195 -195
  200. package/dist/types/SwapExecutionAction.js +106 -106
  201. package/dist/types/SwapExecutionStep.d.ts +144 -144
  202. package/dist/types/SwapExecutionStep.js +87 -87
  203. package/dist/types/SwapStateInfo.d.ts +5 -5
  204. package/dist/types/SwapStateInfo.js +2 -2
  205. package/dist/types/SwapWithSigner.d.ts +17 -17
  206. package/dist/types/SwapWithSigner.js +43 -43
  207. package/dist/types/Token.d.ts +99 -99
  208. package/dist/types/Token.js +76 -76
  209. package/dist/types/TokenAmount.d.ts +75 -75
  210. package/dist/types/TokenAmount.js +85 -85
  211. package/dist/types/fees/Fee.d.ts +50 -50
  212. package/dist/types/fees/Fee.js +2 -2
  213. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  214. package/dist/types/fees/FeeBreakdown.js +2 -2
  215. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  216. package/dist/types/fees/PercentagePPM.js +18 -18
  217. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  218. package/dist/types/lnurl/LNURLPay.js +31 -31
  219. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  220. package/dist/types/lnurl/LNURLWithdraw.js +27 -27
  221. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  222. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -15
  223. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  224. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  225. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  226. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  227. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  228. package/dist/utils/AutomaticClockDriftCorrection.js +70 -70
  229. package/dist/utils/BitcoinUtils.d.ts +18 -18
  230. package/dist/utils/BitcoinUtils.js +174 -174
  231. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  232. package/dist/utils/BitcoinWalletUtils.js +14 -14
  233. package/dist/utils/Logger.d.ts +7 -7
  234. package/dist/utils/Logger.js +12 -12
  235. package/dist/utils/RetryUtils.d.ts +22 -22
  236. package/dist/utils/RetryUtils.js +67 -67
  237. package/dist/utils/SwapUtils.d.ts +88 -88
  238. package/dist/utils/SwapUtils.js +72 -72
  239. package/dist/utils/TimeoutUtils.d.ts +17 -17
  240. package/dist/utils/TimeoutUtils.js +55 -55
  241. package/dist/utils/TokenUtils.d.ts +19 -19
  242. package/dist/utils/TokenUtils.js +37 -37
  243. package/dist/utils/TypeUtils.d.ts +7 -7
  244. package/dist/utils/TypeUtils.js +2 -2
  245. package/dist/utils/Utils.d.ts +69 -69
  246. package/dist/utils/Utils.js +214 -214
  247. package/package.json +46 -46
  248. package/src/SmartChainAssets.ts +186 -186
  249. package/src/api/ApiEndpoints.ts +427 -427
  250. package/src/api/ApiParser.ts +138 -138
  251. package/src/api/ApiTypes.ts +229 -229
  252. package/src/api/SerializedAction.ts +97 -97
  253. package/src/api/SwapperApi.ts +545 -545
  254. package/src/api/index.ts +5 -5
  255. package/src/bitcoin/coinselect2/accumulative.ts +69 -69
  256. package/src/bitcoin/coinselect2/blackjack.ts +50 -50
  257. package/src/bitcoin/coinselect2/index.ts +93 -93
  258. package/src/bitcoin/coinselect2/utils.ts +236 -236
  259. package/src/bitcoin/wallet/BitcoinWallet.ts +439 -439
  260. package/src/bitcoin/wallet/IBitcoinWallet.ts +140 -140
  261. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +225 -225
  262. package/src/enums/FeeType.ts +15 -15
  263. package/src/enums/SwapAmountType.ts +16 -16
  264. package/src/enums/SwapDirection.ts +15 -15
  265. package/src/enums/SwapSide.ts +16 -16
  266. package/src/enums/SwapType.ts +75 -75
  267. package/src/errors/IntermediaryError.ts +28 -28
  268. package/src/errors/RequestError.ts +64 -64
  269. package/src/errors/UserError.ts +15 -15
  270. package/src/events/UnifiedSwapEventListener.ts +181 -181
  271. package/src/http/HttpUtils.ts +97 -97
  272. package/src/http/paramcoders/IParamReader.ts +9 -9
  273. package/src/http/paramcoders/ParamDecoder.ts +145 -145
  274. package/src/http/paramcoders/ParamEncoder.ts +40 -40
  275. package/src/http/paramcoders/SchemaVerifier.ts +153 -153
  276. package/src/http/paramcoders/client/ResponseParamDecoder.ts +57 -57
  277. package/src/http/paramcoders/client/StreamParamEncoder.ts +28 -28
  278. package/src/http/paramcoders/client/StreamingFetchPromise.ts +194 -194
  279. package/src/index.ts +141 -141
  280. package/src/intermediaries/Intermediary.ts +280 -280
  281. package/src/intermediaries/IntermediaryDiscovery.ts +548 -548
  282. package/src/intermediaries/apis/IntermediaryAPI.ts +1247 -1247
  283. package/src/intermediaries/auth/SignedKeyBasedAuth.ts +69 -69
  284. package/src/lnurl/LNURL.ts +402 -402
  285. package/src/prices/RedundantSwapPrice.ts +264 -264
  286. package/src/prices/SingleSwapPrice.ts +50 -50
  287. package/src/prices/SwapPriceWithChain.ts +194 -194
  288. package/src/prices/abstract/ICachedSwapPrice.ts +85 -85
  289. package/src/prices/abstract/IPriceProvider.ts +127 -127
  290. package/src/prices/abstract/ISwapPrice.ts +390 -390
  291. package/src/prices/providers/BinancePriceProvider.ts +48 -48
  292. package/src/prices/providers/CoinGeckoPriceProvider.ts +46 -46
  293. package/src/prices/providers/CoinPaprikaPriceProvider.ts +49 -49
  294. package/src/prices/providers/CustomPriceProvider.ts +40 -40
  295. package/src/prices/providers/KrakenPriceProvider.ts +83 -83
  296. package/src/prices/providers/OKXPriceProvider.ts +59 -59
  297. package/src/prices/providers/abstract/ExchangePriceProvider.ts +31 -31
  298. package/src/prices/providers/abstract/HttpPriceProvider.ts +14 -14
  299. package/src/storage/IUnifiedStorage.ts +136 -136
  300. package/src/storage/UnifiedSwapStorage.ts +175 -175
  301. package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
  302. package/src/storage-browser/LocalStorageManager.ts +106 -106
  303. package/src/swapper/Swapper.ts +2570 -2570
  304. package/src/swapper/SwapperFactory.ts +307 -307
  305. package/src/swapper/SwapperUtils.ts +610 -610
  306. package/src/swapper/SwapperWithChain.ts +707 -707
  307. package/src/swapper/SwapperWithSigner.ts +511 -511
  308. package/src/swaps/IAddressSwap.ts +30 -30
  309. package/src/swaps/IBTCWalletSwap.ts +92 -92
  310. package/src/swaps/IClaimableSwap.ts +65 -65
  311. package/src/swaps/IClaimableSwapWrapper.ts +17 -17
  312. package/src/swaps/IRefundableSwap.ts +58 -58
  313. package/src/swaps/ISwap.ts +775 -775
  314. package/src/swaps/ISwapWithGasDrop.ts +25 -25
  315. package/src/swaps/ISwapWrapper.ts +564 -564
  316. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
  317. package/src/swaps/escrow_swaps/IEscrowSwap.ts +271 -271
  318. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +284 -284
  319. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +172 -172
  320. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +300 -300
  321. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +107 -107
  322. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1670 -1671
  323. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +603 -603
  324. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1883 -1883
  325. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +752 -752
  326. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1753 -1753
  327. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +612 -612
  328. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1327 -1327
  329. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +138 -138
  330. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +304 -304
  331. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +787 -787
  332. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
  333. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +403 -403
  334. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +2148 -2148
  335. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1238 -1238
  336. package/src/swaps/trusted/ln/LnForGasSwap.ts +753 -753
  337. package/src/swaps/trusted/ln/LnForGasWrapper.ts +90 -90
  338. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +843 -843
  339. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +133 -133
  340. package/src/types/AmountData.ts +9 -9
  341. package/src/types/CustomPriceFunction.ts +11 -11
  342. package/src/types/PriceInfoType.ts +66 -66
  343. package/src/types/SwapExecutionAction.ts +323 -323
  344. package/src/types/SwapExecutionStep.ts +224 -224
  345. package/src/types/SwapStateInfo.ts +6 -6
  346. package/src/types/SwapWithSigner.ts +61 -61
  347. package/src/types/Token.ts +163 -163
  348. package/src/types/TokenAmount.ts +167 -167
  349. package/src/types/fees/Fee.ts +56 -56
  350. package/src/types/fees/FeeBreakdown.ts +11 -11
  351. package/src/types/fees/PercentagePPM.ts +26 -26
  352. package/src/types/lnurl/LNURLPay.ts +79 -79
  353. package/src/types/lnurl/LNURLWithdraw.ts +61 -61
  354. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -30
  355. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +21 -21
  356. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +9 -9
  357. package/src/utils/AutomaticClockDriftCorrection.ts +71 -71
  358. package/src/utils/BitcoinUtils.ts +164 -164
  359. package/src/utils/BitcoinWalletUtils.ts +15 -15
  360. package/src/utils/Logger.ts +14 -14
  361. package/src/utils/RetryUtils.ts +78 -78
  362. package/src/utils/SwapUtils.ts +99 -99
  363. package/src/utils/TimeoutUtils.ts +49 -49
  364. package/src/utils/TokenUtils.ts +33 -33
  365. package/src/utils/TypeUtils.ts +8 -8
  366. package/src/utils/Utils.ts +221 -221
@@ -1,770 +1,770 @@
1
- /// <reference types="node" />
2
- import { ISwapPrice } from "../prices/abstract/ISwapPrice";
3
- import { BitcoinNetwork, BitcoinRpcWithAddressIndex, BtcBlock, BtcRelay, ChainData, ChainType, LightningNetworkApi, Messenger, RelaySynchronizer } from "@atomiqlabs/base";
4
- import { 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 } 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 { SwapperWithChain } from "./SwapperWithChain";
20
- import { OnchainForGasSwap } from "../swaps/trusted/onchain/OnchainForGasSwap";
21
- import { OnchainForGasWrapper } from "../swaps/trusted/onchain/OnchainForGasWrapper";
22
- import { BTC_NETWORK } from "@scure/btc-signer/utils";
23
- import { IUnifiedStorage } from "../storage/IUnifiedStorage";
24
- import { UnifiedSwapStorage, UnifiedSwapStorageCompositeIndexes, UnifiedSwapStorageIndexes } from "../storage/UnifiedSwapStorage";
25
- import { UnifiedSwapEventListener } from "../events/UnifiedSwapEventListener";
26
- import { IToBTCSwap } from "../swaps/escrow_swaps/tobtc/IToBTCSwap";
27
- import { SpvFromBTCOptions, SpvFromBTCWrapper } from "../swaps/spv_swaps/SpvFromBTCWrapper";
28
- import { SpvFromBTCSwap } from "../swaps/spv_swaps/SpvFromBTCSwap";
29
- import { SwapperUtils } from "./SwapperUtils";
30
- import { FromBTCLNAutoOptions, FromBTCLNAutoWrapper } from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
31
- import { FromBTCLNAutoSwap } from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
32
- import { SwapAmountType } from "../enums/SwapAmountType";
33
- import { IClaimableSwap } from "../swaps/IClaimableSwap";
34
- import { SwapTypeMapping } from "../utils/SwapUtils";
35
- import { TokenAmount } from "../types/TokenAmount";
36
- import { BtcToken, SCToken, Token } from "../types/Token";
37
- import { LNURLWithdraw } from "../types/lnurl/LNURLWithdraw";
38
- import { LNURLPay } from "../types/lnurl/LNURLPay";
39
- import { NotNever } from "../utils/TypeUtils";
40
- import { LightningInvoiceCreateService } from "../types/wallets/LightningInvoiceCreateService";
41
- import { SwapSide } from "../enums/SwapSide";
42
- import { IntermediaryAPI } from "../intermediaries/apis/IntermediaryAPI";
43
- import { BitcoinWalletUtxo, IBitcoinWallet } from "../bitcoin/wallet/IBitcoinWallet";
44
- import { MinimalBitcoinWalletInterface } from "../types/wallets/MinimalBitcoinWalletInterface";
45
- /**
46
- * Configuration options for the Swapper
47
- * @category Core
48
- */
49
- export type SwapperOptions = {
50
- /**
51
- * Manual override for the intermediary (LP) URLs for the SDK to use, by default these are fetched automatically
52
- * from the registry
53
- */
54
- intermediaryUrl?: string | string[];
55
- /**
56
- * Registry URL for where to look for active intermediary (LP) endpoint URLs
57
- */
58
- registryUrl?: string;
59
- /**
60
- * Bitcoin network to use for the swaps,
61
- */
62
- bitcoinNetwork?: BitcoinNetwork;
63
- /**
64
- * Timeout (in milliseconds) for HTTP GET requests done by the SDK
65
- */
66
- getRequestTimeout?: number;
67
- /**
68
- * Timeout (in milliseconds) for HTTP POST requests done by the SDK
69
- */
70
- postRequestTimeout?: number;
71
- /**
72
- * Additional parameters to be sent to the intermediaries (LPs), when requesting quotes from them
73
- */
74
- defaultAdditionalParameters?: {
75
- [key: string]: any;
76
- };
77
- /**
78
- * Optional name prefix to use when creating a swap storage, you can use this to create separate storage
79
- * instances that don't overlap.
80
- */
81
- storagePrefix?: string;
82
- /**
83
- * Sets the default intermediary (LP) to use for the trusted gas swaps, if not set the SDK uses a default one
84
- */
85
- defaultTrustedIntermediaryUrl?: string;
86
- /**
87
- * A function callback to retrieve a specific named storage container for swap persistency. If not present, the
88
- * default IndexedDB storage adapter is used. When you use the SDK in non-browser based environments you need to
89
- * provide this callback such that the SDK is able to use a custom storage adapter.
90
- *
91
- * @param storageName Name of the container to retrieve
92
- */
93
- swapStorage?: (storageName: string) => IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
94
- /**
95
- * By setting this flag, the swapper doesn't schedule automatic tick timers. To make sure the swap states are
96
- * properly updated (e.g. the expired swaps properly move to the expired state), you should call the
97
- * {@link Swapper._syncSwaps} function periodically. This flag should be set when you run an environment that
98
- * doesn't support long-running timers - e.g. serverless environments like Azure Function Apps or AWS Lambda
99
- */
100
- noTimers?: boolean;
101
- /**
102
- * By setting this flag, the swapper doesn't subscribe to on-chain events. To make sure the swap states are
103
- * properly updated you should either call the {@link Swapper._syncSwaps} function periodically, or use the
104
- * {@link Swapper._pollChainEvents} function to manually poll for on-chain events. This flag should be set
105
- * when you run an environment that doesn't support long-running timers and websocket connections - e.g.
106
- * serverless environments like Azure Function Apps or AWS Lambda
107
- */
108
- noEvents?: boolean;
109
- /**
110
- * By setting this flag, the swap objects will not be cached in the SDK and instead will always be loaded from
111
- * the persistent storage. By default, the SDK uses a `WeakRef` mapping of swaps, to ensure that when the same
112
- * swap is loaded concurrently, it returns the same object reference to both, making the changes on the object
113
- * atomic. This flag should be set to `true` when running in an environment where multiple instances of the SDK
114
- * access the same swap database - e.g. serverless environments like Azure Function Apps or AWS Lambda
115
- */
116
- noSwapCache?: boolean;
117
- /**
118
- * Skip checking past swaps when the swapper is initiated with {@link Swapper.init}, you can call the
119
- * {@link Swapper._syncSwaps} function later, to check the swaps. By default, the SDK checks the state
120
- * of all the known swaps during init.
121
- */
122
- dontCheckPastSwaps?: boolean;
123
- /**
124
- * Skip fetching the LPs when the swapper is initiated with {@link Swapper.init}, this means the list of available
125
- * tokens and swap limits won't be available immediately. LPs will be fetched automatically later, when a swap
126
- * is requested
127
- */
128
- dontFetchLPs?: boolean;
129
- /**
130
- * Defaults to `true`, this means every swap regardless of it being initiated (i.e. when `commit()`, `execute()` or
131
- * `waitTillPayment` is called) is saved to the persistent storage. This is a reasonable default for when you
132
- * want to only create a swap, and then later on retrieve it with the `swapper.getSwapById()` function.
133
- *
134
- * Setting this to `false` means the SDK only saves and persists swaps that are considered initiated, i.e. when
135
- * `commit()`, `execute()` or `waitTillPayment()` is called (or their respective txs... prefixed variations). This
136
- * might save calls to the persistent storage for swaps that are never initiated. This is useful in e.g.
137
- * frontend implementations where the frontend holds the swap object reference until it is initiated anyway, not
138
- * necessitating the saving of the swap data to the persistent storage until it is actually initiated.
139
- */
140
- saveUninitializedSwaps?: boolean;
141
- /**
142
- * Automatically checks system time on initialize, if the system time drifts too far from the actual time
143
- * (as checked from multiple server sources) it adjusts the `Date.now()` function to return proper actual time.
144
- */
145
- automaticClockDriftCorrection?: boolean;
146
- /**
147
- * Used in centralized API deployments to allow higher rate limits from LPs
148
- */
149
- signedKeyBasedAuth?: {
150
- certificate: string;
151
- privateKey: string;
152
- };
153
- /**
154
- * If you set the option to `true` the chains for which the RPC is unresponsive are skipped and not initialized
155
- * letting the swapper continue with only the available chains with responsive RPCs
156
- */
157
- gracefullyHandleChainErrors?: boolean;
158
- };
159
- /**
160
- * Type representing multiple blockchain configurations
161
- * @category Core
162
- */
163
- export type MultiChain = {
164
- [chainIdentifier in string]: ChainType;
165
- };
166
- type ChainSpecificData<T extends ChainType> = {
167
- wrappers: {
168
- [SwapType.TO_BTCLN]: ToBTCLNWrapper<T>;
169
- [SwapType.TO_BTC]: ToBTCWrapper<T>;
170
- [SwapType.FROM_BTCLN]: FromBTCLNWrapper<T>;
171
- [SwapType.FROM_BTC]: FromBTCWrapper<T>;
172
- [SwapType.TRUSTED_FROM_BTCLN]: LnForGasWrapper<T>;
173
- [SwapType.TRUSTED_FROM_BTC]: OnchainForGasWrapper<T>;
174
- [SwapType.SPV_VAULT_FROM_BTC]: SpvFromBTCWrapper<T>;
175
- [SwapType.FROM_BTCLN_AUTO]: FromBTCLNAutoWrapper<T>;
176
- };
177
- chainEvents: T["Events"];
178
- chainInterface: T["ChainInterface"];
179
- unifiedChainEvents: UnifiedSwapEventListener<T>;
180
- unifiedSwapStorage: UnifiedSwapStorage<T>;
181
- reviver: (val: any) => ISwap<T>;
182
- defaultVersion: string;
183
- versionedContracts: {
184
- [contractVersion: string]: {
185
- swapContract: T["Contract"];
186
- spvVaultContract: T["SpvVaultContract"];
187
- btcRelay: BtcRelay<any, T["TX"], BtcBlock, T["Signer"]>;
188
- synchronizer: RelaySynchronizer<any, T["TX"], BtcBlock>;
189
- };
190
- };
191
- };
192
- type MultiChainData<T extends MultiChain> = {
193
- [chainIdentifier in keyof T]: ChainSpecificData<T[chainIdentifier]>;
194
- };
195
- type CtorMultiChainData<T extends MultiChain> = {
196
- [chainIdentifier in keyof T]: ChainData<T[chainIdentifier]>;
197
- };
198
- /**
199
- * Type extracting chain identifiers from a MultiChain type
200
- * @category Core
201
- */
202
- export type ChainIds<T extends MultiChain> = keyof T & string;
203
- /**
204
- * Type helper to check if a chain supports a specific swap type
205
- * @category Core
206
- */
207
- 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"]>;
208
- /**
209
- * Core orchestrator for all atomiq swap operations
210
- *
211
- * @category Core
212
- */
213
- export declare class Swapper<T extends MultiChain> extends EventEmitter<{
214
- lpsRemoved: [Intermediary[]];
215
- lpsAdded: [Intermediary[]];
216
- swapState: [ISwap];
217
- swapLimitsChanged: [];
218
- }> {
219
- private readonly logger;
220
- private readonly swapStateListener;
221
- private defaultTrustedIntermediary?;
222
- private readonly bitcoinNetwork;
223
- private readonly options;
224
- /**
225
- * Data propagation layer used for broadcasting messages to watchtowers
226
- */
227
- private readonly messenger;
228
- /**
229
- * A dictionary of smart chains used by the SDK
230
- * @internal
231
- */
232
- readonly _chains: MultiChainData<T>;
233
- /**
234
- * Bitcoin RPC for fetching bitcoin chain data
235
- * @internal
236
- */
237
- readonly _bitcoinRpc: BitcoinRpcWithAddressIndex<any>;
238
- /**
239
- * Bitcoin network specification
240
- * @internal
241
- */
242
- readonly _btcNetwork: BTC_NETWORK;
243
- /**
244
- * Token data indexed by chain identifier and token addresses
245
- * @internal
246
- */
247
- readonly _tokens: {
248
- [chainId: string]: {
249
- [tokenAddress: string]: SCToken;
250
- };
251
- };
252
- /**
253
- * Token data indexed by chain identifier and token tickers
254
- * @internal
255
- */
256
- readonly _tokensByTicker: {
257
- [chainId: string]: {
258
- [tokenTicker: string]: SCToken;
259
- };
260
- };
261
- /**
262
- * Pricing API used by the SDK
263
- */
264
- readonly prices: ISwapPrice<T>;
265
- /**
266
- * API for contacting LPs
267
- */
268
- readonly lpApi: IntermediaryAPI;
269
- /**
270
- * Intermediary discovery instance
271
- */
272
- readonly intermediaryDiscovery: IntermediaryDiscovery;
273
- /**
274
- * Miscellaneous utility functions
275
- */
276
- readonly Utils: SwapperUtils<T>;
277
- /**
278
- * @internal
279
- */
280
- constructor(bitcoinRpc: BitcoinRpcWithAddressIndex<any>, lightningApi: LightningNetworkApi, bitcoinSynchronizer: (btcRelay: BtcRelay<any, any, any>) => RelaySynchronizer<any, any, any>, chainsData: CtorMultiChainData<T>, pricing: ISwapPrice<T>, tokens: SCToken[], messenger: Messenger, options?: SwapperOptions);
281
- private _init;
282
- private initPromise?;
283
- private initialized;
284
- /**
285
- * Initializes the swap storage and loads existing swaps, needs to be called before any other action
286
- */
287
- init(): Promise<void>;
288
- /**
289
- * Whether the SDK is initialized (after {@link init} is called)
290
- */
291
- isInitialized(): boolean;
292
- /**
293
- * Stops listening for onchain events and closes this Swapper instance
294
- */
295
- stop(): Promise<void>;
296
- /**
297
- * Creates swap & handles intermediary, quote selection
298
- *
299
- * @param chainIdentifier
300
- * @param create Callback to create the
301
- * @param amountData Amount data as passed to the function
302
- * @param swapType Swap type of the execution
303
- * @param maxWaitTimeMS Maximum waiting time after the first intermediary returns the quote
304
- * @private
305
- * @throws {Error} when no intermediary was found
306
- * @throws {Error} if the chain with the provided identifier cannot be found
307
- */
308
- private createSwap;
309
- /**
310
- * Creates Smart chain -> Bitcoin ({@link SwapType.TO_BTC}) swap
311
- *
312
- * @param chainIdentifier Chain identifier string of the source smart chain
313
- * @param signer Signer's address on the source chain
314
- * @param tokenAddress Token address to pay with
315
- * @param address Recipient's bitcoin address
316
- * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
317
- * @param exactIn Whether to use exact in instead of exact out
318
- * @param additionalParams Additional parameters sent to the LP when creating the swap
319
- * @param options Additional options for the swap
320
- */
321
- 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]>>;
322
- /**
323
- * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap
324
- *
325
- * @param chainIdentifier Chain identifier string of the source smart chain
326
- * @param signer Signer's address on the source chain
327
- * @param tokenAddress Token address to pay with
328
- * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount), and the swap
329
- * amount is taken from this fixed amount, hence only exact output swaps are supported
330
- * @param additionalParams Additional parameters sent to the LP when creating the swap
331
- * @param options Additional options for the swap
332
- */
333
- createToBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, paymentRequest: string, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
334
- /**
335
- * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via LNURL-pay link
336
- *
337
- * @param chainIdentifier Chain identifier string of the source smart chain
338
- * @param signer Signer's address on the source chain
339
- * @param tokenAddress Token address to pay with
340
- * @param lnurlPay LNURL-pay link to use for the payment
341
- * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
342
- * @param exactIn Whether to do an exact in swap instead of exact out
343
- * @param additionalParams Additional parameters sent to the LP when creating the swap
344
- * @param options Additional options for the swap
345
- */
346
- 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 & {
347
- comment?: string;
348
- }): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
349
- /**
350
- * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via {@link LightningInvoiceCreateService}
351
- *
352
- * @param chainIdentifier Chain identifier string of the source smart chain
353
- * @param signer Signer's address on the source chain
354
- * @param tokenAddress Token address to pay with
355
- * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
356
- * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
357
- * @param exactIn Whether to do an exact in swap instead of exact out
358
- * @param additionalParams Additional parameters sent to the LP when creating the swap
359
- * @param options Additional options for the swap
360
- */
361
- createToBTCLNSwapViaInvoiceCreateService<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, service: LightningInvoiceCreateService, amount: bigint, exactIn?: boolean, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
362
- /**
363
- * Creates Bitcoin -> Smart chain ({@link SwapType.SPV_VAULT_FROM_BTC}) swap
364
- *
365
- * @param chainIdentifier Chain identifier string of the destination smart chain
366
- * @param recipient Recipient address on the destination chain
367
- * @param tokenAddress Token address to receive
368
- * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
369
- * @param exactOut Whether to use a exact out instead of exact in
370
- * @param additionalParams Additional parameters sent to the LP when creating the swap
371
- * @param options Additional options for the swap
372
- */
373
- createFromBTCSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint | null, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: SpvFromBTCOptions): Promise<SpvFromBTCSwap<T[ChainIdentifier]>>;
374
- /**
375
- * Creates LEGACY Bitcoin -> Smart chain ({@link SwapType.FROM_BTC}) swap
376
- *
377
- * @param chainIdentifier Chain identifier string of the destination smart chain
378
- * @param recipient Recipient address on the destination chain
379
- * @param tokenAddress Token address to receive
380
- * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
381
- * @param exactOut Whether to use a exact out instead of exact in
382
- * @param additionalParams Additional parameters sent to the LP when creating the swap
383
- * @param options Additional options for the swap
384
- */
385
- createFromBTCSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCOptions): Promise<FromBTCSwap<T[ChainIdentifier]>>;
386
- /**
387
- * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap
388
- *
389
- * @param chainIdentifier Chain identifier string of the destination smart chain
390
- * @param recipient Recipient address on the destination chain
391
- * @param tokenAddress Token address to receive
392
- * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
393
- * @param exactOut Whether to use a exact out instead of exact in
394
- * @param additionalParams Additional parameters sent to the LP when creating the swap
395
- * @param options Additional options for the swap
396
- */
397
- createFromBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNOptions): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
398
- /**
399
- * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap, withdrawing from
400
- * an LNURL-withdraw link
401
- *
402
- * @param chainIdentifier Chain identifier string of the destination smart chain
403
- * @param recipient Recipient address on the destination chain
404
- * @param tokenAddress Token address to receive
405
- * @param lnurl LNURL-withdraw link to pull the funds from
406
- * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
407
- * @param exactOut Whether to use a exact out instead of exact in
408
- * @param additionalParams Additional parameters sent to the LP when creating the swap
409
- * @param options Additional options for the swap
410
- */
411
- createFromBTCLNSwapViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNOptions): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
412
- /**
413
- * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap
414
- *
415
- * @param chainIdentifier Chain identifier string of the destination smart chain
416
- * @param recipient Recipient address on the destination chain
417
- * @param tokenAddress Token address to receive
418
- * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
419
- * @param exactOut Whether to use a exact out instead of exact in
420
- * @param additionalParams Additional parameters sent to the LP when creating the swap
421
- * @param options Additional options for the swap
422
- */
423
- createFromBTCLNSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
424
- /**
425
- * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap, withdrawing from
426
- * an LNURL-withdraw link
427
- *
428
- * @param chainIdentifier Chain identifier string of the destination smart chain
429
- * @param recipient Recipient address on the destination chain
430
- * @param tokenAddress Token address to receive
431
- * @param lnurl LNURL-withdraw link to pull the funds from
432
- * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
433
- * @param exactOut Whether to use a exact out instead of exact in
434
- * @param additionalParams Additional parameters sent to the LP when creating the swap
435
- * @param options Additional options for the swap
436
- */
437
- createFromBTCLNSwapNewViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
438
- /**
439
- * Creates a trusted Bitcoin Lightning -> Smart chain ({@link SwapType.TRUSTED_FROM_BTCLN}) gas swap
440
- *
441
- * @param chainIdentifier Chain identifier string of the destination smart chain
442
- * @param recipient Recipient address on the destination chain
443
- * @param amount Amount of native token to receive, in base units
444
- * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
445
- * @throws {Error} If no trusted intermediary specified
446
- */
447
- createTrustedLNForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[C]>>;
448
- /**
449
- * Creates a trusted Bitcoin -> Smart chain ({@link SwapType.TRUSTED_FROM_BTC}) gas swap
450
- *
451
- * @param chainIdentifier Chain identifier string of the destination smart chain
452
- * @param recipient Recipient address on the destination chain
453
- * @param amount Amount of native token to receive, in base units
454
- * @param refundAddress Bitcoin refund address, in case the swap fails the funds are refunded here
455
- * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
456
- * @throws {Error} If no trusted intermediary specified
457
- */
458
- createTrustedOnchainForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[C]>>;
459
- /**
460
- * @internal
461
- */
462
- 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]>)>;
463
- /**
464
- * @internal
465
- */
466
- 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]>)>;
467
- /**
468
- * @internal
469
- */
470
- create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[C]>>;
471
- /**
472
- * @internal
473
- */
474
- create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[C]>>;
475
- /**
476
- * @internal
477
- */
478
- create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: undefined, exactIn: false, lightningInvoice: string): Promise<ToBTCLNSwap<T[C]>>;
479
- /**
480
- * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
481
- * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
482
- * invoice's pre-set amount is used instead.
483
- * @deprecated Use {@link swap} instead
484
- *
485
- * @param signer Smartchain (Solana, Starknet, etc.) address of the user
486
- * @param srcToken Source token of the swap, user pays this token
487
- * @param dstToken Destination token of the swap, user receives this token
488
- * @param amount Amount of the swap
489
- * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
490
- * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
491
- * LNURL-withdrawal to withdraw money from
492
- */
493
- create<C extends ChainIds<T>>(signer: string, srcToken: Token<C>, dstToken: Token<C>, amount: bigint | undefined, exactIn: boolean, addressLnurlLightningInvoice?: string | LNURLWithdraw | LNURLPay): Promise<ISwap<T[C]>>;
494
- /**
495
- * @internal
496
- */
497
- swap<C extends ChainIds<T>>(srcToken: BtcToken<true> | "BTCLN" | "BTC-LN" | "LIGHTNING-BTC", dstToken: SCToken<C> | string, 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]>)>;
498
- /**
499
- * @internal
500
- */
501
- swap<C extends ChainIds<T>>(srcToken: BtcToken<false> | "BTC" | "BITCOIN-BTC", dstToken: SCToken<C> | string, 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]>)>;
502
- /**
503
- * @internal
504
- */
505
- swap<C extends ChainIds<T>>(srcToken: SCToken<C> | string, dstToken: BtcToken<false> | "BTC" | "BITCOIN-BTC", amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[C]>>;
506
- /**
507
- * @internal
508
- */
509
- swap<C extends ChainIds<T>>(srcToken: SCToken<C> | string, dstToken: BtcToken<true> | "BTCLN" | "BTC-LN" | "LIGHTNING-BTC", amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | LightningInvoiceCreateService, options?: ToBTCLNOptions & {
510
- comment?: string;
511
- }): Promise<ToBTCLNSwap<T[C]>>;
512
- /**
513
- * @internal
514
- */
515
- swap<C extends ChainIds<T>>(srcToken: SCToken<C> | string, dstToken: BtcToken<true> | "BTCLN" | "BTC-LN" | "LIGHTNING-BTC", amount: undefined, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[C]>>;
516
- /**
517
- * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (if `exactIn=true`)
518
- * or output amount (if `exactIn=false`), NOTE: For regular Smart chain -> BTC-LN (lightning) swaps the passed amount is ignored and
519
- * invoice's pre-set amount is used instead, use LNURL-pay links for dynamic amounts
520
- *
521
- * @param srcToken Source token of the swap, user pays this token
522
- * @param dstToken Destination token of the swap, user receives this token
523
- * @param amount Amount of the swap either in base units as {bigint} or in human readable format (with decimals) as {string}
524
- * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
525
- * @param src Source wallet/lnurl-withdraw of the swap
526
- * @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
527
- * @param options Options for the swap
528
- */
529
- swap<C extends ChainIds<T>>(srcToken: Token<C> | string, dstToken: Token<C> | string, amount: bigint | string | undefined, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | LightningInvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {
530
- comment?: string;
531
- }) | FromBTCLNAutoOptions): Promise<ISwap<T[C]>>;
532
- /**
533
- * A helper function to sweep all the funds from a given wallet in a single swap, after getting the quote you can
534
- * execute the swap by passing the returned `feeRate` and `utxos` to the {@link SpvFromBTCSwap.execute},
535
- * {@link SpvFromBTCSwap.getFundedPsbt} or {@link SpvFromBTCSwap.sendBitcoinTransaction} functions along
536
- * with `spendFully=true`.
537
- *
538
- * @example
539
- * Create the swap first using this function
540
- * ```ts
541
- * const {swap, utxos, btcFeeRate} = await swapper.sweepBitcoinWallet(wallet, Tokens.CITREA.CBTC, dstAddress);
542
- * ```
543
- * Then execute it using one of these execution paths - ensure that you supply the returned `utxos`, `btcFeeRate`
544
- * params and also set `spendFully` to `true`!
545
- *
546
- * a) Execute and pass the returned utxos and btcFeeRate:
547
- * ```ts
548
- * await swap.execute(wallet, undefined, {feeRate: btcFeeRate, utxos: utxos, spendFully: true});
549
- * ```
550
- *
551
- * b) Get funded PSBT to sign externally:
552
- * ```ts
553
- * const {psbt, psbtHex, psbtBase64, signInputs} = await swap.getFundedPsbt(wallet, btcFeeRate, undefined, utxos, true);
554
- * // Sign the psbt at the specified signInputs indices
555
- * const signedPsbt = ...;
556
- * // Then submit back to the SDK
557
- * await swap.submitPsbt(signedPsbt);
558
- * ```
559
- *
560
- * c) Only sign and send the signed PSBT with the provided wallet:
561
- * ```ts
562
- * await swap.sendBitcoinTransaction(wallet, btcFeeRate, utxos, true);
563
- * ```
564
- */
565
- sweepBitcoinWallet<C extends ChainIds<T>>(srcWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, _dstToken: SCToken<C> | string, dstAddress: string, options?: SpvFromBTCOptions): Promise<{
566
- swap: SpvFromBTCSwap<T[C]>;
567
- utxos: BitcoinWalletUtxo[];
568
- btcFeeRate: number;
569
- }>;
570
- /**
571
- * Returns all swaps
572
- */
573
- getAllSwaps(): Promise<ISwap[]>;
574
- /**
575
- * Returns all swaps for the specific chain, and optionally also for a specific signer's address
576
- */
577
- getAllSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
578
- /**
579
- * Returns all swaps which are pending (i.e. not in their final state yet)
580
- */
581
- getPendingSwaps(): Promise<ISwap[]>;
582
- /**
583
- * Returns swaps which are pending (i.e. not in their final state yet) for the specific chain, and optionally also for a specific signer's address
584
- */
585
- getPendingSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
586
- /**
587
- * Returns all swaps where an action is required (either claim or refund)
588
- */
589
- getActionableSwaps(): Promise<ISwap[]>;
590
- /**
591
- * Returns swaps where an action is required (either claim or refund) for the specific chain, and optionally also for a specific signer's address
592
- */
593
- getActionableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
594
- /**
595
- * Returns all swaps that are refundable
596
- */
597
- getRefundableSwaps(): Promise<IToBTCSwap[]>;
598
- /**
599
- * Returns swaps which are refundable for the specific chain, and optionally also for a specific signer's address
600
- */
601
- getRefundableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IToBTCSwap<T[C]>[]>;
602
- /**
603
- * Returns all swaps that are manually claimable
604
- */
605
- getClaimableSwaps(): Promise<IClaimableSwap[]>;
606
- /**
607
- * Returns all swaps that are manually claimable for the specific chain, and optionally also for a specific signer's address
608
- */
609
- getClaimableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IClaimableSwap<T[C]>[]>;
610
- /**
611
- * Returns swap with a specific id (identifier)
612
- */
613
- getSwapById(id: string): Promise<ISwap>;
614
- /**
615
- * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
616
- */
617
- getSwapById<C extends ChainIds<T>>(id: string, chainId: C, signer?: string): Promise<ISwap<T[C]>>;
618
- /**
619
- * Returns the swap with a proper return type, or `undefined` if not found or has wrong type
620
- *
621
- * @param id An ID of the swap ({@link ISwap.getId})
622
- * @param chainId Chain identifier of the smart chain where the swap was initiated
623
- * @param swapType Type of the swap
624
- * @param signer An optional required smart chain signer address to fetch the swap for
625
- */
626
- getTypedSwapById<C extends ChainIds<T>, S extends SwapType>(id: string, chainId: C, swapType: S, signer?: string): Promise<SwapTypeMapping<T[C]>[S] | undefined>;
627
- private syncSwapsForChain;
628
- /**
629
- * Deletes the swaps from the persistent storage backend. Note that some data (like lightning network
630
- * amounts and bolt11 invoices) are purely off-chain and can never be recovered later just from
631
- * on-chain data!
632
- *
633
- * @param chainId Optional, to only delete swaps for this smart chain
634
- * @param signer Optional, to only delete swaps for this smart chain signer (`chainId` param must be
635
- * set to delete only signer's swaps)
636
- */
637
- wipeStorage<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
638
- /**
639
- * Synchronizes swaps from on-chain, this is ran automatically when SDK is initialized, hence
640
- * should only be ran manually when `dontCheckPastSwaps=true` is passed in the swapper options,
641
- * also deletes expired quotes
642
- *
643
- * @param chainId Optional chain identifier to only run swap sync for a single smart chain
644
- * @param signer Optional signer to only run swap sync for swaps initiated by this signer
645
- */
646
- _syncSwaps<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
647
- /**
648
- * When the swapper is initiated with the `noEvents` config this function allows you to manually poll for on-chain
649
- * events. It returns an events cursor which you should save and pass to the next call to the `poll()` function.
650
- *
651
- * @param chainId Chain for which to poll the chain events listener for
652
- * @param lastEventCursorState Event cursor state returned from the last call to the `poll()` function
653
- */
654
- _pollChainEvents<C extends ChainIds<T>>(chainId: C, lastEventCursorState?: any): Promise<any>;
655
- /**
656
- * Recovers swaps from on-chain historical data.
657
- *
658
- * Please note that the recovered swaps might not be complete (i.e. missing amounts or addresses), as some
659
- * of the swap data is purely off-chain and can never be recovered purely from on-chain data. This
660
- * functions tries to recover as much swap data as possible.
661
- *
662
- * @param chainId Smart chain identifier string to recover the swaps from
663
- * @param signer Signer address to recover the swaps for
664
- * @param startBlockheight Optional starting blockheight for swap data recovery, will only check swaps
665
- * initiated after this blockheight
666
- */
667
- recoverSwaps<C extends ChainIds<T>>(chainId: C, signer: string, startBlockheight?: number): Promise<ISwap<T[C]>[]>;
668
- getToken(ticker: "BTC" | "BITCOIN-BTC"): BtcToken<false>;
669
- getToken(ticker: "BTCLN" | "BTC-LN" | "LIGHTNING-BTC"): BtcToken<true>;
670
- getToken<ChainIdentifier extends ChainIds<T>>(ticker: `${ChainIdentifier}-${string}`): SCToken<ChainIdentifier>;
671
- getToken(tickerOrAddress: string): Token<ChainIds<T>>;
672
- /**
673
- * Creates a child swapper instance with a given smart chain
674
- *
675
- * @param chainIdentifier Smart chain identifier for the created child swapper instance
676
- */
677
- withChain<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapperWithChain<T, ChainIdentifier>;
678
- /**
679
- * Returns an array of all the supported smart chains
680
- */
681
- getSmartChains(): ChainIds<T>[];
682
- /**
683
- * Returns whether the SDK supports a given swap type on a given chain based on currently known LPs
684
- *
685
- * @param chainId Smart chain identifier string
686
- * @param swapType Swap protocol type
687
- */
688
- supportsSwapType<ChainIdentifier extends ChainIds<T>, Type extends SwapType>(chainId: ChainIdentifier, swapType: Type): SupportsSwapType<T[ChainIdentifier], Type>;
689
- /**
690
- * @internal
691
- */
692
- 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);
693
- /**
694
- * @internal
695
- */
696
- 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);
697
- /**
698
- * @internal
699
- */
700
- getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>): SwapType.TO_BTC;
701
- /**
702
- * @internal
703
- */
704
- getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
705
- /**
706
- * Returns type of the swap based on input and output tokens specified
707
- *
708
- * @param srcToken Source token
709
- * @param dstToken Destination token
710
- */
711
- 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;
712
- /**
713
- * Helper information about various swap protocol and their features:
714
- * - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
715
- * arbitrary transaction
716
- * - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
717
- * arbitrary transactions
718
- * - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
719
- * amount of native token as part of the swap when swapping to smart chains
720
- *
721
- * Uses a `Record` type here, use the {@link SwapProtocolInfo} import for a literal readonly type, with
722
- * pre-filled exact values in the type.
723
- */
724
- readonly SwapTypeInfo: Record<SwapType, {
725
- requiresInputWallet: boolean;
726
- requiresOutputWallet: boolean;
727
- supportsGasDrop: boolean;
728
- }>;
729
- /**
730
- * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
731
- *
732
- * @param srcToken Source token
733
- * @param dstToken Destination token
734
- */
735
- getSwapLimits<C extends ChainIds<T>, A extends Token<C>, B extends Token<C>>(srcToken: A, dstToken: B): {
736
- input: {
737
- min: TokenAmount<A>;
738
- max?: TokenAmount<A>;
739
- };
740
- output: {
741
- min: TokenAmount<B>;
742
- max?: TokenAmount<B>;
743
- };
744
- };
745
- /**
746
- * Returns an array of supported tokens either on the input or on the output of a swap
747
- *
748
- * @param input Whether to return input tokens or output tokens
749
- */
750
- getSupportedTokens(input: SwapSide | boolean): Token[];
751
- /**
752
- * Returns a set of supported tokens by all the intermediaries offering a specific swap service
753
- *
754
- * @param _swapType Swap service type to check supported tokens for
755
- */
756
- private getSupportedTokensForSwapType;
757
- /**
758
- * Returns the set of supported token addresses by all the intermediaries we know of offering a specific swapType service
759
- *
760
- * @param chainIdentifier Chain identifier string
761
- * @param swapType Specific swap type for which to obtain supported tokens
762
- */
763
- private getSupportedTokenAddresses;
764
- /**
765
- * Returns tokens that you can swap to (if input=true) from a given token,
766
- * or tokens that you can swap from (if input=false) to a given token
767
- */
768
- getSwapCounterTokens(token: Token, input: SwapSide | boolean): Token[];
769
- }
770
- export {};
1
+ /// <reference types="node" />
2
+ import { ISwapPrice } from "../prices/abstract/ISwapPrice";
3
+ import { BitcoinNetwork, BitcoinRpcWithAddressIndex, BtcBlock, BtcRelay, ChainData, ChainType, LightningNetworkApi, Messenger, RelaySynchronizer } from "@atomiqlabs/base";
4
+ import { 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 } 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 { SwapperWithChain } from "./SwapperWithChain";
20
+ import { OnchainForGasSwap } from "../swaps/trusted/onchain/OnchainForGasSwap";
21
+ import { OnchainForGasWrapper } from "../swaps/trusted/onchain/OnchainForGasWrapper";
22
+ import { BTC_NETWORK } from "@scure/btc-signer/utils";
23
+ import { IUnifiedStorage } from "../storage/IUnifiedStorage";
24
+ import { UnifiedSwapStorage, UnifiedSwapStorageCompositeIndexes, UnifiedSwapStorageIndexes } from "../storage/UnifiedSwapStorage";
25
+ import { UnifiedSwapEventListener } from "../events/UnifiedSwapEventListener";
26
+ import { IToBTCSwap } from "../swaps/escrow_swaps/tobtc/IToBTCSwap";
27
+ import { SpvFromBTCOptions, SpvFromBTCWrapper } from "../swaps/spv_swaps/SpvFromBTCWrapper";
28
+ import { SpvFromBTCSwap } from "../swaps/spv_swaps/SpvFromBTCSwap";
29
+ import { SwapperUtils } from "./SwapperUtils";
30
+ import { FromBTCLNAutoOptions, FromBTCLNAutoWrapper } from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
31
+ import { FromBTCLNAutoSwap } from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
32
+ import { SwapAmountType } from "../enums/SwapAmountType";
33
+ import { IClaimableSwap } from "../swaps/IClaimableSwap";
34
+ import { SwapTypeMapping } from "../utils/SwapUtils";
35
+ import { TokenAmount } from "../types/TokenAmount";
36
+ import { BtcToken, SCToken, Token } from "../types/Token";
37
+ import { LNURLWithdraw } from "../types/lnurl/LNURLWithdraw";
38
+ import { LNURLPay } from "../types/lnurl/LNURLPay";
39
+ import { NotNever } from "../utils/TypeUtils";
40
+ import { LightningInvoiceCreateService } from "../types/wallets/LightningInvoiceCreateService";
41
+ import { SwapSide } from "../enums/SwapSide";
42
+ import { IntermediaryAPI } from "../intermediaries/apis/IntermediaryAPI";
43
+ import { BitcoinWalletUtxo, IBitcoinWallet } from "../bitcoin/wallet/IBitcoinWallet";
44
+ import { MinimalBitcoinWalletInterface } from "../types/wallets/MinimalBitcoinWalletInterface";
45
+ /**
46
+ * Configuration options for the Swapper
47
+ * @category Core
48
+ */
49
+ export type SwapperOptions = {
50
+ /**
51
+ * Manual override for the intermediary (LP) URLs for the SDK to use, by default these are fetched automatically
52
+ * from the registry
53
+ */
54
+ intermediaryUrl?: string | string[];
55
+ /**
56
+ * Registry URL for where to look for active intermediary (LP) endpoint URLs
57
+ */
58
+ registryUrl?: string;
59
+ /**
60
+ * Bitcoin network to use for the swaps,
61
+ */
62
+ bitcoinNetwork?: BitcoinNetwork;
63
+ /**
64
+ * Timeout (in milliseconds) for HTTP GET requests done by the SDK
65
+ */
66
+ getRequestTimeout?: number;
67
+ /**
68
+ * Timeout (in milliseconds) for HTTP POST requests done by the SDK
69
+ */
70
+ postRequestTimeout?: number;
71
+ /**
72
+ * Additional parameters to be sent to the intermediaries (LPs), when requesting quotes from them
73
+ */
74
+ defaultAdditionalParameters?: {
75
+ [key: string]: any;
76
+ };
77
+ /**
78
+ * Optional name prefix to use when creating a swap storage, you can use this to create separate storage
79
+ * instances that don't overlap.
80
+ */
81
+ storagePrefix?: string;
82
+ /**
83
+ * Sets the default intermediary (LP) to use for the trusted gas swaps, if not set the SDK uses a default one
84
+ */
85
+ defaultTrustedIntermediaryUrl?: string;
86
+ /**
87
+ * A function callback to retrieve a specific named storage container for swap persistency. If not present, the
88
+ * default IndexedDB storage adapter is used. When you use the SDK in non-browser based environments you need to
89
+ * provide this callback such that the SDK is able to use a custom storage adapter.
90
+ *
91
+ * @param storageName Name of the container to retrieve
92
+ */
93
+ swapStorage?: (storageName: string) => IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
94
+ /**
95
+ * By setting this flag, the swapper doesn't schedule automatic tick timers. To make sure the swap states are
96
+ * properly updated (e.g. the expired swaps properly move to the expired state), you should call the
97
+ * {@link Swapper._syncSwaps} function periodically. This flag should be set when you run an environment that
98
+ * doesn't support long-running timers - e.g. serverless environments like Azure Function Apps or AWS Lambda
99
+ */
100
+ noTimers?: boolean;
101
+ /**
102
+ * By setting this flag, the swapper doesn't subscribe to on-chain events. To make sure the swap states are
103
+ * properly updated you should either call the {@link Swapper._syncSwaps} function periodically, or use the
104
+ * {@link Swapper._pollChainEvents} function to manually poll for on-chain events. This flag should be set
105
+ * when you run an environment that doesn't support long-running timers and websocket connections - e.g.
106
+ * serverless environments like Azure Function Apps or AWS Lambda
107
+ */
108
+ noEvents?: boolean;
109
+ /**
110
+ * By setting this flag, the swap objects will not be cached in the SDK and instead will always be loaded from
111
+ * the persistent storage. By default, the SDK uses a `WeakRef` mapping of swaps, to ensure that when the same
112
+ * swap is loaded concurrently, it returns the same object reference to both, making the changes on the object
113
+ * atomic. This flag should be set to `true` when running in an environment where multiple instances of the SDK
114
+ * access the same swap database - e.g. serverless environments like Azure Function Apps or AWS Lambda
115
+ */
116
+ noSwapCache?: boolean;
117
+ /**
118
+ * Skip checking past swaps when the swapper is initiated with {@link Swapper.init}, you can call the
119
+ * {@link Swapper._syncSwaps} function later, to check the swaps. By default, the SDK checks the state
120
+ * of all the known swaps during init.
121
+ */
122
+ dontCheckPastSwaps?: boolean;
123
+ /**
124
+ * Skip fetching the LPs when the swapper is initiated with {@link Swapper.init}, this means the list of available
125
+ * tokens and swap limits won't be available immediately. LPs will be fetched automatically later, when a swap
126
+ * is requested
127
+ */
128
+ dontFetchLPs?: boolean;
129
+ /**
130
+ * Defaults to `true`, this means every swap regardless of it being initiated (i.e. when `commit()`, `execute()` or
131
+ * `waitTillPayment` is called) is saved to the persistent storage. This is a reasonable default for when you
132
+ * want to only create a swap, and then later on retrieve it with the `swapper.getSwapById()` function.
133
+ *
134
+ * Setting this to `false` means the SDK only saves and persists swaps that are considered initiated, i.e. when
135
+ * `commit()`, `execute()` or `waitTillPayment()` is called (or their respective txs... prefixed variations). This
136
+ * might save calls to the persistent storage for swaps that are never initiated. This is useful in e.g.
137
+ * frontend implementations where the frontend holds the swap object reference until it is initiated anyway, not
138
+ * necessitating the saving of the swap data to the persistent storage until it is actually initiated.
139
+ */
140
+ saveUninitializedSwaps?: boolean;
141
+ /**
142
+ * Automatically checks system time on initialize, if the system time drifts too far from the actual time
143
+ * (as checked from multiple server sources) it adjusts the `Date.now()` function to return proper actual time.
144
+ */
145
+ automaticClockDriftCorrection?: boolean;
146
+ /**
147
+ * Used in centralized API deployments to allow higher rate limits from LPs
148
+ */
149
+ signedKeyBasedAuth?: {
150
+ certificate: string;
151
+ privateKey: string;
152
+ };
153
+ /**
154
+ * If you set the option to `true` the chains for which the RPC is unresponsive are skipped and not initialized
155
+ * letting the swapper continue with only the available chains with responsive RPCs
156
+ */
157
+ gracefullyHandleChainErrors?: boolean;
158
+ };
159
+ /**
160
+ * Type representing multiple blockchain configurations
161
+ * @category Core
162
+ */
163
+ export type MultiChain = {
164
+ [chainIdentifier in string]: ChainType;
165
+ };
166
+ type ChainSpecificData<T extends ChainType> = {
167
+ wrappers: {
168
+ [SwapType.TO_BTCLN]: ToBTCLNWrapper<T>;
169
+ [SwapType.TO_BTC]: ToBTCWrapper<T>;
170
+ [SwapType.FROM_BTCLN]: FromBTCLNWrapper<T>;
171
+ [SwapType.FROM_BTC]: FromBTCWrapper<T>;
172
+ [SwapType.TRUSTED_FROM_BTCLN]: LnForGasWrapper<T>;
173
+ [SwapType.TRUSTED_FROM_BTC]: OnchainForGasWrapper<T>;
174
+ [SwapType.SPV_VAULT_FROM_BTC]: SpvFromBTCWrapper<T>;
175
+ [SwapType.FROM_BTCLN_AUTO]: FromBTCLNAutoWrapper<T>;
176
+ };
177
+ chainEvents: T["Events"];
178
+ chainInterface: T["ChainInterface"];
179
+ unifiedChainEvents: UnifiedSwapEventListener<T>;
180
+ unifiedSwapStorage: UnifiedSwapStorage<T>;
181
+ reviver: (val: any) => ISwap<T>;
182
+ defaultVersion: string;
183
+ versionedContracts: {
184
+ [contractVersion: string]: {
185
+ swapContract: T["Contract"];
186
+ spvVaultContract: T["SpvVaultContract"];
187
+ btcRelay: BtcRelay<any, T["TX"], BtcBlock, T["Signer"]>;
188
+ synchronizer: RelaySynchronizer<any, T["TX"], BtcBlock>;
189
+ };
190
+ };
191
+ };
192
+ type MultiChainData<T extends MultiChain> = {
193
+ [chainIdentifier in keyof T]: ChainSpecificData<T[chainIdentifier]>;
194
+ };
195
+ type CtorMultiChainData<T extends MultiChain> = {
196
+ [chainIdentifier in keyof T]: ChainData<T[chainIdentifier]>;
197
+ };
198
+ /**
199
+ * Type extracting chain identifiers from a MultiChain type
200
+ * @category Core
201
+ */
202
+ export type ChainIds<T extends MultiChain> = keyof T & string;
203
+ /**
204
+ * Type helper to check if a chain supports a specific swap type
205
+ * @category Core
206
+ */
207
+ 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"]>;
208
+ /**
209
+ * Core orchestrator for all atomiq swap operations
210
+ *
211
+ * @category Core
212
+ */
213
+ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
214
+ lpsRemoved: [Intermediary[]];
215
+ lpsAdded: [Intermediary[]];
216
+ swapState: [ISwap];
217
+ swapLimitsChanged: [];
218
+ }> {
219
+ private readonly logger;
220
+ private readonly swapStateListener;
221
+ private defaultTrustedIntermediary?;
222
+ private readonly bitcoinNetwork;
223
+ private readonly options;
224
+ /**
225
+ * Data propagation layer used for broadcasting messages to watchtowers
226
+ */
227
+ private readonly messenger;
228
+ /**
229
+ * A dictionary of smart chains used by the SDK
230
+ * @internal
231
+ */
232
+ readonly _chains: MultiChainData<T>;
233
+ /**
234
+ * Bitcoin RPC for fetching bitcoin chain data
235
+ * @internal
236
+ */
237
+ readonly _bitcoinRpc: BitcoinRpcWithAddressIndex<any>;
238
+ /**
239
+ * Bitcoin network specification
240
+ * @internal
241
+ */
242
+ readonly _btcNetwork: BTC_NETWORK;
243
+ /**
244
+ * Token data indexed by chain identifier and token addresses
245
+ * @internal
246
+ */
247
+ readonly _tokens: {
248
+ [chainId: string]: {
249
+ [tokenAddress: string]: SCToken;
250
+ };
251
+ };
252
+ /**
253
+ * Token data indexed by chain identifier and token tickers
254
+ * @internal
255
+ */
256
+ readonly _tokensByTicker: {
257
+ [chainId: string]: {
258
+ [tokenTicker: string]: SCToken;
259
+ };
260
+ };
261
+ /**
262
+ * Pricing API used by the SDK
263
+ */
264
+ readonly prices: ISwapPrice<T>;
265
+ /**
266
+ * API for contacting LPs
267
+ */
268
+ readonly lpApi: IntermediaryAPI;
269
+ /**
270
+ * Intermediary discovery instance
271
+ */
272
+ readonly intermediaryDiscovery: IntermediaryDiscovery;
273
+ /**
274
+ * Miscellaneous utility functions
275
+ */
276
+ readonly Utils: SwapperUtils<T>;
277
+ /**
278
+ * @internal
279
+ */
280
+ constructor(bitcoinRpc: BitcoinRpcWithAddressIndex<any>, lightningApi: LightningNetworkApi, bitcoinSynchronizer: (btcRelay: BtcRelay<any, any, any>) => RelaySynchronizer<any, any, any>, chainsData: CtorMultiChainData<T>, pricing: ISwapPrice<T>, tokens: SCToken[], messenger: Messenger, options?: SwapperOptions);
281
+ private _init;
282
+ private initPromise?;
283
+ private initialized;
284
+ /**
285
+ * Initializes the swap storage and loads existing swaps, needs to be called before any other action
286
+ */
287
+ init(): Promise<void>;
288
+ /**
289
+ * Whether the SDK is initialized (after {@link init} is called)
290
+ */
291
+ isInitialized(): boolean;
292
+ /**
293
+ * Stops listening for onchain events and closes this Swapper instance
294
+ */
295
+ stop(): Promise<void>;
296
+ /**
297
+ * Creates swap & handles intermediary, quote selection
298
+ *
299
+ * @param chainIdentifier
300
+ * @param create Callback to create the
301
+ * @param amountData Amount data as passed to the function
302
+ * @param swapType Swap type of the execution
303
+ * @param maxWaitTimeMS Maximum waiting time after the first intermediary returns the quote
304
+ * @private
305
+ * @throws {Error} when no intermediary was found
306
+ * @throws {Error} if the chain with the provided identifier cannot be found
307
+ */
308
+ private createSwap;
309
+ /**
310
+ * Creates Smart chain -> Bitcoin ({@link SwapType.TO_BTC}) swap
311
+ *
312
+ * @param chainIdentifier Chain identifier string of the source smart chain
313
+ * @param signer Signer's address on the source chain
314
+ * @param tokenAddress Token address to pay with
315
+ * @param address Recipient's bitcoin address
316
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
317
+ * @param exactIn Whether to use exact in instead of exact out
318
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
319
+ * @param options Additional options for the swap
320
+ */
321
+ 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]>>;
322
+ /**
323
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap
324
+ *
325
+ * @param chainIdentifier Chain identifier string of the source smart chain
326
+ * @param signer Signer's address on the source chain
327
+ * @param tokenAddress Token address to pay with
328
+ * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount), and the swap
329
+ * amount is taken from this fixed amount, hence only exact output swaps are supported
330
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
331
+ * @param options Additional options for the swap
332
+ */
333
+ createToBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, paymentRequest: string, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
334
+ /**
335
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via LNURL-pay link
336
+ *
337
+ * @param chainIdentifier Chain identifier string of the source smart chain
338
+ * @param signer Signer's address on the source chain
339
+ * @param tokenAddress Token address to pay with
340
+ * @param lnurlPay LNURL-pay link to use for the payment
341
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
342
+ * @param exactIn Whether to do an exact in swap instead of exact out
343
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
344
+ * @param options Additional options for the swap
345
+ */
346
+ 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 & {
347
+ comment?: string;
348
+ }): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
349
+ /**
350
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via {@link LightningInvoiceCreateService}
351
+ *
352
+ * @param chainIdentifier Chain identifier string of the source smart chain
353
+ * @param signer Signer's address on the source chain
354
+ * @param tokenAddress Token address to pay with
355
+ * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
356
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
357
+ * @param exactIn Whether to do an exact in swap instead of exact out
358
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
359
+ * @param options Additional options for the swap
360
+ */
361
+ createToBTCLNSwapViaInvoiceCreateService<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, service: LightningInvoiceCreateService, amount: bigint, exactIn?: boolean, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
362
+ /**
363
+ * Creates Bitcoin -> Smart chain ({@link SwapType.SPV_VAULT_FROM_BTC}) swap
364
+ *
365
+ * @param chainIdentifier Chain identifier string of the destination smart chain
366
+ * @param recipient Recipient address on the destination chain
367
+ * @param tokenAddress Token address to receive
368
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
369
+ * @param exactOut Whether to use a exact out instead of exact in
370
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
371
+ * @param options Additional options for the swap
372
+ */
373
+ createFromBTCSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint | null, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: SpvFromBTCOptions): Promise<SpvFromBTCSwap<T[ChainIdentifier]>>;
374
+ /**
375
+ * Creates LEGACY Bitcoin -> Smart chain ({@link SwapType.FROM_BTC}) swap
376
+ *
377
+ * @param chainIdentifier Chain identifier string of the destination smart chain
378
+ * @param recipient Recipient address on the destination chain
379
+ * @param tokenAddress Token address to receive
380
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
381
+ * @param exactOut Whether to use a exact out instead of exact in
382
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
383
+ * @param options Additional options for the swap
384
+ */
385
+ createFromBTCSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCOptions): Promise<FromBTCSwap<T[ChainIdentifier]>>;
386
+ /**
387
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap
388
+ *
389
+ * @param chainIdentifier Chain identifier string of the destination smart chain
390
+ * @param recipient Recipient address on the destination chain
391
+ * @param tokenAddress Token address to receive
392
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
393
+ * @param exactOut Whether to use a exact out instead of exact in
394
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
395
+ * @param options Additional options for the swap
396
+ */
397
+ createFromBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNOptions): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
398
+ /**
399
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap, withdrawing from
400
+ * an LNURL-withdraw link
401
+ *
402
+ * @param chainIdentifier Chain identifier string of the destination smart chain
403
+ * @param recipient Recipient address on the destination chain
404
+ * @param tokenAddress Token address to receive
405
+ * @param lnurl LNURL-withdraw link to pull the funds from
406
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
407
+ * @param exactOut Whether to use a exact out instead of exact in
408
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
409
+ * @param options Additional options for the swap
410
+ */
411
+ createFromBTCLNSwapViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNOptions): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
412
+ /**
413
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap
414
+ *
415
+ * @param chainIdentifier Chain identifier string of the destination smart chain
416
+ * @param recipient Recipient address on the destination chain
417
+ * @param tokenAddress Token address to receive
418
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
419
+ * @param exactOut Whether to use a exact out instead of exact in
420
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
421
+ * @param options Additional options for the swap
422
+ */
423
+ createFromBTCLNSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
424
+ /**
425
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap, withdrawing from
426
+ * an LNURL-withdraw link
427
+ *
428
+ * @param chainIdentifier Chain identifier string of the destination smart chain
429
+ * @param recipient Recipient address on the destination chain
430
+ * @param tokenAddress Token address to receive
431
+ * @param lnurl LNURL-withdraw link to pull the funds from
432
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
433
+ * @param exactOut Whether to use a exact out instead of exact in
434
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
435
+ * @param options Additional options for the swap
436
+ */
437
+ createFromBTCLNSwapNewViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
438
+ /**
439
+ * Creates a trusted Bitcoin Lightning -> Smart chain ({@link SwapType.TRUSTED_FROM_BTCLN}) gas swap
440
+ *
441
+ * @param chainIdentifier Chain identifier string of the destination smart chain
442
+ * @param recipient Recipient address on the destination chain
443
+ * @param amount Amount of native token to receive, in base units
444
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
445
+ * @throws {Error} If no trusted intermediary specified
446
+ */
447
+ createTrustedLNForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[C]>>;
448
+ /**
449
+ * Creates a trusted Bitcoin -> Smart chain ({@link SwapType.TRUSTED_FROM_BTC}) gas swap
450
+ *
451
+ * @param chainIdentifier Chain identifier string of the destination smart chain
452
+ * @param recipient Recipient address on the destination chain
453
+ * @param amount Amount of native token to receive, in base units
454
+ * @param refundAddress Bitcoin refund address, in case the swap fails the funds are refunded here
455
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
456
+ * @throws {Error} If no trusted intermediary specified
457
+ */
458
+ createTrustedOnchainForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[C]>>;
459
+ /**
460
+ * @internal
461
+ */
462
+ 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]>)>;
463
+ /**
464
+ * @internal
465
+ */
466
+ 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]>)>;
467
+ /**
468
+ * @internal
469
+ */
470
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[C]>>;
471
+ /**
472
+ * @internal
473
+ */
474
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[C]>>;
475
+ /**
476
+ * @internal
477
+ */
478
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: undefined, exactIn: false, lightningInvoice: string): Promise<ToBTCLNSwap<T[C]>>;
479
+ /**
480
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
481
+ * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
482
+ * invoice's pre-set amount is used instead.
483
+ * @deprecated Use {@link swap} instead
484
+ *
485
+ * @param signer Smartchain (Solana, Starknet, etc.) address of the user
486
+ * @param srcToken Source token of the swap, user pays this token
487
+ * @param dstToken Destination token of the swap, user receives this token
488
+ * @param amount Amount of the swap
489
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
490
+ * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
491
+ * LNURL-withdrawal to withdraw money from
492
+ */
493
+ create<C extends ChainIds<T>>(signer: string, srcToken: Token<C>, dstToken: Token<C>, amount: bigint | undefined, exactIn: boolean, addressLnurlLightningInvoice?: string | LNURLWithdraw | LNURLPay): Promise<ISwap<T[C]>>;
494
+ /**
495
+ * @internal
496
+ */
497
+ swap<C extends ChainIds<T>>(srcToken: BtcToken<true> | "BTCLN" | "BTC-LN" | "LIGHTNING-BTC", dstToken: SCToken<C> | string, 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]>)>;
498
+ /**
499
+ * @internal
500
+ */
501
+ swap<C extends ChainIds<T>>(srcToken: BtcToken<false> | "BTC" | "BITCOIN-BTC", dstToken: SCToken<C> | string, 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]>)>;
502
+ /**
503
+ * @internal
504
+ */
505
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C> | string, dstToken: BtcToken<false> | "BTC" | "BITCOIN-BTC", amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[C]>>;
506
+ /**
507
+ * @internal
508
+ */
509
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C> | string, dstToken: BtcToken<true> | "BTCLN" | "BTC-LN" | "LIGHTNING-BTC", amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | LightningInvoiceCreateService, options?: ToBTCLNOptions & {
510
+ comment?: string;
511
+ }): Promise<ToBTCLNSwap<T[C]>>;
512
+ /**
513
+ * @internal
514
+ */
515
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C> | string, dstToken: BtcToken<true> | "BTCLN" | "BTC-LN" | "LIGHTNING-BTC", amount: undefined, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[C]>>;
516
+ /**
517
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (if `exactIn=true`)
518
+ * or output amount (if `exactIn=false`), NOTE: For regular Smart chain -> BTC-LN (lightning) swaps the passed amount is ignored and
519
+ * invoice's pre-set amount is used instead, use LNURL-pay links for dynamic amounts
520
+ *
521
+ * @param srcToken Source token of the swap, user pays this token
522
+ * @param dstToken Destination token of the swap, user receives this token
523
+ * @param amount Amount of the swap either in base units as {bigint} or in human readable format (with decimals) as {string}
524
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
525
+ * @param src Source wallet/lnurl-withdraw of the swap
526
+ * @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
527
+ * @param options Options for the swap
528
+ */
529
+ swap<C extends ChainIds<T>>(srcToken: Token<C> | string, dstToken: Token<C> | string, amount: bigint | string | undefined, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | LightningInvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {
530
+ comment?: string;
531
+ }) | FromBTCLNAutoOptions): Promise<ISwap<T[C]>>;
532
+ /**
533
+ * A helper function to sweep all the funds from a given wallet in a single swap, after getting the quote you can
534
+ * execute the swap by passing the returned `feeRate` and `utxos` to the {@link SpvFromBTCSwap.execute},
535
+ * {@link SpvFromBTCSwap.getFundedPsbt} or {@link SpvFromBTCSwap.sendBitcoinTransaction} functions along
536
+ * with `spendFully=true`.
537
+ *
538
+ * @example
539
+ * Create the swap first using this function
540
+ * ```ts
541
+ * const {swap, utxos, btcFeeRate} = await swapper.sweepBitcoinWallet(wallet, Tokens.CITREA.CBTC, dstAddress);
542
+ * ```
543
+ * Then execute it using one of these execution paths - ensure that you supply the returned `utxos`, `btcFeeRate`
544
+ * params and also set `spendFully` to `true`!
545
+ *
546
+ * a) Execute and pass the returned utxos and btcFeeRate:
547
+ * ```ts
548
+ * await swap.execute(wallet, undefined, {feeRate: btcFeeRate, utxos: utxos, spendFully: true});
549
+ * ```
550
+ *
551
+ * b) Get funded PSBT to sign externally:
552
+ * ```ts
553
+ * const {psbt, psbtHex, psbtBase64, signInputs} = await swap.getFundedPsbt(wallet, btcFeeRate, undefined, utxos, true);
554
+ * // Sign the psbt at the specified signInputs indices
555
+ * const signedPsbt = ...;
556
+ * // Then submit back to the SDK
557
+ * await swap.submitPsbt(signedPsbt);
558
+ * ```
559
+ *
560
+ * c) Only sign and send the signed PSBT with the provided wallet:
561
+ * ```ts
562
+ * await swap.sendBitcoinTransaction(wallet, btcFeeRate, utxos, true);
563
+ * ```
564
+ */
565
+ sweepBitcoinWallet<C extends ChainIds<T>>(srcWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, _dstToken: SCToken<C> | string, dstAddress: string, options?: SpvFromBTCOptions): Promise<{
566
+ swap: SpvFromBTCSwap<T[C]>;
567
+ utxos: BitcoinWalletUtxo[];
568
+ btcFeeRate: number;
569
+ }>;
570
+ /**
571
+ * Returns all swaps
572
+ */
573
+ getAllSwaps(): Promise<ISwap[]>;
574
+ /**
575
+ * Returns all swaps for the specific chain, and optionally also for a specific signer's address
576
+ */
577
+ getAllSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
578
+ /**
579
+ * Returns all swaps which are pending (i.e. not in their final state yet)
580
+ */
581
+ getPendingSwaps(): Promise<ISwap[]>;
582
+ /**
583
+ * Returns swaps which are pending (i.e. not in their final state yet) for the specific chain, and optionally also for a specific signer's address
584
+ */
585
+ getPendingSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
586
+ /**
587
+ * Returns all swaps where an action is required (either claim or refund)
588
+ */
589
+ getActionableSwaps(): Promise<ISwap[]>;
590
+ /**
591
+ * Returns swaps where an action is required (either claim or refund) for the specific chain, and optionally also for a specific signer's address
592
+ */
593
+ getActionableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
594
+ /**
595
+ * Returns all swaps that are refundable
596
+ */
597
+ getRefundableSwaps(): Promise<IToBTCSwap[]>;
598
+ /**
599
+ * Returns swaps which are refundable for the specific chain, and optionally also for a specific signer's address
600
+ */
601
+ getRefundableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IToBTCSwap<T[C]>[]>;
602
+ /**
603
+ * Returns all swaps that are manually claimable
604
+ */
605
+ getClaimableSwaps(): Promise<IClaimableSwap[]>;
606
+ /**
607
+ * Returns all swaps that are manually claimable for the specific chain, and optionally also for a specific signer's address
608
+ */
609
+ getClaimableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IClaimableSwap<T[C]>[]>;
610
+ /**
611
+ * Returns swap with a specific id (identifier)
612
+ */
613
+ getSwapById(id: string): Promise<ISwap>;
614
+ /**
615
+ * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
616
+ */
617
+ getSwapById<C extends ChainIds<T>>(id: string, chainId: C, signer?: string): Promise<ISwap<T[C]>>;
618
+ /**
619
+ * Returns the swap with a proper return type, or `undefined` if not found or has wrong type
620
+ *
621
+ * @param id An ID of the swap ({@link ISwap.getId})
622
+ * @param chainId Chain identifier of the smart chain where the swap was initiated
623
+ * @param swapType Type of the swap
624
+ * @param signer An optional required smart chain signer address to fetch the swap for
625
+ */
626
+ getTypedSwapById<C extends ChainIds<T>, S extends SwapType>(id: string, chainId: C, swapType: S, signer?: string): Promise<SwapTypeMapping<T[C]>[S] | undefined>;
627
+ private syncSwapsForChain;
628
+ /**
629
+ * Deletes the swaps from the persistent storage backend. Note that some data (like lightning network
630
+ * amounts and bolt11 invoices) are purely off-chain and can never be recovered later just from
631
+ * on-chain data!
632
+ *
633
+ * @param chainId Optional, to only delete swaps for this smart chain
634
+ * @param signer Optional, to only delete swaps for this smart chain signer (`chainId` param must be
635
+ * set to delete only signer's swaps)
636
+ */
637
+ wipeStorage<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
638
+ /**
639
+ * Synchronizes swaps from on-chain, this is ran automatically when SDK is initialized, hence
640
+ * should only be ran manually when `dontCheckPastSwaps=true` is passed in the swapper options,
641
+ * also deletes expired quotes
642
+ *
643
+ * @param chainId Optional chain identifier to only run swap sync for a single smart chain
644
+ * @param signer Optional signer to only run swap sync for swaps initiated by this signer
645
+ */
646
+ _syncSwaps<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
647
+ /**
648
+ * When the swapper is initiated with the `noEvents` config this function allows you to manually poll for on-chain
649
+ * events. It returns an events cursor which you should save and pass to the next call to the `poll()` function.
650
+ *
651
+ * @param chainId Chain for which to poll the chain events listener for
652
+ * @param lastEventCursorState Event cursor state returned from the last call to the `poll()` function
653
+ */
654
+ _pollChainEvents<C extends ChainIds<T>>(chainId: C, lastEventCursorState?: any): Promise<any>;
655
+ /**
656
+ * Recovers swaps from on-chain historical data.
657
+ *
658
+ * Please note that the recovered swaps might not be complete (i.e. missing amounts or addresses), as some
659
+ * of the swap data is purely off-chain and can never be recovered purely from on-chain data. This
660
+ * functions tries to recover as much swap data as possible.
661
+ *
662
+ * @param chainId Smart chain identifier string to recover the swaps from
663
+ * @param signer Signer address to recover the swaps for
664
+ * @param startBlockheight Optional starting blockheight for swap data recovery, will only check swaps
665
+ * initiated after this blockheight
666
+ */
667
+ recoverSwaps<C extends ChainIds<T>>(chainId: C, signer: string, startBlockheight?: number): Promise<ISwap<T[C]>[]>;
668
+ getToken(ticker: "BTC" | "BITCOIN-BTC"): BtcToken<false>;
669
+ getToken(ticker: "BTCLN" | "BTC-LN" | "LIGHTNING-BTC"): BtcToken<true>;
670
+ getToken<ChainIdentifier extends ChainIds<T>>(ticker: `${ChainIdentifier}-${string}`): SCToken<ChainIdentifier>;
671
+ getToken(tickerOrAddress: string): Token<ChainIds<T>>;
672
+ /**
673
+ * Creates a child swapper instance with a given smart chain
674
+ *
675
+ * @param chainIdentifier Smart chain identifier for the created child swapper instance
676
+ */
677
+ withChain<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapperWithChain<T, ChainIdentifier>;
678
+ /**
679
+ * Returns an array of all the supported smart chains
680
+ */
681
+ getSmartChains(): ChainIds<T>[];
682
+ /**
683
+ * Returns whether the SDK supports a given swap type on a given chain based on currently known LPs
684
+ *
685
+ * @param chainId Smart chain identifier string
686
+ * @param swapType Swap protocol type
687
+ */
688
+ supportsSwapType<ChainIdentifier extends ChainIds<T>, Type extends SwapType>(chainId: ChainIdentifier, swapType: Type): SupportsSwapType<T[ChainIdentifier], Type>;
689
+ /**
690
+ * @internal
691
+ */
692
+ 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);
693
+ /**
694
+ * @internal
695
+ */
696
+ 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);
697
+ /**
698
+ * @internal
699
+ */
700
+ getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>): SwapType.TO_BTC;
701
+ /**
702
+ * @internal
703
+ */
704
+ getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
705
+ /**
706
+ * Returns type of the swap based on input and output tokens specified
707
+ *
708
+ * @param srcToken Source token
709
+ * @param dstToken Destination token
710
+ */
711
+ 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;
712
+ /**
713
+ * Helper information about various swap protocol and their features:
714
+ * - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
715
+ * arbitrary transaction
716
+ * - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
717
+ * arbitrary transactions
718
+ * - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
719
+ * amount of native token as part of the swap when swapping to smart chains
720
+ *
721
+ * Uses a `Record` type here, use the {@link SwapProtocolInfo} import for a literal readonly type, with
722
+ * pre-filled exact values in the type.
723
+ */
724
+ readonly SwapTypeInfo: Record<SwapType, {
725
+ requiresInputWallet: boolean;
726
+ requiresOutputWallet: boolean;
727
+ supportsGasDrop: boolean;
728
+ }>;
729
+ /**
730
+ * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
731
+ *
732
+ * @param srcToken Source token
733
+ * @param dstToken Destination token
734
+ */
735
+ getSwapLimits<C extends ChainIds<T>, A extends Token<C>, B extends Token<C>>(srcToken: A, dstToken: B): {
736
+ input: {
737
+ min: TokenAmount<A>;
738
+ max?: TokenAmount<A>;
739
+ };
740
+ output: {
741
+ min: TokenAmount<B>;
742
+ max?: TokenAmount<B>;
743
+ };
744
+ };
745
+ /**
746
+ * Returns an array of supported tokens either on the input or on the output of a swap
747
+ *
748
+ * @param input Whether to return input tokens or output tokens
749
+ */
750
+ getSupportedTokens(input: SwapSide | boolean): Token[];
751
+ /**
752
+ * Returns a set of supported tokens by all the intermediaries offering a specific swap service
753
+ *
754
+ * @param _swapType Swap service type to check supported tokens for
755
+ */
756
+ private getSupportedTokensForSwapType;
757
+ /**
758
+ * Returns the set of supported token addresses by all the intermediaries we know of offering a specific swapType service
759
+ *
760
+ * @param chainIdentifier Chain identifier string
761
+ * @param swapType Specific swap type for which to obtain supported tokens
762
+ */
763
+ private getSupportedTokenAddresses;
764
+ /**
765
+ * Returns tokens that you can swap to (if input=true) from a given token,
766
+ * or tokens that you can swap from (if input=false) to a given token
767
+ */
768
+ getSwapCounterTokens(token: Token, input: SwapSide | boolean): Token[];
769
+ }
770
+ export {};