@atomiqlabs/sdk 8.1.8 → 8.3.5

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 (261) hide show
  1. package/dist/bitcoin/coinselect2/utils.d.ts +6 -0
  2. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  3. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  4. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  5. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  7. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  8. package/dist/enums/FeeType.d.ts +8 -1
  9. package/dist/enums/FeeType.js +8 -1
  10. package/dist/enums/SwapAmountType.d.ts +7 -0
  11. package/dist/enums/SwapAmountType.js +7 -0
  12. package/dist/enums/SwapDirection.d.ts +7 -0
  13. package/dist/enums/SwapDirection.js +7 -0
  14. package/dist/enums/SwapType.d.ts +62 -1
  15. package/dist/enums/SwapType.js +62 -1
  16. package/dist/errors/IntermediaryError.d.ts +4 -0
  17. package/dist/errors/IntermediaryError.js +1 -0
  18. package/dist/errors/RequestError.d.ts +15 -1
  19. package/dist/errors/RequestError.js +8 -0
  20. package/dist/errors/UserError.d.ts +1 -0
  21. package/dist/errors/UserError.js +1 -0
  22. package/dist/index.d.ts +5 -5
  23. package/dist/index.js +7 -6
  24. package/dist/intermediaries/Intermediary.d.ts +61 -14
  25. package/dist/intermediaries/Intermediary.js +38 -11
  26. package/dist/intermediaries/IntermediaryDiscovery.d.ts +62 -29
  27. package/dist/intermediaries/IntermediaryDiscovery.js +39 -24
  28. package/dist/prices/RedundantSwapPrice.d.ts +26 -5
  29. package/dist/prices/RedundantSwapPrice.js +22 -2
  30. package/dist/prices/SingleSwapPrice.d.ts +10 -7
  31. package/dist/prices/SingleSwapPrice.js +11 -8
  32. package/dist/prices/SwapPriceWithChain.d.ts +56 -19
  33. package/dist/prices/SwapPriceWithChain.js +62 -25
  34. package/dist/prices/abstract/IPriceProvider.d.ts +4 -4
  35. package/dist/prices/abstract/IPriceProvider.js +1 -1
  36. package/dist/prices/abstract/ISwapPrice.d.ts +95 -46
  37. package/dist/prices/abstract/ISwapPrice.js +104 -56
  38. package/dist/prices/providers/BinancePriceProvider.d.ts +8 -1
  39. package/dist/prices/providers/BinancePriceProvider.js +8 -1
  40. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +7 -1
  41. package/dist/prices/providers/CoinGeckoPriceProvider.js +7 -1
  42. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +7 -1
  43. package/dist/prices/providers/CoinPaprikaPriceProvider.js +7 -1
  44. package/dist/prices/providers/CustomPriceProvider.d.ts +12 -1
  45. package/dist/prices/providers/CustomPriceProvider.js +12 -1
  46. package/dist/prices/providers/KrakenPriceProvider.d.ts +10 -1
  47. package/dist/prices/providers/KrakenPriceProvider.js +10 -1
  48. package/dist/prices/providers/OKXPriceProvider.d.ts +7 -1
  49. package/dist/prices/providers/OKXPriceProvider.js +7 -1
  50. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  51. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  52. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  53. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  54. package/dist/storage/UnifiedSwapStorage.js +29 -1
  55. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  56. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  57. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  58. package/dist/storage-browser/LocalStorageManager.js +25 -1
  59. package/dist/swapper/Swapper.d.ts +380 -226
  60. package/dist/swapper/Swapper.js +383 -349
  61. package/dist/swapper/SwapperFactory.d.ts +66 -18
  62. package/dist/swapper/SwapperFactory.js +24 -3
  63. package/dist/swapper/SwapperUtils.d.ts +75 -28
  64. package/dist/swapper/SwapperUtils.js +107 -60
  65. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  66. package/dist/swapper/SwapperWithChain.js +218 -64
  67. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  68. package/dist/swapper/SwapperWithSigner.js +190 -44
  69. package/dist/swaps/IAddressSwap.d.ts +12 -3
  70. package/dist/swaps/IAddressSwap.js +3 -2
  71. package/dist/swaps/IBTCWalletSwap.d.ts +26 -8
  72. package/dist/swaps/IBTCWalletSwap.js +3 -2
  73. package/dist/swaps/IClaimableSwap.d.ts +38 -6
  74. package/dist/swaps/IClaimableSwap.js +3 -2
  75. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  76. package/dist/swaps/IRefundableSwap.d.ts +31 -5
  77. package/dist/swaps/IRefundableSwap.js +3 -2
  78. package/dist/swaps/ISwap.d.ts +162 -24
  79. package/dist/swaps/ISwap.js +92 -35
  80. package/dist/swaps/ISwapWithGasDrop.d.ts +8 -2
  81. package/dist/swaps/ISwapWithGasDrop.js +2 -1
  82. package/dist/swaps/ISwapWrapper.d.ts +161 -52
  83. package/dist/swaps/ISwapWrapper.js +131 -73
  84. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +51 -6
  85. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  86. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  87. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  88. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  89. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +97 -28
  93. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +91 -27
  94. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  95. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +278 -60
  97. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +519 -241
  98. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +77 -26
  99. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +132 -50
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +313 -52
  101. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +544 -194
  102. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  103. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +222 -55
  105. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +462 -244
  106. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  107. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +195 -58
  109. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +324 -191
  110. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  111. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +61 -20
  113. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +75 -32
  114. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  115. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +37 -14
  117. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +66 -20
  118. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  119. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  120. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +350 -88
  121. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +482 -215
  122. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  123. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +247 -124
  124. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +148 -20
  125. package/dist/swaps/trusted/ln/LnForGasSwap.js +175 -45
  126. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  127. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  128. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +202 -49
  129. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +232 -80
  130. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  131. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  132. package/dist/types/AmountData.d.ts +2 -1
  133. package/dist/types/CustomPriceFunction.d.ts +8 -2
  134. package/dist/types/PriceInfoType.d.ts +4 -4
  135. package/dist/types/PriceInfoType.js +3 -3
  136. package/dist/types/SwapExecutionAction.d.ts +85 -4
  137. package/dist/types/SwapWithSigner.d.ts +5 -2
  138. package/dist/types/SwapWithSigner.js +5 -2
  139. package/dist/types/Token.d.ts +11 -5
  140. package/dist/types/Token.js +6 -3
  141. package/dist/types/TokenAmount.d.ts +3 -0
  142. package/dist/types/TokenAmount.js +2 -0
  143. package/dist/types/fees/Fee.d.ts +3 -2
  144. package/dist/types/fees/FeeBreakdown.d.ts +3 -2
  145. package/dist/types/fees/PercentagePPM.d.ts +4 -2
  146. package/dist/types/fees/PercentagePPM.js +2 -1
  147. package/dist/types/lnurl/LNURLPay.d.ts +20 -12
  148. package/dist/types/lnurl/LNURLPay.js +8 -4
  149. package/dist/types/lnurl/LNURLWithdraw.d.ts +17 -10
  150. package/dist/types/lnurl/LNURLWithdraw.js +8 -4
  151. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -0
  152. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  153. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  154. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +4 -2
  155. package/dist/utils/BitcoinUtils.d.ts +1 -0
  156. package/dist/utils/BitcoinUtils.js +5 -1
  157. package/dist/utils/SwapUtils.d.ts +58 -1
  158. package/dist/utils/SwapUtils.js +55 -1
  159. package/dist/utils/TokenUtils.d.ts +10 -2
  160. package/dist/utils/TokenUtils.js +12 -4
  161. package/package.json +3 -3
  162. package/src/bitcoin/coinselect2/utils.ts +6 -0
  163. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  164. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  165. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  166. package/src/enums/FeeType.ts +8 -1
  167. package/src/enums/SwapAmountType.ts +7 -0
  168. package/src/enums/SwapDirection.ts +7 -0
  169. package/src/enums/SwapType.ts +62 -2
  170. package/src/errors/IntermediaryError.ts +4 -0
  171. package/src/errors/RequestError.ts +15 -1
  172. package/src/errors/UserError.ts +1 -0
  173. package/src/index.ts +12 -5
  174. package/src/intermediaries/Intermediary.ts +61 -14
  175. package/src/intermediaries/IntermediaryDiscovery.ts +69 -34
  176. package/src/prices/RedundantSwapPrice.ts +26 -6
  177. package/src/prices/SingleSwapPrice.ts +11 -8
  178. package/src/prices/SwapPriceWithChain.ts +63 -26
  179. package/src/prices/abstract/IPriceProvider.ts +4 -4
  180. package/src/prices/abstract/ISwapPrice.ts +115 -66
  181. package/src/prices/providers/BinancePriceProvider.ts +8 -1
  182. package/src/prices/providers/CoinGeckoPriceProvider.ts +7 -1
  183. package/src/prices/providers/CoinPaprikaPriceProvider.ts +7 -1
  184. package/src/prices/providers/CustomPriceProvider.ts +12 -1
  185. package/src/prices/providers/KrakenPriceProvider.ts +10 -1
  186. package/src/prices/providers/OKXPriceProvider.ts +7 -1
  187. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  188. package/src/storage/IUnifiedStorage.ts +19 -7
  189. package/src/storage/UnifiedSwapStorage.ts +33 -3
  190. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  191. package/src/storage-browser/LocalStorageManager.ts +25 -1
  192. package/src/swapper/Swapper.ts +599 -390
  193. package/src/swapper/SwapperFactory.ts +73 -24
  194. package/src/swapper/SwapperUtils.ts +107 -60
  195. package/src/swapper/SwapperWithChain.ts +320 -81
  196. package/src/swapper/SwapperWithSigner.ts +263 -56
  197. package/src/swaps/IAddressSwap.ts +13 -3
  198. package/src/swaps/IBTCWalletSwap.ts +26 -10
  199. package/src/swaps/IClaimableSwap.ts +41 -6
  200. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  201. package/src/swaps/IRefundableSwap.ts +34 -5
  202. package/src/swaps/ISwap.ts +224 -85
  203. package/src/swaps/ISwapWithGasDrop.ts +8 -2
  204. package/src/swaps/ISwapWrapper.ts +216 -98
  205. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +64 -18
  206. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  207. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  208. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  209. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +123 -50
  210. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  211. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +562 -258
  212. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +156 -62
  213. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +592 -227
  214. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  215. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +483 -245
  216. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  217. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +350 -195
  218. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  219. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +87 -40
  220. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  221. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +89 -34
  222. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  223. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +556 -259
  224. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +292 -148
  225. package/src/swaps/trusted/ln/LnForGasSwap.ts +186 -47
  226. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  227. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +262 -88
  228. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  229. package/src/types/AmountData.ts +2 -1
  230. package/src/types/CustomPriceFunction.ts +8 -2
  231. package/src/types/PriceInfoType.ts +4 -4
  232. package/src/types/SwapExecutionAction.ts +97 -5
  233. package/src/types/SwapWithSigner.ts +8 -4
  234. package/src/types/Token.ts +12 -5
  235. package/src/types/TokenAmount.ts +3 -0
  236. package/src/types/fees/Fee.ts +3 -2
  237. package/src/types/fees/FeeBreakdown.ts +3 -2
  238. package/src/types/fees/PercentagePPM.ts +4 -2
  239. package/src/types/lnurl/LNURLPay.ts +20 -12
  240. package/src/types/lnurl/LNURLWithdraw.ts +17 -10
  241. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -0
  242. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  243. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +4 -2
  244. package/src/utils/BitcoinUtils.ts +5 -0
  245. package/src/utils/SwapUtils.ts +63 -1
  246. package/src/utils/TokenUtils.ts +12 -4
  247. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  248. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  249. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  250. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  251. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  252. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  253. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  254. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  255. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  256. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  257. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  258. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  259. package/dist/errors/PaymentAuthError.d.ts +0 -11
  260. package/dist/errors/PaymentAuthError.js +0 -23
  261. package/src/errors/PaymentAuthError.ts +0 -26
@@ -1,11 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  import { ISwapPrice } from "../prices/abstract/ISwapPrice";
3
- import { BitcoinNetwork, BtcRelay, ChainData, ChainType, Messenger, RelaySynchronizer } from "@atomiqlabs/base";
4
- import { InvoiceCreateService, ToBTCLNOptions, ToBTCLNWrapper } from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
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
5
  import { ToBTCOptions, ToBTCWrapper } from "../swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
6
6
  import { FromBTCLNOptions, FromBTCLNWrapper } from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
7
7
  import { FromBTCOptions, FromBTCWrapper } from "../swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
8
- import { IntermediaryDiscovery, MultichainSwapBounds, SwapBounds } from "../intermediaries/IntermediaryDiscovery";
8
+ import { IntermediaryDiscovery } from "../intermediaries/IntermediaryDiscovery";
9
9
  import { ISwap } from "../swaps/ISwap";
10
10
  import { SwapType } from "../enums/SwapType";
11
11
  import { FromBTCLNSwap } from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
@@ -38,29 +38,100 @@ import { BtcToken, SCToken, Token } from "../types/Token";
38
38
  import { LNURLWithdraw } from "../types/lnurl/LNURLWithdraw";
39
39
  import { LNURLPay } from "../types/lnurl/LNURLPay";
40
40
  import { NotNever } from "../utils/TypeUtils";
41
- import { MempoolApi, MempoolBitcoinBlock, MempoolBitcoinRpc } from "@atomiqlabs/btc-mempool";
41
+ import { LightningInvoiceCreateService } from "../types/wallets/LightningInvoiceCreateService";
42
42
  /**
43
43
  * Configuration options for the Swapper
44
44
  * @category Core
45
45
  */
46
46
  export type SwapperOptions = {
47
+ /**
48
+ * Manual override for the intermediary (LP) URLs for the SDK to use, by default these are fetched automatically
49
+ * from the registry
50
+ */
47
51
  intermediaryUrl?: string | string[];
52
+ /**
53
+ * Registry URL for where to look for active intermediary (LP) endpoint URLs
54
+ */
48
55
  registryUrl?: string;
56
+ /**
57
+ * Bitcoin network to use for the swaps,
58
+ */
49
59
  bitcoinNetwork?: BitcoinNetwork;
60
+ /**
61
+ * Timeout (in milliseconds) for HTTP GET requests done by the SDK
62
+ */
50
63
  getRequestTimeout?: number;
64
+ /**
65
+ * Timeout (in milliseconds) for HTTP POST requests done by the SDK
66
+ */
51
67
  postRequestTimeout?: number;
68
+ /**
69
+ * Additional parameters to be sent to the intermediaries (LPs), when requesting quotes from them
70
+ */
52
71
  defaultAdditionalParameters?: {
53
72
  [key: string]: any;
54
73
  };
74
+ /**
75
+ * Optional name prefix to use when creating a swap storage, you can use this to create separate storage
76
+ * instances that don't overlap.
77
+ */
55
78
  storagePrefix?: string;
79
+ /**
80
+ * Sets the default intermediary (LP) to use for the trusted gas swaps, if not set the SDK uses a default one
81
+ */
56
82
  defaultTrustedIntermediaryUrl?: string;
57
- swapStorage?: <T extends ChainType>(chainId: T["ChainId"]) => IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
83
+ /**
84
+ * A function callback to retrieve a specific named storage container for swap persistency. If not present, the
85
+ * default IndexedDB storage adapter is used. When you use the SDK in non-browser based environments you need to
86
+ * provide this callback such that the SDK is able to use a custom storage adapter.
87
+ *
88
+ * @param storageName Name of the container to retrieve
89
+ */
90
+ swapStorage?: (storageName: string) => IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
91
+ /**
92
+ * By setting this flag, the swapper doesn't schedule automatic tick timers. To make sure the swap states are
93
+ * properly updated (e.g. the expired swaps properly move to the expired state), you should call the
94
+ * {@link Swapper._syncSwaps} function periodically. This flag should be set when you run an environment that
95
+ * doesn't support long-running timers - e.g. serverless environments like Azure Function Apps or AWS Lambda
96
+ */
58
97
  noTimers?: boolean;
98
+ /**
99
+ * By setting this flag, the swapper doesn't subscribe to on-chain events. To make sure the swap states are
100
+ * properly updated you should call the {@link Swapper._syncSwaps} function periodically. This flag should be
101
+ * set when you run an environment that doesn't support long-running timers and websocket connections - e.g.
102
+ * serverless environments like Azure Function Apps or AWS Lambda
103
+ */
59
104
  noEvents?: boolean;
105
+ /**
106
+ * By setting this flag, the swap objects will not be cached in the SDK and instead will always be loaded from
107
+ * the persistent storage. By default, the SDK uses a `WeakRef` mapping of swaps, to ensure that when the same
108
+ * swap is loaded concurrently, it returns the same object reference to both, making the changes on the object
109
+ * atomic. This flag should be set to `true` when running in an environment where multiple instances of the SDK
110
+ * access the same swap database - e.g. serverless environments like Azure Function Apps or AWS Lambda
111
+ */
60
112
  noSwapCache?: boolean;
113
+ /**
114
+ * Skip checking past swaps when the swapper is initiated with {@link Swapper.init}, you can call the
115
+ * {@link Swapper._syncSwaps} function later, to check the swaps. By default, the SDK checks the state
116
+ * of all the known swaps during init.
117
+ */
61
118
  dontCheckPastSwaps?: boolean;
119
+ /**
120
+ * Skip fetching the LPs when the swapper is initiated with {@link Swapper.init}, this means the list of available
121
+ * tokens and swap limits won't be available immediately. LPs will be fetched automatically later, when a swap
122
+ * is requested
123
+ */
62
124
  dontFetchLPs?: boolean;
125
+ /**
126
+ * By setting this flag the SDK persists all created swaps. By default, the SDK only saves and persists swaps that
127
+ * are considered initiated, i.e. when `commit()`, `execute()` or `waitTillPayment` is called (or their respective
128
+ * txs... prefixed variations).
129
+ */
63
130
  saveUninitializedSwaps?: boolean;
131
+ /**
132
+ * Automatically checks system time on initialize, if the system time drifts too far from the actual time
133
+ * (as checked from multiple server sources) it adjusts the `Date.now()` function to return proper actual time.
134
+ */
64
135
  automaticClockDriftCorrection?: boolean;
65
136
  };
66
137
  /**
@@ -85,8 +156,8 @@ type ChainSpecificData<T extends ChainType> = {
85
156
  swapContract: T["Contract"];
86
157
  spvVaultContract: T["SpvVaultContract"];
87
158
  chainInterface: T["ChainInterface"];
88
- btcRelay: BtcRelay<any, T["TX"], MempoolBitcoinBlock, T["Signer"]>;
89
- synchronizer: RelaySynchronizer<any, T["TX"], MempoolBitcoinBlock>;
159
+ btcRelay: BtcRelay<any, T["TX"], BtcBlock, T["Signer"]>;
160
+ synchronizer: RelaySynchronizer<any, T["TX"], BtcBlock>;
90
161
  unifiedChainEvents: UnifiedSwapEventListener<T>;
91
162
  unifiedSwapStorage: UnifiedSwapStorage<T>;
92
163
  reviver: (val: any) => ISwap<T>;
@@ -108,7 +179,8 @@ export type ChainIds<T extends MultiChain> = keyof T & string;
108
179
  */
109
180
  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"]>;
110
181
  /**
111
- * Core orchestrator for all swap operations with multi-chain support
182
+ * Core orchestrator for all atomiq swap operations
183
+ *
112
184
  * @category Core
113
185
  */
114
186
  export declare class Swapper<T extends MultiChain> extends EventEmitter<{
@@ -117,30 +189,64 @@ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
117
189
  swapState: [ISwap];
118
190
  swapLimitsChanged: [];
119
191
  }> {
120
- protected readonly logger: import("../utils/Logger").LoggerType;
121
- protected readonly swapStateListener: (swap: ISwap) => void;
192
+ private readonly logger;
193
+ private readonly swapStateListener;
122
194
  private defaultTrustedIntermediary?;
123
- private readonly _bitcoinNetwork;
195
+ private readonly bitcoinNetwork;
124
196
  private readonly options;
125
- readonly chains: MultiChainData<T>;
126
- readonly prices: ISwapPrice<T>;
127
- readonly intermediaryDiscovery: IntermediaryDiscovery;
128
- readonly mempoolApi: MempoolApi;
129
- readonly bitcoinRpc: MempoolBitcoinRpc;
130
- readonly bitcoinNetwork: BTC_NETWORK;
131
- readonly messenger: Messenger;
132
- readonly Utils: SwapperUtils<T>;
133
- readonly tokens: {
197
+ /**
198
+ * Data propagation layer used for broadcasting messages to watchtowers
199
+ */
200
+ private readonly messenger;
201
+ /**
202
+ * A dictionary of smart chains used by the SDK
203
+ * @internal
204
+ */
205
+ readonly _chains: MultiChainData<T>;
206
+ /**
207
+ * Bitcoin RPC for fetching bitcoin chain data
208
+ * @internal
209
+ */
210
+ readonly _bitcoinRpc: BitcoinRpcWithAddressIndex<any>;
211
+ /**
212
+ * Bitcoin network specification
213
+ * @internal
214
+ */
215
+ readonly _btcNetwork: BTC_NETWORK;
216
+ /**
217
+ * Token data indexed by chain identifier and token addresses
218
+ * @internal
219
+ */
220
+ readonly _tokens: {
134
221
  [chainId: string]: {
135
222
  [tokenAddress: string]: SCToken;
136
223
  };
137
224
  };
138
- readonly tokensByTicker: {
225
+ /**
226
+ * Token data indexed by chain identifier and token tickers
227
+ * @internal
228
+ */
229
+ readonly _tokensByTicker: {
139
230
  [chainId: string]: {
140
231
  [tokenTicker: string]: SCToken;
141
232
  };
142
233
  };
143
- constructor(bitcoinRpc: MempoolBitcoinRpc, chainsData: CtorMultiChainData<T>, pricing: ISwapPrice<T>, tokens: WrapperCtorTokens<T>, messenger: Messenger, options?: SwapperOptions);
234
+ /**
235
+ * Pricing API used by the SDK
236
+ */
237
+ readonly prices: ISwapPrice<T>;
238
+ /**
239
+ * Intermediary discovery instance
240
+ */
241
+ readonly intermediaryDiscovery: IntermediaryDiscovery;
242
+ /**
243
+ * Miscellaneous utility functions
244
+ */
245
+ readonly Utils: SwapperUtils<T>;
246
+ /**
247
+ * @internal
248
+ */
249
+ constructor(bitcoinRpc: BitcoinRpcWithAddressIndex<any>, lightningApi: LightningNetworkApi, bitcoinSynchronizer: (btcRelay: BtcRelay<any, any, any>) => RelaySynchronizer<any, any, any>, chainsData: CtorMultiChainData<T>, pricing: ISwapPrice<T>, tokens: WrapperCtorTokens<T>, messenger: Messenger, options?: SwapperOptions);
144
250
  private _init;
145
251
  private initPromise?;
146
252
  private initialized;
@@ -166,165 +272,225 @@ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
166
272
  */
167
273
  private createSwap;
168
274
  /**
169
- * Creates To BTC swap
275
+ * Creates Smart chain -> Bitcoin ({@link SwapType.TO_BTC}) swap
170
276
  *
171
- * @param chainIdentifier
172
- * @param signer
173
- * @param tokenAddress Token address to pay with
174
- * @param address Recipient's bitcoin address
175
- * @param amount Amount to send in satoshis (bitcoin's smallest denomination)
176
- * @param exactIn Whether to use exact in instead of exact out
177
- * @param additionalParams Additional parameters sent to the LP when creating the swap
178
- * @param options
277
+ * @param chainIdentifier Chain identifier string of the source smart chain
278
+ * @param signer Signer's address on the source chain
279
+ * @param tokenAddress Token address to pay with
280
+ * @param address Recipient's bitcoin address
281
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
282
+ * @param exactIn Whether to use exact in instead of exact out
283
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
284
+ * @param options Additional options for the swap
179
285
  */
180
286
  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]>>;
181
287
  /**
182
- * Creates To BTCLN swap
288
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap
183
289
  *
184
- * @param chainIdentifier
185
- * @param signer
186
- * @param tokenAddress Token address to pay with
187
- * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount)
188
- * @param additionalParams Additional parameters sent to the LP when creating the swap
189
- * @param options
290
+ * @param chainIdentifier Chain identifier string of the source smart chain
291
+ * @param signer Signer's address on the source chain
292
+ * @param tokenAddress Token address to pay with
293
+ * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount), and the swap
294
+ * amount is taken from this fixed amount, hence only exact output swaps are supported
295
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
296
+ * @param options Additional options for the swap
190
297
  */
191
298
  createToBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, paymentRequest: string, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
192
299
  /**
193
- * Creates To BTCLN swap via LNURL-pay
300
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via LNURL-pay link
194
301
  *
195
- * @param chainIdentifier
196
- * @param signer
197
- * @param tokenAddress Token address to pay with
198
- * @param lnurlPay LNURL-pay link to use for the payment
199
- * @param amount Amount to be paid in sats
200
- * @param exactIn Whether to do an exact in swap instead of exact out
201
- * @param additionalParams Additional parameters sent to the LP when creating the swap
202
- * @param options
302
+ * @param chainIdentifier Chain identifier string of the source smart chain
303
+ * @param signer Signer's address on the source chain
304
+ * @param tokenAddress Token address to pay with
305
+ * @param lnurlPay LNURL-pay link to use for the payment
306
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
307
+ * @param exactIn Whether to do an exact in swap instead of exact out
308
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
309
+ * @param options Additional options for the swap
203
310
  */
204
311
  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 & {
205
312
  comment?: string;
206
313
  }): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
207
314
  /**
208
- * Creates To BTCLN swap via InvoiceCreationService
315
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via {@link LightningInvoiceCreateService}
209
316
  *
210
- * @param chainIdentifier
211
- * @param signer
212
- * @param tokenAddress Token address to pay with
213
- * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
214
- * @param amount Amount to be paid in sats
215
- * @param exactIn Whether to do an exact in swap instead of exact out
216
- * @param additionalParams Additional parameters sent to the LP when creating the swap
217
- * @param options
218
- */
219
- createToBTCLNSwapViaInvoiceCreateService<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, service: InvoiceCreateService, amount: bigint, exactIn?: boolean, additionalParams?: Record<string, any> | undefined, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
220
- /**
221
- * Creates From BTC swap
317
+ * @param chainIdentifier Chain identifier string of the source smart chain
318
+ * @param signer Signer's address on the source chain
319
+ * @param tokenAddress Token address to pay with
320
+ * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
321
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
322
+ * @param exactIn Whether to do an exact in swap instead of exact out
323
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
324
+ * @param options Additional options for the swap
325
+ */
326
+ 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]>>;
327
+ /**
328
+ * Creates Bitcoin -> Smart chain ({@link SwapType.SPV_VAULT_FROM_BTC}) swap
222
329
  *
223
- * @param chainIdentifier
224
- * @param signer
225
- * @param tokenAddress Token address to receive
226
- * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
227
- * @param exactOut Whether to use a exact out instead of exact in
228
- * @param additionalParams Additional parameters sent to the LP when creating the swap
229
- * @param options
330
+ * @param chainIdentifier Chain identifier string of the destination smart chain
331
+ * @param recipient Recipient address on the destination chain
332
+ * @param tokenAddress Token address to receive
333
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
334
+ * @param exactOut Whether to use a exact out instead of exact in
335
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
336
+ * @param options Additional options for the swap
230
337
  */
231
- createFromBTCSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: SpvFromBTCOptions): Promise<SpvFromBTCSwap<T[ChainIdentifier]>>;
338
+ createFromBTCSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: SpvFromBTCOptions): Promise<SpvFromBTCSwap<T[ChainIdentifier]>>;
232
339
  /**
233
- * Creates From BTC swap
340
+ * Creates LEGACY Bitcoin -> Smart chain ({@link SwapType.FROM_BTC}) swap
234
341
  *
235
- * @param chainIdentifier
236
- * @param signer
237
- * @param tokenAddress Token address to receive
238
- * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
239
- * @param exactOut Whether to use a exact out instead of exact in
240
- * @param additionalParams Additional parameters sent to the LP when creating the swap
241
- * @param options
342
+ * @param chainIdentifier Chain identifier string of the destination smart chain
343
+ * @param recipient Recipient address on the destination chain
344
+ * @param tokenAddress Token address to receive
345
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
346
+ * @param exactOut Whether to use a exact out instead of exact in
347
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
348
+ * @param options Additional options for the swap
242
349
  */
243
- createFromBTCSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCOptions): Promise<FromBTCSwap<T[ChainIdentifier]>>;
350
+ 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]>>;
244
351
  /**
245
- * Creates From BTCLN swap
352
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap
246
353
  *
247
- * @param chainIdentifier
248
- * @param signer
249
- * @param tokenAddress Token address to receive
250
- * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
251
- * @param exactOut Whether to use exact out instead of exact in
252
- * @param additionalParams Additional parameters sent to the LP when creating the swap
253
- * @param options
254
- */
255
- createFromBTCLNSwap<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNOptions): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
256
- /**
257
- * Creates From BTCLN swap, withdrawing from LNURL-withdraw
354
+ * @param chainIdentifier Chain identifier string of the destination smart chain
355
+ * @param recipient Recipient address on the destination chain
356
+ * @param tokenAddress Token address to receive
357
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
358
+ * @param exactOut Whether to use a exact out instead of exact in
359
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
360
+ * @param options Additional options for the swap
361
+ */
362
+ 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]>>;
363
+ /**
364
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap, withdrawing from
365
+ * an LNURL-withdraw link
258
366
  *
259
- * @param chainIdentifier
260
- * @param signer
261
- * @param tokenAddress Token address to receive
262
- * @param lnurl LNURL-withdraw to pull the funds from
263
- * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
264
- * @param exactOut Whether to use exact out instead of exact in
265
- * @param additionalParams Additional parameters sent to the LP when creating the swap
367
+ * @param chainIdentifier Chain identifier string of the destination smart chain
368
+ * @param recipient Recipient address on the destination chain
369
+ * @param tokenAddress Token address to receive
370
+ * @param lnurl LNURL-withdraw link to pull the funds from
371
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
372
+ * @param exactOut Whether to use a exact out instead of exact in
373
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
266
374
  */
267
- createFromBTCLNSwapViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
375
+ createFromBTCLNSwapViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, recipient: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined): Promise<FromBTCLNSwap<T[ChainIdentifier]>>;
268
376
  /**
269
- * Creates From BTCLN swap using new protocol
377
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap
270
378
  *
271
- * @param chainIdentifier
272
- * @param signer
273
- * @param tokenAddress Token address to receive
274
- * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
275
- * @param exactOut Whether to use exact out instead of exact in
276
- * @param additionalParams Additional parameters sent to the LP when creating the swap
277
- * @param options
278
- */
279
- createFromBTCLNSwapNew<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
280
- /**
281
- * Creates From BTCLN swap using new protocol, withdrawing from LNURL-withdraw
379
+ * @param chainIdentifier Chain identifier string of the destination smart chain
380
+ * @param recipient Recipient address on the destination chain
381
+ * @param tokenAddress Token address to receive
382
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
383
+ * @param exactOut Whether to use a exact out instead of exact in
384
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
385
+ * @param options Additional options for the swap
386
+ */
387
+ 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]>>;
388
+ /**
389
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap, withdrawing from
390
+ * an LNURL-withdraw link
282
391
  *
283
- * @param chainIdentifier
284
- * @param signer
285
- * @param tokenAddress Token address to receive
286
- * @param lnurl LNURL-withdraw to pull the funds from
287
- * @param amount Amount to receive, in satoshis (bitcoin's smallest denomination)
288
- * @param exactOut Whether to use exact out instead of exact in
289
- * @param additionalParams Additional parameters sent to the LP when creating the swap
290
- * @param options
291
- */
292
- createFromBTCLNSwapNewViaLNURL<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: string, tokenAddress: string, lnurl: string | LNURLWithdraw, amount: bigint, exactOut?: boolean, additionalParams?: Record<string, any> | undefined, options?: FromBTCLNAutoOptions): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>>;
293
- /**
294
- * Creates trusted LN for Gas swap
392
+ * @param chainIdentifier Chain identifier string of the destination smart chain
393
+ * @param recipient Recipient address on the destination chain
394
+ * @param tokenAddress Token address to receive
395
+ * @param lnurl LNURL-withdraw link to pull the funds from
396
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
397
+ * @param exactOut Whether to use a exact out instead of exact in
398
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
399
+ * @param options Additional options for the swap
400
+ */
401
+ 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]>>;
402
+ /**
403
+ * Creates a trusted Bitcoin Lightning -> Smart chain ({@link SwapType.TRUSTED_FROM_BTCLN}) gas swap
295
404
  *
296
- * @param chainId
297
- * @param signer
298
- * @param amount Amount of native token to receive, in base units
405
+ * @param chainIdentifier Chain identifier string of the destination smart chain
406
+ * @param recipient Recipient address on the destination chain
407
+ * @param amount Amount of native token to receive, in base units
299
408
  * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
300
- * @throws {Error} If no trusted intermediary specified
409
+ * @throws {Error} If no trusted intermediary specified
301
410
  */
302
- createTrustedLNForGasSwap<C extends ChainIds<T>>(chainId: C, signer: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[C]>>;
411
+ createTrustedLNForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[C]>>;
303
412
  /**
304
- * Creates trusted BTC on-chain for Gas swap
413
+ * Creates a trusted Bitcoin -> Smart chain ({@link SwapType.TRUSTED_FROM_BTC}) gas swap
305
414
  *
306
- * @param chainId
307
- * @param signer
308
- * @param amount Amount of native token to receive, in base units
309
- * @param refundAddress Bitcoin refund address, in case the swap fails
310
- * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
311
- * @throws {Error} If no trusted intermediary specified
415
+ * @param chainIdentifier Chain identifier string of the destination smart chain
416
+ * @param recipient Recipient address on the destination chain
417
+ * @param amount Amount of native token to receive, in base units
418
+ * @param refundAddress Bitcoin refund address, in case the swap fails the funds are refunded here
419
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
420
+ * @throws {Error} If no trusted intermediary specified
421
+ */
422
+ createTrustedOnchainForGasSwap<C extends ChainIds<T>>(chainIdentifier: C, recipient: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[C]>>;
423
+ /**
424
+ * @internal
312
425
  */
313
- createTrustedOnchainForGasSwap<C extends ChainIds<T>>(chainId: C, signer: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[C]>>;
314
426
  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]>)>;
427
+ /**
428
+ * @internal
429
+ */
315
430
  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]>)>;
431
+ /**
432
+ * @internal
433
+ */
316
434
  create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[C]>>;
435
+ /**
436
+ * @internal
437
+ */
317
438
  create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[C]>>;
439
+ /**
440
+ * @internal
441
+ */
318
442
  create<C extends ChainIds<T>>(signer: string, srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: undefined, exactIn: false, lightningInvoice: string): Promise<ToBTCLNSwap<T[C]>>;
443
+ /**
444
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
445
+ * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
446
+ * invoice's pre-set amount is used instead.
447
+ * @deprecated Use {@link swap} instead
448
+ *
449
+ * @param signer Smartchain (Solana, Starknet, etc.) address of the user
450
+ * @param srcToken Source token of the swap, user pays this token
451
+ * @param dstToken Destination token of the swap, user receives this token
452
+ * @param amount Amount of the swap
453
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
454
+ * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
455
+ * LNURL-withdrawal to withdraw money from
456
+ */
319
457
  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]>>;
458
+ /**
459
+ * @internal
460
+ */
320
461
  swap<C extends ChainIds<T>>(srcToken: BtcToken<true>, dstToken: SCToken<C>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dstSmartchainWallet: string, options?: (SupportsSwapType<T[C], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoOptions : FromBTCLNOptions)): Promise<(SupportsSwapType<T[C], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[C]> : FromBTCLNSwap<T[C]>)>;
462
+ /**
463
+ * @internal
464
+ */
321
465
  swap<C extends ChainIds<T>>(srcToken: BtcToken<false>, dstToken: SCToken<C>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string, dstSmartchainWallet: string, options?: (SupportsSwapType<T[C], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCOptions : FromBTCOptions)): Promise<(SupportsSwapType<T[C], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[C]> : FromBTCSwap<T[C]>)>;
466
+ /**
467
+ * @internal
468
+ */
322
469
  swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[C]>>;
323
- swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | InvoiceCreateService, options?: ToBTCLNOptions & {
470
+ /**
471
+ * @internal
472
+ */
473
+ swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | LightningInvoiceCreateService, options?: ToBTCLNOptions & {
324
474
  comment?: string;
325
475
  }): Promise<ToBTCLNSwap<T[C]>>;
476
+ /**
477
+ * @internal
478
+ */
326
479
  swap<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>, amount: undefined, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[C]>>;
327
- 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 | InvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {
480
+ /**
481
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (if `exactIn=true`)
482
+ * or output amount (if `exactIn=false`), NOTE: For regular Smart chain -> BTC-LN (lightning) swaps the passed amount is ignored and
483
+ * invoice's pre-set amount is used instead, use LNURL-pay links for dynamic amounts
484
+ *
485
+ * @param srcToken Source token of the swap, user pays this token
486
+ * @param dstToken Destination token of the swap, user receives this token
487
+ * @param amount Amount of the swap either in base units as {bigint} or in human readable format (with decimals) as {string}
488
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
489
+ * @param src Source wallet/lnurl-withdraw of the swap
490
+ * @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
491
+ * @param options Options for the swap
492
+ */
493
+ 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 & {
328
494
  comment?: string;
329
495
  }) | FromBTCLNAutoOptions): Promise<ISwap<T[C]>>;
330
496
  /**
@@ -368,106 +534,118 @@ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
368
534
  */
369
535
  getSwapById<C extends ChainIds<T>>(id: string, chainId: C, signer?: string): Promise<ISwap<T[C]>>;
370
536
  /**
371
- * Returns the swap with a proper return type, or undefined, if not found, or has wrong type
537
+ * Returns the swap with a proper return type, or `undefined` if not found or has wrong type
372
538
  *
373
- * @param id
374
- * @param chainId
375
- * @param swapType
376
- * @param signer
539
+ * @param id An ID of the swap ({@link ISwap.getId})
540
+ * @param chainId Chain identifier of the smart chain where the swap was initiated
541
+ * @param swapType Type of the swap
542
+ * @param signer An optional required smart chain signer address to fetch the swap for
377
543
  */
378
544
  getTypedSwapById<C extends ChainIds<T>, S extends SwapType>(id: string, chainId: C, swapType: S, signer?: string): Promise<SwapTypeMapping<T[C]>[S] | undefined>;
379
545
  private syncSwapsForChain;
380
546
  /**
381
- * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes
547
+ * Deletes the swaps from the persistent storage backend. Note that some data (like lightning network
548
+ * amounts and bolt11 invoices) are purely off-chain and can never be recovered later just from
549
+ * on-chain data!
550
+ *
551
+ * @param chainId Optional, to only delete swaps for this smart chain
552
+ * @param signer Optional, to only delete swaps for this smart chain signer (`chainId` param must be
553
+ * set to delete only signer's swaps)
554
+ */
555
+ wipeStorage<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
556
+ /**
557
+ * Synchronizes swaps from on-chain, this is ran automatically when SDK is initialized, hence
558
+ * should only be ran manually when `dontCheckPastSwaps=true` is passed in the swapper options,
559
+ * also deletes expired quotes
382
560
  *
383
- * @param chainId
384
- * @param signer
561
+ * @param chainId Optional chain identifier to only run swap sync for a single smart chain
562
+ * @param signer Optional signer to only run swap sync for swaps initiated by this signer
385
563
  */
386
564
  _syncSwaps<C extends ChainIds<T>>(chainId?: C, signer?: string): Promise<void>;
387
565
  /**
388
- * Attempts to recover partial swap data from on-chain historical data
566
+ * Recovers swaps from on-chain historical data.
389
567
  *
390
- * @param chainId
391
- * @param signer
392
- * @param startBlockheight
568
+ * Please note that the recovered swaps might not be complete (i.e. missing amounts or addresses), as some
569
+ * of the swap data is purely off-chain and can never be recovered purely from on-chain data. This
570
+ * functions tries to recover as much swap data as possible.
571
+ *
572
+ * @param chainId Smart chain identifier string to recover the swaps from
573
+ * @param signer Signer address to recover the swaps for
574
+ * @param startBlockheight Optional starting blockheight for swap data recovery, will only check swaps
575
+ * initiated after this blockheight
393
576
  */
394
577
  recoverSwaps<C extends ChainIds<T>>(chainId: C, signer: string, startBlockheight?: number): Promise<ISwap<T[C]>[]>;
578
+ /**
579
+ * Returns the {@link Token} object for a given token
580
+ *
581
+ * @param tickerOrAddress Token to return the object for, can use multiple formats:
582
+ * - a) token ticker, such as `"BTC"`, `"SOL"`, etc.
583
+ * - b) token ticker prefixed with smart chain identifier, such as `"SOLANA-SOL"`, `"SOLANA-USDC"`, etc.
584
+ * - c) token address
585
+ */
395
586
  getToken(tickerOrAddress: string): Token<ChainIds<T>>;
396
587
  /**
397
588
  * Creates a child swapper instance with a given smart chain
398
589
  *
399
- * @param chainIdentifier
590
+ * @param chainIdentifier Smart chain identifier for the created child swapper instance
400
591
  */
401
592
  withChain<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapperWithChain<T, ChainIdentifier>;
402
593
  /**
403
- * Returns supported smart chains
594
+ * Returns an array of all the supported smart chains
404
595
  */
405
596
  getSmartChains(): ChainIds<T>[];
406
597
  /**
407
598
  * Returns whether the SDK supports a given swap type on a given chain based on currently known LPs
408
599
  *
409
- * @param chainId
410
- * @param swapType
600
+ * @param chainId Smart chain identifier string
601
+ * @param swapType Swap protocol type
411
602
  */
412
603
  supportsSwapType<ChainIdentifier extends ChainIds<T>, Type extends SwapType>(chainId: ChainIdentifier, swapType: Type): SupportsSwapType<T[ChainIdentifier], Type>;
413
604
  /**
414
- * Returns type of the swap based on input and output tokens specified
415
- *
416
- * @param srcToken
417
- * @param dstToken
605
+ * @internal
418
606
  */
419
607
  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);
608
+ /**
609
+ * @internal
610
+ */
420
611
  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);
612
+ /**
613
+ * @internal
614
+ */
421
615
  getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<false>): SwapType.TO_BTC;
616
+ /**
617
+ * @internal
618
+ */
422
619
  getSwapType<C extends ChainIds<T>>(srcToken: SCToken<C>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
620
+ /**
621
+ * Returns type of the swap based on input and output tokens specified
622
+ *
623
+ * @param srcToken Source token
624
+ * @param dstToken Destination token
625
+ */
423
626
  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;
424
- readonly SwapTypeInfo: {
425
- readonly 2: {
426
- readonly requiresInputWallet: true;
427
- readonly requiresOutputWallet: false;
428
- readonly supportsGasDrop: false;
429
- };
430
- readonly 3: {
431
- readonly requiresInputWallet: true;
432
- readonly requiresOutputWallet: false;
433
- readonly supportsGasDrop: false;
434
- };
435
- readonly 0: {
436
- readonly requiresInputWallet: false;
437
- readonly requiresOutputWallet: true;
438
- readonly supportsGasDrop: false;
439
- };
440
- readonly 1: {
441
- readonly requiresInputWallet: false;
442
- readonly requiresOutputWallet: true;
443
- readonly supportsGasDrop: false;
444
- };
445
- readonly 6: {
446
- readonly requiresInputWallet: true;
447
- readonly requiresOutputWallet: false;
448
- readonly supportsGasDrop: true;
449
- };
450
- readonly 7: {
451
- readonly requiresInputWallet: false;
452
- readonly requiresOutputWallet: false;
453
- readonly supportsGasDrop: true;
454
- };
455
- readonly 4: {
456
- readonly requiresInputWallet: false;
457
- readonly requiresOutputWallet: false;
458
- readonly supportsGasDrop: false;
459
- };
460
- readonly 5: {
461
- readonly requiresInputWallet: false;
462
- readonly requiresOutputWallet: false;
463
- readonly supportsGasDrop: false;
464
- };
465
- };
627
+ /**
628
+ * Helper information about various swap protocol and their features:
629
+ * - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
630
+ * arbitrary transaction
631
+ * - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
632
+ * arbitrary transactions
633
+ * - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
634
+ * amount of native token as part of the swap when swapping to smart chains
635
+ *
636
+ * Uses a `Record` type here, use the {@link SwapProtocolInfo} import for a literal readonly type, with
637
+ * pre-filled exact values in the type.
638
+ */
639
+ readonly SwapTypeInfo: Record<SwapType, {
640
+ requiresInputWallet: boolean;
641
+ requiresOutputWallet: boolean;
642
+ supportsGasDrop: boolean;
643
+ }>;
466
644
  /**
467
645
  * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
468
646
  *
469
- * @param srcToken
470
- * @param dstToken
647
+ * @param srcToken Source token
648
+ * @param dstToken Destination token
471
649
  */
472
650
  getSwapLimits<C extends ChainIds<T>, A extends Token<C>, B extends Token<C>>(srcToken: A, dstToken: B): {
473
651
  input: {
@@ -480,7 +658,7 @@ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
480
658
  };
481
659
  };
482
660
  /**
483
- * Returns supported tokens for a given direction
661
+ * Returns an array of supported tokens either on the input or on the output of a swap
484
662
  *
485
663
  * @param input Whether to return input tokens or output tokens
486
664
  */
@@ -494,7 +672,7 @@ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
494
672
  /**
495
673
  * Returns the set of supported token addresses by all the intermediaries we know of offering a specific swapType service
496
674
  *
497
- * @param chainIdentifier
675
+ * @param chainIdentifier Chain identifier string
498
676
  * @param swapType Specific swap type for which to obtain supported tokens
499
677
  */
500
678
  private getSupportedTokenAddresses;
@@ -503,29 +681,5 @@ export declare class Swapper<T extends MultiChain> extends EventEmitter<{
503
681
  * or tokens that you can swap from (if input=false) to a given token
504
682
  */
505
683
  getSwapCounterTokens(token: Token, input: boolean): Token[];
506
- /**
507
- * Returns swap bounds (minimums & maximums) for different swap types & tokens
508
- * @deprecated Use getSwapLimits() instead!
509
- */
510
- getSwapBounds<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SwapBounds;
511
- getSwapBounds(): MultichainSwapBounds;
512
- /**
513
- * Returns maximum possible swap amount
514
- * @deprecated Use getSwapLimits() instead!
515
- *
516
- * @param chainIdentifier
517
- * @param type Type of the swap
518
- * @param token Token of the swap
519
- */
520
- getMaximum<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, type: SwapType, token: string): bigint;
521
- /**
522
- * Returns minimum possible swap amount
523
- * @deprecated Use getSwapLimits() instead!
524
- *
525
- * @param chainIdentifier
526
- * @param type Type of swap
527
- * @param token Token of the swap
528
- */
529
- getMinimum<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, type: SwapType, token: string): bigint;
530
684
  }
531
685
  export {};