@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
@@ -3,60 +3,69 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ISwapPrice = void 0;
4
4
  /**
5
5
  * Abstract base class for swap pricing implementations
6
- * @category Pricing and LPs
6
+ *
7
+ * @category Pricing
7
8
  */
8
9
  class ISwapPrice {
9
10
  constructor(maxAllowedFeeDifferencePPM) {
10
11
  this.maxAllowedFeeDifferencePPM = maxAllowedFeeDifferencePPM;
11
12
  }
12
- getDecimalsThrowing(chainIdentifier, token) {
13
- const decimals = this.getDecimals(chainIdentifier, token);
13
+ /**
14
+ * Gets the decimal places for a given token, returns `-1` if token should be ignored & throws if token is not found
15
+ *
16
+ * @param chainIdentifier Chain identifier of the smart chain
17
+ * @param tokenAddress Token address
18
+ * @throws {Error} When token is not known
19
+ * @protected
20
+ */
21
+ getDecimalsThrowing(chainIdentifier, tokenAddress) {
22
+ const decimals = this.getDecimals(chainIdentifier, tokenAddress);
14
23
  if (decimals == null)
15
- throw new Error(`Cannot get decimal count for token ${chainIdentifier}:${token}!`);
24
+ throw new Error(`Cannot get decimal count for token ${chainIdentifier}:${tokenAddress}!`);
16
25
  return decimals;
17
26
  }
18
27
  /**
19
28
  * Recomputes pricing info without fetching the current price
20
29
  *
21
- * @param chainIdentifier
22
- * @param amountSats
23
- * @param satsBaseFee
24
- * @param feePPM
25
- * @param paidToken
26
- * @param token
30
+ * @param chainIdentifier Chain identifier of the smart chain
31
+ * @param amountSats Amount of sats (BTC) to be received from the swap
32
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
33
+ * @param feePPM PPM fee rate as reported by the intermediary
34
+ * @param paidToken Amount of token to be paid to the swap
35
+ * @param tokenAddress Token address to be paid
27
36
  */
28
- recomputePriceInfoSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token) {
37
+ recomputePriceInfoSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, tokenAddress) {
29
38
  const totalSats = (amountSats * (1000000n + feePPM) / 1000000n)
30
39
  + satsBaseFee;
31
40
  const totalUSats = totalSats * 1000000n;
32
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / paidToken;
41
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / paidToken;
33
42
  return {
34
43
  isValid: true,
35
44
  differencePPM: 0n,
36
45
  satsBaseFee,
37
46
  feePPM,
38
- realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, token) ? undefined : swapPriceUSatPerToken,
47
+ realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, tokenAddress) ? undefined : swapPriceUSatPerToken,
39
48
  swapPriceUSatPerToken
40
49
  };
41
50
  }
42
51
  /**
43
52
  * Checks whether the swap amounts are valid given the current market rate for a given pair
44
53
  *
45
- * @param chainIdentifier
54
+ * @param chainIdentifier Chain identifier of the smart chain
46
55
  * @param amountSats Amount of sats (BTC) to be received from the swap
47
56
  * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
48
57
  * @param feePPM PPM fee rate as reported by the intermediary
49
58
  * @param paidToken Amount of token to be paid to the swap
50
- * @param token
59
+ * @param tokenAddress Token address to be paid
51
60
  * @param abortSignal
52
- * @param preFetchedPrice Already pre-fetched price
61
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
53
62
  */
54
- async isValidAmountSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice) {
63
+ async isValidAmountSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, tokenAddress, abortSignal, preFetchedPrice) {
55
64
  const totalSats = (amountSats * (1000000n + feePPM) / 1000000n)
56
65
  + satsBaseFee;
57
66
  const totalUSats = totalSats * 1000000n;
58
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / paidToken;
59
- if (this.shouldIgnore(chainIdentifier, token))
67
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / paidToken;
68
+ if (this.shouldIgnore(chainIdentifier, tokenAddress))
60
69
  return {
61
70
  isValid: true,
62
71
  differencePPM: 0n,
@@ -65,8 +74,8 @@ class ISwapPrice {
65
74
  realPriceUSatPerToken: undefined,
66
75
  swapPriceUSatPerToken
67
76
  };
68
- const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, token, abortSignal, preFetchedPrice);
69
- const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / calculatedAmtInToken;
77
+ const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, tokenAddress, abortSignal, preFetchedPrice);
78
+ const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / calculatedAmtInToken;
70
79
  const difference = paidToken - calculatedAmtInToken; //Will be >0 if we need to pay more than we should've
71
80
  const differencePPM = difference * 1000000n / calculatedAmtInToken;
72
81
  return {
@@ -81,45 +90,45 @@ class ISwapPrice {
81
90
  /**
82
91
  * Recomputes pricing info without fetching the current price
83
92
  *
84
- * @param chainIdentifier
85
- * @param amountSats
86
- * @param satsBaseFee
87
- * @param feePPM
88
- * @param receiveToken
89
- * @param token
93
+ * @param chainIdentifier Chain identifier of the smart chain
94
+ * @param amountSats Amount of sats (BTC) to be paid to the swap
95
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
96
+ * @param feePPM PPM fee rate as reported by the intermediary
97
+ * @param receiveToken Amount of token to be received from the swap
98
+ * @param tokenAddress Token address to be received
90
99
  */
91
- recomputePriceInfoReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token) {
100
+ recomputePriceInfoReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, tokenAddress) {
92
101
  const totalSats = (amountSats * (1000000n - feePPM) / 1000000n)
93
102
  - satsBaseFee;
94
103
  const totalUSats = totalSats * 1000000n;
95
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / receiveToken;
104
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / receiveToken;
96
105
  return {
97
106
  isValid: true,
98
107
  differencePPM: 0n,
99
108
  satsBaseFee,
100
109
  feePPM,
101
- realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, token) ? undefined : swapPriceUSatPerToken,
110
+ realPriceUSatPerToken: this.shouldIgnore(chainIdentifier, tokenAddress) ? undefined : swapPriceUSatPerToken,
102
111
  swapPriceUSatPerToken
103
112
  };
104
113
  }
105
114
  /**
106
115
  * Checks whether the swap amounts are valid given the current market rate for a given pair
107
116
  *
108
- * @param chainIdentifier
117
+ * @param chainIdentifier Chain identifier of the smart chain
109
118
  * @param amountSats Amount of sats (BTC) to be paid to the swap
110
119
  * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
111
120
  * @param feePPM PPM fee rate as reported by the intermediary
112
121
  * @param receiveToken Amount of token to be received from the swap
113
- * @param token
122
+ * @param tokenAddress Token address to be received
114
123
  * @param abortSignal
115
- * @param preFetchedPrice Already pre-fetched price
124
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
116
125
  */
117
- async isValidAmountReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice) {
126
+ async isValidAmountReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, tokenAddress, abortSignal, preFetchedPrice) {
118
127
  const totalSats = (amountSats * (1000000n - feePPM) / 1000000n)
119
128
  - satsBaseFee;
120
129
  const totalUSats = totalSats * 1000000n;
121
- const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / receiveToken;
122
- if (this.shouldIgnore(chainIdentifier, token))
130
+ const swapPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / receiveToken;
131
+ if (this.shouldIgnore(chainIdentifier, tokenAddress))
123
132
  return {
124
133
  isValid: true,
125
134
  differencePPM: 0n,
@@ -128,8 +137,8 @@ class ISwapPrice {
128
137
  realPriceUSatPerToken: undefined,
129
138
  swapPriceUSatPerToken
130
139
  };
131
- const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, token, abortSignal, preFetchedPrice);
132
- const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, token))) / calculatedAmtInToken;
140
+ const calculatedAmtInToken = await this.getFromBtcSwapAmount(chainIdentifier, totalSats, tokenAddress, abortSignal, preFetchedPrice);
141
+ const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier, tokenAddress))) / calculatedAmtInToken;
133
142
  const difference = calculatedAmtInToken - receiveToken; //Will be >0 if we receive less than we should've
134
143
  const differencePPM = difference * 100000n / calculatedAmtInToken;
135
144
  return {
@@ -141,20 +150,34 @@ class ISwapPrice {
141
150
  swapPriceUSatPerToken
142
151
  };
143
152
  }
144
- preFetchPrice(chainIdentifier, token, abortSignal) {
145
- return this.getPrice(chainIdentifier, token, abortSignal);
153
+ /**
154
+ * Pre-fetches the pricing data for a given token, such that further calls to {@link isValidAmountReceive} or
155
+ * {@link isValidAmountSend} are quicker and don't need to wait for the price fetch
156
+ *
157
+ * @param chainIdentifier Chain identifier of the smart chain
158
+ * @param tokenAddress Token address
159
+ * @param abortSignal
160
+ */
161
+ preFetchPrice(chainIdentifier, tokenAddress, abortSignal) {
162
+ return this.getPrice(chainIdentifier, tokenAddress, abortSignal);
146
163
  }
164
+ /**
165
+ * Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
166
+ * {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
167
+ *
168
+ * @param abortSignal
169
+ */
147
170
  preFetchUsdPrice(abortSignal) {
148
171
  return this.getUsdPrice(abortSignal);
149
172
  }
150
173
  /**
151
- * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
174
+ * Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
152
175
  *
153
- * @param chainIdentifier
154
- * @param fromAmount Amount of satoshis
155
- * @param toToken Token
176
+ * @param chainIdentifier Chain identifier string for the smart chain
177
+ * @param fromAmount Amount of satoshis
178
+ * @param toToken Token address
156
179
  * @param abortSignal
157
- * @param preFetchedPrice
180
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
158
181
  * @throws {Error} when token is not found
159
182
  */
160
183
  async getFromBtcSwapAmount(chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice) {
@@ -167,13 +190,13 @@ class ISwapPrice {
167
190
  / (price);
168
191
  }
169
192
  /**
170
- * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
193
+ * Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
171
194
  *
172
- * @param chainIdentifier
195
+ * @param chainIdentifier Chain identifier string for the smart chain
173
196
  * @param fromAmount Amount of the token
174
- * @param fromToken Token
197
+ * @param fromToken Token address
175
198
  * @param abortSignal
176
- * @param preFetchedPrice Pre-fetched swap price if available
199
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
177
200
  * @throws {Error} when token is not found
178
201
  */
179
202
  async getToBtcSwapAmount(chainIdentifier, fromAmount, fromToken, abortSignal, preFetchedPrice) {
@@ -187,8 +210,9 @@ class ISwapPrice {
187
210
  }
188
211
  /**
189
212
  * Returns whether the token should be ignored and pricing for it not calculated
190
- * @param chainIdentifier
191
- * @param tokenAddress
213
+ *
214
+ * @param chainIdentifier Chain identifier string for the smart chain
215
+ * @param tokenAddress Token address
192
216
  * @throws {Error} if token is not found
193
217
  */
194
218
  shouldIgnore(chainIdentifier, tokenAddress) {
@@ -197,16 +221,40 @@ class ISwapPrice {
197
221
  throw new Error("Token not found");
198
222
  return coin === -1;
199
223
  }
200
- async getBtcUsdValue(btcSats, abortSignal, preFetchedPrice) {
201
- return Number(btcSats) * (preFetchedPrice || await this.getUsdPrice(abortSignal));
224
+ /**
225
+ * Returns the USD value of the bitcoin amount
226
+ *
227
+ * @param btcSats Bitcoin amount in satoshis
228
+ * @param abortSignal
229
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
230
+ */
231
+ async getBtcUsdValue(btcSats, abortSignal, preFetchedUsdPrice) {
232
+ return Number(btcSats) * (preFetchedUsdPrice || await this.getUsdPrice(abortSignal));
202
233
  }
203
- async getTokenUsdValue(chainId, tokenAmount, token, abortSignal, preFetchedPrice) {
234
+ /**
235
+ * Returns the USD value of the smart chain token amount
236
+ *
237
+ * @param chainIdentifier Chain identifier string for the smart chain
238
+ * @param tokenAmount Amount of the token in base units
239
+ * @param tokenAddress Token address
240
+ * @param abortSignal
241
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
242
+ */
243
+ async getTokenUsdValue(chainIdentifier, tokenAmount, tokenAddress, abortSignal, preFetchedUsdPrice) {
204
244
  const [btcAmount, usdPrice] = await Promise.all([
205
- this.getToBtcSwapAmount(chainId, tokenAmount, token, abortSignal),
206
- preFetchedPrice == null ? this.preFetchUsdPrice(abortSignal) : Promise.resolve(preFetchedPrice)
245
+ this.getToBtcSwapAmount(chainIdentifier, tokenAmount, tokenAddress, abortSignal),
246
+ preFetchedUsdPrice == null ? this.preFetchUsdPrice(abortSignal) : Promise.resolve(preFetchedUsdPrice)
207
247
  ]);
208
248
  return Number(btcAmount) * usdPrice;
209
249
  }
250
+ /**
251
+ * Returns the USD value of the token amount
252
+ *
253
+ * @param amount Amount in base units of the token
254
+ * @param token Token to fetch the usd price for
255
+ * @param abortSignal
256
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
257
+ */
210
258
  getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {
211
259
  if (token.chain === "BTC") {
212
260
  return this.getBtcUsdValue(amount, abortSignal, preFetchedUsdPrice);
@@ -7,10 +7,17 @@ export type BinanceResponse = {
7
7
  };
8
8
  /**
9
9
  * Price provider using Binance exchange API
10
- * @category Pricing and LPs
10
+ *
11
+ * @category Pricing
11
12
  */
12
13
  export declare class BinancePriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
13
14
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
15
+ /**
16
+ * @inheritDoc
17
+ */
14
18
  protected fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
19
+ /**
20
+ * @inheritDoc
21
+ */
15
22
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
16
23
  }
@@ -5,16 +5,23 @@ const ExchangePriceProvider_1 = require("./abstract/ExchangePriceProvider");
5
5
  const HttpUtils_1 = require("../../http/HttpUtils");
6
6
  /**
7
7
  * Price provider using Binance exchange API
8
- * @category Pricing and LPs
8
+ *
9
+ * @category Pricing
9
10
  */
10
11
  class BinancePriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {
11
12
  constructor(coinsMap, url = "https://api.binance.com/api/v3", httpRequestTimeout) {
12
13
  super(coinsMap, url, httpRequestTimeout);
13
14
  }
15
+ /**
16
+ * @inheritDoc
17
+ */
14
18
  async fetchPair(pair, abortSignal) {
15
19
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/ticker/price?symbol=" + pair, this.httpRequestTimeout, abortSignal);
16
20
  return parseFloat(response.price);
17
21
  }
22
+ /**
23
+ * @inheritDoc
24
+ */
18
25
  async fetchUsdPrice(abortSignal) {
19
26
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/ticker/price?symbol=BTCUSDC", this.httpRequestTimeout, abortSignal);
20
27
  return parseFloat(response.price) / 100000000;
@@ -8,10 +8,16 @@ export type CoinGeckoResponse<Currency extends string> = {
8
8
  };
9
9
  /**
10
10
  * Price provider using CoinGecko API
11
- * @category Pricing and LPs
11
+ * @category Pricing
12
12
  */
13
13
  export declare class CoinGeckoPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
14
14
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
15
+ /**
16
+ * @inheritDoc
17
+ */
15
18
  protected fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
19
+ /**
20
+ * @inheritDoc
21
+ */
16
22
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
17
23
  }
@@ -5,16 +5,22 @@ const HttpPriceProvider_1 = require("./abstract/HttpPriceProvider");
5
5
  const HttpUtils_1 = require("../../http/HttpUtils");
6
6
  /**
7
7
  * Price provider using CoinGecko API
8
- * @category Pricing and LPs
8
+ * @category Pricing
9
9
  */
10
10
  class CoinGeckoPriceProvider extends HttpPriceProvider_1.HttpPriceProvider {
11
11
  constructor(coinsMap, url = "https://api.coingecko.com/api/v3", httpRequestTimeout) {
12
12
  super(coinsMap, url, httpRequestTimeout);
13
13
  }
14
+ /**
15
+ * @inheritDoc
16
+ */
14
17
  async fetchPrice(token, abortSignal) {
15
18
  let response = await (0, HttpUtils_1.httpGet)(this.url + "/simple/price?ids=" + token.coinId + "&vs_currencies=sats&precision=6", this.httpRequestTimeout, abortSignal);
16
19
  return BigInt(response[token.coinId].sats * 1000000);
17
20
  }
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  async fetchUsdPrice(abortSignal) {
19
25
  let response = await (0, HttpUtils_1.httpGet)(this.url + "/simple/price?ids=bitcoin&vs_currencies=usd&precision=9", this.httpRequestTimeout, abortSignal);
20
26
  return response["bitcoin"].usd / 100000000;
@@ -10,10 +10,16 @@ export type CoinPaprikaResponse<Currency extends string> = {
10
10
  };
11
11
  /**
12
12
  * Price provider using CoinPaprika API
13
- * @category Pricing and LPs
13
+ * @category Pricing
14
14
  */
15
15
  export declare class CoinPaprikaPriceProvider<T extends MultiChain> extends HttpPriceProvider<T> {
16
16
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
17
+ /**
18
+ * @inheritDoc
19
+ */
17
20
  fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
19
25
  }
@@ -5,16 +5,22 @@ const HttpPriceProvider_1 = require("./abstract/HttpPriceProvider");
5
5
  const HttpUtils_1 = require("../../http/HttpUtils");
6
6
  /**
7
7
  * Price provider using CoinPaprika API
8
- * @category Pricing and LPs
8
+ * @category Pricing
9
9
  */
10
10
  class CoinPaprikaPriceProvider extends HttpPriceProvider_1.HttpPriceProvider {
11
11
  constructor(coinsMap, url = "https://api.coinpaprika.com/v1", httpRequestTimeout) {
12
12
  super(coinsMap, url, httpRequestTimeout);
13
13
  }
14
+ /**
15
+ * @inheritDoc
16
+ */
14
17
  async fetchPrice(token, abortSignal) {
15
18
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/tickers/" + token.coinId + "?quotes=BTC", this.httpRequestTimeout, abortSignal);
16
19
  return BigInt(Math.floor(response.quotes.BTC.price * 100000000000000));
17
20
  }
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  async fetchUsdPrice(abortSignal) {
19
25
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/tickers/btc-bitcoin?quotes=USD", this.httpRequestTimeout, abortSignal);
20
26
  return response.quotes.USD.price / 100000000;
@@ -3,11 +3,22 @@ import { MultiChain } from "../../swapper/Swapper";
3
3
  import { CustomPriceFunction } from "../../types/CustomPriceFunction";
4
4
  /**
5
5
  * Price provider using custom pricing function
6
- * @category Pricing and LPs
6
+ *
7
+ * @category Pricing
7
8
  */
8
9
  export declare class CustomPriceProvider<T extends MultiChain> extends IPriceProvider<T> {
9
10
  readonly getUsdPriceFn: CustomPriceFunction;
11
+ /**
12
+ * @param coinsMap Mapping of token tickers to token addresses
13
+ * @param getUsdPriceFn Pricing function, used to retrieve USD prices of the tokens
14
+ */
10
15
  constructor(coinsMap: CtorCoinTypes<T>, getUsdPriceFn: CustomPriceFunction);
16
+ /**
17
+ * @inheritDoc
18
+ */
11
19
  protected fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
20
+ /**
21
+ * @inheritDoc
22
+ */
12
23
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
13
24
  }
@@ -4,18 +4,29 @@ exports.CustomPriceProvider = void 0;
4
4
  const IPriceProvider_1 = require("../abstract/IPriceProvider");
5
5
  /**
6
6
  * Price provider using custom pricing function
7
- * @category Pricing and LPs
7
+ *
8
+ * @category Pricing
8
9
  */
9
10
  class CustomPriceProvider extends IPriceProvider_1.IPriceProvider {
11
+ /**
12
+ * @param coinsMap Mapping of token tickers to token addresses
13
+ * @param getUsdPriceFn Pricing function, used to retrieve USD prices of the tokens
14
+ */
10
15
  constructor(coinsMap, getUsdPriceFn) {
11
16
  super(coinsMap);
12
17
  this.getUsdPriceFn = getUsdPriceFn;
13
18
  }
19
+ /**
20
+ * @inheritDoc
21
+ */
14
22
  async fetchPrice(token, abortSignal) {
15
23
  const [btcPrice, tokenPrice] = await this.getUsdPriceFn(["BTC", token.coinId], abortSignal);
16
24
  const priceInBtc = tokenPrice / btcPrice;
17
25
  return BigInt(Math.floor(priceInBtc * 100000000 * 1000000));
18
26
  }
27
+ /**
28
+ * @inheritDoc
29
+ */
19
30
  async fetchUsdPrice(abortSignal) {
20
31
  const [btcPrice] = await this.getUsdPriceFn(["BTC"], abortSignal);
21
32
  return btcPrice / 100000000;
@@ -19,11 +19,20 @@ export type KrakenResponse = {
19
19
  };
20
20
  /**
21
21
  * Price provider using Kraken exchange API
22
- * @category Pricing and LPs
22
+ * @category Pricing
23
23
  */
24
24
  export declare class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
25
25
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
26
+ /**
27
+ * @inheritDoc
28
+ */
26
29
  protected fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
30
+ /**
31
+ * @inheritDoc
32
+ */
27
33
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
34
+ /**
35
+ * @inheritDoc
36
+ */
28
37
  protected fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
29
38
  }
@@ -5,20 +5,29 @@ const ExchangePriceProvider_1 = require("./abstract/ExchangePriceProvider");
5
5
  const HttpUtils_1 = require("../../http/HttpUtils");
6
6
  /**
7
7
  * Price provider using Kraken exchange API
8
- * @category Pricing and LPs
8
+ * @category Pricing
9
9
  */
10
10
  class KrakenPriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {
11
11
  constructor(coinsMap, url = "https://api.kraken.com/0", httpRequestTimeout) {
12
12
  super(coinsMap, url, httpRequestTimeout);
13
13
  }
14
+ /**
15
+ * @inheritDoc
16
+ */
14
17
  async fetchPair(pair, abortSignal) {
15
18
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/public/Ticker?pair=" + pair, this.httpRequestTimeout, abortSignal);
16
19
  return parseFloat(response.result[pair].c[0]);
17
20
  }
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  async fetchUsdPrice(abortSignal) {
19
25
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/public/Ticker?pair=XBTUSDC", this.httpRequestTimeout, abortSignal);
20
26
  return parseFloat(response.result["XBTUSDC"].c[0]) / 100000000;
21
27
  }
28
+ /**
29
+ * @inheritDoc
30
+ */
22
31
  async fetchPrice(token, abortSignal) {
23
32
  const pairs = token.coinId.split(";");
24
33
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/public/Ticker?pair=" + pairs.map(val => val.startsWith("!") ? val.substring(1) : val).join(","), this.httpRequestTimeout, abortSignal);
@@ -19,10 +19,16 @@ export type OKXResponse = {
19
19
  };
20
20
  /**
21
21
  * Price provider using OKX exchange API
22
- * @category Pricing and LPs
22
+ * @category Pricing
23
23
  */
24
24
  export declare class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvider<T> {
25
25
  constructor(coinsMap: CtorCoinTypes<T>, url?: string, httpRequestTimeout?: number);
26
+ /**
27
+ * @inheritDoc
28
+ */
26
29
  fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
30
+ /**
31
+ * @inheritDoc
32
+ */
27
33
  protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
28
34
  }
@@ -5,16 +5,22 @@ const ExchangePriceProvider_1 = require("./abstract/ExchangePriceProvider");
5
5
  const HttpUtils_1 = require("../../http/HttpUtils");
6
6
  /**
7
7
  * Price provider using OKX exchange API
8
- * @category Pricing and LPs
8
+ * @category Pricing
9
9
  */
10
10
  class OKXPriceProvider extends ExchangePriceProvider_1.ExchangePriceProvider {
11
11
  constructor(coinsMap, url = "https://www.okx.com/api/v5", httpRequestTimeout) {
12
12
  super(coinsMap, url, httpRequestTimeout);
13
13
  }
14
+ /**
15
+ * @inheritDoc
16
+ */
14
17
  async fetchPair(pair, abortSignal) {
15
18
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/market/index-tickers?instId=" + pair, this.httpRequestTimeout, abortSignal);
16
19
  return parseFloat(response.data[0].idxPx);
17
20
  }
21
+ /**
22
+ * @inheritDoc
23
+ */
18
24
  async fetchUsdPrice(abortSignal) {
19
25
  const response = await (0, HttpUtils_1.httpGet)(this.url + "/market/index-tickers?instId=BTC-USD", this.httpRequestTimeout, abortSignal);
20
26
  return parseFloat(response.data[0].idxPx) / 100000000;
@@ -10,5 +10,8 @@ export declare abstract class ExchangePriceProvider<T extends MultiChain> extend
10
10
  * @protected
11
11
  */
12
12
  protected abstract fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
13
+ /**
14
+ * @inheritDoc
15
+ */
13
16
  protected fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
14
17
  }
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExchangePriceProvider = void 0;
4
4
  const HttpPriceProvider_1 = require("./HttpPriceProvider");
5
5
  class ExchangePriceProvider extends HttpPriceProvider_1.HttpPriceProvider {
6
+ /**
7
+ * @inheritDoc
8
+ */
6
9
  async fetchPrice(token, abortSignal) {
7
10
  const pairs = token.coinId.split(";");
8
11
  const prices = await Promise.all(pairs.map(pair => {