@atomiqlabs/sdk 8.1.7 → 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 +303 -222
- 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 +513 -379
- 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
|
@@ -11,7 +11,8 @@ const Logger_1 = require("../utils/Logger");
|
|
|
11
11
|
const HttpUtils_1 = require("../http/HttpUtils");
|
|
12
12
|
const RetryUtils_1 = require("../utils/RetryUtils");
|
|
13
13
|
/**
|
|
14
|
-
* Swap handler type
|
|
14
|
+
* Swap handler type mapping for intermediary communication
|
|
15
|
+
*
|
|
15
16
|
* @category Pricing and LPs
|
|
16
17
|
*/
|
|
17
18
|
var SwapHandlerType;
|
|
@@ -27,7 +28,7 @@ var SwapHandlerType;
|
|
|
27
28
|
})(SwapHandlerType = exports.SwapHandlerType || (exports.SwapHandlerType = {}));
|
|
28
29
|
/**
|
|
29
30
|
* Converts SwapHandlerType (represented as string & used in REST API communication with intermediaries) to regular
|
|
30
|
-
* SwapType
|
|
31
|
+
* {@link SwapType}
|
|
31
32
|
*
|
|
32
33
|
* @param swapHandlerType
|
|
33
34
|
*/
|
|
@@ -52,7 +53,7 @@ function swapHandlerTypeToSwapType(swapHandlerType) {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
|
-
* A default intermediary comparator, only takes
|
|
56
|
+
* A default intermediary comparator, only takes the announced fee into consideration
|
|
56
57
|
*
|
|
57
58
|
* @param swapType
|
|
58
59
|
* @param tokenAddress
|
|
@@ -86,12 +87,16 @@ const REGISTRY_URL = "https://api.github.com/repos/adambor/SolLightning-registry
|
|
|
86
87
|
//To allow for legacy responses from not-yet updated LPs
|
|
87
88
|
const DEFAULT_CHAIN = "SOLANA";
|
|
88
89
|
/**
|
|
89
|
-
* Discovery service for available liquidity providers
|
|
90
|
+
* Discovery service for available intermediaries (liquidity providers)
|
|
91
|
+
*
|
|
90
92
|
* @category Pricing and LPs
|
|
91
93
|
*/
|
|
92
94
|
class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
93
95
|
constructor(swapContracts, registryUrl = REGISTRY_URL, nodeUrls, httpRequestTimeout, maxWaitForOthersTimeout) {
|
|
94
96
|
super();
|
|
97
|
+
/**
|
|
98
|
+
* A current list of active intermediaries
|
|
99
|
+
*/
|
|
95
100
|
this.intermediaries = [];
|
|
96
101
|
this.swapContracts = swapContracts;
|
|
97
102
|
this.registryUrl = registryUrl;
|
|
@@ -189,9 +194,13 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
189
194
|
}
|
|
190
195
|
}
|
|
191
196
|
/**
|
|
192
|
-
* Returns the intermediary at the provided URL, either from the already fetched list of LPs
|
|
197
|
+
* Returns the intermediary at the provided URL, either from the already fetched list of LPs
|
|
198
|
+
* or fetches the data on-demand, by sending the handshake HTTP request (/info) to the LP.
|
|
193
199
|
*
|
|
194
|
-
*
|
|
200
|
+
* Doesn't save the fetched intermediary to the list of intermediaries if it isn't already
|
|
201
|
+
* part of the known intermediaries
|
|
202
|
+
*
|
|
203
|
+
* @param url Base URL of the intermediary, which accepts HTTP requests
|
|
195
204
|
* @param abortSignal
|
|
196
205
|
*/
|
|
197
206
|
getIntermediary(url, abortSignal) {
|
|
@@ -202,6 +211,7 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
202
211
|
}
|
|
203
212
|
/**
|
|
204
213
|
* Reloads the saves a list of intermediaries
|
|
214
|
+
*
|
|
205
215
|
* @param abortSignal
|
|
206
216
|
*/
|
|
207
217
|
async reloadIntermediaries(abortSignal) {
|
|
@@ -236,6 +246,9 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
236
246
|
logger.info("init(): Initializing with registryUrl: " + this.registryUrl + " intermediary array: " + (this.overrideNodeUrls || []).join());
|
|
237
247
|
return this.reloadIntermediaries(abortSignal);
|
|
238
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Returns known swap bounds (in satoshis - BTC) by aggregating values from all known intermediaries
|
|
251
|
+
*/
|
|
239
252
|
getMultichainSwapBounds() {
|
|
240
253
|
const bounds = {};
|
|
241
254
|
this.intermediaries.forEach(intermediary => {
|
|
@@ -265,7 +278,7 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
265
278
|
return bounds;
|
|
266
279
|
}
|
|
267
280
|
/**
|
|
268
|
-
* Returns aggregate swap bounds (in
|
|
281
|
+
* Returns aggregate swap bounds (in satoshis - BTC) as indicated by the intermediaries
|
|
269
282
|
*/
|
|
270
283
|
getSwapBounds(chainIdentifier) {
|
|
271
284
|
const bounds = {};
|
|
@@ -294,15 +307,15 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
294
307
|
return bounds;
|
|
295
308
|
}
|
|
296
309
|
/**
|
|
297
|
-
* Returns the aggregate swap minimum (in
|
|
310
|
+
* Returns the aggregate swap minimum (in satoshis - BTC) for a specific swap type & token
|
|
298
311
|
* as indicated by the intermediaries
|
|
299
312
|
*
|
|
300
|
-
* @param chainIdentifier
|
|
301
|
-
* @param swapType
|
|
302
|
-
* @param
|
|
313
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
314
|
+
* @param swapType Swap protocol type
|
|
315
|
+
* @param tokenAddress Token address
|
|
303
316
|
*/
|
|
304
|
-
getSwapMinimum(chainIdentifier, swapType,
|
|
305
|
-
const tokenStr =
|
|
317
|
+
getSwapMinimum(chainIdentifier, swapType, tokenAddress) {
|
|
318
|
+
const tokenStr = tokenAddress.toString();
|
|
306
319
|
return this.intermediaries.reduce((prevMin, intermediary) => {
|
|
307
320
|
const swapService = intermediary.services[swapType];
|
|
308
321
|
if (swapService == null)
|
|
@@ -316,15 +329,15 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
316
329
|
}, null);
|
|
317
330
|
}
|
|
318
331
|
/**
|
|
319
|
-
* Returns the aggregate swap maximum (in
|
|
332
|
+
* Returns the aggregate swap maximum (in satoshis - BTC) for a specific swap type & token
|
|
320
333
|
* as indicated by the intermediaries
|
|
321
334
|
*
|
|
322
|
-
* @param chainIdentifier
|
|
323
|
-
* @param swapType
|
|
324
|
-
* @param
|
|
335
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
336
|
+
* @param swapType Swap protocol type
|
|
337
|
+
* @param tokenAddress Token address
|
|
325
338
|
*/
|
|
326
|
-
getSwapMaximum(chainIdentifier, swapType,
|
|
327
|
-
const tokenStr =
|
|
339
|
+
getSwapMaximum(chainIdentifier, swapType, tokenAddress) {
|
|
340
|
+
const tokenStr = tokenAddress.toString();
|
|
328
341
|
return this.intermediaries.reduce((prevMax, intermediary) => {
|
|
329
342
|
const swapService = intermediary.services[swapType];
|
|
330
343
|
if (swapService == null)
|
|
@@ -340,9 +353,9 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
340
353
|
/**
|
|
341
354
|
* Returns swap candidates for a specific swap type & token address
|
|
342
355
|
*
|
|
343
|
-
* @param chainIdentifier
|
|
344
|
-
* @param swapType
|
|
345
|
-
* @param tokenAddress
|
|
356
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
357
|
+
* @param swapType Swap protocol type
|
|
358
|
+
* @param tokenAddress Token address
|
|
346
359
|
* @param amount Amount to be swapped in sats - BTC
|
|
347
360
|
* @param count How many intermediaries to return at most
|
|
348
361
|
*/
|
|
@@ -3,6 +3,7 @@ import { ICachedSwapPrice } from "./abstract/ICachedSwapPrice";
|
|
|
3
3
|
import { ChainIds, MultiChain } from "../swapper/Swapper";
|
|
4
4
|
/**
|
|
5
5
|
* Asset configuration for redundant swap pricing
|
|
6
|
+
*
|
|
6
7
|
* @category Pricing and LPs
|
|
7
8
|
*/
|
|
8
9
|
export type RedundantSwapPriceAssets<T extends MultiChain> = {
|
|
@@ -34,12 +35,22 @@ type CoinDecimals<T extends MultiChain> = {
|
|
|
34
35
|
/**
|
|
35
36
|
* Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such
|
|
36
37
|
* that there always is a functional API
|
|
38
|
+
*
|
|
37
39
|
* @category Pricing and LPs
|
|
38
40
|
*/
|
|
39
41
|
export declare class RedundantSwapPrice<T extends MultiChain> extends ICachedSwapPrice<T> {
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new {@link RedundantSwapPrice} instance from an asset list and other data, using all
|
|
44
|
+
* the available price providers: {@link BinancePriceProvider}, {@link OKXPriceProvider},
|
|
45
|
+
* {@link CoinGeckoPriceProvider}, {@link CoinPaprikaPriceProvider}, {@link KrakenPriceProvider}
|
|
46
|
+
*
|
|
47
|
+
* @param maxAllowedFeeDiffPPM Maximum allowed price difference between returned swap prices & market prices
|
|
48
|
+
* @param assets Specifications of the assets
|
|
49
|
+
* @param cacheTimeout Timeout of the internal cache holding prices
|
|
50
|
+
*/
|
|
40
51
|
static createFromTokenMap<T extends MultiChain>(maxAllowedFeeDiffPPM: bigint, assets: RedundantSwapPriceAssets<T>, cacheTimeout?: number): RedundantSwapPrice<T>;
|
|
41
|
-
coinsDecimals: CoinDecimals<T>;
|
|
42
|
-
priceApis: {
|
|
52
|
+
protected coinsDecimals: CoinDecimals<T>;
|
|
53
|
+
protected priceApis: {
|
|
43
54
|
priceApi: IPriceProvider<T>;
|
|
44
55
|
operational?: boolean;
|
|
45
56
|
}[];
|
|
@@ -73,9 +84,12 @@ export declare class RedundantSwapPrice<T extends MultiChain> extends ICachedSwa
|
|
|
73
84
|
* @param chainIdentifier
|
|
74
85
|
* @param token
|
|
75
86
|
* @param abortSignal
|
|
76
|
-
* @
|
|
87
|
+
* @protected
|
|
77
88
|
*/
|
|
78
89
|
protected fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
90
|
+
/**
|
|
91
|
+
* @inheritDoc
|
|
92
|
+
*/
|
|
79
93
|
protected getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
|
|
80
94
|
/**
|
|
81
95
|
* Fetches BTC price in USD in parallel from multiple maybe operational price APIs
|
|
@@ -84,6 +98,13 @@ export declare class RedundantSwapPrice<T extends MultiChain> extends ICachedSwa
|
|
|
84
98
|
* @private
|
|
85
99
|
*/
|
|
86
100
|
private fetchUsdPriceFromMaybeOperationalPriceApis;
|
|
101
|
+
/**
|
|
102
|
+
* Fetches the USD prices, first tries to use the operational price API (if any) and if that fails it falls back
|
|
103
|
+
* to using maybe operational price APIs
|
|
104
|
+
*
|
|
105
|
+
* @param abortSignal
|
|
106
|
+
* @protected
|
|
107
|
+
*/
|
|
87
108
|
protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
88
109
|
}
|
|
89
110
|
export {};
|
|
@@ -15,9 +15,19 @@ const logger = (0, Logger_1.getLogger)("RedundantSwapPrice: ");
|
|
|
15
15
|
/**
|
|
16
16
|
* Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such
|
|
17
17
|
* that there always is a functional API
|
|
18
|
+
*
|
|
18
19
|
* @category Pricing and LPs
|
|
19
20
|
*/
|
|
20
21
|
class RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new {@link RedundantSwapPrice} instance from an asset list and other data, using all
|
|
24
|
+
* the available price providers: {@link BinancePriceProvider}, {@link OKXPriceProvider},
|
|
25
|
+
* {@link CoinGeckoPriceProvider}, {@link CoinPaprikaPriceProvider}, {@link KrakenPriceProvider}
|
|
26
|
+
*
|
|
27
|
+
* @param maxAllowedFeeDiffPPM Maximum allowed price difference between returned swap prices & market prices
|
|
28
|
+
* @param assets Specifications of the assets
|
|
29
|
+
* @param cacheTimeout Timeout of the internal cache holding prices
|
|
30
|
+
*/
|
|
21
31
|
static createFromTokenMap(maxAllowedFeeDiffPPM, assets, cacheTimeout) {
|
|
22
32
|
const priceApis = [
|
|
23
33
|
new BinancePriceProvider_1.BinancePriceProvider(assets.map(coinData => {
|
|
@@ -130,7 +140,7 @@ class RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
|
130
140
|
* @param chainIdentifier
|
|
131
141
|
* @param token
|
|
132
142
|
* @param abortSignal
|
|
133
|
-
* @
|
|
143
|
+
* @protected
|
|
134
144
|
*/
|
|
135
145
|
fetchPrice(chainIdentifier, token, abortSignal) {
|
|
136
146
|
return (0, RetryUtils_1.tryWithRetries)(async () => {
|
|
@@ -149,6 +159,9 @@ class RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
|
149
159
|
return await this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);
|
|
150
160
|
}, undefined, RequestError_1.RequestError, abortSignal);
|
|
151
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* @inheritDoc
|
|
164
|
+
*/
|
|
152
165
|
getDecimals(chainIdentifier, token) {
|
|
153
166
|
if (this.coinsDecimals[chainIdentifier] == null)
|
|
154
167
|
return null;
|
|
@@ -184,6 +197,13 @@ class RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
|
184
197
|
throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];
|
|
185
198
|
}
|
|
186
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Fetches the USD prices, first tries to use the operational price API (if any) and if that fails it falls back
|
|
202
|
+
* to using maybe operational price APIs
|
|
203
|
+
*
|
|
204
|
+
* @param abortSignal
|
|
205
|
+
* @protected
|
|
206
|
+
*/
|
|
187
207
|
fetchUsdPrice(abortSignal) {
|
|
188
208
|
return (0, RetryUtils_1.tryWithRetries)(() => {
|
|
189
209
|
const operationalPriceApi = this.getOperationalPriceApi();
|
|
@@ -2,7 +2,8 @@ import { IPriceProvider } from "./abstract/IPriceProvider";
|
|
|
2
2
|
import { ICachedSwapPrice } from "./abstract/ICachedSwapPrice";
|
|
3
3
|
import { ChainIds, MultiChain } from "../swapper/Swapper";
|
|
4
4
|
/**
|
|
5
|
-
* Swap price API using single price source
|
|
5
|
+
* Swap price API using a single price source
|
|
6
|
+
*
|
|
6
7
|
* @category Pricing and LPs
|
|
7
8
|
*/
|
|
8
9
|
export declare class SingleSwapPrice<T extends MultiChain> extends ICachedSwapPrice<T> {
|
|
@@ -19,13 +20,15 @@ export declare class SingleSwapPrice<T extends MultiChain> extends ICachedSwapPr
|
|
|
19
20
|
*/
|
|
20
21
|
protected fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
-
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
protected getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
|
|
26
|
+
/**
|
|
27
|
+
* Fetches BTC price in USD
|
|
24
28
|
*
|
|
25
|
-
* @param
|
|
26
|
-
* @param token
|
|
29
|
+
* @param abortSignal
|
|
27
30
|
* @protected
|
|
31
|
+
* @returns token price in uSats (micro sats)
|
|
28
32
|
*/
|
|
29
|
-
protected getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
|
|
30
33
|
protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
31
34
|
}
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SingleSwapPrice = void 0;
|
|
4
4
|
const ICachedSwapPrice_1 = require("./abstract/ICachedSwapPrice");
|
|
5
5
|
/**
|
|
6
|
-
* Swap price API using single price source
|
|
6
|
+
* Swap price API using a single price source
|
|
7
|
+
*
|
|
7
8
|
* @category Pricing and LPs
|
|
8
9
|
*/
|
|
9
10
|
class SingleSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
@@ -24,16 +25,18 @@ class SingleSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
|
24
25
|
return this.priceProvider.getPrice(chainIdentifier, token, abortSignal);
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
|
-
*
|
|
28
|
-
* token is not found
|
|
29
|
-
*
|
|
30
|
-
* @param chainIdentifier
|
|
31
|
-
* @param token
|
|
32
|
-
* @protected
|
|
28
|
+
* @inheritDoc
|
|
33
29
|
*/
|
|
34
30
|
getDecimals(chainIdentifier, token) {
|
|
35
31
|
return this.priceProvider.getDecimals(chainIdentifier, token.toString());
|
|
36
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Fetches BTC price in USD
|
|
35
|
+
*
|
|
36
|
+
* @param abortSignal
|
|
37
|
+
* @protected
|
|
38
|
+
* @returns token price in uSats (micro sats)
|
|
39
|
+
*/
|
|
37
40
|
fetchUsdPrice(abortSignal) {
|
|
38
41
|
return this.priceProvider.getUsdPrice(abortSignal);
|
|
39
42
|
}
|
|
@@ -4,6 +4,7 @@ import { Token } from "../types/Token";
|
|
|
4
4
|
import { PriceInfoType } from "../types/PriceInfoType";
|
|
5
5
|
/**
|
|
6
6
|
* Chain-specific wrapper for swap pricing
|
|
7
|
+
*
|
|
7
8
|
* @category Pricing and LPs
|
|
8
9
|
*/
|
|
9
10
|
export declare class SwapPriceWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
|
|
@@ -18,11 +19,11 @@ export declare class SwapPriceWithChain<T extends MultiChain, ChainIdentifier ex
|
|
|
18
19
|
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
19
20
|
* @param feePPM PPM fee rate as reported by the intermediary
|
|
20
21
|
* @param paidToken Amount of token to be paid to the swap
|
|
21
|
-
* @param
|
|
22
|
+
* @param tokenAddress Token address to be paid
|
|
22
23
|
* @param abortSignal
|
|
23
|
-
* @param preFetchedPrice
|
|
24
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
24
25
|
*/
|
|
25
|
-
isValidAmountSend(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint,
|
|
26
|
+
isValidAmountSend(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
|
|
26
27
|
/**
|
|
27
28
|
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
28
29
|
*
|
|
@@ -30,41 +31,78 @@ export declare class SwapPriceWithChain<T extends MultiChain, ChainIdentifier ex
|
|
|
30
31
|
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
31
32
|
* @param feePPM PPM fee rate as reported by the intermediary
|
|
32
33
|
* @param receiveToken Amount of token to be received from the swap
|
|
33
|
-
* @param
|
|
34
|
+
* @param tokenAddress Token address to be received
|
|
35
|
+
* @param abortSignal
|
|
36
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
37
|
+
*/
|
|
38
|
+
isValidAmountReceive(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
|
|
39
|
+
/**
|
|
40
|
+
* Pre-fetches the pricing data for a given token, such that further calls to {@link isValidAmountReceive} or
|
|
41
|
+
* {@link isValidAmountSend} are quicker and don't need to wait for the price fetch
|
|
42
|
+
*
|
|
43
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
44
|
+
* @param tokenAddress Token address
|
|
34
45
|
* @param abortSignal
|
|
35
|
-
* @param preFetchedPrice Already pre-fetched price
|
|
36
46
|
*/
|
|
37
|
-
isValidAmountReceive(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
|
|
38
47
|
preFetchPrice(token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
48
|
+
/**
|
|
49
|
+
* Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
|
|
50
|
+
* {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
|
|
51
|
+
*
|
|
52
|
+
* @param abortSignal
|
|
53
|
+
*/
|
|
39
54
|
preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
40
55
|
/**
|
|
41
|
-
* Returns amount of
|
|
56
|
+
* Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
|
|
42
57
|
*
|
|
43
|
-
* @param fromAmount
|
|
44
|
-
* @param toToken
|
|
58
|
+
* @param fromAmount Amount of satoshis
|
|
59
|
+
* @param toToken Token address
|
|
45
60
|
* @param abortSignal
|
|
46
|
-
* @param preFetchedPrice
|
|
61
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
47
62
|
* @throws {Error} when token is not found
|
|
48
63
|
*/
|
|
49
64
|
getFromBtcSwapAmount(fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
50
65
|
/**
|
|
51
|
-
* Returns amount of satoshis that are equivalent to
|
|
66
|
+
* Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
|
|
52
67
|
*
|
|
53
68
|
* @param fromAmount Amount of the token
|
|
54
|
-
* @param fromToken Token
|
|
69
|
+
* @param fromToken Token address
|
|
55
70
|
* @param abortSignal
|
|
56
|
-
* @param preFetchedPrice
|
|
71
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
57
72
|
* @throws {Error} when token is not found
|
|
58
73
|
*/
|
|
59
74
|
getToBtcSwapAmount(fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
60
75
|
/**
|
|
61
76
|
* Returns whether the token should be ignored and pricing for it not calculated
|
|
62
77
|
*
|
|
63
|
-
* @param tokenAddress
|
|
78
|
+
* @param tokenAddress Token address
|
|
64
79
|
* @throws {Error} if token is not found
|
|
65
80
|
*/
|
|
66
81
|
shouldIgnore(tokenAddress: string): boolean;
|
|
67
|
-
|
|
68
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Returns the USD value of the bitcoin amount
|
|
84
|
+
*
|
|
85
|
+
* @param btcSats Bitcoin amount in satoshis
|
|
86
|
+
* @param abortSignal
|
|
87
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
88
|
+
*/
|
|
89
|
+
getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the USD value of the smart chain token amount
|
|
92
|
+
*
|
|
93
|
+
* @param tokenAmount Amount of the token in base units
|
|
94
|
+
* @param tokenAddress Token address
|
|
95
|
+
* @param abortSignal
|
|
96
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
97
|
+
*/
|
|
98
|
+
getTokenUsdValue(tokenAmount: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
99
|
+
/**
|
|
100
|
+
* Returns the USD value of the token amount
|
|
101
|
+
*
|
|
102
|
+
* @param amount Amount in base units of the token
|
|
103
|
+
* @param token Token to fetch the usd price for
|
|
104
|
+
* @param abortSignal
|
|
105
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
106
|
+
*/
|
|
69
107
|
getUsdValue(amount: bigint, token: Token<ChainIdentifier>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
70
108
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SwapPriceWithChain = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Chain-specific wrapper for swap pricing
|
|
6
|
+
*
|
|
6
7
|
* @category Pricing and LPs
|
|
7
8
|
*/
|
|
8
9
|
class SwapPriceWithChain {
|
|
@@ -18,12 +19,12 @@ class SwapPriceWithChain {
|
|
|
18
19
|
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
19
20
|
* @param feePPM PPM fee rate as reported by the intermediary
|
|
20
21
|
* @param paidToken Amount of token to be paid to the swap
|
|
21
|
-
* @param
|
|
22
|
+
* @param tokenAddress Token address to be paid
|
|
22
23
|
* @param abortSignal
|
|
23
|
-
* @param preFetchedPrice
|
|
24
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
24
25
|
*/
|
|
25
|
-
async isValidAmountSend(amountSats, satsBaseFee, feePPM, paidToken,
|
|
26
|
-
return this.swapPrice.isValidAmountSend(this.chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken,
|
|
26
|
+
async isValidAmountSend(amountSats, satsBaseFee, feePPM, paidToken, tokenAddress, abortSignal, preFetchedPrice) {
|
|
27
|
+
return this.swapPrice.isValidAmountSend(this.chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, tokenAddress, abortSignal, preFetchedPrice);
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Checks whether the swap amounts are valid given the current market rate for a given pair
|
|
@@ -32,38 +33,52 @@ class SwapPriceWithChain {
|
|
|
32
33
|
* @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
|
|
33
34
|
* @param feePPM PPM fee rate as reported by the intermediary
|
|
34
35
|
* @param receiveToken Amount of token to be received from the swap
|
|
35
|
-
* @param
|
|
36
|
+
* @param tokenAddress Token address to be received
|
|
36
37
|
* @param abortSignal
|
|
37
|
-
* @param preFetchedPrice
|
|
38
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
38
39
|
*/
|
|
39
|
-
async isValidAmountReceive(amountSats, satsBaseFee, feePPM, receiveToken,
|
|
40
|
-
return this.swapPrice.isValidAmountReceive(this.chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken,
|
|
40
|
+
async isValidAmountReceive(amountSats, satsBaseFee, feePPM, receiveToken, tokenAddress, abortSignal, preFetchedPrice) {
|
|
41
|
+
return this.swapPrice.isValidAmountReceive(this.chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, tokenAddress, abortSignal, preFetchedPrice);
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Pre-fetches the pricing data for a given token, such that further calls to {@link isValidAmountReceive} or
|
|
45
|
+
* {@link isValidAmountSend} are quicker and don't need to wait for the price fetch
|
|
46
|
+
*
|
|
47
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
48
|
+
* @param tokenAddress Token address
|
|
49
|
+
* @param abortSignal
|
|
50
|
+
*/
|
|
42
51
|
preFetchPrice(token, abortSignal) {
|
|
43
52
|
return this.swapPrice.preFetchPrice(this.chainIdentifier, token, abortSignal);
|
|
44
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
|
|
56
|
+
* {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
|
|
57
|
+
*
|
|
58
|
+
* @param abortSignal
|
|
59
|
+
*/
|
|
45
60
|
preFetchUsdPrice(abortSignal) {
|
|
46
61
|
return this.swapPrice.preFetchUsdPrice(abortSignal);
|
|
47
62
|
}
|
|
48
63
|
/**
|
|
49
|
-
* Returns amount of
|
|
64
|
+
* Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
|
|
50
65
|
*
|
|
51
|
-
* @param fromAmount
|
|
52
|
-
* @param toToken
|
|
66
|
+
* @param fromAmount Amount of satoshis
|
|
67
|
+
* @param toToken Token address
|
|
53
68
|
* @param abortSignal
|
|
54
|
-
* @param preFetchedPrice
|
|
69
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
55
70
|
* @throws {Error} when token is not found
|
|
56
71
|
*/
|
|
57
72
|
async getFromBtcSwapAmount(fromAmount, toToken, abortSignal, preFetchedPrice) {
|
|
58
73
|
return this.swapPrice.getFromBtcSwapAmount(this.chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice);
|
|
59
74
|
}
|
|
60
75
|
/**
|
|
61
|
-
* Returns amount of satoshis that are equivalent to
|
|
76
|
+
* Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
|
|
62
77
|
*
|
|
63
78
|
* @param fromAmount Amount of the token
|
|
64
|
-
* @param fromToken Token
|
|
79
|
+
* @param fromToken Token address
|
|
65
80
|
* @param abortSignal
|
|
66
|
-
* @param preFetchedPrice
|
|
81
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
67
82
|
* @throws {Error} when token is not found
|
|
68
83
|
*/
|
|
69
84
|
async getToBtcSwapAmount(fromAmount, fromToken, abortSignal, preFetchedPrice) {
|
|
@@ -72,18 +87,41 @@ class SwapPriceWithChain {
|
|
|
72
87
|
/**
|
|
73
88
|
* Returns whether the token should be ignored and pricing for it not calculated
|
|
74
89
|
*
|
|
75
|
-
* @param tokenAddress
|
|
90
|
+
* @param tokenAddress Token address
|
|
76
91
|
* @throws {Error} if token is not found
|
|
77
92
|
*/
|
|
78
93
|
shouldIgnore(tokenAddress) {
|
|
79
94
|
return this.swapPrice.shouldIgnore(this.chainIdentifier, tokenAddress);
|
|
80
95
|
}
|
|
81
|
-
|
|
82
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Returns the USD value of the bitcoin amount
|
|
98
|
+
*
|
|
99
|
+
* @param btcSats Bitcoin amount in satoshis
|
|
100
|
+
* @param abortSignal
|
|
101
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
102
|
+
*/
|
|
103
|
+
async getBtcUsdValue(btcSats, abortSignal, preFetchedUsdPrice) {
|
|
104
|
+
return this.swapPrice.getBtcUsdValue(btcSats, abortSignal, preFetchedUsdPrice);
|
|
83
105
|
}
|
|
84
|
-
|
|
85
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Returns the USD value of the smart chain token amount
|
|
108
|
+
*
|
|
109
|
+
* @param tokenAmount Amount of the token in base units
|
|
110
|
+
* @param tokenAddress Token address
|
|
111
|
+
* @param abortSignal
|
|
112
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
113
|
+
*/
|
|
114
|
+
async getTokenUsdValue(tokenAmount, tokenAddress, abortSignal, preFetchedUsdPrice) {
|
|
115
|
+
return this.swapPrice.getTokenUsdValue(this.chainIdentifier, tokenAmount, tokenAddress, abortSignal, preFetchedUsdPrice);
|
|
86
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Returns the USD value of the token amount
|
|
119
|
+
*
|
|
120
|
+
* @param amount Amount in base units of the token
|
|
121
|
+
* @param token Token to fetch the usd price for
|
|
122
|
+
* @param abortSignal
|
|
123
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
124
|
+
*/
|
|
87
125
|
getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {
|
|
88
126
|
return this.swapPrice.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);
|
|
89
127
|
}
|