@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
@@ -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 => {