@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
@@ -5,6 +5,18 @@ import { SwapType } from "../enums/SwapType";
5
5
  import { SwapTypeMapping } from "../utils/SwapUtils";
6
6
  import { CustomPriceFunction } from "../types/CustomPriceFunction";
7
7
  import { MempoolApi, MempoolBitcoinRpc } from "@atomiqlabs/btc-mempool";
8
+ /**
9
+ * Token definitions for a specific chain
10
+ */
11
+ type TypedChainTokens<T extends ChainInitializer<any, any, any>> = {
12
+ [val in keyof T["tokens"]]: SCToken<T["chainId"]>;
13
+ };
14
+ /**
15
+ * Token resolver for a specific chain
16
+ */
17
+ type TypedChainTokenResolver<T extends ChainInitializer<any, any, any>> = {
18
+ getToken: (address: string) => SCToken<T["chainId"]>;
19
+ };
8
20
  type ChainTypeDict<T extends ChainInitializer<any, any, any>> = {
9
21
  [K in T["chainId"]]: T["chainType"];
10
22
  };
@@ -21,38 +33,51 @@ type OptionsDict<T extends ChainInitializer<any, any, any>> = {
21
33
  };
22
34
  type GetAllOptions<T extends readonly ChainInitializer<any, any, any>[]> = (T extends readonly [infer First extends ChainInitializer<any, any, any>, ...infer Rest extends ChainInitializer<any, any, any>[]] ? OptionsDict<First> & GetAllOptions<Rest> : unknown);
23
35
  /**
24
- * Configuration options for creating a typed Swapper instance
36
+ * Configuration options for creating a Swapper instance
37
+ *
25
38
  * @category Core
26
39
  */
27
40
  export type TypedSwapperOptions<T extends readonly ChainInitializer<any, any, any>[]> = {
41
+ /**
42
+ * A dictionary with chain-specific settings, like RPC URLs and others
43
+ */
28
44
  chains: GetAllOptions<T>;
29
- chainStorageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>;
45
+ /**
46
+ * A function callback to retrieve a specific named storage container for key-value persistency. If not present, the
47
+ * default browser Local Storage adapter is used. When you use the SDK in non-browser based environments you need
48
+ * to provide this callback such that the SDK is able to use a custom storage adapter.
49
+ *
50
+ * @param storageName Name of the container to retrieve
51
+ */
52
+ chainStorageCtor?: <T extends StorageObject>(storageName: string) => IStorageManager<T>;
53
+ /**
54
+ * Maximum allowed pricing difference between intermediary (LP) returned rate and current market rate. In
55
+ * parts-per-million, e.g. 2% is written as `20000`.
56
+ */
30
57
  pricingFeeDifferencePPM?: bigint;
58
+ /**
59
+ * Optional pricing function to use instead of default pricing APIs. See {@link CustomPriceFunction} for details.
60
+ */
31
61
  getPriceFn?: CustomPriceFunction;
62
+ /**
63
+ * Mempool API instance or URLs to use, if not provided the defaults will be used for the specified bitcoin network
64
+ */
32
65
  mempoolApi?: MempoolApi | MempoolBitcoinRpc | string | string[];
66
+ /**
67
+ * Data propagation messenger instance to use for broadcasting data to watchtowers. By default, a Nostr-based
68
+ * messenger is used.
69
+ */
33
70
  messenger?: Messenger;
34
71
  } & SwapperOptions;
35
72
  /**
36
- * Token resolver for a specific chain
37
- * @category Core
38
- */
39
- export type TypedChainTokenResolver<T extends ChainInitializer<any, any, any>> = {
40
- getToken: (address: string) => SCToken<T["chainId"]>;
41
- };
42
- /**
43
- * Token resolvers for all chains
73
+ * Token resolvers for all chains, resolve tokens based on their address
74
+ *
44
75
  * @category Core
45
76
  */
46
77
  export type TypedTokenResolvers<T extends readonly ChainInitializer<any, any, any>[]> = (T extends readonly [infer First extends ChainInitializer<any, any, any>, ...infer Rest extends ChainInitializer<any, any, any>[]] ? TokenResolverDict<First> & TypedTokenResolvers<Rest> : unknown);
47
- /**
48
- * Token definitions for a specific chain
49
- * @category Core
50
- */
51
- export type TypedChainTokens<T extends ChainInitializer<any, any, any>> = {
52
- [val in keyof T["tokens"]]: SCToken<T["chainId"]>;
53
- };
54
78
  /**
55
79
  * All tokens including Bitcoin tokens
80
+ *
56
81
  * @category Core
57
82
  */
58
83
  export type TypedTokens<T extends readonly ChainInitializer<any, ChainType, any>[]> = GetAllTokens<T> & {
@@ -63,24 +88,47 @@ export type TypedTokens<T extends readonly ChainInitializer<any, ChainType, any>
63
88
  };
64
89
  /**
65
90
  * Type alias for a Swapper instance with typed chain support
91
+ *
66
92
  * @category Core
67
93
  */
68
94
  export type TypedSwapper<T extends readonly ChainInitializer<any, ChainType, any>[]> = Swapper<ToMultichain<T>>;
69
95
  /**
70
- * Type alias for a specific swap type on a chain
96
+ * Type alias for a specific swap type
97
+ *
71
98
  * @category Core
72
99
  */
73
100
  export type TypedSwap<T extends ChainInitializer<any, ChainType, any>, S extends SwapType> = SwapTypeMapping<T["chainType"]>[S];
74
101
  /**
75
102
  * Factory class for creating and initializing Swapper instances with typed chain support
103
+ *
76
104
  * @category Core
77
105
  */
78
106
  export declare class SwapperFactory<T extends readonly ChainInitializer<any, ChainType, any>[]> {
79
107
  readonly initializers: T;
108
+ /**
109
+ * All available tokens for the atomiq SDK
110
+ */
80
111
  Tokens: TypedTokens<T>;
112
+ /**
113
+ * Token resolvers for various smart chains supported by the SDK, allow fetching tokens based on their addresses
114
+ */
81
115
  TokenResolver: TypedTokenResolvers<T>;
82
116
  constructor(initializers: T);
117
+ /**
118
+ * Returns a new swapper instance with the passed options.
119
+ *
120
+ * The swapper returned here is not yet initialized, be sure to call {@link Swapper.init}, before
121
+ * calling any other functions in the swapper instance.
122
+ *
123
+ * @param options Options for customizing the swapper instance
124
+ */
83
125
  newSwapper(options: TypedSwapperOptions<T>): TypedSwapper<T>;
126
+ /**
127
+ * Returns a new and already initialized swapper instance with the passed options. There is no need
128
+ * to call {@link Swapper.init} anymore.
129
+ *
130
+ * @param options Options for customizing the swapper instance
131
+ */
84
132
  newSwapperInitialized(options: TypedSwapperOptions<T>): Promise<TypedSwapper<T>>;
85
133
  }
86
134
  export {};
@@ -48,14 +48,21 @@ const nostrUrls = [
48
48
  ];
49
49
  /**
50
50
  * Factory class for creating and initializing Swapper instances with typed chain support
51
+ *
51
52
  * @category Core
52
53
  */
53
54
  class SwapperFactory {
54
55
  constructor(initializers) {
55
56
  this.initializers = initializers;
57
+ /**
58
+ * All available tokens for the atomiq SDK
59
+ */
56
60
  this.Tokens = {
57
61
  BITCOIN: Token_1.BitcoinTokens
58
62
  };
63
+ /**
64
+ * Token resolvers for various smart chains supported by the SDK, allow fetching tokens based on their addresses
65
+ */
59
66
  this.TokenResolver = {};
60
67
  this.initializers = initializers;
61
68
  initializers.forEach(initializer => {
@@ -78,6 +85,14 @@ class SwapperFactory {
78
85
  };
79
86
  });
80
87
  }
88
+ /**
89
+ * Returns a new swapper instance with the passed options.
90
+ *
91
+ * The swapper returned here is not yet initialized, be sure to call {@link Swapper.init}, before
92
+ * calling any other functions in the swapper instance.
93
+ *
94
+ * @param options Options for customizing the swapper instance
95
+ */
81
96
  newSwapper(options) {
82
97
  options.bitcoinNetwork ??= base_1.BitcoinNetwork.MAINNET;
83
98
  options.storagePrefix ??= "atomiqsdk-" + options.bitcoinNetwork + "-";
@@ -86,13 +101,13 @@ class SwapperFactory {
86
101
  options.registryUrl ??= registries[options.bitcoinNetwork];
87
102
  let bitcoinRpc;
88
103
  if (options.mempoolApi != null) {
89
- bitcoinRpc = options.mempoolApi instanceof btc_mempool_1.MempoolBitcoinRpc ? options.mempoolApi : new btc_mempool_1.MempoolBitcoinRpc(options.mempoolApi);
104
+ bitcoinRpc = options.mempoolApi instanceof btc_mempool_1.MempoolBitcoinRpc ? options.mempoolApi : new btc_mempool_1.MempoolBitcoinRpc(options.mempoolApi, options.bitcoinNetwork);
90
105
  }
91
106
  else {
92
107
  const urls = mempoolUrls[options.bitcoinNetwork];
93
108
  if (urls == null)
94
109
  throw new Error(`No pre-configured urls for ${base_1.BitcoinNetwork[options.bitcoinNetwork]} network were found, please explicitly pass mempoolApi parameter!`);
95
- bitcoinRpc = new btc_mempool_1.MempoolBitcoinRpc(urls);
110
+ bitcoinRpc = new btc_mempool_1.MempoolBitcoinRpc(urls, options.bitcoinNetwork);
96
111
  }
97
112
  const pricingAssets = [];
98
113
  Object.keys(SmartChainAssets_1.SmartChainAssets).forEach((ticker) => {
@@ -125,8 +140,14 @@ class SwapperFactory {
125
140
  };
126
141
  }), options.getPriceFn)) :
127
142
  RedundantSwapPrice_1.RedundantSwapPrice.createFromTokenMap(options.pricingFeeDifferencePPM ?? 10000n, pricingAssets);
128
- return new Swapper_1.Swapper(bitcoinRpc, chains, swapPricing, pricingAssets, options.messenger, options);
143
+ return new Swapper_1.Swapper(bitcoinRpc, bitcoinRpc, (btcRelay) => new btc_mempool_1.MempoolBtcRelaySynchronizer(btcRelay, bitcoinRpc), chains, swapPricing, pricingAssets, options.messenger, options);
129
144
  }
145
+ /**
146
+ * Returns a new and already initialized swapper instance with the passed options. There is no need
147
+ * to call {@link Swapper.init} anymore.
148
+ *
149
+ * @param options Options for customizing the swapper instance
150
+ */
130
151
  async newSwapperInitialized(options) {
131
152
  const swapper = this.newSwapper(options);
132
153
  await swapper.init();
@@ -9,43 +9,51 @@ import { SCToken } from "../types/Token";
9
9
  import { LNURLWithdraw } from "../types/lnurl/LNURLWithdraw";
10
10
  import { LNURLPay } from "../types/lnurl/LNURLPay";
11
11
  /**
12
- * Utility class providing helper methods for swap operations
12
+ * Utility class providing helper methods for address parsing, token balances, serialization
13
+ * and other miscellaneous things.
14
+ *
13
15
  * @category Core
14
16
  */
15
17
  export declare class SwapperUtils<T extends MultiChain> {
16
18
  readonly bitcoinNetwork: BTC_NETWORK;
17
19
  private readonly root;
18
20
  constructor(root: Swapper<T>);
21
+ /**
22
+ * Checks whether a passed address is a valid address on the smart chain
23
+ *
24
+ * @param address Address
25
+ * @param chainId Smart chain identifier string to check the address for
26
+ */
19
27
  isValidSmartChainAddress(address: string, chainId?: ChainIds<T>): boolean;
20
28
  /**
21
- * Returns true if string is a valid BOLT11 bitcoin lightning invoice
29
+ * Checks whether an address is a valid BOLT11 bitcoin lightning invoice
22
30
  *
23
- * @param lnpr
31
+ * @param address Address to check
24
32
  */
25
- isLightningInvoice(lnpr: string): boolean;
33
+ isLightningInvoice(address: string): boolean;
26
34
  /**
27
- * Returns true if string is a valid bitcoin address
35
+ * Checks whether an address is a valid bitcoin address
28
36
  *
29
- * @param addr
37
+ * @param address Address to check
30
38
  */
31
- isValidBitcoinAddress(addr: string): boolean;
39
+ isValidBitcoinAddress(address: string): boolean;
32
40
  /**
33
- * Returns true if string is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT
41
+ * Checks whether an address is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT
34
42
  *
35
- * @param lnpr
43
+ * @param address Address to check
36
44
  */
37
- isValidLightningInvoice(lnpr: string): boolean;
45
+ isValidLightningInvoice(address: string): boolean;
38
46
  /**
39
- * Returns true if string is a valid LNURL (no checking on type is performed)
47
+ * Checks whether an address is a valid LNURL (no checking on type is performed)
40
48
  *
41
- * @param lnurl
49
+ * @param address Address to check
42
50
  */
43
- isValidLNURL(lnurl: string): boolean;
51
+ isValidLNURL(address: string): boolean;
44
52
  /**
45
53
  * Returns type and data about an LNURL
46
54
  *
47
- * @param lnurl
48
- * @param shouldRetry
55
+ * @param lnurl LNURL link to check, can be either `pay` or `withdraw` type
56
+ * @param shouldRetry Optional whether HTTP requests should retried on failure
49
57
  */
50
58
  getLNURLTypeAndData(lnurl: string, shouldRetry?: boolean): Promise<LNURLPay | LNURLWithdraw | null>;
51
59
  /**
@@ -60,12 +68,12 @@ export declare class SwapperUtils<T extends MultiChain> {
60
68
  private parseLightningInvoice;
61
69
  private parseSmartchainAddress;
62
70
  /**
63
- * General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses, also fetches LNURL data
64
- * (hence returns Promise)
71
+ * General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses. Also fetches LNURL data
72
+ * (hence async and returns Promise).
65
73
  *
66
74
  * @param addressString Address to parse
67
75
  * @throws {Error} Error in address parsing
68
- * @returns Address data or null if address doesn't conform to any known format
76
+ * @returns Address data or `null` if address doesn't conform to any known format
69
77
  */
70
78
  parseAddress(addressString: string): Promise<{
71
79
  address: string;
@@ -78,11 +86,11 @@ export declare class SwapperUtils<T extends MultiChain> {
78
86
  } | null>;
79
87
  /**
80
88
  * Synchronous general parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses, doesn't fetch
81
- * LNURL data, reports swapType: null instead to prevent returning a Promise
89
+ * LNURL data, returns `swapType: null` instead to prevent returning a Promise
82
90
  *
83
91
  * @param addressString Address to parse
84
92
  * @throws {Error} Error in address parsing
85
- * @returns Address data or null if address doesn't conform to any known format
93
+ * @returns Address data or `null` if address doesn't conform to any known format
86
94
  */
87
95
  parseAddressSync(addressString: string): {
88
96
  address: string;
@@ -93,18 +101,21 @@ export declare class SwapperUtils<T extends MultiChain> {
93
101
  amount?: TokenAmount;
94
102
  } | null;
95
103
  /**
96
- * Returns a random PSBT that can be used for fee estimation, the last output (the LP output) is omitted
97
- * to allow for coinselection algorithm to determine maximum sendable amount there
104
+ * Returns a random PSBT that can be used for fee estimation for SPV vault (UTXO-controlled vault) based swaps
105
+ * {@link SwapType.SPV_VAULT_FROM_BTC}, the last output (the LP output) is omitted to allow for coinselection
106
+ * algorithm to determine maximum sendable amount there
98
107
  *
99
- * @param chainIdentifier
100
- * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
108
+ * @param chainIdentifier Smart chain to swap to
109
+ * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
101
110
  */
102
111
  getRandomSpvVaultPsbt<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, includeGasToken?: boolean): Transaction;
103
112
  /**
104
113
  * Returns the spendable balance of a bitcoin wallet
105
114
  *
106
- * @param wallet
107
- * @param targetChain
115
+ * @param wallet Bitcoin wallet to check the spendable balance for, can either be a simple
116
+ * bitcoin address string or a wallet object
117
+ * @param targetChain Destination smart chain for the swap, the ensures proper spendable balance
118
+ * is estimated taking into consideration different swap primitives available on different chains
108
119
  * @param options Additional options
109
120
  */
110
121
  getBitcoinSpendableBalance(wallet: string | IBitcoinWallet | MinimalBitcoinWalletInterface, targetChain?: ChainIds<T>, options?: {
@@ -116,14 +127,15 @@ export declare class SwapperUtils<T extends MultiChain> {
116
127
  feeRate: number;
117
128
  }>;
118
129
  /**
119
- * Returns the maximum spendable balance of the wallet, deducting the fee needed to initiate a swap for native balances
130
+ * Returns the maximum spendable balance of the smart chain wallet, deducting the fee needed
131
+ * to initiate a swap for native balances
120
132
  */
121
133
  getSpendableBalance<ChainIdentifier extends ChainIds<T>>(wallet: string | T[ChainIdentifier]["Signer"] | T[ChainIdentifier]["NativeSigner"], token: SCToken<ChainIdentifier>, options?: {
122
134
  feeMultiplier?: number;
123
135
  feeRate?: any;
124
136
  }): Promise<TokenAmount>;
125
137
  /**
126
- * Returns the address of the native currency of the chain
138
+ * Returns the address of the native currency of the smart chain
127
139
  */
128
140
  getNativeToken<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SCToken<ChainIdentifier>;
129
141
  /**
@@ -140,14 +152,49 @@ export declare class SwapperUtils<T extends MultiChain> {
140
152
  randomAddress<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): string;
141
153
  /**
142
154
  * Signs and broadcasts the supplied smart chain transaction
155
+ *
156
+ * @param chainIdentifier Smart chain identifier string
157
+ * @param signer Signer to use for signing the transactions
158
+ * @param txs An array of transactions to sign
159
+ * @param abortSignal Abort signal
160
+ * @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
143
161
  */
144
162
  sendAndConfirm<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, signer: T[ChainIdentifier]["NativeSigner"] | T[ChainIdentifier]["Signer"], txs: T[ChainIdentifier]["TX"][], abortSignal?: AbortSignal, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string[]>;
145
163
  /**
146
164
  * Broadcasts already signed smart chain transactions
165
+ *
166
+ * @param chainIdentifier Smart chain identifier string
167
+ * @param txs An array of already signed transactions
168
+ * @param abortSignal Abort signal
169
+ * @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
147
170
  */
148
171
  sendSignedAndConfirm<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, txs: T[ChainIdentifier]["SignedTXType"][], abortSignal?: AbortSignal, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string[]>;
172
+ /**
173
+ * Serializes an unsigned smart chain transaction
174
+ *
175
+ * @param chainIdentifier Smart chain string identifier
176
+ * @param tx An unsigned transaction to serialize
177
+ */
149
178
  serializeUnsignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: T[ChainIdentifier]["TX"]): Promise<string>;
179
+ /**
180
+ * Deserializes an unsigned smart chain transaction
181
+ *
182
+ * @param chainIdentifier Smart chain string identifier
183
+ * @param tx Serialized unsigned transaction
184
+ */
150
185
  deserializeUnsignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: string): Promise<T[ChainIdentifier]["TX"]>;
186
+ /**
187
+ * Serializes a signed smart chain transaction
188
+ *
189
+ * @param chainIdentifier Smart chain string identifier
190
+ * @param tx A signed transaction to serialize
191
+ */
151
192
  serializeSignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: T[ChainIdentifier]["SignedTXType"]): Promise<string>;
193
+ /**
194
+ * Deserializes a signed smart chain transaction
195
+ *
196
+ * @param chainIdentifier Smart chain string identifier
197
+ * @param tx Serialized signed transaction
198
+ */
152
199
  deserializeSignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: string): Promise<T[ChainIdentifier]["SignedTXType"]>;
153
200
  }