@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.
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
- package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
- package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
- package/dist/enums/FeeType.d.ts +7 -0
- package/dist/enums/FeeType.js +7 -0
- package/dist/enums/SwapAmountType.d.ts +7 -0
- package/dist/enums/SwapAmountType.js +7 -0
- package/dist/enums/SwapDirection.d.ts +7 -0
- package/dist/enums/SwapDirection.js +7 -0
- package/dist/enums/SwapType.d.ts +62 -1
- package/dist/enums/SwapType.js +62 -1
- package/dist/errors/IntermediaryError.d.ts +4 -0
- package/dist/errors/IntermediaryError.js +1 -0
- package/dist/errors/RequestError.d.ts +15 -1
- package/dist/errors/RequestError.js +8 -0
- package/dist/errors/UserError.d.ts +1 -0
- package/dist/errors/UserError.js +1 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.js +3 -4
- package/dist/intermediaries/Intermediary.d.ts +57 -10
- package/dist/intermediaries/Intermediary.js +37 -10
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
- package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
- package/dist/prices/RedundantSwapPrice.d.ts +24 -3
- package/dist/prices/RedundantSwapPrice.js +21 -1
- package/dist/prices/SingleSwapPrice.d.ts +9 -6
- package/dist/prices/SingleSwapPrice.js +10 -7
- package/dist/prices/SwapPriceWithChain.d.ts +54 -16
- package/dist/prices/SwapPriceWithChain.js +58 -20
- package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
- package/dist/prices/abstract/ISwapPrice.js +103 -55
- package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
- package/dist/prices/providers/BinancePriceProvider.js +7 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
- package/dist/prices/providers/CustomPriceProvider.js +11 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
- package/dist/prices/providers/KrakenPriceProvider.js +9 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
- package/dist/prices/providers/OKXPriceProvider.js +6 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
- package/dist/storage/IUnifiedStorage.d.ts +19 -7
- package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
- package/dist/storage/UnifiedSwapStorage.js +29 -1
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
- package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
- package/dist/storage-browser/LocalStorageManager.js +25 -1
- package/dist/swapper/Swapper.d.ts +302 -221
- package/dist/swapper/Swapper.js +376 -344
- package/dist/swapper/SwapperFactory.d.ts +41 -17
- package/dist/swapper/SwapperFactory.js +23 -2
- package/dist/swapper/SwapperUtils.d.ts +75 -28
- package/dist/swapper/SwapperUtils.js +107 -60
- package/dist/swapper/SwapperWithChain.d.ts +286 -91
- package/dist/swapper/SwapperWithChain.js +218 -64
- package/dist/swapper/SwapperWithSigner.d.ts +229 -80
- package/dist/swapper/SwapperWithSigner.js +190 -44
- package/dist/swaps/IAddressSwap.d.ts +10 -1
- package/dist/swaps/IAddressSwap.js +2 -1
- package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
- package/dist/swaps/IBTCWalletSwap.js +2 -1
- package/dist/swaps/IClaimableSwap.d.ts +36 -4
- package/dist/swaps/IClaimableSwap.js +2 -1
- package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
- package/dist/swaps/IRefundableSwap.d.ts +29 -3
- package/dist/swaps/IRefundableSwap.js +2 -1
- package/dist/swaps/ISwap.d.ts +159 -21
- package/dist/swaps/ISwap.js +90 -33
- package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
- package/dist/swaps/ISwapWithGasDrop.js +1 -0
- package/dist/swaps/ISwapWrapper.d.ts +157 -48
- package/dist/swaps/ISwapWrapper.js +130 -72
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
- package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
- package/dist/types/AmountData.d.ts +2 -1
- package/dist/types/CustomPriceFunction.d.ts +7 -1
- package/dist/types/SwapExecutionAction.d.ts +74 -4
- package/dist/types/SwapWithSigner.d.ts +4 -1
- package/dist/types/SwapWithSigner.js +5 -2
- package/dist/types/Token.d.ts +11 -5
- package/dist/types/Token.js +6 -3
- package/dist/types/TokenAmount.d.ts +3 -0
- package/dist/types/TokenAmount.js +2 -0
- package/dist/types/fees/Fee.d.ts +2 -1
- package/dist/types/fees/FeeBreakdown.d.ts +2 -1
- package/dist/types/fees/PercentagePPM.d.ts +2 -0
- package/dist/types/fees/PercentagePPM.js +1 -0
- package/dist/types/lnurl/LNURLPay.d.ts +14 -6
- package/dist/types/lnurl/LNURLPay.js +6 -2
- package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
- package/dist/types/lnurl/LNURLWithdraw.js +6 -2
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
- package/dist/utils/BitcoinUtils.d.ts +1 -0
- package/dist/utils/BitcoinUtils.js +5 -1
- package/dist/utils/SwapUtils.d.ts +56 -1
- package/dist/utils/SwapUtils.js +53 -1
- package/dist/utils/TokenUtils.d.ts +10 -2
- package/dist/utils/TokenUtils.js +12 -4
- package/package.json +3 -3
- package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
- package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
- package/src/enums/FeeType.ts +7 -0
- package/src/enums/SwapAmountType.ts +7 -0
- package/src/enums/SwapDirection.ts +7 -0
- package/src/enums/SwapType.ts +62 -2
- package/src/errors/IntermediaryError.ts +4 -0
- package/src/errors/RequestError.ts +15 -1
- package/src/errors/UserError.ts +1 -0
- package/src/index.ts +6 -5
- package/src/intermediaries/Intermediary.ts +57 -10
- package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
- package/src/prices/RedundantSwapPrice.ts +24 -4
- package/src/prices/SingleSwapPrice.ts +10 -7
- package/src/prices/SwapPriceWithChain.ts +59 -21
- package/src/prices/abstract/ISwapPrice.ts +114 -65
- package/src/prices/providers/BinancePriceProvider.ts +7 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
- package/src/prices/providers/CustomPriceProvider.ts +11 -0
- package/src/prices/providers/KrakenPriceProvider.ts +9 -0
- package/src/prices/providers/OKXPriceProvider.ts +6 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
- package/src/storage/IUnifiedStorage.ts +19 -7
- package/src/storage/UnifiedSwapStorage.ts +33 -3
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
- package/src/storage-browser/LocalStorageManager.ts +25 -1
- package/src/swapper/Swapper.ts +512 -378
- package/src/swapper/SwapperFactory.ts +44 -21
- package/src/swapper/SwapperUtils.ts +107 -60
- package/src/swapper/SwapperWithChain.ts +320 -81
- package/src/swapper/SwapperWithSigner.ts +263 -56
- package/src/swaps/IAddressSwap.ts +11 -1
- package/src/swaps/IBTCWalletSwap.ts +24 -8
- package/src/swaps/IClaimableSwap.ts +39 -4
- package/src/swaps/IClaimableSwapWrapper.ts +11 -2
- package/src/swaps/IRefundableSwap.ts +32 -3
- package/src/swaps/ISwap.ts +221 -82
- package/src/swaps/ISwapWithGasDrop.ts +6 -0
- package/src/swaps/ISwapWrapper.ts +212 -94
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
- package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
- package/src/types/AmountData.ts +2 -1
- package/src/types/CustomPriceFunction.ts +7 -1
- package/src/types/SwapExecutionAction.ts +84 -5
- package/src/types/SwapWithSigner.ts +7 -3
- package/src/types/Token.ts +12 -5
- package/src/types/TokenAmount.ts +3 -0
- package/src/types/fees/Fee.ts +2 -1
- package/src/types/fees/FeeBreakdown.ts +2 -1
- package/src/types/fees/PercentagePPM.ts +2 -0
- package/src/types/lnurl/LNURLPay.ts +14 -6
- package/src/types/lnurl/LNURLWithdraw.ts +12 -5
- package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
- package/src/utils/BitcoinUtils.ts +5 -0
- package/src/utils/SwapUtils.ts +61 -1
- package/src/utils/TokenUtils.ts +12 -4
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
- package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
- package/dist/bitcoin/LightningNetworkApi.js +0 -2
- package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
- package/dist/bitcoin/mempool/MempoolApi.js +0 -311
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
- package/dist/errors/PaymentAuthError.d.ts +0 -11
- package/dist/errors/PaymentAuthError.js +0 -23
- 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
|
|
13
|
-
*
|
|
14
|
-
* @param
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
|
64
|
+
* @param tokenAddress Token address to be paid
|
|
55
65
|
* @param abortSignal
|
|
56
|
-
* @param preFetchedPrice
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
110
|
+
* Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
|
|
87
111
|
*
|
|
88
|
-
* @param chainIdentifier
|
|
89
|
-
* @param fromAmount
|
|
90
|
-
* @param toToken
|
|
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
|
|
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
|
|
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
|
-
*
|
|
110
|
-
* @param
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
13
|
-
|
|
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}:${
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
59
|
+
* @param tokenAddress Token address to be paid
|
|
51
60
|
* @param abortSignal
|
|
52
|
-
* @param preFetchedPrice
|
|
61
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
53
62
|
*/
|
|
54
|
-
async isValidAmountSend(chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken,
|
|
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,
|
|
59
|
-
if (this.shouldIgnore(chainIdentifier,
|
|
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,
|
|
69
|
-
const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
122
|
+
* @param tokenAddress Token address to be received
|
|
114
123
|
* @param abortSignal
|
|
115
|
-
* @param preFetchedPrice
|
|
124
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
116
125
|
*/
|
|
117
|
-
async isValidAmountReceive(chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken,
|
|
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,
|
|
122
|
-
if (this.shouldIgnore(chainIdentifier,
|
|
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,
|
|
132
|
-
const realPriceUSatPerToken = totalUSats * (10n ** BigInt(this.getDecimalsThrowing(chainIdentifier,
|
|
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
|
-
|
|
145
|
-
|
|
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
|
|
174
|
+
* Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
|
|
152
175
|
*
|
|
153
|
-
* @param chainIdentifier
|
|
154
|
-
* @param fromAmount
|
|
155
|
-
* @param toToken
|
|
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
|
|
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
|
|
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
|
-
*
|
|
191
|
-
* @param
|
|
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
|
-
|
|
201
|
-
|
|
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
|
-
|
|
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(
|
|
206
|
-
|
|
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
|
}
|