@atomiqlabs/sdk 8.9.1 → 8.9.2

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 +765 -770
  120. package/dist/swapper/Swapper.js +1749 -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 +2557 -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,765 @@
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
+ /**
155
+ * Type representing multiple blockchain configurations
156
+ * @category Core
157
+ */
158
+ export type MultiChain = {
159
+ [chainIdentifier in string]: ChainType;
160
+ };
161
+ type ChainSpecificData<T extends ChainType> = {
162
+ wrappers: {
163
+ [SwapType.TO_BTCLN]: ToBTCLNWrapper<T>;
164
+ [SwapType.TO_BTC]: ToBTCWrapper<T>;
165
+ [SwapType.FROM_BTCLN]: FromBTCLNWrapper<T>;
166
+ [SwapType.FROM_BTC]: FromBTCWrapper<T>;
167
+ [SwapType.TRUSTED_FROM_BTCLN]: LnForGasWrapper<T>;
168
+ [SwapType.TRUSTED_FROM_BTC]: OnchainForGasWrapper<T>;
169
+ [SwapType.SPV_VAULT_FROM_BTC]: SpvFromBTCWrapper<T>;
170
+ [SwapType.FROM_BTCLN_AUTO]: FromBTCLNAutoWrapper<T>;
171
+ };
172
+ chainEvents: T["Events"];
173
+ chainInterface: T["ChainInterface"];
174
+ unifiedChainEvents: UnifiedSwapEventListener<T>;
175
+ unifiedSwapStorage: UnifiedSwapStorage<T>;
176
+ reviver: (val: any) => ISwap<T>;
177
+ defaultVersion: string;
178
+ versionedContracts: {
179
+ [contractVersion: string]: {
180
+ swapContract: T["Contract"];
181
+ spvVaultContract: T["SpvVaultContract"];
182
+ btcRelay: BtcRelay<any, T["TX"], BtcBlock, T["Signer"]>;
183
+ synchronizer: RelaySynchronizer<any, T["TX"], BtcBlock>;
184
+ };
185
+ };
186
+ };
187
+ type MultiChainData<T extends MultiChain> = {
188
+ [chainIdentifier in keyof T]: ChainSpecificData<T[chainIdentifier]>;
189
+ };
190
+ type CtorMultiChainData<T extends MultiChain> = {
191
+ [chainIdentifier in keyof T]: ChainData<T[chainIdentifier]>;
192
+ };
193
+ /**
194
+ * Type extracting chain identifiers from a MultiChain type
195
+ * @category Core
196
+ */
197
+ export type ChainIds<T extends MultiChain> = keyof T & string;
198
+ /**
199
+ * Type helper to check if a chain supports a specific swap type
200
+ * @category Core
201
+ */
202
+ 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"]>;
203
+ /**
204
+ * Core orchestrator for all atomiq swap operations
205
+ *
206
+ * @category Core
207
+ */
208
+ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
209
+ lpsRemoved: [Intermediary[]];
210
+ lpsAdded: [Intermediary[]];
211
+ swapState: [ISwap];
212
+ swapLimitsChanged: [];
213
+ }> {
214
+ private readonly logger;
215
+ private readonly swapStateListener;
216
+ private defaultTrustedIntermediary?;
217
+ private readonly bitcoinNetwork;
218
+ private readonly options;
219
+ /**
220
+ * Data propagation layer used for broadcasting messages to watchtowers
221
+ */
222
+ private readonly messenger;
223
+ /**
224
+ * A dictionary of smart chains used by the SDK
225
+ * @internal
226
+ */
227
+ readonly _chains: MultiChainData<T>;
228
+ /**
229
+ * Bitcoin RPC for fetching bitcoin chain data
230
+ * @internal
231
+ */
232
+ readonly _bitcoinRpc: BitcoinRpcWithAddressIndex<any>;
233
+ /**
234
+ * Bitcoin network specification
235
+ * @internal
236
+ */
237
+ readonly _btcNetwork: BTC_NETWORK;
238
+ /**
239
+ * Token data indexed by chain identifier and token addresses
240
+ * @internal
241
+ */
242
+ readonly _tokens: {
243
+ [chainId: string]: {
244
+ [tokenAddress: string]: SCToken;
245
+ };
246
+ };
247
+ /**
248
+ * Token data indexed by chain identifier and token tickers
249
+ * @internal
250
+ */
251
+ readonly _tokensByTicker: {
252
+ [chainId: string]: {
253
+ [tokenTicker: string]: SCToken;
254
+ };
255
+ };
256
+ /**
257
+ * Pricing API used by the SDK
258
+ */
259
+ readonly prices: ISwapPrice<T>;
260
+ /**
261
+ * API for contacting LPs
262
+ */
263
+ readonly lpApi: IntermediaryAPI;
264
+ /**
265
+ * Intermediary discovery instance
266
+ */
267
+ readonly intermediaryDiscovery: IntermediaryDiscovery;
268
+ /**
269
+ * Miscellaneous utility functions
270
+ */
271
+ readonly Utils: SwapperUtils<T>;
272
+ /**
273
+ * @internal
274
+ */
275
+ 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);
276
+ private _init;
277
+ private initPromise?;
278
+ private initialized;
279
+ /**
280
+ * Initializes the swap storage and loads existing swaps, needs to be called before any other action
281
+ */
282
+ init(): Promise<void>;
283
+ /**
284
+ * Whether the SDK is initialized (after {@link init} is called)
285
+ */
286
+ isInitialized(): boolean;
287
+ /**
288
+ * Stops listening for onchain events and closes this Swapper instance
289
+ */
290
+ stop(): Promise<void>;
291
+ /**
292
+ * Creates swap & handles intermediary, quote selection
293
+ *
294
+ * @param chainIdentifier
295
+ * @param create Callback to create the
296
+ * @param amountData Amount data as passed to the function
297
+ * @param swapType Swap type of the execution
298
+ * @param maxWaitTimeMS Maximum waiting time after the first intermediary returns the quote
299
+ * @private
300
+ * @throws {Error} when no intermediary was found
301
+ * @throws {Error} if the chain with the provided identifier cannot be found
302
+ */
303
+ private createSwap;
304
+ /**
305
+ * Creates Smart chain -> Bitcoin ({@link SwapType.TO_BTC}) swap
306
+ *
307
+ * @param chainIdentifier Chain identifier string of the source smart chain
308
+ * @param signer Signer's address on the source chain
309
+ * @param tokenAddress Token address to pay with
310
+ * @param address Recipient's bitcoin address
311
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
312
+ * @param exactIn Whether to use exact in instead of exact out
313
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
314
+ * @param options Additional options for the swap
315
+ */
316
+ 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]>>;
317
+ /**
318
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap
319
+ *
320
+ * @param chainIdentifier Chain identifier string of the source smart chain
321
+ * @param signer Signer's address on the source chain
322
+ * @param tokenAddress Token address to pay with
323
+ * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount), and the swap
324
+ * amount is taken from this fixed amount, hence only exact output swaps are supported
325
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
326
+ * @param options Additional options for the swap
327
+ */
328
+ createToBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, paymentRequest: string, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
329
+ /**
330
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via LNURL-pay link
331
+ *
332
+ * @param chainIdentifier Chain identifier string of the source smart chain
333
+ * @param signer Signer's address on the source chain
334
+ * @param tokenAddress Token address to pay with
335
+ * @param lnurlPay LNURL-pay link to use for the payment
336
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
337
+ * @param exactIn Whether to do an exact in swap instead of exact out
338
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
339
+ * @param options Additional options for the swap
340
+ */
341
+ 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 & {
342
+ comment?: string;
343
+ }): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
344
+ /**
345
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via {@link LightningInvoiceCreateService}
346
+ *
347
+ * @param chainIdentifier Chain identifier string of the source smart chain
348
+ * @param signer Signer's address on the source chain
349
+ * @param tokenAddress Token address to pay with
350
+ * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
351
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
352
+ * @param exactIn Whether to do an exact in swap instead of exact out
353
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
354
+ * @param options Additional options for the swap
355
+ */
356
+ 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]>>;
357
+ /**
358
+ * Creates Bitcoin -> Smart chain ({@link SwapType.SPV_VAULT_FROM_BTC}) swap
359
+ *
360
+ * @param chainIdentifier Chain identifier string of the destination smart chain
361
+ * @param recipient Recipient address on the destination chain
362
+ * @param tokenAddress Token address to receive
363
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
364
+ * @param exactOut Whether to use a exact out instead of exact in
365
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
366
+ * @param options Additional options for the swap
367
+ */
368
+ 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]>>;
369
+ /**
370
+ * Creates LEGACY Bitcoin -> Smart chain ({@link SwapType.FROM_BTC}) swap
371
+ *
372
+ * @param chainIdentifier Chain identifier string of the destination smart chain
373
+ * @param recipient Recipient address on the destination chain
374
+ * @param tokenAddress Token address to receive
375
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
376
+ * @param exactOut Whether to use a exact out instead of exact in
377
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
378
+ * @param options Additional options for the swap
379
+ */
380
+ 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]>>;
381
+ /**
382
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap
383
+ *
384
+ * @param chainIdentifier Chain identifier string of the destination smart chain
385
+ * @param recipient Recipient address on the destination chain
386
+ * @param tokenAddress Token address to receive
387
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
388
+ * @param exactOut Whether to use a exact out instead of exact in
389
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
390
+ * @param options Additional options for the swap
391
+ */
392
+ 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]>>;
393
+ /**
394
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap, withdrawing from
395
+ * an LNURL-withdraw link
396
+ *
397
+ * @param chainIdentifier Chain identifier string of the destination smart chain
398
+ * @param recipient Recipient address on the destination chain
399
+ * @param tokenAddress Token address to receive
400
+ * @param lnurl LNURL-withdraw link to pull the funds from
401
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
402
+ * @param exactOut Whether to use a exact out instead of exact in
403
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
404
+ * @param options Additional options for the swap
405
+ */
406
+ 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]>>;
407
+ /**
408
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap
409
+ *
410
+ * @param chainIdentifier Chain identifier string of the destination smart chain
411
+ * @param recipient Recipient address on the destination chain
412
+ * @param tokenAddress Token address to receive
413
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
414
+ * @param exactOut Whether to use a exact out instead of exact in
415
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
416
+ * @param options Additional options for the swap
417
+ */
418
+ 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]>>;
419
+ /**
420
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap, withdrawing from
421
+ * an LNURL-withdraw link
422
+ *
423
+ * @param chainIdentifier Chain identifier string of the destination smart chain
424
+ * @param recipient Recipient address on the destination chain
425
+ * @param tokenAddress Token address to receive
426
+ * @param lnurl LNURL-withdraw link to pull the funds from
427
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
428
+ * @param exactOut Whether to use a exact out instead of exact in
429
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
430
+ * @param options Additional options for the swap
431
+ */
432
+ 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]>>;
433
+ /**
434
+ * Creates a trusted Bitcoin Lightning -> Smart chain ({@link SwapType.TRUSTED_FROM_BTCLN}) gas swap
435
+ *
436
+ * @param chainIdentifier Chain identifier string of the destination smart chain
437
+ * @param recipient Recipient address on the destination chain
438
+ * @param amount Amount of native token to receive, in base units
439
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
440
+ * @throws {Error} If no trusted intermediary specified
441
+ */
442
+ createTrustedLNForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[C]>>;
443
+ /**
444
+ * Creates a trusted Bitcoin -> Smart chain ({@link SwapType.TRUSTED_FROM_BTC}) gas swap
445
+ *
446
+ * @param chainIdentifier Chain identifier string of the destination smart chain
447
+ * @param recipient Recipient address on the destination chain
448
+ * @param amount Amount of native token to receive, in base units
449
+ * @param refundAddress Bitcoin refund address, in case the swap fails the funds are refunded here
450
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
451
+ * @throws {Error} If no trusted intermediary specified
452
+ */
453
+ createTrustedOnchainForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[C]>>;
454
+ /**
455
+ * @internal
456
+ */
457
+ 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]>)>;
458
+ /**
459
+ * @internal
460
+ */
461
+ 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]>)>;
462
+ /**
463
+ * @internal
464
+ */
465
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[C]>>;
466
+ /**
467
+ * @internal
468
+ */
469
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[C]>>;
470
+ /**
471
+ * @internal
472
+ */
473
+ create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: undefined, exactIn: false, lightningInvoice: string): Promise<ToBTCLNSwap<T[C]>>;
474
+ /**
475
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
476
+ * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
477
+ * invoice's pre-set amount is used instead.
478
+ * @deprecated Use {@link swap} instead
479
+ *
480
+ * @param signer Smartchain (Solana, Starknet, etc.) address of the user
481
+ * @param srcToken Source token of the swap, user pays this token
482
+ * @param dstToken Destination token of the swap, user receives this token
483
+ * @param amount Amount of the swap
484
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
485
+ * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
486
+ * LNURL-withdrawal to withdraw money from
487
+ */
488
+ 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]>>;
489
+ /**
490
+ * @internal
491
+ */
492
+ 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]>)>;
493
+ /**
494
+ * @internal
495
+ */
496
+ 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]>)>;
497
+ /**
498
+ * @internal
499
+ */
500
+ 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]>>;
501
+ /**
502
+ * @internal
503
+ */
504
+ 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 & {
505
+ comment?: string;
506
+ }): Promise<ToBTCLNSwap<T[C]>>;
507
+ /**
508
+ * @internal
509
+ */
510
+ 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]>>;
511
+ /**
512
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (if `exactIn=true`)
513
+ * or output amount (if `exactIn=false`), NOTE: For regular Smart chain -> BTC-LN (lightning) swaps the passed amount is ignored and
514
+ * invoice's pre-set amount is used instead, use LNURL-pay links for dynamic amounts
515
+ *
516
+ * @param srcToken Source token of the swap, user pays this token
517
+ * @param dstToken Destination token of the swap, user receives this token
518
+ * @param amount Amount of the swap either in base units as {bigint} or in human readable format (with decimals) as {string}
519
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
520
+ * @param src Source wallet/lnurl-withdraw of the swap
521
+ * @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
522
+ * @param options Options for the swap
523
+ */
524
+ 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 & {
525
+ comment?: string;
526
+ }) | FromBTCLNAutoOptions): Promise<ISwap<T[C]>>;
527
+ /**
528
+ * A helper function to sweep all the funds from a given wallet in a single swap, after getting the quote you can
529
+ * execute the swap by passing the returned `feeRate` and `utxos` to the {@link SpvFromBTCSwap.execute},
530
+ * {@link SpvFromBTCSwap.getFundedPsbt} or {@link SpvFromBTCSwap.sendBitcoinTransaction} functions along
531
+ * with `spendFully=true`.
532
+ *
533
+ * @example
534
+ * Create the swap first using this function
535
+ * ```ts
536
+ * const {swap, utxos, btcFeeRate} = await swapper.sweepBitcoinWallet(wallet, Tokens.CITREA.CBTC, dstAddress);
537
+ * ```
538
+ * Then execute it using one of these execution paths - ensure that you supply the returned `utxos`, `btcFeeRate`
539
+ * params and also set `spendFully` to `true`!
540
+ *
541
+ * a) Execute and pass the returned utxos and btcFeeRate:
542
+ * ```ts
543
+ * await swap.execute(wallet, undefined, {feeRate: btcFeeRate, utxos: utxos, spendFully: true});
544
+ * ```
545
+ *
546
+ * b) Get funded PSBT to sign externally:
547
+ * ```ts
548
+ * const {psbt, psbtHex, psbtBase64, signInputs} = await swap.getFundedPsbt(wallet, btcFeeRate, undefined, utxos, true);
549
+ * // Sign the psbt at the specified signInputs indices
550
+ * const signedPsbt = ...;
551
+ * // Then submit back to the SDK
552
+ * await swap.submitPsbt(signedPsbt);
553
+ * ```
554
+ *
555
+ * c) Only sign and send the signed PSBT with the provided wallet:
556
+ * ```ts
557
+ * await swap.sendBitcoinTransaction(wallet, btcFeeRate, utxos, true);
558
+ * ```
559
+ */
560
+ sweepBitcoinWallet<C extends ChainIds<T>>(srcWallet: IBitcoinWallet | MinimalBitcoinWalletInterface, _dstToken: SCToken<C> | string, dstAddress: string, options?: SpvFromBTCOptions): Promise<{
561
+ swap: SpvFromBTCSwap<T[C]>;
562
+ utxos: BitcoinWalletUtxo[];
563
+ btcFeeRate: number;
564
+ }>;
565
+ /**
566
+ * Returns all swaps
567
+ */
568
+ getAllSwaps(): Promise<ISwap[]>;
569
+ /**
570
+ * Returns all swaps for the specific chain, and optionally also for a specific signer's address
571
+ */
572
+ getAllSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
573
+ /**
574
+ * Returns all swaps which are pending (i.e. not in their final state yet)
575
+ */
576
+ getPendingSwaps(): Promise<ISwap[]>;
577
+ /**
578
+ * 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
579
+ */
580
+ getPendingSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
581
+ /**
582
+ * Returns all swaps where an action is required (either claim or refund)
583
+ */
584
+ getActionableSwaps(): Promise<ISwap[]>;
585
+ /**
586
+ * Returns swaps where an action is required (either claim or refund) for the specific chain, and optionally also for a specific signer's address
587
+ */
588
+ getActionableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<ISwap<T[C]>[]>;
589
+ /**
590
+ * Returns all swaps that are refundable
591
+ */
592
+ getRefundableSwaps(): Promise<IToBTCSwap[]>;
593
+ /**
594
+ * Returns swaps which are refundable for the specific chain, and optionally also for a specific signer's address
595
+ */
596
+ getRefundableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IToBTCSwap<T[C]>[]>;
597
+ /**
598
+ * Returns all swaps that are manually claimable
599
+ */
600
+ getClaimableSwaps(): Promise<IClaimableSwap[]>;
601
+ /**
602
+ * Returns all swaps that are manually claimable for the specific chain, and optionally also for a specific signer's address
603
+ */
604
+ getClaimableSwaps<C extends ChainIds<T>>(chainId: C, signer?: string): Promise<IClaimableSwap<T[C]>[]>;
605
+ /**
606
+ * Returns swap with a specific id (identifier)
607
+ */
608
+ getSwapById(id: string): Promise<ISwap>;
609
+ /**
610
+ * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
611
+ */
612
+ getSwapById<C extends ChainIds<T>>(id: string, chainId: C, signer?: string): Promise<ISwap<T[C]>>;
613
+ /**
614
+ * Returns the swap with a proper return type, or `undefined` if not found or has wrong type
615
+ *
616
+ * @param id An ID of the swap ({@link ISwap.getId})
617
+ * @param chainId Chain identifier of the smart chain where the swap was initiated
618
+ * @param swapType Type of the swap
619
+ * @param signer An optional required smart chain signer address to fetch the swap for
620
+ */
621
+ getTypedSwapById<C extends ChainIds<T>, S extends SwapType>(id: string, chainId: C, swapType: S, signer?: string): Promise<SwapTypeMapping<T[C]>[S] | undefined>;
622
+ private syncSwapsForChain;
623
+ /**
624
+ * Deletes the swaps from the persistent storage backend. Note that some data (like lightning network
625
+ * amounts and bolt11 invoices) are purely off-chain and can never be recovered later just from
626
+ * on-chain data!
627
+ *
628
+ * @param chainId Optional, to only delete swaps for this smart chain
629
+ * @param signer Optional, to only delete swaps for this smart chain signer (`chainId` param must be
630
+ * set to delete only signer's swaps)
631
+ */
632
+ wipeStorage<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
633
+ /**
634
+ * Synchronizes swaps from on-chain, this is ran automatically when SDK is initialized, hence
635
+ * should only be ran manually when `dontCheckPastSwaps=true` is passed in the swapper options,
636
+ * also deletes expired quotes
637
+ *
638
+ * @param chainId Optional chain identifier to only run swap sync for a single smart chain
639
+ * @param signer Optional signer to only run swap sync for swaps initiated by this signer
640
+ */
641
+ _syncSwaps<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
642
+ /**
643
+ * When the swapper is initiated with the `noEvents` config this function allows you to manually poll for on-chain
644
+ * events. It returns an events cursor which you should save and pass to the next call to the `poll()` function.
645
+ *
646
+ * @param chainId Chain for which to poll the chain events listener for
647
+ * @param lastEventCursorState Event cursor state returned from the last call to the `poll()` function
648
+ */
649
+ _pollChainEvents<C extends ChainIds<T>>(chainId: C, lastEventCursorState?: any): Promise<any>;
650
+ /**
651
+ * Recovers swaps from on-chain historical data.
652
+ *
653
+ * Please note that the recovered swaps might not be complete (i.e. missing amounts or addresses), as some
654
+ * of the swap data is purely off-chain and can never be recovered purely from on-chain data. This
655
+ * functions tries to recover as much swap data as possible.
656
+ *
657
+ * @param chainId Smart chain identifier string to recover the swaps from
658
+ * @param signer Signer address to recover the swaps for
659
+ * @param startBlockheight Optional starting blockheight for swap data recovery, will only check swaps
660
+ * initiated after this blockheight
661
+ */
662
+ recoverSwaps<C extends ChainIds<T>>(chainId: C, signer: string, startBlockheight?: number): Promise<ISwap<T[C]>[]>;
663
+ getToken(ticker: "BTC" | "BITCOIN-BTC"): BtcToken<false>;
664
+ getToken(ticker: "BTCLN" | "BTC-LN" | "LIGHTNING-BTC"): BtcToken<true>;
665
+ getToken<ChainIdentifier extends ChainIds<T>>(ticker: `${ChainIdentifier}-${string}`): SCToken<ChainIdentifier>;
666
+ getToken(tickerOrAddress: string): Token<ChainIds<T>>;
667
+ /**
668
+ * Creates a child swapper instance with a given smart chain
669
+ *
670
+ * @param chainIdentifier Smart chain identifier for the created child swapper instance
671
+ */
672
+ withChain<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapperWithChain<T, ChainIdentifier>;
673
+ /**
674
+ * Returns an array of all the supported smart chains
675
+ */
676
+ getSmartChains(): ChainIds<T>[];
677
+ /**
678
+ * Returns whether the SDK supports a given swap type on a given chain based on currently known LPs
679
+ *
680
+ * @param chainId Smart chain identifier string
681
+ * @param swapType Swap protocol type
682
+ */
683
+ supportsSwapType<ChainIdentifier extends ChainIds<T>, Type extends SwapType>(chainId: ChainIdentifier, swapType: Type): SupportsSwapType<T[ChainIdentifier], Type>;
684
+ /**
685
+ * @internal
686
+ */
687
+ 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);
688
+ /**
689
+ * @internal
690
+ */
691
+ 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);
692
+ /**
693
+ * @internal
694
+ */
695
+ getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>): SwapType.TO_BTC;
696
+ /**
697
+ * @internal
698
+ */
699
+ getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
700
+ /**
701
+ * Returns type of the swap based on input and output tokens specified
702
+ *
703
+ * @param srcToken Source token
704
+ * @param dstToken Destination token
705
+ */
706
+ 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;
707
+ /**
708
+ * Helper information about various swap protocol and their features:
709
+ * - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
710
+ * arbitrary transaction
711
+ * - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
712
+ * arbitrary transactions
713
+ * - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
714
+ * amount of native token as part of the swap when swapping to smart chains
715
+ *
716
+ * Uses a `Record` type here, use the {@link SwapProtocolInfo} import for a literal readonly type, with
717
+ * pre-filled exact values in the type.
718
+ */
719
+ readonly SwapTypeInfo: Record<SwapType, {
720
+ requiresInputWallet: boolean;
721
+ requiresOutputWallet: boolean;
722
+ supportsGasDrop: boolean;
723
+ }>;
724
+ /**
725
+ * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
726
+ *
727
+ * @param srcToken Source token
728
+ * @param dstToken Destination token
729
+ */
730
+ getSwapLimits<C extends ChainIds<T>, A extends Token<C>, B extends Token<C>>(srcToken: A, dstToken: B): {
731
+ input: {
732
+ min: TokenAmount<A>;
733
+ max?: TokenAmount<A>;
734
+ };
735
+ output: {
736
+ min: TokenAmount<B>;
737
+ max?: TokenAmount<B>;
738
+ };
739
+ };
740
+ /**
741
+ * Returns an array of supported tokens either on the input or on the output of a swap
742
+ *
743
+ * @param input Whether to return input tokens or output tokens
744
+ */
745
+ getSupportedTokens(input: SwapSide | boolean): Token[];
746
+ /**
747
+ * Returns a set of supported tokens by all the intermediaries offering a specific swap service
748
+ *
749
+ * @param _swapType Swap service type to check supported tokens for
750
+ */
751
+ private getSupportedTokensForSwapType;
752
+ /**
753
+ * Returns the set of supported token addresses by all the intermediaries we know of offering a specific swapType service
754
+ *
755
+ * @param chainIdentifier Chain identifier string
756
+ * @param swapType Specific swap type for which to obtain supported tokens
757
+ */
758
+ private getSupportedTokenAddresses;
759
+ /**
760
+ * Returns tokens that you can swap to (if input=true) from a given token,
761
+ * or tokens that you can swap from (if input=false) to a given token
762
+ */
763
+ getSwapCounterTokens(token: Token, input: SwapSide | boolean): Token[];
764
+ }
765
+ export {};