@atomiqlabs/sdk 8.1.7 → 8.3.1

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 (253) hide show
  1. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  2. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  3. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  4. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  5. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  7. package/dist/enums/FeeType.d.ts +7 -0
  8. package/dist/enums/FeeType.js +7 -0
  9. package/dist/enums/SwapAmountType.d.ts +7 -0
  10. package/dist/enums/SwapAmountType.js +7 -0
  11. package/dist/enums/SwapDirection.d.ts +7 -0
  12. package/dist/enums/SwapDirection.js +7 -0
  13. package/dist/enums/SwapType.d.ts +62 -1
  14. package/dist/enums/SwapType.js +62 -1
  15. package/dist/errors/IntermediaryError.d.ts +4 -0
  16. package/dist/errors/IntermediaryError.js +1 -0
  17. package/dist/errors/RequestError.d.ts +15 -1
  18. package/dist/errors/RequestError.js +8 -0
  19. package/dist/errors/UserError.d.ts +1 -0
  20. package/dist/errors/UserError.js +1 -0
  21. package/dist/index.d.ts +4 -5
  22. package/dist/index.js +3 -4
  23. package/dist/intermediaries/Intermediary.d.ts +57 -10
  24. package/dist/intermediaries/Intermediary.js +37 -10
  25. package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
  26. package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
  27. package/dist/prices/RedundantSwapPrice.d.ts +24 -3
  28. package/dist/prices/RedundantSwapPrice.js +21 -1
  29. package/dist/prices/SingleSwapPrice.d.ts +9 -6
  30. package/dist/prices/SingleSwapPrice.js +10 -7
  31. package/dist/prices/SwapPriceWithChain.d.ts +54 -16
  32. package/dist/prices/SwapPriceWithChain.js +58 -20
  33. package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
  34. package/dist/prices/abstract/ISwapPrice.js +103 -55
  35. package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
  36. package/dist/prices/providers/BinancePriceProvider.js +7 -0
  37. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
  38. package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
  39. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
  40. package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
  41. package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
  42. package/dist/prices/providers/CustomPriceProvider.js +11 -0
  43. package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
  44. package/dist/prices/providers/KrakenPriceProvider.js +9 -0
  45. package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
  46. package/dist/prices/providers/OKXPriceProvider.js +6 -0
  47. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  48. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  49. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  50. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  51. package/dist/storage/UnifiedSwapStorage.js +29 -1
  52. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  53. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  54. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  55. package/dist/storage-browser/LocalStorageManager.js +25 -1
  56. package/dist/swapper/Swapper.d.ts +303 -222
  57. package/dist/swapper/Swapper.js +376 -344
  58. package/dist/swapper/SwapperFactory.d.ts +41 -17
  59. package/dist/swapper/SwapperFactory.js +23 -2
  60. package/dist/swapper/SwapperUtils.d.ts +75 -28
  61. package/dist/swapper/SwapperUtils.js +107 -60
  62. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  63. package/dist/swapper/SwapperWithChain.js +218 -64
  64. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  65. package/dist/swapper/SwapperWithSigner.js +190 -44
  66. package/dist/swaps/IAddressSwap.d.ts +10 -1
  67. package/dist/swaps/IAddressSwap.js +2 -1
  68. package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
  69. package/dist/swaps/IBTCWalletSwap.js +2 -1
  70. package/dist/swaps/IClaimableSwap.d.ts +36 -4
  71. package/dist/swaps/IClaimableSwap.js +2 -1
  72. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  73. package/dist/swaps/IRefundableSwap.d.ts +29 -3
  74. package/dist/swaps/IRefundableSwap.js +2 -1
  75. package/dist/swaps/ISwap.d.ts +159 -21
  76. package/dist/swaps/ISwap.js +90 -33
  77. package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
  78. package/dist/swaps/ISwapWithGasDrop.js +1 -0
  79. package/dist/swaps/ISwapWrapper.d.ts +157 -48
  80. package/dist/swaps/ISwapWrapper.js +130 -72
  81. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
  82. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  83. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  84. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  85. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  86. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  87. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  88. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  89. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  93. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
  94. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
  95. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
  97. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
  98. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
  99. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  101. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
  102. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
  103. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  105. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
  106. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
  107. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  109. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
  110. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
  111. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  113. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
  114. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
  115. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  117. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
  118. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
  119. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  120. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
  121. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
  122. package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
  123. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  124. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  125. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
  126. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
  127. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  128. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  129. package/dist/types/AmountData.d.ts +2 -1
  130. package/dist/types/CustomPriceFunction.d.ts +7 -1
  131. package/dist/types/SwapExecutionAction.d.ts +74 -4
  132. package/dist/types/SwapWithSigner.d.ts +4 -1
  133. package/dist/types/SwapWithSigner.js +5 -2
  134. package/dist/types/Token.d.ts +11 -5
  135. package/dist/types/Token.js +6 -3
  136. package/dist/types/TokenAmount.d.ts +3 -0
  137. package/dist/types/TokenAmount.js +2 -0
  138. package/dist/types/fees/Fee.d.ts +2 -1
  139. package/dist/types/fees/FeeBreakdown.d.ts +2 -1
  140. package/dist/types/fees/PercentagePPM.d.ts +2 -0
  141. package/dist/types/fees/PercentagePPM.js +1 -0
  142. package/dist/types/lnurl/LNURLPay.d.ts +14 -6
  143. package/dist/types/lnurl/LNURLPay.js +6 -2
  144. package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
  145. package/dist/types/lnurl/LNURLWithdraw.js +6 -2
  146. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
  147. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  148. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  149. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
  150. package/dist/utils/BitcoinUtils.d.ts +1 -0
  151. package/dist/utils/BitcoinUtils.js +5 -1
  152. package/dist/utils/SwapUtils.d.ts +56 -1
  153. package/dist/utils/SwapUtils.js +53 -1
  154. package/dist/utils/TokenUtils.d.ts +10 -2
  155. package/dist/utils/TokenUtils.js +12 -4
  156. package/package.json +3 -3
  157. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  158. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  159. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  160. package/src/enums/FeeType.ts +7 -0
  161. package/src/enums/SwapAmountType.ts +7 -0
  162. package/src/enums/SwapDirection.ts +7 -0
  163. package/src/enums/SwapType.ts +62 -2
  164. package/src/errors/IntermediaryError.ts +4 -0
  165. package/src/errors/RequestError.ts +15 -1
  166. package/src/errors/UserError.ts +1 -0
  167. package/src/index.ts +6 -5
  168. package/src/intermediaries/Intermediary.ts +57 -10
  169. package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
  170. package/src/prices/RedundantSwapPrice.ts +24 -4
  171. package/src/prices/SingleSwapPrice.ts +10 -7
  172. package/src/prices/SwapPriceWithChain.ts +59 -21
  173. package/src/prices/abstract/ISwapPrice.ts +114 -65
  174. package/src/prices/providers/BinancePriceProvider.ts +7 -0
  175. package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
  176. package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
  177. package/src/prices/providers/CustomPriceProvider.ts +11 -0
  178. package/src/prices/providers/KrakenPriceProvider.ts +9 -0
  179. package/src/prices/providers/OKXPriceProvider.ts +6 -0
  180. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  181. package/src/storage/IUnifiedStorage.ts +19 -7
  182. package/src/storage/UnifiedSwapStorage.ts +33 -3
  183. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  184. package/src/storage-browser/LocalStorageManager.ts +25 -1
  185. package/src/swapper/Swapper.ts +513 -379
  186. package/src/swapper/SwapperFactory.ts +44 -21
  187. package/src/swapper/SwapperUtils.ts +107 -60
  188. package/src/swapper/SwapperWithChain.ts +320 -81
  189. package/src/swapper/SwapperWithSigner.ts +263 -56
  190. package/src/swaps/IAddressSwap.ts +11 -1
  191. package/src/swaps/IBTCWalletSwap.ts +24 -8
  192. package/src/swaps/IClaimableSwap.ts +39 -4
  193. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  194. package/src/swaps/IRefundableSwap.ts +32 -3
  195. package/src/swaps/ISwap.ts +221 -82
  196. package/src/swaps/ISwapWithGasDrop.ts +6 -0
  197. package/src/swaps/ISwapWrapper.ts +212 -94
  198. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
  199. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  200. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  201. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  202. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
  203. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  204. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
  205. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
  206. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
  207. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  208. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
  209. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  210. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
  211. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  212. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
  213. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  214. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
  215. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  216. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
  217. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
  218. package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
  219. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  220. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
  221. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  222. package/src/types/AmountData.ts +2 -1
  223. package/src/types/CustomPriceFunction.ts +7 -1
  224. package/src/types/SwapExecutionAction.ts +84 -5
  225. package/src/types/SwapWithSigner.ts +7 -3
  226. package/src/types/Token.ts +12 -5
  227. package/src/types/TokenAmount.ts +3 -0
  228. package/src/types/fees/Fee.ts +2 -1
  229. package/src/types/fees/FeeBreakdown.ts +2 -1
  230. package/src/types/fees/PercentagePPM.ts +2 -0
  231. package/src/types/lnurl/LNURLPay.ts +14 -6
  232. package/src/types/lnurl/LNURLWithdraw.ts +12 -5
  233. package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
  234. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  235. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
  236. package/src/utils/BitcoinUtils.ts +5 -0
  237. package/src/utils/SwapUtils.ts +61 -1
  238. package/src/utils/TokenUtils.ts +12 -4
  239. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  240. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  241. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  242. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  243. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  244. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  245. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  246. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  247. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  248. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  249. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  250. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  251. package/dist/errors/PaymentAuthError.d.ts +0 -11
  252. package/dist/errors/PaymentAuthError.js +0 -23
  253. package/src/errors/PaymentAuthError.ts +0 -26
@@ -4,18 +4,29 @@ exports.CustomPriceProvider = void 0;
4
4
  const IPriceProvider_1 = require("../abstract/IPriceProvider");
5
5
  /**
6
6
  * Price provider using custom pricing function
7
+ *
7
8
  * @category Pricing and LPs
8
9
  */
9
10
  class CustomPriceProvider extends IPriceProvider_1.IPriceProvider {
11
+ /**
12
+ * @param coinsMap Mapping of token tickers to token addresses
13
+ * @param getUsdPriceFn Pricing function, used to retrieve USD prices of the tokens
14
+ */
10
15
  constructor(coinsMap, getUsdPriceFn) {
11
16
  super(coinsMap);
12
17
  this.getUsdPriceFn = getUsdPriceFn;
13
18
  }
19
+ /**
20
+ * @inheritDoc
21
+ */
14
22
  async fetchPrice(token, abortSignal) {
15
23
  const [btcPrice, tokenPrice] = await this.getUsdPriceFn(["BTC", token.coinId], abortSignal);
16
24
  const priceInBtc = tokenPrice / btcPrice;
17
25
  return BigInt(Math.floor(priceInBtc * 100000000 * 1000000));
18
26
  }
27
+ /**
28
+ * @inheritDoc
29
+ */
19
30
  async fetchUsdPrice(abortSignal) {
20
31
  const [btcPrice] = await this.getUsdPriceFn(["BTC"], abortSignal);
21
32
  return btcPrice / 100000000;
@@ -23,7 +23,16 @@ export type KrakenResponse = {
23
23
  */
24
24
  export declare class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
25
25
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
26
+ /**
27
+ * @inheritDoc
28
+ */
26
29
  protected fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
30
+ /**
31
+ * @inheritDoc
32
+ */
27
33
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
34
+ /**
35
+ * @inheritDoc
36
+ */
28
37
  protected fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
29
38
  }
@@ -11,14 +11,23 @@ class KrakenPriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider
11
11
  constructor(coinsMap, url = "https://api.kraken.com/0", httpRequestTimeout) {
12
12
  super(coinsMap, url, httpRequestTimeout);
13
13
  }
14
+ /**
15
+ * @inheritDoc
16
+ */
14
17
  async fetchPair(pair, abortSignal) {
15
18
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/public/Ticker?pair=" + pair, this.httpRequestTimeout, abortSignal);
16
19
  return parseFloat(response.result[pair].c[0]);
17
20
  }
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  async fetchUsdPrice(abortSignal) {
19
25
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/public/Ticker?pair=XBTUSDC", this.httpRequestTimeout, abortSignal);
20
26
  return parseFloat(response.result["XBTUSDC"].c[0]) / 100000000;
21
27
  }
28
+ /**
29
+ * @inheritDoc
30
+ */
22
31
  async fetchPrice(token, abortSignal) {
23
32
  const pairs = token.coinId.split(";");
24
33
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/public/Ticker?pair=" + pairs.map(val => val.startsWith("!") ? val.substring(1) : val).join(","), this.httpRequestTimeout, abortSignal);
@@ -23,6 +23,12 @@ export type OKXResponse = {
23
23
  */
24
24
  export declare class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
25
25
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
26
+ /**
27
+ * @inheritDoc
28
+ */
26
29
  fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
30
+ /**
31
+ * @inheritDoc
32
+ */
27
33
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
28
34
  }
@@ -11,10 +11,16 @@ class OKXPriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {
11
11
  constructor(coinsMap, url = "https://www.okx.com/api/v5", httpRequestTimeout) {
12
12
  super(coinsMap, url, httpRequestTimeout);
13
13
  }
14
+ /**
15
+ * @inheritDoc
16
+ */
14
17
  async fetchPair(pair, abortSignal) {
15
18
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/market/index-tickers?instId=" + pair, this.httpRequestTimeout, abortSignal);
16
19
  return parseFloat(response.data[0].idxPx);
17
20
  }
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  async fetchUsdPrice(abortSignal) {
19
25
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/market/index-tickers?instId=BTC-USD", this.httpRequestTimeout, abortSignal);
20
26
  return parseFloat(response.data[0].idxPx) / 100000000;
@@ -10,5 +10,8 @@ export declare abstract class ExchangePriceProvider<T extends MultiChain> extend
10
10
  * @protected
11
11
  */
12
12
  protected abstract fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
13
+ /**
14
+ * @inheritDoc
15
+ */
13
16
  protected fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
14
17
  }
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExchangePriceProvider = void 0;
4
4
  const HttpPriceProvider_1 = require("./HttpPriceProvider");
5
5
  class ExchangePriceProvider extends HttpPriceProvider_1.HttpPriceProvider {
6
+ /**
7
+ * @inheritDoc
8
+ */
6
9
  async fetchPrice(token, abortSignal) {
7
10
  const pairs = token.coinId.split(";");
8
11
  const prices = await Promise.all(pairs.map(pair => {
@@ -1,13 +1,21 @@
1
1
  /**
2
- * Query parameters for storage operations
2
+ * Params for querying the storage
3
+ *
3
4
  * @category Storage
4
5
  */
5
6
  export type QueryParams = {
7
+ /**
8
+ * Key that should be matched
9
+ */
6
10
  key: string;
11
+ /**
12
+ * A value that the key needs to have, if an array is passed, the conditions are `OR`-ed
13
+ */
7
14
  value: any | any[];
8
15
  };
9
16
  /**
10
- * Base type for stored objects
17
+ * Base type for stored objects, every storage object MUST have an `id` field
18
+ *
11
19
  * @category Storage
12
20
  */
13
21
  export type UnifiedStoredObject = {
@@ -15,6 +23,7 @@ export type UnifiedStoredObject = {
15
23
  } & any;
16
24
  /**
17
25
  * Defines simple indexes (for queries that use a single key)
26
+ *
18
27
  * @category Storage
19
28
  */
20
29
  export type UnifiedStorageIndexes = readonly {
@@ -25,6 +34,7 @@ export type UnifiedStorageIndexes = readonly {
25
34
  }[];
26
35
  /**
27
36
  * Defines composite indexes (for queries that use multiple keys)
37
+ *
28
38
  * @category Storage
29
39
  */
30
40
  export type UnifiedStorageCompositeIndexes = readonly {
@@ -32,12 +42,14 @@ export type UnifiedStorageCompositeIndexes = readonly {
32
42
  unique: boolean;
33
43
  }[];
34
44
  /**
35
- * Interface for unified storage implementations
45
+ * Interface for a generic unified storage implementations
46
+ *
36
47
  * @category Storage
37
48
  */
38
49
  export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends UnifiedStorageCompositeIndexes> {
39
50
  /**
40
51
  * Initializes the storage with given indexes and composite indexes
52
+ *
41
53
  * @param indexes
42
54
  * @param compositeIndexes
43
55
  */
@@ -52,22 +64,22 @@ export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends Unif
52
64
  query(params: Array<Array<QueryParams>>): Promise<Array<UnifiedStoredObject>>;
53
65
  /**
54
66
  * Saves an object to storage, updating indexes as needed
55
- * @param value - Object to save (must have an id property)
67
+ * @param value Object to save (must have an id property)
56
68
  */
57
69
  save(value: UnifiedStoredObject): Promise<void>;
58
70
  /**
59
71
  * Saves multiple objects to storage in a batch operation
60
- * @param value - Array of objects to save
72
+ * @param value Array of objects to save
61
73
  */
62
74
  saveAll(value: UnifiedStoredObject[]): Promise<void>;
63
75
  /**
64
76
  * Removes an object from storage
65
- * @param value - Object to remove (must have an id property)
77
+ * @param value Object to remove (must have an id property)
66
78
  */
67
79
  remove(value: UnifiedStoredObject): Promise<void>;
68
80
  /**
69
81
  * Removes multiple objects from storage in a batch operation
70
- * @param value - Array of objects to remove
82
+ * @param value Array of objects to remove
71
83
  */
72
84
  removeAll(value: UnifiedStoredObject[]): Promise<void>;
73
85
  }
@@ -33,7 +33,8 @@ declare const indexes: readonly [{
33
33
  readonly nullable: true;
34
34
  }];
35
35
  /**
36
- * Index types for swap storage
36
+ * Simple index types for SDK swap storage
37
+ *
37
38
  * @category Storage
38
39
  */
39
40
  export type UnifiedSwapStorageIndexes = typeof indexes;
@@ -51,19 +52,31 @@ declare const compositeIndexes: readonly [{
51
52
  readonly unique: false;
52
53
  }];
53
54
  /**
54
- * Composite index types for swap storage
55
+ * Composite index types for SDK swap storage
56
+ *
55
57
  * @category Storage
56
58
  */
57
59
  export type UnifiedSwapStorageCompositeIndexes = typeof compositeIndexes;
58
60
  /**
59
- * Unified swap persistence layer with caching
61
+ * Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
62
+ * with optional in-memory caching via weak refs {@link WeakRef}
63
+ *
60
64
  * @category Storage
61
65
  */
62
66
  export declare class UnifiedSwapStorage<T extends ChainType> {
63
67
  readonly storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>;
64
68
  readonly weakRefCache: Map<string, WeakRef<ISwap<T>>>;
65
69
  readonly noWeakRefMap?: boolean;
70
+ /**
71
+ * @param storage Underlying storage persistence layer
72
+ * @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
73
+ * should be set when you need multiple different clients accessing the same swap database (such
74
+ * as when running the SDK in a serverless environment like AWS or Azure)
75
+ */
66
76
  constructor(storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>, noWeakRefMap?: boolean);
77
+ /**
78
+ * Initializes the underlying storage
79
+ */
67
80
  init(): Promise<void>;
68
81
  /**
69
82
  * Params are specified in the following way:
@@ -74,9 +87,26 @@ export declare class UnifiedSwapStorage<T extends ChainType> {
74
87
  * @param reviver
75
88
  */
76
89
  query<S extends ISwap<T>>(params: Array<Array<QueryParams>>, reviver: (obj: any) => S | null | undefined): Promise<Array<S>>;
90
+ /**
91
+ * Saves the swap to storage, updating indexes as needed
92
+ *
93
+ * @param value Swap to save
94
+ */
77
95
  save<S extends ISwap<T>>(value: S): Promise<void>;
96
+ /**
97
+ * Saves multiple swaps to storage in a batch operation
98
+ * @param values Array of swaps to save
99
+ */
78
100
  saveAll<S extends ISwap<T>>(values: S[]): Promise<void>;
101
+ /**
102
+ * Removes a swap from storage
103
+ * @param value Swap to remove
104
+ */
79
105
  remove<S extends ISwap<T>>(value: S): Promise<void>;
106
+ /**
107
+ * Removes multiple swaps from storage in a batch operation
108
+ * @param values Array of swaps to remove
109
+ */
80
110
  removeAll<S extends ISwap<T>>(values: S[]): Promise<void>;
81
111
  }
82
112
  export {};
@@ -18,15 +18,26 @@ const compositeIndexes = [
18
18
  { keys: ["type", "initiator", "state"], unique: false }
19
19
  ];
20
20
  /**
21
- * Unified swap persistence layer with caching
21
+ * Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
22
+ * with optional in-memory caching via weak refs {@link WeakRef}
23
+ *
22
24
  * @category Storage
23
25
  */
24
26
  class UnifiedSwapStorage {
27
+ /**
28
+ * @param storage Underlying storage persistence layer
29
+ * @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
30
+ * should be set when you need multiple different clients accessing the same swap database (such
31
+ * as when running the SDK in a serverless environment like AWS or Azure)
32
+ */
25
33
  constructor(storage, noWeakRefMap) {
26
34
  this.weakRefCache = new Map();
27
35
  this.storage = storage;
28
36
  this.noWeakRefMap = noWeakRefMap;
29
37
  }
38
+ /**
39
+ * Initializes the underlying storage
40
+ */
30
41
  init() {
31
42
  return this.storage.init(indexes, compositeIndexes);
32
43
  }
@@ -59,21 +70,38 @@ class UnifiedSwapStorage {
59
70
  });
60
71
  return result;
61
72
  }
73
+ /**
74
+ * Saves the swap to storage, updating indexes as needed
75
+ *
76
+ * @param value Swap to save
77
+ */
62
78
  save(value) {
63
79
  if (!this.noWeakRefMap)
64
80
  this.weakRefCache.set(value.getId(), new WeakRef(value));
65
81
  return this.storage.save(value.serialize());
66
82
  }
83
+ /**
84
+ * Saves multiple swaps to storage in a batch operation
85
+ * @param values Array of swaps to save
86
+ */
67
87
  saveAll(values) {
68
88
  if (!this.noWeakRefMap)
69
89
  values.forEach(value => this.weakRefCache.set(value.getId(), new WeakRef(value)));
70
90
  return this.storage.saveAll(values.map(obj => obj.serialize()));
71
91
  }
92
+ /**
93
+ * Removes a swap from storage
94
+ * @param value Swap to remove
95
+ */
72
96
  remove(value) {
73
97
  if (!this.noWeakRefMap)
74
98
  this.weakRefCache.delete(value.getId());
75
99
  return this.storage.remove(value.serialize());
76
100
  }
101
+ /**
102
+ * Removes multiple swaps from storage in a batch operation
103
+ * @param values Array of swaps to remove
104
+ */
77
105
  removeAll(values) {
78
106
  if (!this.noWeakRefMap)
79
107
  values.forEach(value => this.weakRefCache.delete(value.getId()));
@@ -9,31 +9,55 @@ export type QuerySetCondition = {
9
9
  };
10
10
  /**
11
11
  * Browser IndexedDB storage implementation
12
+ *
12
13
  * @category Storage
13
14
  */
14
15
  export declare class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedStorageCompositeIndexes> {
15
16
  protected readonly logger: LoggerType;
16
- storageKey: string;
17
+ readonly storageKey: string;
17
18
  db?: IDBDatabase;
18
19
  constructor(storageKey: string);
19
20
  private tryMigrateLocalStorage;
20
21
  private tryMigrateOldIndexedDB;
22
+ /**
23
+ * Attempts to migrate the swap database from old implementations (either using prior version of IndexedDB or
24
+ * Local Storage)
25
+ *
26
+ * NOTE: Reviver also needs to update the swap to the latest version
27
+ *
28
+ * @param storageKeys An array of tuples of storage keys used for the corresponding swap types
29
+ * @param reviver Swap data deserializer
30
+ */
21
31
  tryMigrate(storageKeys: [string, SwapType][], reviver: (obj: any) => ISwap): Promise<boolean>;
22
32
  private executeTransaction;
23
33
  private executeTransactionArr;
24
34
  private executeTransactionWithCursor;
35
+ /**
36
+ * @inheritDoc
37
+ */
25
38
  init(): Promise<void>;
26
39
  /**
27
- * Params are specified in the following way:
28
- * - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
29
- * - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
30
- * - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
31
- * @param params
40
+ * @inheritDoc
32
41
  */
33
42
  query(params: Array<Array<QueryParams>>): Promise<Array<UnifiedStoredObject>>;
34
- querySingle(params: Array<QueryParams>): Promise<Array<UnifiedStoredObject>>;
43
+ /**
44
+ * @internal
45
+ */
46
+ protected querySingle(params: Array<QueryParams>): Promise<Array<UnifiedStoredObject>>;
47
+ /**
48
+ * @inheritDoc
49
+ */
35
50
  remove(object: UnifiedStoredObject): Promise<void>;
51
+ /**
52
+ * @inheritDoc
53
+ */
36
54
  removeAll(arr: UnifiedStoredObject[]): Promise<void>;
55
+ /**
56
+ * @inheritDoc
57
+ */
37
58
  save(object: UnifiedStoredObject): Promise<void>;
59
+ /**
60
+ * @inheritDoc
61
+ */
38
62
  saveAll(arr: UnifiedStoredObject[]): Promise<void>;
39
63
  }
@@ -47,6 +47,7 @@ const indexes = {
47
47
  };
48
48
  /**
49
49
  * Browser IndexedDB storage implementation
50
+ *
50
51
  * @category Storage
51
52
  */
52
53
  class IndexedDBUnifiedStorage {
@@ -130,7 +131,15 @@ class IndexedDBUnifiedStorage {
130
131
  return false;
131
132
  }
132
133
  }
133
- //NOTE: Reviver also needs to update the swap to the latest version
134
+ /**
135
+ * Attempts to migrate the swap database from old implementations (either using prior version of IndexedDB or
136
+ * Local Storage)
137
+ *
138
+ * NOTE: Reviver also needs to update the swap to the latest version
139
+ *
140
+ * @param storageKeys An array of tuples of storage keys used for the corresponding swap types
141
+ * @param reviver Swap data deserializer
142
+ */
134
143
  async tryMigrate(storageKeys, reviver) {
135
144
  let someMigrated = false;
136
145
  for (let storageKey of storageKeys) {
@@ -188,6 +197,9 @@ class IndexedDBUnifiedStorage {
188
197
  const result = await Promise.all(promises);
189
198
  return result.flat();
190
199
  }
200
+ /**
201
+ * @inheritDoc
202
+ */
191
203
  async init() {
192
204
  if (this.db == null) {
193
205
  this.db = await new Promise((resolve, reject) => {
@@ -206,11 +218,7 @@ class IndexedDBUnifiedStorage {
206
218
  }
207
219
  }
208
220
  /**
209
- * Params are specified in the following way:
210
- * - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
211
- * - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
212
- * - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
213
- * @param params
221
+ * @inheritDoc
214
222
  */
215
223
  async query(params) {
216
224
  if (params.length === 0)
@@ -219,6 +227,9 @@ class IndexedDBUnifiedStorage {
219
227
  const resultSet = new Set(results.flat()); //Deduplicate
220
228
  return Array.from(resultSet);
221
229
  }
230
+ /**
231
+ * @internal
232
+ */
222
233
  async querySingle(params) {
223
234
  if (params.length === 0) {
224
235
  return await this.executeTransaction((objectStore) => objectStore.getAll(), true);
@@ -250,10 +261,16 @@ class IndexedDBUnifiedStorage {
250
261
  return await this.executeTransactionWithCursor(objectStore => [objectStore.openCursor()], (val) => matches(setConditions, val));
251
262
  }
252
263
  }
264
+ /**
265
+ * @inheritDoc
266
+ */
253
267
  async remove(object) {
254
268
  await this.executeTransaction(store => store.delete(object.id), false)
255
269
  .catch(() => null);
256
270
  }
271
+ /**
272
+ * @inheritDoc
273
+ */
257
274
  async removeAll(arr) {
258
275
  if (arr.length === 0)
259
276
  return;
@@ -261,9 +278,15 @@ class IndexedDBUnifiedStorage {
261
278
  return store.delete(object.id);
262
279
  }), false);
263
280
  }
281
+ /**
282
+ * @inheritDoc
283
+ */
264
284
  async save(object) {
265
285
  await this.executeTransaction(store => store.put(object), false);
266
286
  }
287
+ /**
288
+ * @inheritDoc
289
+ */
267
290
  async saveAll(arr) {
268
291
  if (arr.length === 0)
269
292
  return;
@@ -1,6 +1,8 @@
1
1
  import { IStorageManager, StorageObject } from "@atomiqlabs/base";
2
2
  /**
3
- * StorageManager using browser's local storage API
3
+ * {@link IStorageManager} implementation using browser's local storage API, this is used as general purpose
4
+ * key-value storage, not used for storing swaps! See {@link IUnifiedStorage} for swap storage interface.
5
+ *
4
6
  * @category Storage
5
7
  */
6
8
  export declare class LocalStorageManager<T extends StorageObject> implements IStorageManager<T> {
@@ -11,15 +13,37 @@ export declare class LocalStorageManager<T extends StorageObject> implements ISt
11
13
  data: {
12
14
  [hash: string]: T;
13
15
  };
16
+ /**
17
+ * @param storageKey The key-value store is stored as JSON serialized parameter of the Local Storage under
18
+ * the specified `storageKey`
19
+ */
14
20
  constructor(storageKey: string);
21
+ /**
22
+ * @inheritDoc
23
+ */
15
24
  init(): Promise<void>;
25
+ /**
26
+ * @inheritDoc
27
+ */
16
28
  saveData(hash: string, object: T): Promise<void>;
29
+ /**
30
+ * @inheritDoc
31
+ */
17
32
  saveDataArr(arr: {
18
33
  id: string;
19
34
  object: T;
20
35
  }[]): Promise<void>;
36
+ /**
37
+ * @inheritDoc
38
+ */
21
39
  removeData(hash: string): Promise<void>;
40
+ /**
41
+ * @inheritDoc
42
+ */
22
43
  removeDataArr(hashArr: string[]): Promise<void>;
44
+ /**
45
+ * @inheritDoc
46
+ */
23
47
  loadData(type: new (data: any) => T): Promise<T[]>;
24
48
  private save;
25
49
  }
@@ -2,15 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LocalStorageManager = void 0;
4
4
  /**
5
- * StorageManager using browser's local storage API
5
+ * {@link IStorageManager} implementation using browser's local storage API, this is used as general purpose
6
+ * key-value storage, not used for storing swaps! See {@link IUnifiedStorage} for swap storage interface.
7
+ *
6
8
  * @category Storage
7
9
  */
8
10
  class LocalStorageManager {
11
+ /**
12
+ * @param storageKey The key-value store is stored as JSON serialized parameter of the Local Storage under
13
+ * the specified `storageKey`
14
+ */
9
15
  constructor(storageKey) {
10
16
  this.rawData = {};
11
17
  this.data = {};
12
18
  this.storageKey = storageKey;
13
19
  }
20
+ /**
21
+ * @inheritDoc
22
+ */
14
23
  init() {
15
24
  const completedTxt = window.localStorage.getItem(this.storageKey);
16
25
  if (completedTxt != null) {
@@ -23,11 +32,17 @@ class LocalStorageManager {
23
32
  }
24
33
  return Promise.resolve();
25
34
  }
35
+ /**
36
+ * @inheritDoc
37
+ */
26
38
  saveData(hash, object) {
27
39
  this.data[hash] = object;
28
40
  this.rawData[hash] = object.serialize();
29
41
  return this.save();
30
42
  }
43
+ /**
44
+ * @inheritDoc
45
+ */
31
46
  saveDataArr(arr) {
32
47
  arr.forEach(e => {
33
48
  this.data[e.id] = e.object;
@@ -35,6 +50,9 @@ class LocalStorageManager {
35
50
  });
36
51
  return this.save();
37
52
  }
53
+ /**
54
+ * @inheritDoc
55
+ */
38
56
  removeData(hash) {
39
57
  if (this.rawData[hash] != null) {
40
58
  if (this.data[hash] != null)
@@ -44,6 +62,9 @@ class LocalStorageManager {
44
62
  }
45
63
  return Promise.resolve();
46
64
  }
65
+ /**
66
+ * @inheritDoc
67
+ */
47
68
  removeDataArr(hashArr) {
48
69
  hashArr.forEach(hash => {
49
70
  if (this.rawData[hash] != null) {
@@ -54,6 +75,9 @@ class LocalStorageManager {
54
75
  });
55
76
  return this.save();
56
77
  }
78
+ /**
79
+ * @inheritDoc
80
+ */
57
81
  loadData(type) {
58
82
  return Promise.resolve(Object.keys(this.rawData).map(e => {
59
83
  const deserialized = new type(this.rawData[e]);