@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
@@ -30,6 +30,9 @@ export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProv
30
30
  super(coinsMap, url, httpRequestTimeout);
31
31
  }
32
32
 
33
+ /**
34
+ * @inheritDoc
35
+ */
33
36
  protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
34
37
  const response = await httpGet<KrakenResponse>(
35
38
  this.url+"/public/Ticker?pair="+pair,
@@ -40,6 +43,9 @@ export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProv
40
43
  return parseFloat(response.result[pair].c[0]);
41
44
  }
42
45
 
46
+ /**
47
+ * @inheritDoc
48
+ */
43
49
  protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
44
50
  const response = await httpGet<KrakenResponse>(
45
51
  this.url+"/public/Ticker?pair=XBTUSDC",
@@ -50,6 +56,9 @@ export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProv
50
56
  return parseFloat(response.result["XBTUSDC"].c[0])/100000000;
51
57
  }
52
58
 
59
+ /**
60
+ * @inheritDoc
61
+ */
53
62
  protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
54
63
  const pairs: string[] = token.coinId.split(";");
55
64
 
@@ -30,6 +30,9 @@ export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvide
30
30
  super(coinsMap, url, httpRequestTimeout);
31
31
  }
32
32
 
33
+ /**
34
+ * @inheritDoc
35
+ */
33
36
  async fetchPair(pair: string, abortSignal?: AbortSignal) {
34
37
  const response = await httpGet<OKXResponse>(
35
38
  this.url+"/market/index-tickers?instId="+pair,
@@ -40,6 +43,9 @@ export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvide
40
43
  return parseFloat(response.data[0].idxPx);
41
44
  }
42
45
 
46
+ /**
47
+ * @inheritDoc
48
+ */
43
49
  protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
44
50
  const response = await httpGet<OKXResponse>(
45
51
  this.url+"/market/index-tickers?instId=BTC-USD",
@@ -13,6 +13,9 @@ export abstract class ExchangePriceProvider<T extends MultiChain> extends HttpPr
13
13
  */
14
14
  protected abstract fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
15
15
 
16
+ /**
17
+ * @inheritDoc
18
+ */
16
19
  protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
17
20
  const pairs: string[] = token.coinId.split(";");
18
21
  const prices: number[] = await Promise.all(pairs.map(pair => {
@@ -1,21 +1,30 @@
1
1
 
2
2
  /**
3
- * Query parameters for storage operations
3
+ * Params for querying the storage
4
+ *
4
5
  * @category Storage
5
6
  */
6
7
  export type QueryParams = {
8
+ /**
9
+ * Key that should be matched
10
+ */
7
11
  key: string,
12
+ /**
13
+ * A value that the key needs to have, if an array is passed, the conditions are `OR`-ed
14
+ */
8
15
  value: any | any[]
9
16
  };
10
17
 
11
18
  /**
12
- * Base type for stored objects
19
+ * Base type for stored objects, every storage object MUST have an `id` field
20
+ *
13
21
  * @category Storage
14
22
  */
15
23
  export type UnifiedStoredObject = {id: string} & any;
16
24
 
17
25
  /**
18
26
  * Defines simple indexes (for queries that use a single key)
27
+ *
19
28
  * @category Storage
20
29
  */
21
30
  export type UnifiedStorageIndexes = readonly {
@@ -27,6 +36,7 @@ export type UnifiedStorageIndexes = readonly {
27
36
 
28
37
  /**
29
38
  * Defines composite indexes (for queries that use multiple keys)
39
+ *
30
40
  * @category Storage
31
41
  */
32
42
  export type UnifiedStorageCompositeIndexes = readonly {
@@ -35,13 +45,15 @@ export type UnifiedStorageCompositeIndexes = readonly {
35
45
  }[];
36
46
 
37
47
  /**
38
- * Interface for unified storage implementations
48
+ * Interface for a generic unified storage implementations
49
+ *
39
50
  * @category Storage
40
51
  */
41
52
  export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends UnifiedStorageCompositeIndexes> {
42
53
 
43
54
  /**
44
55
  * Initializes the storage with given indexes and composite indexes
56
+ *
45
57
  * @param indexes
46
58
  * @param compositeIndexes
47
59
  */
@@ -58,25 +70,25 @@ export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends Unif
58
70
 
59
71
  /**
60
72
  * Saves an object to storage, updating indexes as needed
61
- * @param value - Object to save (must have an id property)
73
+ * @param value Object to save (must have an id property)
62
74
  */
63
75
  save(value: UnifiedStoredObject): Promise<void>;
64
76
 
65
77
  /**
66
78
  * Saves multiple objects to storage in a batch operation
67
- * @param value - Array of objects to save
79
+ * @param value Array of objects to save
68
80
  */
69
81
  saveAll(value: UnifiedStoredObject[]): Promise<void>;
70
82
 
71
83
  /**
72
84
  * Removes an object from storage
73
- * @param value - Object to remove (must have an id property)
85
+ * @param value Object to remove (must have an id property)
74
86
  */
75
87
  remove(value: UnifiedStoredObject): Promise<void>;
76
88
 
77
89
  /**
78
90
  * Removes multiple objects from storage in a batch operation
79
- * @param value - Array of objects to remove
91
+ * @param value Array of objects to remove
80
92
  */
81
93
  removeAll(value: UnifiedStoredObject[]): Promise<void>;
82
94
 
@@ -15,7 +15,8 @@ const indexes = [
15
15
  {key: "paymentHash", type: "string", unique: false, nullable: true},
16
16
  ] as const;
17
17
  /**
18
- * Index types for swap storage
18
+ * Simple index types for SDK swap storage
19
+ *
19
20
  * @category Storage
20
21
  */
21
22
  export type UnifiedSwapStorageIndexes = typeof indexes;
@@ -27,13 +28,16 @@ const compositeIndexes = [
27
28
  {keys: ["type", "initiator", "state"], unique: false}
28
29
  ] as const;
29
30
  /**
30
- * Composite index types for swap storage
31
+ * Composite index types for SDK swap storage
32
+ *
31
33
  * @category Storage
32
34
  */
33
35
  export type UnifiedSwapStorageCompositeIndexes = typeof compositeIndexes;
34
36
 
35
37
  /**
36
- * Unified swap persistence layer with caching
38
+ * Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
39
+ * with optional in-memory caching via weak refs {@link WeakRef}
40
+ *
37
41
  * @category Storage
38
42
  */
39
43
  export class UnifiedSwapStorage<T extends ChainType> {
@@ -42,11 +46,20 @@ export class UnifiedSwapStorage<T extends ChainType> {
42
46
  readonly weakRefCache: Map<string, WeakRef<ISwap<T>>> = new Map();
43
47
  readonly noWeakRefMap?: boolean;
44
48
 
49
+ /**
50
+ * @param storage Underlying storage persistence layer
51
+ * @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
52
+ * should be set when you need multiple different clients accessing the same swap database (such
53
+ * as when running the SDK in a serverless environment like AWS or Azure)
54
+ */
45
55
  constructor(storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>, noWeakRefMap?: boolean) {
46
56
  this.storage = storage;
47
57
  this.noWeakRefMap = noWeakRefMap;
48
58
  }
49
59
 
60
+ /**
61
+ * Initializes the underlying storage
62
+ */
50
63
  init(): Promise<void> {
51
64
  return this.storage.init(indexes, compositeIndexes);
52
65
  }
@@ -81,21 +94,38 @@ export class UnifiedSwapStorage<T extends ChainType> {
81
94
  return result;
82
95
  }
83
96
 
97
+ /**
98
+ * Saves the swap to storage, updating indexes as needed
99
+ *
100
+ * @param value Swap to save
101
+ */
84
102
  save<S extends ISwap<T>>(value: S): Promise<void> {
85
103
  if(!this.noWeakRefMap) this.weakRefCache.set(value.getId(), new WeakRef<ISwap<T>>(value));
86
104
  return this.storage.save(value.serialize());
87
105
  }
88
106
 
107
+ /**
108
+ * Saves multiple swaps to storage in a batch operation
109
+ * @param values Array of swaps to save
110
+ */
89
111
  saveAll<S extends ISwap<T>>(values: S[]): Promise<void> {
90
112
  if(!this.noWeakRefMap) values.forEach(value => this.weakRefCache.set(value.getId(), new WeakRef<ISwap<T>>(value)));
91
113
  return this.storage.saveAll(values.map(obj => obj.serialize()));
92
114
  }
93
115
 
116
+ /**
117
+ * Removes a swap from storage
118
+ * @param value Swap to remove
119
+ */
94
120
  remove<S extends ISwap<T>>(value: S): Promise<void> {
95
121
  if(!this.noWeakRefMap) this.weakRefCache.delete(value.getId());
96
122
  return this.storage.remove(value.serialize());
97
123
  }
98
124
 
125
+ /**
126
+ * Removes multiple swaps from storage in a batch operation
127
+ * @param values Array of swaps to remove
128
+ */
99
129
  removeAll<S extends ISwap<T>>(values: S[]): Promise<void> {
100
130
  if(!this.noWeakRefMap) values.forEach(value => this.weakRefCache.delete(value.getId()));
101
131
  return this.storage.removeAll(values.map(obj => obj.serialize()));
@@ -60,13 +60,14 @@ const indexes: Record<string, {key: string | string[], unique: boolean}> = {
60
60
 
61
61
  /**
62
62
  * Browser IndexedDB storage implementation
63
+ *
63
64
  * @category Storage
64
65
  */
65
66
  export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedStorageCompositeIndexes> {
66
67
 
67
68
  protected readonly logger: LoggerType;
68
69
 
69
- storageKey: string;
70
+ readonly storageKey: string;
70
71
  db?: IDBDatabase;
71
72
 
72
73
  constructor(storageKey: string) {
@@ -166,7 +167,15 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
166
167
  }
167
168
  }
168
169
 
169
- //NOTE: Reviver also needs to update the swap to the latest version
170
+ /**
171
+ * Attempts to migrate the swap database from old implementations (either using prior version of IndexedDB or
172
+ * Local Storage)
173
+ *
174
+ * NOTE: Reviver also needs to update the swap to the latest version
175
+ *
176
+ * @param storageKeys An array of tuples of storage keys used for the corresponding swap types
177
+ * @param reviver Swap data deserializer
178
+ */
170
179
  public async tryMigrate(storageKeys: [string, SwapType][], reviver: (obj: any) => ISwap): Promise<boolean> {
171
180
  let someMigrated = false;
172
181
  for(let storageKey of storageKeys) {
@@ -231,6 +240,9 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
231
240
  return result.flat();
232
241
  }
233
242
 
243
+ /**
244
+ * @inheritDoc
245
+ */
234
246
  async init(): Promise<void> {
235
247
  if(this.db==null) {
236
248
  this.db = await new Promise<IDBDatabase>((resolve, reject) => {
@@ -251,11 +263,7 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
251
263
  }
252
264
 
253
265
  /**
254
- * Params are specified in the following way:
255
- * - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
256
- * - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
257
- * - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
258
- * @param params
266
+ * @inheritDoc
259
267
  */
260
268
  async query(params: Array<Array<QueryParams>>): Promise<Array<UnifiedStoredObject>> {
261
269
  if(params.length===0) return await this.querySingle([]);
@@ -264,7 +272,10 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
264
272
  return Array.from(resultSet);
265
273
  }
266
274
 
267
- async querySingle(params: Array<QueryParams>): Promise<Array<UnifiedStoredObject>> {
275
+ /**
276
+ * @internal
277
+ */
278
+ protected async querySingle(params: Array<QueryParams>): Promise<Array<UnifiedStoredObject>> {
268
279
  if(params.length===0) {
269
280
  return await this.executeTransaction((objectStore) => objectStore.getAll(), true);
270
281
  }
@@ -302,11 +313,17 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
302
313
  }
303
314
  }
304
315
 
316
+ /**
317
+ * @inheritDoc
318
+ */
305
319
  async remove(object: UnifiedStoredObject): Promise<void> {
306
320
  await this.executeTransaction<undefined>(store => store.delete(object.id), false)
307
321
  .catch(() => null);
308
322
  }
309
323
 
324
+ /**
325
+ * @inheritDoc
326
+ */
310
327
  async removeAll(arr: UnifiedStoredObject[]): Promise<void> {
311
328
  if(arr.length===0) return;
312
329
  await this.executeTransactionArr<undefined>(store => arr.map(object => {
@@ -314,10 +331,16 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
314
331
  }), false);
315
332
  }
316
333
 
334
+ /**
335
+ * @inheritDoc
336
+ */
317
337
  async save(object: UnifiedStoredObject): Promise<void> {
318
338
  await this.executeTransaction<IDBValidKey>(store => store.put(object), false);
319
339
  }
320
340
 
341
+ /**
342
+ * @inheritDoc
343
+ */
321
344
  async saveAll(arr: UnifiedStoredObject[]): Promise<void> {
322
345
  if(arr.length===0) return;
323
346
  await this.executeTransactionArr<IDBValidKey>(store => arr.map(object => {
@@ -1,7 +1,9 @@
1
1
  import {IStorageManager, StorageObject} from "@atomiqlabs/base";
2
2
 
3
3
  /**
4
- * StorageManager using browser's local storage API
4
+ * {@link IStorageManager} implementation using browser's local storage API, this is used as general purpose
5
+ * key-value storage, not used for storing swaps! See {@link IUnifiedStorage} for swap storage interface.
6
+ *
5
7
  * @category Storage
6
8
  */
7
9
  export class LocalStorageManager<T extends StorageObject> implements IStorageManager<T> {
@@ -15,10 +17,17 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
15
17
  [hash: string]: T
16
18
  } = {};
17
19
 
20
+ /**
21
+ * @param storageKey The key-value store is stored as JSON serialized parameter of the Local Storage under
22
+ * the specified `storageKey`
23
+ */
18
24
  constructor(storageKey: string) {
19
25
  this.storageKey = storageKey;
20
26
  }
21
27
 
28
+ /**
29
+ * @inheritDoc
30
+ */
22
31
  init(): Promise<void> {
23
32
  const completedTxt = window.localStorage.getItem(this.storageKey);
24
33
  if(completedTxt!=null) {
@@ -30,6 +39,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
30
39
  return Promise.resolve();
31
40
  }
32
41
 
42
+ /**
43
+ * @inheritDoc
44
+ */
33
45
  saveData(hash: string, object: T): Promise<void> {
34
46
  this.data[hash] = object;
35
47
  this.rawData[hash] = object.serialize();
@@ -37,6 +49,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
37
49
  return this.save();
38
50
  }
39
51
 
52
+ /**
53
+ * @inheritDoc
54
+ */
40
55
  saveDataArr(arr: {id: string, object: T}[]): Promise<void> {
41
56
  arr.forEach(e => {
42
57
  this.data[e.id] = e.object;
@@ -46,6 +61,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
46
61
  return this.save();
47
62
  }
48
63
 
64
+ /**
65
+ * @inheritDoc
66
+ */
49
67
  removeData(hash: string): Promise<void> {
50
68
  if(this.rawData[hash]!=null) {
51
69
  if(this.data[hash]!=null) delete this.data[hash];
@@ -55,6 +73,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
55
73
  return Promise.resolve();
56
74
  }
57
75
 
76
+ /**
77
+ * @inheritDoc
78
+ */
58
79
  removeDataArr(hashArr: string[]): Promise<void> {
59
80
  hashArr.forEach(hash => {
60
81
  if(this.rawData[hash]!=null) {
@@ -65,6 +86,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
65
86
  return this.save();
66
87
  }
67
88
 
89
+ /**
90
+ * @inheritDoc
91
+ */
68
92
  loadData(type: new (data: any) => T): Promise<T[]> {
69
93
  return Promise.resolve(
70
94
  Object.keys(this.rawData).map(e => {