@atomiqlabs/sdk 8.1.8 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  2. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  3. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  4. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  5. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  7. package/dist/enums/FeeType.d.ts +7 -0
  8. package/dist/enums/FeeType.js +7 -0
  9. package/dist/enums/SwapAmountType.d.ts +7 -0
  10. package/dist/enums/SwapAmountType.js +7 -0
  11. package/dist/enums/SwapDirection.d.ts +7 -0
  12. package/dist/enums/SwapDirection.js +7 -0
  13. package/dist/enums/SwapType.d.ts +62 -1
  14. package/dist/enums/SwapType.js +62 -1
  15. package/dist/errors/IntermediaryError.d.ts +4 -0
  16. package/dist/errors/IntermediaryError.js +1 -0
  17. package/dist/errors/RequestError.d.ts +15 -1
  18. package/dist/errors/RequestError.js +8 -0
  19. package/dist/errors/UserError.d.ts +1 -0
  20. package/dist/errors/UserError.js +1 -0
  21. package/dist/index.d.ts +4 -5
  22. package/dist/index.js +3 -4
  23. package/dist/intermediaries/Intermediary.d.ts +57 -10
  24. package/dist/intermediaries/Intermediary.js +37 -10
  25. package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
  26. package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
  27. package/dist/prices/RedundantSwapPrice.d.ts +24 -3
  28. package/dist/prices/RedundantSwapPrice.js +21 -1
  29. package/dist/prices/SingleSwapPrice.d.ts +9 -6
  30. package/dist/prices/SingleSwapPrice.js +10 -7
  31. package/dist/prices/SwapPriceWithChain.d.ts +54 -16
  32. package/dist/prices/SwapPriceWithChain.js +58 -20
  33. package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
  34. package/dist/prices/abstract/ISwapPrice.js +103 -55
  35. package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
  36. package/dist/prices/providers/BinancePriceProvider.js +7 -0
  37. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
  38. package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
  39. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
  40. package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
  41. package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
  42. package/dist/prices/providers/CustomPriceProvider.js +11 -0
  43. package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
  44. package/dist/prices/providers/KrakenPriceProvider.js +9 -0
  45. package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
  46. package/dist/prices/providers/OKXPriceProvider.js +6 -0
  47. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  48. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  49. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  50. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  51. package/dist/storage/UnifiedSwapStorage.js +29 -1
  52. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  53. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  54. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  55. package/dist/storage-browser/LocalStorageManager.js +25 -1
  56. package/dist/swapper/Swapper.d.ts +302 -221
  57. package/dist/swapper/Swapper.js +376 -344
  58. package/dist/swapper/SwapperFactory.d.ts +41 -17
  59. package/dist/swapper/SwapperFactory.js +23 -2
  60. package/dist/swapper/SwapperUtils.d.ts +75 -28
  61. package/dist/swapper/SwapperUtils.js +107 -60
  62. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  63. package/dist/swapper/SwapperWithChain.js +218 -64
  64. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  65. package/dist/swapper/SwapperWithSigner.js +190 -44
  66. package/dist/swaps/IAddressSwap.d.ts +10 -1
  67. package/dist/swaps/IAddressSwap.js +2 -1
  68. package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
  69. package/dist/swaps/IBTCWalletSwap.js +2 -1
  70. package/dist/swaps/IClaimableSwap.d.ts +36 -4
  71. package/dist/swaps/IClaimableSwap.js +2 -1
  72. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  73. package/dist/swaps/IRefundableSwap.d.ts +29 -3
  74. package/dist/swaps/IRefundableSwap.js +2 -1
  75. package/dist/swaps/ISwap.d.ts +159 -21
  76. package/dist/swaps/ISwap.js +90 -33
  77. package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
  78. package/dist/swaps/ISwapWithGasDrop.js +1 -0
  79. package/dist/swaps/ISwapWrapper.d.ts +157 -48
  80. package/dist/swaps/ISwapWrapper.js +130 -72
  81. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
  82. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  83. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  84. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  85. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  86. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  87. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  88. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  89. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  93. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
  94. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
  95. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
  97. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
  98. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
  99. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  101. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
  102. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
  103. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  105. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
  106. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
  107. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  109. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
  110. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
  111. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  113. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
  114. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
  115. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  117. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
  118. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
  119. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  120. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
  121. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
  122. package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
  123. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  124. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  125. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
  126. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
  127. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  128. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  129. package/dist/types/AmountData.d.ts +2 -1
  130. package/dist/types/CustomPriceFunction.d.ts +7 -1
  131. package/dist/types/SwapExecutionAction.d.ts +74 -4
  132. package/dist/types/SwapWithSigner.d.ts +4 -1
  133. package/dist/types/SwapWithSigner.js +5 -2
  134. package/dist/types/Token.d.ts +11 -5
  135. package/dist/types/Token.js +6 -3
  136. package/dist/types/TokenAmount.d.ts +3 -0
  137. package/dist/types/TokenAmount.js +2 -0
  138. package/dist/types/fees/Fee.d.ts +2 -1
  139. package/dist/types/fees/FeeBreakdown.d.ts +2 -1
  140. package/dist/types/fees/PercentagePPM.d.ts +2 -0
  141. package/dist/types/fees/PercentagePPM.js +1 -0
  142. package/dist/types/lnurl/LNURLPay.d.ts +14 -6
  143. package/dist/types/lnurl/LNURLPay.js +6 -2
  144. package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
  145. package/dist/types/lnurl/LNURLWithdraw.js +6 -2
  146. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
  147. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  148. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  149. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
  150. package/dist/utils/BitcoinUtils.d.ts +1 -0
  151. package/dist/utils/BitcoinUtils.js +5 -1
  152. package/dist/utils/SwapUtils.d.ts +56 -1
  153. package/dist/utils/SwapUtils.js +53 -1
  154. package/dist/utils/TokenUtils.d.ts +10 -2
  155. package/dist/utils/TokenUtils.js +12 -4
  156. package/package.json +3 -3
  157. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  158. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  159. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  160. package/src/enums/FeeType.ts +7 -0
  161. package/src/enums/SwapAmountType.ts +7 -0
  162. package/src/enums/SwapDirection.ts +7 -0
  163. package/src/enums/SwapType.ts +62 -2
  164. package/src/errors/IntermediaryError.ts +4 -0
  165. package/src/errors/RequestError.ts +15 -1
  166. package/src/errors/UserError.ts +1 -0
  167. package/src/index.ts +6 -5
  168. package/src/intermediaries/Intermediary.ts +57 -10
  169. package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
  170. package/src/prices/RedundantSwapPrice.ts +24 -4
  171. package/src/prices/SingleSwapPrice.ts +10 -7
  172. package/src/prices/SwapPriceWithChain.ts +59 -21
  173. package/src/prices/abstract/ISwapPrice.ts +114 -65
  174. package/src/prices/providers/BinancePriceProvider.ts +7 -0
  175. package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
  176. package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
  177. package/src/prices/providers/CustomPriceProvider.ts +11 -0
  178. package/src/prices/providers/KrakenPriceProvider.ts +9 -0
  179. package/src/prices/providers/OKXPriceProvider.ts +6 -0
  180. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  181. package/src/storage/IUnifiedStorage.ts +19 -7
  182. package/src/storage/UnifiedSwapStorage.ts +33 -3
  183. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  184. package/src/storage-browser/LocalStorageManager.ts +25 -1
  185. package/src/swapper/Swapper.ts +512 -378
  186. package/src/swapper/SwapperFactory.ts +44 -21
  187. package/src/swapper/SwapperUtils.ts +107 -60
  188. package/src/swapper/SwapperWithChain.ts +320 -81
  189. package/src/swapper/SwapperWithSigner.ts +263 -56
  190. package/src/swaps/IAddressSwap.ts +11 -1
  191. package/src/swaps/IBTCWalletSwap.ts +24 -8
  192. package/src/swaps/IClaimableSwap.ts +39 -4
  193. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  194. package/src/swaps/IRefundableSwap.ts +32 -3
  195. package/src/swaps/ISwap.ts +221 -82
  196. package/src/swaps/ISwapWithGasDrop.ts +6 -0
  197. package/src/swaps/ISwapWrapper.ts +212 -94
  198. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
  199. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  200. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  201. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  202. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
  203. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  204. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
  205. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
  206. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
  207. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  208. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
  209. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  210. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
  211. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  212. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
  213. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  214. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
  215. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  216. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
  217. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
  218. package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
  219. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  220. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
  221. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  222. package/src/types/AmountData.ts +2 -1
  223. package/src/types/CustomPriceFunction.ts +7 -1
  224. package/src/types/SwapExecutionAction.ts +84 -5
  225. package/src/types/SwapWithSigner.ts +7 -3
  226. package/src/types/Token.ts +12 -5
  227. package/src/types/TokenAmount.ts +3 -0
  228. package/src/types/fees/Fee.ts +2 -1
  229. package/src/types/fees/FeeBreakdown.ts +2 -1
  230. package/src/types/fees/PercentagePPM.ts +2 -0
  231. package/src/types/lnurl/LNURLPay.ts +14 -6
  232. package/src/types/lnurl/LNURLWithdraw.ts +12 -5
  233. package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
  234. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  235. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
  236. package/src/utils/BitcoinUtils.ts +5 -0
  237. package/src/utils/SwapUtils.ts +61 -1
  238. package/src/utils/TokenUtils.ts +12 -4
  239. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  240. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  241. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  242. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  243. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  244. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  245. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  246. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  247. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  248. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  249. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  250. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  251. package/dist/errors/PaymentAuthError.d.ts +0 -11
  252. package/dist/errors/PaymentAuthError.js +0 -23
  253. package/src/errors/PaymentAuthError.ts +0 -26
@@ -3,115 +3,164 @@ import { Token } from "../../types/Token";
3
3
  import { PriceInfoType } from "../../types/PriceInfoType";
4
4
  /**
5
5
  * Abstract base class for swap pricing implementations
6
+ *
6
7
  * @category Pricing and LPs
7
8
  */
8
9
  export declare abstract class ISwapPrice<T extends MultiChain = MultiChain> {
9
10
  maxAllowedFeeDifferencePPM: bigint;
10
11
  protected constructor(maxAllowedFeeDifferencePPM: bigint);
11
12
  /**
12
- * Gets the decimal places for a given token, returns -1 if token should be ignored & null if token is not found
13
- * @param chainIdentifier
14
- * @param token
13
+ * Gets the decimal places for a given token, returns `-1` if token should be ignored & `null` if token is not found
14
+ *
15
+ * @param chainIdentifier Chain identifier of the smart chain
16
+ * @param tokenAddress Token address
15
17
  * @protected
16
18
  */
17
- protected abstract getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
19
+ protected abstract getDecimals<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): number | null;
18
20
  /**
19
21
  * Returns the price of the token in BTC uSats (microSats)
20
22
  *
21
- * @param chainIdentifier
22
- * @param token
23
+ * @param chainIdentifier Chain identifier of the smart chain
24
+ * @param tokenAddress Token address
23
25
  * @param abortSignal
24
26
  * @protected
25
27
  */
26
- protected abstract getPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
28
+ protected abstract getPrice<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint>;
27
29
  /**
28
- * Returns the price of bitcoin in USD, (sats/USD)
30
+ * Returns the price of bitcoin in USD (sats/USD)
29
31
  *
30
32
  * @param abortSignal
31
33
  * @protected
32
34
  */
33
35
  protected abstract getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
34
- protected getDecimalsThrowing<C extends ChainIds<T>>(chainIdentifier: C, token: string): number;
36
+ /**
37
+ * Gets the decimal places for a given token, returns `-1` if token should be ignored & throws if token is not found
38
+ *
39
+ * @param chainIdentifier Chain identifier of the smart chain
40
+ * @param tokenAddress Token address
41
+ * @throws {Error} When token is not known
42
+ * @protected
43
+ */
44
+ protected getDecimalsThrowing<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): number;
35
45
  /**
36
46
  * Recomputes pricing info without fetching the current price
37
47
  *
38
- * @param chainIdentifier
39
- * @param amountSats
40
- * @param satsBaseFee
41
- * @param feePPM
42
- * @param paidToken
43
- * @param token
48
+ * @param chainIdentifier Chain identifier of the smart chain
49
+ * @param amountSats Amount of sats (BTC) to be received from the swap
50
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
51
+ * @param feePPM PPM fee rate as reported by the intermediary
52
+ * @param paidToken Amount of token to be paid to the swap
53
+ * @param tokenAddress Token address to be paid
44
54
  */
45
- recomputePriceInfoSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string): PriceInfoType;
55
+ recomputePriceInfoSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, tokenAddress: string): PriceInfoType;
46
56
  /**
47
57
  * Checks whether the swap amounts are valid given the current market rate for a given pair
48
58
  *
49
- * @param chainIdentifier
59
+ * @param chainIdentifier Chain identifier of the smart chain
50
60
  * @param amountSats Amount of sats (BTC) to be received from the swap
51
61
  * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
52
62
  * @param feePPM PPM fee rate as reported by the intermediary
53
63
  * @param paidToken Amount of token to be paid to the swap
54
- * @param token
64
+ * @param tokenAddress Token address to be paid
55
65
  * @param abortSignal
56
- * @param preFetchedPrice Already pre-fetched price
66
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
57
67
  */
58
- isValidAmountSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
68
+ isValidAmountSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
59
69
  /**
60
70
  * Recomputes pricing info without fetching the current price
61
71
  *
62
- * @param chainIdentifier
63
- * @param amountSats
64
- * @param satsBaseFee
65
- * @param feePPM
66
- * @param receiveToken
67
- * @param token
72
+ * @param chainIdentifier Chain identifier of the smart chain
73
+ * @param amountSats Amount of sats (BTC) to be paid to the swap
74
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
75
+ * @param feePPM PPM fee rate as reported by the intermediary
76
+ * @param receiveToken Amount of token to be received from the swap
77
+ * @param tokenAddress Token address to be received
68
78
  */
69
- recomputePriceInfoReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string): PriceInfoType;
79
+ recomputePriceInfoReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, tokenAddress: string): PriceInfoType;
70
80
  /**
71
81
  * Checks whether the swap amounts are valid given the current market rate for a given pair
72
82
  *
73
- * @param chainIdentifier
83
+ * @param chainIdentifier Chain identifier of the smart chain
74
84
  * @param amountSats Amount of sats (BTC) to be paid to the swap
75
85
  * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
76
86
  * @param feePPM PPM fee rate as reported by the intermediary
77
87
  * @param receiveToken Amount of token to be received from the swap
78
- * @param token
88
+ * @param tokenAddress Token address to be received
89
+ * @param abortSignal
90
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
91
+ */
92
+ isValidAmountReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
93
+ /**
94
+ * Pre-fetches the pricing data for a given token, such that further calls to {@link isValidAmountReceive} or
95
+ * {@link isValidAmountSend} are quicker and don't need to wait for the price fetch
96
+ *
97
+ * @param chainIdentifier Chain identifier of the smart chain
98
+ * @param tokenAddress Token address
99
+ * @param abortSignal
100
+ */
101
+ preFetchPrice<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint>;
102
+ /**
103
+ * Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
104
+ * {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
105
+ *
79
106
  * @param abortSignal
80
- * @param preFetchedPrice Already pre-fetched price
81
107
  */
82
- isValidAmountReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
83
- preFetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
84
108
  preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
85
109
  /**
86
- * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
110
+ * Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
87
111
  *
88
- * @param chainIdentifier
89
- * @param fromAmount Amount of satoshis
90
- * @param toToken Token
112
+ * @param chainIdentifier Chain identifier string for the smart chain
113
+ * @param fromAmount Amount of satoshis
114
+ * @param toToken Token address
91
115
  * @param abortSignal
92
- * @param preFetchedPrice
116
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
93
117
  * @throws {Error} when token is not found
94
118
  */
95
119
  getFromBtcSwapAmount<C extends ChainIds<T>>(chainIdentifier: C, fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<bigint>;
96
120
  /**
97
- * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
121
+ * Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
98
122
  *
99
- * @param chainIdentifier
123
+ * @param chainIdentifier Chain identifier string for the smart chain
100
124
  * @param fromAmount Amount of the token
101
- * @param fromToken Token
125
+ * @param fromToken Token address
102
126
  * @param abortSignal
103
- * @param preFetchedPrice Pre-fetched swap price if available
127
+ * @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
104
128
  * @throws {Error} when token is not found
105
129
  */
106
130
  getToBtcSwapAmount<C extends ChainIds<T>>(chainIdentifier: C, fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
107
131
  /**
108
132
  * Returns whether the token should be ignored and pricing for it not calculated
109
- * @param chainIdentifier
110
- * @param tokenAddress
133
+ *
134
+ * @param chainIdentifier Chain identifier string for the smart chain
135
+ * @param tokenAddress Token address
111
136
  * @throws {Error} if token is not found
112
137
  */
113
138
  shouldIgnore<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): boolean;
114
- getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
115
- getTokenUsdValue<C extends ChainIds<T>>(chainId: C, tokenAmount: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
139
+ /**
140
+ * Returns the USD value of the bitcoin amount
141
+ *
142
+ * @param btcSats Bitcoin amount in satoshis
143
+ * @param abortSignal
144
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
145
+ */
146
+ getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
147
+ /**
148
+ * Returns the USD value of the smart chain token amount
149
+ *
150
+ * @param chainIdentifier Chain identifier string for the smart chain
151
+ * @param tokenAmount Amount of the token in base units
152
+ * @param tokenAddress Token address
153
+ * @param abortSignal
154
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
155
+ */
156
+ getTokenUsdValue<C extends ChainIds<T>>(chainIdentifier: C, tokenAmount: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
157
+ /**
158
+ * Returns the USD value of the token amount
159
+ *
160
+ * @param amount Amount in base units of the token
161
+ * @param token Token to fetch the usd price for
162
+ * @param abortSignal
163
+ * @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
164
+ */
116
165
  getUsdValue<C extends ChainIds<T>>(amount: bigint, token: Token<C>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
117
166
  }
@@ -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
+ *
6
7
  * @category Pricing and LPs
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
+ *
10
11
  * @category Pricing and LPs
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
+ *
8
9
  * @category Pricing and LPs
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;
@@ -12,6 +12,12 @@ export type CoinGeckoResponse<Currency extends string> = {
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
  }
@@ -11,10 +11,16 @@ 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;
@@ -14,6 +14,12 @@ export type CoinPaprikaResponse<Currency extends string> = {
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
  }
@@ -11,10 +11,16 @@ 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
+ *
6
7
  * @category Pricing and LPs
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
  }