@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
@@ -4,7 +4,8 @@ import {PriceInfoType} from "../../types/PriceInfoType";
4
4
 
5
5
  /**
6
6
  * Abstract base class for swap pricing implementations
7
- * @category Pricing and LPs
7
+ *
8
+ * @category Pricing
8
9
  */
9
10
  export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
10
11
 
@@ -15,46 +16,55 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
15
16
  }
16
17
 
17
18
  /**
18
- * Gets the decimal places for a given token, returns -1 if token should be ignored & null if token is not found
19
- * @param chainIdentifier
20
- * @param token
19
+ * Gets the decimal places for a given token, returns `-1` if token should be ignored & `null` if token is not found
20
+ *
21
+ * @param chainIdentifier Chain identifier of the smart chain
22
+ * @param tokenAddress Token address
21
23
  * @protected
22
24
  */
23
- protected abstract getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
25
+ protected abstract getDecimals<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): number | null;
24
26
 
25
27
  /**
26
28
  * Returns the price of the token in BTC uSats (microSats)
27
29
  *
28
- * @param chainIdentifier
29
- * @param token
30
+ * @param chainIdentifier Chain identifier of the smart chain
31
+ * @param tokenAddress Token address
30
32
  * @param abortSignal
31
33
  * @protected
32
34
  */
33
- protected abstract getPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
35
+ protected abstract getPrice<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint>;
34
36
 
35
37
  /**
36
- * Returns the price of bitcoin in USD, (sats/USD)
38
+ * Returns the price of bitcoin in USD (sats/USD)
37
39
  *
38
40
  * @param abortSignal
39
41
  * @protected
40
42
  */
41
43
  protected abstract getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
42
44
 
43
- protected getDecimalsThrowing<C extends ChainIds<T>>(chainIdentifier: C, token: string): number {
44
- const decimals = this.getDecimals(chainIdentifier, token);
45
- if(decimals==null) throw new Error(`Cannot get decimal count for token ${chainIdentifier}:${token}!`);
45
+ /**
46
+ * Gets the decimal places for a given token, returns `-1` if token should be ignored & throws if token is not found
47
+ *
48
+ * @param chainIdentifier Chain identifier of the smart chain
49
+ * @param tokenAddress Token address
50
+ * @throws {Error} When token is not known
51
+ * @protected
52
+ */
53
+ protected getDecimalsThrowing<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): number {
54
+ const decimals = this.getDecimals(chainIdentifier, tokenAddress);
55
+ if(decimals==null) throw new Error(`Cannot get decimal count for token ${chainIdentifier}:${tokenAddress}!`);
46
56
  return decimals;
47
57
  }
48
58
 
49
59
  /**
50
60
  * Recomputes pricing info without fetching the current price
51
61
  *
52
- * @param chainIdentifier
53
- * @param amountSats
54
- * @param satsBaseFee
55
- * @param feePPM
56
- * @param paidToken
57
- * @param token
62
+ * @param chainIdentifier Chain identifier of the smart chain
63
+ * @param amountSats Amount of sats (BTC) to be received from the swap
64
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
65
+ * @param feePPM PPM fee rate as reported by the intermediary
66
+ * @param paidToken Amount of token to be paid to the swap
67
+ * @param tokenAddress Token address to be paid
58
68
  */
59
69
  public recomputePriceInfoSend<C extends ChainIds<T>>(
60
70
  chainIdentifier: C,
@@ -62,19 +72,19 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
62
72
  satsBaseFee: bigint,
63
73
  feePPM: bigint,
64
74
  paidToken: bigint,
65
- token: string
75
+ tokenAddress: string
66
76
  ): PriceInfoType {
67
77
  const totalSats = (amountSats * (1000000n + feePPM) / 1000000n)
68
78
  + satsBaseFee;
69
79
  const totalUSats = totalSats * 1000000n;
70
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / paidToken;
80
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / paidToken;
71
81
 
72
82
  return {
73
83
  isValid: true,
74
84
  differencePPM: 0n,
75
85
  satsBaseFee,
76
86
  feePPM,
77
- realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, token) ? undefined : swapPriceUSatPerToken,
87
+ realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, tokenAddress) ? undefined : swapPriceUSatPerToken,
78
88
  swapPriceUSatPerToken
79
89
  };
80
90
  }
@@ -82,14 +92,14 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
82
92
  /**
83
93
  * Checks whether the swap amounts are valid given the current market rate for a given pair
84
94
  *
85
- * @param chainIdentifier
95
+ * @param chainIdentifier Chain identifier of the smart chain
86
96
  * @param amountSats Amount of sats (BTC) to be received from the swap
87
97
  * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
88
98
  * @param feePPM PPM fee rate as reported by the intermediary
89
99
  * @param paidToken Amount of token to be paid to the swap
90
- * @param token
100
+ * @param tokenAddress Token address to be paid
91
101
  * @param abortSignal
92
- * @param preFetchedPrice Already pre-fetched price
102
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
93
103
  */
94
104
  public async isValidAmountSend<C extends ChainIds<T>>(
95
105
  chainIdentifier: C,
@@ -97,16 +107,16 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
97
107
  satsBaseFee: bigint,
98
108
  feePPM: bigint,
99
109
  paidToken: bigint,
100
- token: string,
110
+ tokenAddress: string,
101
111
  abortSignal?: AbortSignal,
102
112
  preFetchedPrice?: bigint | null
103
113
  ): Promise<PriceInfoType> {
104
114
  const totalSats = (amountSats * (1000000n + feePPM) / 1000000n)
105
115
  + satsBaseFee;
106
116
  const totalUSats = totalSats * 1000000n;
107
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / paidToken;
117
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / paidToken;
108
118
 
109
- if(this.shouldIgnore(chainIdentifier, token)) return {
119
+ if(this.shouldIgnore(chainIdentifier, tokenAddress)) return {
110
120
  isValid: true,
111
121
  differencePPM: 0n,
112
122
  satsBaseFee,
@@ -115,8 +125,8 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
115
125
  swapPriceUSatPerToken
116
126
  };
117
127
 
118
- const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, token, abortSignal, preFetchedPrice);
119
- const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / calculatedAmtInToken;
128
+ const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, tokenAddress, abortSignal, preFetchedPrice);
129
+ const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / calculatedAmtInToken;
120
130
 
121
131
  const difference = paidToken - calculatedAmtInToken; //Will be >0 if we need to pay more than we should've
122
132
  const differencePPM = difference * 1000000n / calculatedAmtInToken;
@@ -134,12 +144,12 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
134
144
  /**
135
145
  * Recomputes pricing info without fetching the current price
136
146
  *
137
- * @param chainIdentifier
138
- * @param amountSats
139
- * @param satsBaseFee
140
- * @param feePPM
141
- * @param receiveToken
142
- * @param token
147
+ * @param chainIdentifier Chain identifier of the smart chain
148
+ * @param amountSats Amount of sats (BTC) to be paid to the swap
149
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
150
+ * @param feePPM PPM fee rate as reported by the intermediary
151
+ * @param receiveToken Amount of token to be received from the swap
152
+ * @param tokenAddress Token address to be received
143
153
  */
144
154
  public recomputePriceInfoReceive<C extends ChainIds<T>>(
145
155
  chainIdentifier: C,
@@ -147,19 +157,19 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
147
157
  satsBaseFee: bigint,
148
158
  feePPM: bigint,
149
159
  receiveToken: bigint,
150
- token: string,
160
+ tokenAddress: string,
151
161
  ): PriceInfoType {
152
162
  const totalSats = (amountSats * (1000000n - feePPM) / 1000000n)
153
163
  - satsBaseFee;
154
164
  const totalUSats = totalSats * 1000000n;
155
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / receiveToken;
165
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / receiveToken;
156
166
 
157
167
  return {
158
168
  isValid: true,
159
169
  differencePPM: 0n,
160
170
  satsBaseFee,
161
171
  feePPM,
162
- realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, token) ? undefined : swapPriceUSatPerToken,
172
+ realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, tokenAddress) ? undefined : swapPriceUSatPerToken,
163
173
  swapPriceUSatPerToken
164
174
  };
165
175
  }
@@ -167,14 +177,14 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
167
177
  /**
168
178
  * Checks whether the swap amounts are valid given the current market rate for a given pair
169
179
  *
170
- * @param chainIdentifier
180
+ * @param chainIdentifier Chain identifier of the smart chain
171
181
  * @param amountSats Amount of sats (BTC) to be paid to the swap
172
182
  * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
173
183
  * @param feePPM PPM fee rate as reported by the intermediary
174
184
  * @param receiveToken Amount of token to be received from the swap
175
- * @param token
185
+ * @param tokenAddress Token address to be received
176
186
  * @param abortSignal
177
- * @param preFetchedPrice Already pre-fetched price
187
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
178
188
  */
179
189
  public async isValidAmountReceive<C extends ChainIds<T>>(
180
190
  chainIdentifier: C,
@@ -182,16 +192,16 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
182
192
  satsBaseFee: bigint,
183
193
  feePPM: bigint,
184
194
  receiveToken: bigint,
185
- token: string,
195
+ tokenAddress: string,
186
196
  abortSignal?: AbortSignal,
187
197
  preFetchedPrice?: bigint | null
188
198
  ): Promise<PriceInfoType> {
189
199
  const totalSats = (amountSats * (1000000n - feePPM) / 1000000n)
190
200
  - satsBaseFee;
191
201
  const totalUSats = totalSats * 1000000n;
192
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / receiveToken;
202
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / receiveToken;
193
203
 
194
- if(this.shouldIgnore(chainIdentifier, token)) return {
204
+ if(this.shouldIgnore(chainIdentifier, tokenAddress)) return {
195
205
  isValid: true,
196
206
  differencePPM: 0n,
197
207
  satsBaseFee,
@@ -200,8 +210,8 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
200
210
  swapPriceUSatPerToken
201
211
  };
202
212
 
203
- const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, token, abortSignal, preFetchedPrice);
204
- const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / calculatedAmtInToken;
213
+ const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, tokenAddress, abortSignal, preFetchedPrice);
214
+ const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / calculatedAmtInToken;
205
215
 
206
216
  const difference = calculatedAmtInToken - receiveToken; //Will be >0 if we receive less than we should've
207
217
  const differencePPM = difference * 100000n / calculatedAmtInToken;
@@ -216,22 +226,36 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
216
226
  };
217
227
  }
218
228
 
219
- public preFetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint> {
220
- return this.getPrice(chainIdentifier, token, abortSignal);
229
+ /**
230
+ * Pre-fetches the pricing data for a given token, such that further calls to {@link isValidAmountReceive} or
231
+ * {@link isValidAmountSend} are quicker and don't need to wait for the price fetch
232
+ *
233
+ * @param chainIdentifier Chain identifier of the smart chain
234
+ * @param tokenAddress Token address
235
+ * @param abortSignal
236
+ */
237
+ public preFetchPrice<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint> {
238
+ return this.getPrice(chainIdentifier, tokenAddress, abortSignal);
221
239
  }
222
240
 
241
+ /**
242
+ * Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
243
+ * {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
244
+ *
245
+ * @param abortSignal
246
+ */
223
247
  public preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
224
248
  return this.getUsdPrice(abortSignal);
225
249
  }
226
250
 
227
251
  /**
228
- * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
252
+ * Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
229
253
  *
230
- * @param chainIdentifier
231
- * @param fromAmount Amount of satoshis
232
- * @param toToken Token
254
+ * @param chainIdentifier Chain identifier string for the smart chain
255
+ * @param fromAmount Amount of satoshis
256
+ * @param toToken Token address
233
257
  * @param abortSignal
234
- * @param preFetchedPrice
258
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
235
259
  * @throws {Error} when token is not found
236
260
  */
237
261
  public async getFromBtcSwapAmount<C extends ChainIds<T>>(
@@ -252,13 +276,13 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
252
276
  }
253
277
 
254
278
  /**
255
- * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
279
+ * Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
256
280
  *
257
- * @param chainIdentifier
281
+ * @param chainIdentifier Chain identifier string for the smart chain
258
282
  * @param fromAmount Amount of the token
259
- * @param fromToken Token
283
+ * @param fromToken Token address
260
284
  * @param abortSignal
261
- * @param preFetchedPrice Pre-fetched swap price if available
285
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
262
286
  * @throws {Error} when token is not found
263
287
  */
264
288
  public async getToBtcSwapAmount<C extends ChainIds<T>>(
@@ -280,8 +304,9 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
280
304
 
281
305
  /**
282
306
  * Returns whether the token should be ignored and pricing for it not calculated
283
- * @param chainIdentifier
284
- * @param tokenAddress
307
+ *
308
+ * @param chainIdentifier Chain identifier string for the smart chain
309
+ * @param tokenAddress Token address
285
310
  * @throws {Error} if token is not found
286
311
  */
287
312
  public shouldIgnore<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): boolean {
@@ -290,28 +315,52 @@ export abstract class ISwapPrice<T extends MultiChain = MultiChain> {
290
315
  return coin===-1;
291
316
  }
292
317
 
318
+ /**
319
+ * Returns the USD value of the bitcoin amount
320
+ *
321
+ * @param btcSats Bitcoin amount in satoshis
322
+ * @param abortSignal
323
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
324
+ */
293
325
  public async getBtcUsdValue(
294
326
  btcSats: bigint,
295
327
  abortSignal?: AbortSignal,
296
- preFetchedPrice?: number
328
+ preFetchedUsdPrice?: number
297
329
  ): Promise<number> {
298
- return Number(btcSats)*(preFetchedPrice || await this.getUsdPrice(abortSignal));
330
+ return Number(btcSats)*(preFetchedUsdPrice || await this.getUsdPrice(abortSignal));
299
331
  }
300
332
 
333
+ /**
334
+ * Returns the USD value of the smart chain token amount
335
+ *
336
+ * @param chainIdentifier Chain identifier string for the smart chain
337
+ * @param tokenAmount Amount of the token in base units
338
+ * @param tokenAddress Token address
339
+ * @param abortSignal
340
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
341
+ */
301
342
  public async getTokenUsdValue<C extends ChainIds<T>>(
302
- chainId: C,
343
+ chainIdentifier: C,
303
344
  tokenAmount: bigint,
304
- token: string,
345
+ tokenAddress: string,
305
346
  abortSignal?: AbortSignal,
306
- preFetchedPrice?: number
347
+ preFetchedUsdPrice?: number
307
348
  ): Promise<number> {
308
349
  const [btcAmount, usdPrice] = await Promise.all([
309
- this.getToBtcSwapAmount(chainId, tokenAmount, token, abortSignal),
310
- preFetchedPrice==null ? this.preFetchUsdPrice(abortSignal) : Promise.resolve(preFetchedPrice)
350
+ this.getToBtcSwapAmount(chainIdentifier, tokenAmount, tokenAddress, abortSignal),
351
+ preFetchedUsdPrice==null ? this.preFetchUsdPrice(abortSignal) : Promise.resolve(preFetchedUsdPrice)
311
352
  ]);
312
353
  return Number(btcAmount)*usdPrice;
313
354
  }
314
355
 
356
+ /**
357
+ * Returns the USD value of the token amount
358
+ *
359
+ * @param amount Amount in base units of the token
360
+ * @param token Token to fetch the usd price for
361
+ * @param abortSignal
362
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
363
+ */
315
364
  public getUsdValue<C extends ChainIds<T>>(
316
365
  amount: bigint,
317
366
  token: Token<C>,
@@ -10,7 +10,8 @@ export type BinanceResponse = {
10
10
 
11
11
  /**
12
12
  * Price provider using Binance exchange API
13
- * @category Pricing and LPs
13
+ *
14
+ * @category Pricing
14
15
  */
15
16
  export class BinancePriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
16
17
 
@@ -18,6 +19,9 @@ export class BinancePriceProvider<T extends MultiChain> extends ExchangePricePro
18
19
  super(coinsMap, url, httpRequestTimeout);
19
20
  }
20
21
 
22
+ /**
23
+ * @inheritDoc
24
+ */
21
25
  protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
22
26
  const response = await httpGet<BinanceResponse>(
23
27
  this.url+"/ticker/price?symbol="+pair,
@@ -28,6 +32,9 @@ export class BinancePriceProvider<T extends MultiChain> extends ExchangePricePro
28
32
  return parseFloat(response.price);
29
33
  }
30
34
 
35
+ /**
36
+ * @inheritDoc
37
+ */
31
38
  protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
32
39
  const response = await httpGet<BinanceResponse>(
33
40
  this.url+"/ticker/price?symbol=BTCUSDC",
@@ -9,7 +9,7 @@ export type CoinGeckoResponse<Currency extends string> = {
9
9
 
10
10
  /**
11
11
  * Price provider using CoinGecko API
12
- * @category Pricing and LPs
12
+ * @category Pricing
13
13
  */
14
14
  export class CoinGeckoPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
15
15
 
@@ -17,6 +17,9 @@ export class CoinGeckoPriceProvider<T extends MultiChain> extends HttpPriceProvi
17
17
  super(coinsMap, url, httpRequestTimeout);
18
18
  }
19
19
 
20
+ /**
21
+ * @inheritDoc
22
+ */
20
23
  protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
21
24
  let response = await httpGet<CoinGeckoResponse<"sats">>(
22
25
  this.url+"/simple/price?ids="+token.coinId+"&vs_currencies=sats&precision=6",
@@ -27,6 +30,9 @@ export class CoinGeckoPriceProvider<T extends MultiChain> extends HttpPriceProvi
27
30
  return BigInt(response[token.coinId].sats*1000000);
28
31
  }
29
32
 
33
+ /**
34
+ * @inheritDoc
35
+ */
30
36
  protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
31
37
  let response = await httpGet<CoinGeckoResponse<"usd">>(
32
38
  this.url+"/simple/price?ids=bitcoin&vs_currencies=usd&precision=9",
@@ -13,7 +13,7 @@ export type CoinPaprikaResponse<Currency extends string> = {
13
13
 
14
14
  /**
15
15
  * Price provider using CoinPaprika API
16
- * @category Pricing and LPs
16
+ * @category Pricing
17
17
  */
18
18
  export class CoinPaprikaPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
19
19
 
@@ -21,6 +21,9 @@ export class CoinPaprikaPriceProvider<T extends MultiChain> extends HttpPricePro
21
21
  super(coinsMap, url, httpRequestTimeout);
22
22
  }
23
23
 
24
+ /**
25
+ * @inheritDoc
26
+ */
24
27
  async fetchPrice(token: CoinType, abortSignal?: AbortSignal) {
25
28
  const response = await httpGet<CoinPaprikaResponse<"BTC">>(
26
29
  this.url+"/tickers/"+token.coinId+"?quotes=BTC",
@@ -31,6 +34,9 @@ export class CoinPaprikaPriceProvider<T extends MultiChain> extends HttpPricePro
31
34
  return BigInt(Math.floor(response.quotes.BTC.price*100000000000000));
32
35
  }
33
36
 
37
+ /**
38
+ * @inheritDoc
39
+ */
34
40
  protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
35
41
  const response = await httpGet<CoinPaprikaResponse<"USD">>(
36
42
  this.url+"/tickers/btc-bitcoin?quotes=USD",
@@ -4,23 +4,34 @@ import {CustomPriceFunction} from "../../types/CustomPriceFunction";
4
4
 
5
5
  /**
6
6
  * Price provider using custom pricing function
7
- * @category Pricing and LPs
7
+ *
8
+ * @category Pricing
8
9
  */
9
10
  export class CustomPriceProvider<T extends MultiChain> extends IPriceProvider<T> {
10
11
 
11
12
  readonly getUsdPriceFn: CustomPriceFunction;
12
13
 
14
+ /**
15
+ * @param coinsMap Mapping of token tickers to token addresses
16
+ * @param getUsdPriceFn Pricing function, used to retrieve USD prices of the tokens
17
+ */
13
18
  constructor(coinsMap: CtorCoinTypes<T>, getUsdPriceFn: CustomPriceFunction) {
14
19
  super(coinsMap);
15
20
  this.getUsdPriceFn = getUsdPriceFn;
16
21
  }
17
22
 
23
+ /**
24
+ * @inheritDoc
25
+ */
18
26
  protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
19
27
  const [btcPrice, tokenPrice] = await this.getUsdPriceFn(["BTC",token.coinId], abortSignal);
20
28
  const priceInBtc = tokenPrice / btcPrice;
21
29
  return BigInt(Math.floor(priceInBtc*100_000_000*1_000_000));
22
30
  }
23
31
 
32
+ /**
33
+ * @inheritDoc
34
+ */
24
35
  protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
25
36
  const [btcPrice] = await this.getUsdPriceFn(["BTC"], abortSignal);
26
37
  return btcPrice / 100_000_000;
@@ -22,7 +22,7 @@ export type KrakenResponse = {
22
22
 
23
23
  /**
24
24
  * Price provider using Kraken exchange API
25
- * @category Pricing and LPs
25
+ * @category Pricing
26
26
  */
27
27
  export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
28
28
 
@@ -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
 
@@ -22,7 +22,7 @@ export type OKXResponse = {
22
22
 
23
23
  /**
24
24
  * Price provider using OKX exchange API
25
- * @category Pricing and LPs
25
+ * @category Pricing
26
26
  */
27
27
  export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
28
28
 
@@ -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