@atomiqlabs/sdk 8.1.8 → 8.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bitcoin/coinselect2/utils.d.ts +6 -0
- 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 +8 -1
- package/dist/enums/FeeType.js +8 -1
- 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 +5 -5
- package/dist/index.js +7 -6
- package/dist/intermediaries/Intermediary.d.ts +61 -14
- package/dist/intermediaries/Intermediary.js +38 -11
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +62 -29
- package/dist/intermediaries/IntermediaryDiscovery.js +39 -24
- package/dist/prices/RedundantSwapPrice.d.ts +26 -5
- package/dist/prices/RedundantSwapPrice.js +22 -2
- package/dist/prices/SingleSwapPrice.d.ts +10 -7
- package/dist/prices/SingleSwapPrice.js +11 -8
- package/dist/prices/SwapPriceWithChain.d.ts +56 -19
- package/dist/prices/SwapPriceWithChain.js +62 -25
- package/dist/prices/abstract/IPriceProvider.d.ts +4 -4
- package/dist/prices/abstract/IPriceProvider.js +1 -1
- package/dist/prices/abstract/ISwapPrice.d.ts +95 -46
- package/dist/prices/abstract/ISwapPrice.js +104 -56
- package/dist/prices/providers/BinancePriceProvider.d.ts +8 -1
- package/dist/prices/providers/BinancePriceProvider.js +8 -1
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +7 -1
- package/dist/prices/providers/CoinGeckoPriceProvider.js +7 -1
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +7 -1
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +7 -1
- package/dist/prices/providers/CustomPriceProvider.d.ts +12 -1
- package/dist/prices/providers/CustomPriceProvider.js +12 -1
- package/dist/prices/providers/KrakenPriceProvider.d.ts +10 -1
- package/dist/prices/providers/KrakenPriceProvider.js +10 -1
- package/dist/prices/providers/OKXPriceProvider.d.ts +7 -1
- package/dist/prices/providers/OKXPriceProvider.js +7 -1
- 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 +380 -226
- package/dist/swapper/Swapper.js +383 -349
- package/dist/swapper/SwapperFactory.d.ts +66 -18
- package/dist/swapper/SwapperFactory.js +24 -3
- 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 +12 -3
- package/dist/swaps/IAddressSwap.js +3 -2
- package/dist/swaps/IBTCWalletSwap.d.ts +26 -8
- package/dist/swaps/IBTCWalletSwap.js +3 -2
- package/dist/swaps/IClaimableSwap.d.ts +38 -6
- package/dist/swaps/IClaimableSwap.js +3 -2
- package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
- package/dist/swaps/IRefundableSwap.d.ts +31 -5
- package/dist/swaps/IRefundableSwap.js +3 -2
- package/dist/swaps/ISwap.d.ts +162 -24
- package/dist/swaps/ISwap.js +92 -35
- package/dist/swaps/ISwapWithGasDrop.d.ts +8 -2
- package/dist/swaps/ISwapWithGasDrop.js +2 -1
- package/dist/swaps/ISwapWrapper.d.ts +161 -52
- package/dist/swaps/ISwapWrapper.js +131 -73
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +51 -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 +97 -28
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +91 -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 +278 -60
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +519 -241
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +77 -26
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +132 -50
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +313 -52
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +544 -194
- 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 +222 -55
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +462 -244
- 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 +195 -58
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +324 -191
- 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 +61 -20
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +75 -32
- 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 +37 -14
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +66 -20
- 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 +350 -88
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +482 -215
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +247 -124
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +148 -20
- package/dist/swaps/trusted/ln/LnForGasSwap.js +175 -45
- 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 +202 -49
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +232 -80
- 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 +8 -2
- package/dist/types/PriceInfoType.d.ts +4 -4
- package/dist/types/PriceInfoType.js +3 -3
- package/dist/types/SwapExecutionAction.d.ts +85 -4
- package/dist/types/SwapWithSigner.d.ts +5 -2
- 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 +3 -2
- package/dist/types/fees/FeeBreakdown.d.ts +3 -2
- package/dist/types/fees/PercentagePPM.d.ts +4 -2
- package/dist/types/fees/PercentagePPM.js +2 -1
- package/dist/types/lnurl/LNURLPay.d.ts +20 -12
- package/dist/types/lnurl/LNURLPay.js +8 -4
- package/dist/types/lnurl/LNURLWithdraw.d.ts +17 -10
- package/dist/types/lnurl/LNURLWithdraw.js +8 -4
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -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 +4 -2
- package/dist/utils/BitcoinUtils.d.ts +1 -0
- package/dist/utils/BitcoinUtils.js +5 -1
- package/dist/utils/SwapUtils.d.ts +58 -1
- package/dist/utils/SwapUtils.js +55 -1
- package/dist/utils/TokenUtils.d.ts +10 -2
- package/dist/utils/TokenUtils.js +12 -4
- package/package.json +3 -3
- package/src/bitcoin/coinselect2/utils.ts +6 -0
- 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 +8 -1
- 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 +12 -5
- package/src/intermediaries/Intermediary.ts +61 -14
- package/src/intermediaries/IntermediaryDiscovery.ts +69 -34
- package/src/prices/RedundantSwapPrice.ts +26 -6
- package/src/prices/SingleSwapPrice.ts +11 -8
- package/src/prices/SwapPriceWithChain.ts +63 -26
- package/src/prices/abstract/IPriceProvider.ts +4 -4
- package/src/prices/abstract/ISwapPrice.ts +115 -66
- package/src/prices/providers/BinancePriceProvider.ts +8 -1
- package/src/prices/providers/CoinGeckoPriceProvider.ts +7 -1
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +7 -1
- package/src/prices/providers/CustomPriceProvider.ts +12 -1
- package/src/prices/providers/KrakenPriceProvider.ts +10 -1
- package/src/prices/providers/OKXPriceProvider.ts +7 -1
- 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 +599 -390
- package/src/swapper/SwapperFactory.ts +73 -24
- 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 +13 -3
- package/src/swaps/IBTCWalletSwap.ts +26 -10
- package/src/swaps/IClaimableSwap.ts +41 -6
- package/src/swaps/IClaimableSwapWrapper.ts +11 -2
- package/src/swaps/IRefundableSwap.ts +34 -5
- package/src/swaps/ISwap.ts +224 -85
- package/src/swaps/ISwapWithGasDrop.ts +8 -2
- package/src/swaps/ISwapWrapper.ts +216 -98
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +64 -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 +123 -50
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +562 -258
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +156 -62
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +592 -227
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +483 -245
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +350 -195
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +87 -40
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +89 -34
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +556 -259
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +292 -148
- package/src/swaps/trusted/ln/LnForGasSwap.ts +186 -47
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +262 -88
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
- package/src/types/AmountData.ts +2 -1
- package/src/types/CustomPriceFunction.ts +8 -2
- package/src/types/PriceInfoType.ts +4 -4
- package/src/types/SwapExecutionAction.ts +97 -5
- package/src/types/SwapWithSigner.ts +8 -4
- package/src/types/Token.ts +12 -5
- package/src/types/TokenAmount.ts +3 -0
- package/src/types/fees/Fee.ts +3 -2
- package/src/types/fees/FeeBreakdown.ts +3 -2
- package/src/types/fees/PercentagePPM.ts +4 -2
- package/src/types/lnurl/LNURLPay.ts +20 -12
- package/src/types/lnurl/LNURLWithdraw.ts +17 -10
- package/src/types/wallets/LightningInvoiceCreateService.ts +30 -0
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +4 -2
- package/src/utils/BitcoinUtils.ts +5 -0
- package/src/utils/SwapUtils.ts +63 -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
|
@@ -4,8 +4,9 @@ import { SwapType } from "../enums/SwapType";
|
|
|
4
4
|
import { SwapContract } from "@atomiqlabs/base";
|
|
5
5
|
import { EventEmitter } from "events";
|
|
6
6
|
/**
|
|
7
|
-
* Swap handler type
|
|
8
|
-
*
|
|
7
|
+
* Swap handler type mapping for intermediary communication
|
|
8
|
+
*
|
|
9
|
+
* @category LPs
|
|
9
10
|
*/
|
|
10
11
|
export declare enum SwapHandlerType {
|
|
11
12
|
TO_BTC = "TO_BTC",
|
|
@@ -19,7 +20,8 @@ export declare enum SwapHandlerType {
|
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Swap handler information type
|
|
22
|
-
*
|
|
23
|
+
*
|
|
24
|
+
* @category LPs
|
|
23
25
|
*/
|
|
24
26
|
export type SwapHandlerInfoType = {
|
|
25
27
|
swapFeePPM: number;
|
|
@@ -34,7 +36,8 @@ export type SwapHandlerInfoType = {
|
|
|
34
36
|
};
|
|
35
37
|
/**
|
|
36
38
|
* Token bounds (min/max) for swaps
|
|
37
|
-
*
|
|
39
|
+
*
|
|
40
|
+
* @category LPs
|
|
38
41
|
*/
|
|
39
42
|
export type TokenBounds = {
|
|
40
43
|
[token: string]: {
|
|
@@ -43,41 +46,63 @@ export type TokenBounds = {
|
|
|
43
46
|
};
|
|
44
47
|
};
|
|
45
48
|
/**
|
|
46
|
-
* Multi-chain token bounds
|
|
47
|
-
*
|
|
49
|
+
* Multi-chain token bounds (min/max) for swaps
|
|
50
|
+
*
|
|
51
|
+
* @category LPs
|
|
48
52
|
*/
|
|
49
53
|
export type MultichainTokenBounds = {
|
|
50
54
|
[chainId: string]: TokenBounds;
|
|
51
55
|
};
|
|
52
56
|
/**
|
|
53
|
-
* Swap bounds by type
|
|
54
|
-
*
|
|
57
|
+
* Swap bounds by swap protocol type
|
|
58
|
+
*
|
|
59
|
+
* @category LPs
|
|
55
60
|
*/
|
|
56
61
|
export type SwapBounds = {
|
|
57
62
|
[key in SwapType]?: TokenBounds;
|
|
58
63
|
};
|
|
59
64
|
/**
|
|
60
65
|
* Multi-chain swap bounds
|
|
61
|
-
*
|
|
66
|
+
*
|
|
67
|
+
* @category LPs
|
|
62
68
|
*/
|
|
63
69
|
export type MultichainSwapBounds = {
|
|
64
70
|
[key in SwapType]?: MultichainTokenBounds;
|
|
65
71
|
};
|
|
66
72
|
/**
|
|
67
|
-
* Discovery service for available liquidity providers
|
|
68
|
-
*
|
|
73
|
+
* Discovery service for available intermediaries (liquidity providers)
|
|
74
|
+
*
|
|
75
|
+
* @category LPs
|
|
69
76
|
*/
|
|
70
77
|
export declare class IntermediaryDiscovery extends EventEmitter {
|
|
78
|
+
/**
|
|
79
|
+
* A current list of active intermediaries
|
|
80
|
+
*/
|
|
71
81
|
intermediaries: Intermediary[];
|
|
82
|
+
/**
|
|
83
|
+
* Swap contracts for checking intermediary signatures
|
|
84
|
+
*/
|
|
72
85
|
swapContracts: {
|
|
73
86
|
[key: string]: SwapContract;
|
|
74
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Registry URL used as a source for the list of intermediaries, this should be a link to a
|
|
90
|
+
* github-hosted JSON file
|
|
91
|
+
*/
|
|
75
92
|
registryUrl: string;
|
|
93
|
+
/**
|
|
94
|
+
* Timeout for the HTTP handshake (/info) requests sent to the intermediaries
|
|
95
|
+
*/
|
|
76
96
|
httpRequestTimeout?: number;
|
|
77
97
|
/**
|
|
78
|
-
* Maximum time (in millis) to wait for other
|
|
98
|
+
* Maximum time (in millis) to wait for other intermediary's responses after the first one was founds
|
|
79
99
|
*/
|
|
80
100
|
maxWaitForOthersTimeout?: number;
|
|
101
|
+
/**
|
|
102
|
+
* The intermediary URLs passed in the constructor, to be used instead of querying the registry
|
|
103
|
+
*
|
|
104
|
+
* @private
|
|
105
|
+
*/
|
|
81
106
|
private overrideNodeUrls?;
|
|
82
107
|
constructor(swapContracts: {
|
|
83
108
|
[key: string]: SwapContract;
|
|
@@ -107,14 +132,19 @@ export declare class IntermediaryDiscovery extends EventEmitter {
|
|
|
107
132
|
*/
|
|
108
133
|
private loadIntermediary;
|
|
109
134
|
/**
|
|
110
|
-
* Returns the intermediary at the provided URL, either from the already fetched list of LPs
|
|
135
|
+
* Returns the intermediary at the provided URL, either from the already fetched list of LPs
|
|
136
|
+
* or fetches the data on-demand, by sending the handshake HTTP request (/info) to the LP.
|
|
111
137
|
*
|
|
112
|
-
*
|
|
138
|
+
* Doesn't save the fetched intermediary to the list of intermediaries if it isn't already
|
|
139
|
+
* part of the known intermediaries
|
|
140
|
+
*
|
|
141
|
+
* @param url Base URL of the intermediary, which accepts HTTP requests
|
|
113
142
|
* @param abortSignal
|
|
114
143
|
*/
|
|
115
144
|
getIntermediary(url: string, abortSignal?: AbortSignal): Promise<Intermediary | null>;
|
|
116
145
|
/**
|
|
117
146
|
* Reloads the saves a list of intermediaries
|
|
147
|
+
*
|
|
118
148
|
* @param abortSignal
|
|
119
149
|
*/
|
|
120
150
|
reloadIntermediaries(abortSignal?: AbortSignal): Promise<void>;
|
|
@@ -124,39 +154,42 @@ export declare class IntermediaryDiscovery extends EventEmitter {
|
|
|
124
154
|
* @param abortSignal
|
|
125
155
|
*/
|
|
126
156
|
init(abortSignal?: AbortSignal): Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* Returns known swap bounds (in satoshis - BTC) by aggregating values from all known intermediaries
|
|
159
|
+
*/
|
|
127
160
|
getMultichainSwapBounds(): MultichainSwapBounds;
|
|
128
161
|
/**
|
|
129
|
-
* Returns aggregate swap bounds (in
|
|
162
|
+
* Returns aggregate swap bounds (in satoshis - BTC) as indicated by the intermediaries
|
|
130
163
|
*/
|
|
131
164
|
getSwapBounds(chainIdentifier: string): SwapBounds;
|
|
132
165
|
/**
|
|
133
|
-
* Returns the aggregate swap minimum (in
|
|
166
|
+
* Returns the aggregate swap minimum (in satoshis - BTC) for a specific swap type & token
|
|
134
167
|
* as indicated by the intermediaries
|
|
135
168
|
*
|
|
136
|
-
* @param chainIdentifier
|
|
137
|
-
* @param swapType
|
|
138
|
-
* @param
|
|
169
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
170
|
+
* @param swapType Swap protocol type
|
|
171
|
+
* @param tokenAddress Token address
|
|
139
172
|
*/
|
|
140
|
-
getSwapMinimum(chainIdentifier: string, swapType: SwapType,
|
|
173
|
+
getSwapMinimum(chainIdentifier: string, swapType: SwapType, tokenAddress: string): number | null;
|
|
141
174
|
/**
|
|
142
|
-
* Returns the aggregate swap maximum (in
|
|
175
|
+
* Returns the aggregate swap maximum (in satoshis - BTC) for a specific swap type & token
|
|
143
176
|
* as indicated by the intermediaries
|
|
144
177
|
*
|
|
145
|
-
* @param chainIdentifier
|
|
146
|
-
* @param swapType
|
|
147
|
-
* @param
|
|
178
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
179
|
+
* @param swapType Swap protocol type
|
|
180
|
+
* @param tokenAddress Token address
|
|
148
181
|
*/
|
|
149
|
-
getSwapMaximum(chainIdentifier: string, swapType: SwapType,
|
|
182
|
+
getSwapMaximum(chainIdentifier: string, swapType: SwapType, tokenAddress: string): number | null;
|
|
150
183
|
/**
|
|
151
184
|
* Returns swap candidates for a specific swap type & token address
|
|
152
185
|
*
|
|
153
|
-
* @param chainIdentifier
|
|
154
|
-
* @param swapType
|
|
155
|
-
* @param tokenAddress
|
|
186
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
187
|
+
* @param swapType Swap protocol type
|
|
188
|
+
* @param tokenAddress Token address
|
|
156
189
|
* @param amount Amount to be swapped in sats - BTC
|
|
157
190
|
* @param count How many intermediaries to return at most
|
|
158
191
|
*/
|
|
159
|
-
getSwapCandidates(chainIdentifier: string, swapType: SwapType, tokenAddress:
|
|
192
|
+
getSwapCandidates(chainIdentifier: string, swapType: SwapType, tokenAddress: string, amount?: bigint, count?: number): Intermediary[];
|
|
160
193
|
/**
|
|
161
194
|
* Removes a specific intermediary from the list of active intermediaries (used for blacklisting)
|
|
162
195
|
*
|
|
@@ -11,8 +11,9 @@ 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
|
|
15
|
-
*
|
|
14
|
+
* Swap handler type mapping for intermediary communication
|
|
15
|
+
*
|
|
16
|
+
* @category LPs
|
|
16
17
|
*/
|
|
17
18
|
var SwapHandlerType;
|
|
18
19
|
(function (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
|
*/
|
|
@@ -49,10 +50,12 @@ function swapHandlerTypeToSwapType(swapHandlerType) {
|
|
|
49
50
|
return SwapType_1.SwapType.SPV_VAULT_FROM_BTC;
|
|
50
51
|
case SwapHandlerType.FROM_BTCLN_AUTO:
|
|
51
52
|
return SwapType_1.SwapType.FROM_BTCLN_AUTO;
|
|
53
|
+
default:
|
|
54
|
+
return SwapType_1.SwapType.TRUSTED_FROM_BTCLN;
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
57
|
/**
|
|
55
|
-
* A default intermediary comparator, only takes
|
|
58
|
+
* A default intermediary comparator, only takes the announced fee into consideration
|
|
56
59
|
*
|
|
57
60
|
* @param swapType
|
|
58
61
|
* @param tokenAddress
|
|
@@ -86,12 +89,16 @@ const REGISTRY_URL = "https://api.github.com/repos/adambor/SolLightning-registry
|
|
|
86
89
|
//To allow for legacy responses from not-yet updated LPs
|
|
87
90
|
const DEFAULT_CHAIN = "SOLANA";
|
|
88
91
|
/**
|
|
89
|
-
* Discovery service for available liquidity providers
|
|
90
|
-
*
|
|
92
|
+
* Discovery service for available intermediaries (liquidity providers)
|
|
93
|
+
*
|
|
94
|
+
* @category LPs
|
|
91
95
|
*/
|
|
92
96
|
class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
93
97
|
constructor(swapContracts, registryUrl = REGISTRY_URL, nodeUrls, httpRequestTimeout, maxWaitForOthersTimeout) {
|
|
94
98
|
super();
|
|
99
|
+
/**
|
|
100
|
+
* A current list of active intermediaries
|
|
101
|
+
*/
|
|
95
102
|
this.intermediaries = [];
|
|
96
103
|
this.swapContracts = swapContracts;
|
|
97
104
|
this.registryUrl = registryUrl;
|
|
@@ -189,9 +196,13 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
189
196
|
}
|
|
190
197
|
}
|
|
191
198
|
/**
|
|
192
|
-
* Returns the intermediary at the provided URL, either from the already fetched list of LPs
|
|
199
|
+
* Returns the intermediary at the provided URL, either from the already fetched list of LPs
|
|
200
|
+
* or fetches the data on-demand, by sending the handshake HTTP request (/info) to the LP.
|
|
193
201
|
*
|
|
194
|
-
*
|
|
202
|
+
* Doesn't save the fetched intermediary to the list of intermediaries if it isn't already
|
|
203
|
+
* part of the known intermediaries
|
|
204
|
+
*
|
|
205
|
+
* @param url Base URL of the intermediary, which accepts HTTP requests
|
|
195
206
|
* @param abortSignal
|
|
196
207
|
*/
|
|
197
208
|
getIntermediary(url, abortSignal) {
|
|
@@ -202,6 +213,7 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
202
213
|
}
|
|
203
214
|
/**
|
|
204
215
|
* Reloads the saves a list of intermediaries
|
|
216
|
+
*
|
|
205
217
|
* @param abortSignal
|
|
206
218
|
*/
|
|
207
219
|
async reloadIntermediaries(abortSignal) {
|
|
@@ -236,6 +248,9 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
236
248
|
logger.info("init(): Initializing with registryUrl: " + this.registryUrl + " intermediary array: " + (this.overrideNodeUrls || []).join());
|
|
237
249
|
return this.reloadIntermediaries(abortSignal);
|
|
238
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Returns known swap bounds (in satoshis - BTC) by aggregating values from all known intermediaries
|
|
253
|
+
*/
|
|
239
254
|
getMultichainSwapBounds() {
|
|
240
255
|
const bounds = {};
|
|
241
256
|
this.intermediaries.forEach(intermediary => {
|
|
@@ -265,7 +280,7 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
265
280
|
return bounds;
|
|
266
281
|
}
|
|
267
282
|
/**
|
|
268
|
-
* Returns aggregate swap bounds (in
|
|
283
|
+
* Returns aggregate swap bounds (in satoshis - BTC) as indicated by the intermediaries
|
|
269
284
|
*/
|
|
270
285
|
getSwapBounds(chainIdentifier) {
|
|
271
286
|
const bounds = {};
|
|
@@ -294,15 +309,15 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
294
309
|
return bounds;
|
|
295
310
|
}
|
|
296
311
|
/**
|
|
297
|
-
* Returns the aggregate swap minimum (in
|
|
312
|
+
* Returns the aggregate swap minimum (in satoshis - BTC) for a specific swap type & token
|
|
298
313
|
* as indicated by the intermediaries
|
|
299
314
|
*
|
|
300
|
-
* @param chainIdentifier
|
|
301
|
-
* @param swapType
|
|
302
|
-
* @param
|
|
315
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
316
|
+
* @param swapType Swap protocol type
|
|
317
|
+
* @param tokenAddress Token address
|
|
303
318
|
*/
|
|
304
|
-
getSwapMinimum(chainIdentifier, swapType,
|
|
305
|
-
const tokenStr =
|
|
319
|
+
getSwapMinimum(chainIdentifier, swapType, tokenAddress) {
|
|
320
|
+
const tokenStr = tokenAddress.toString();
|
|
306
321
|
return this.intermediaries.reduce((prevMin, intermediary) => {
|
|
307
322
|
const swapService = intermediary.services[swapType];
|
|
308
323
|
if (swapService == null)
|
|
@@ -316,15 +331,15 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
316
331
|
}, null);
|
|
317
332
|
}
|
|
318
333
|
/**
|
|
319
|
-
* Returns the aggregate swap maximum (in
|
|
334
|
+
* Returns the aggregate swap maximum (in satoshis - BTC) for a specific swap type & token
|
|
320
335
|
* as indicated by the intermediaries
|
|
321
336
|
*
|
|
322
|
-
* @param chainIdentifier
|
|
323
|
-
* @param swapType
|
|
324
|
-
* @param
|
|
337
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
338
|
+
* @param swapType Swap protocol type
|
|
339
|
+
* @param tokenAddress Token address
|
|
325
340
|
*/
|
|
326
|
-
getSwapMaximum(chainIdentifier, swapType,
|
|
327
|
-
const tokenStr =
|
|
341
|
+
getSwapMaximum(chainIdentifier, swapType, tokenAddress) {
|
|
342
|
+
const tokenStr = tokenAddress.toString();
|
|
328
343
|
return this.intermediaries.reduce((prevMax, intermediary) => {
|
|
329
344
|
const swapService = intermediary.services[swapType];
|
|
330
345
|
if (swapService == null)
|
|
@@ -340,9 +355,9 @@ class IntermediaryDiscovery extends events_1.EventEmitter {
|
|
|
340
355
|
/**
|
|
341
356
|
* Returns swap candidates for a specific swap type & token address
|
|
342
357
|
*
|
|
343
|
-
* @param chainIdentifier
|
|
344
|
-
* @param swapType
|
|
345
|
-
* @param tokenAddress
|
|
358
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
359
|
+
* @param swapType Swap protocol type
|
|
360
|
+
* @param tokenAddress Token address
|
|
346
361
|
* @param amount Amount to be swapped in sats - BTC
|
|
347
362
|
* @param count How many intermediaries to return at most
|
|
348
363
|
*/
|
|
@@ -3,7 +3,8 @@ 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
|
|
7
8
|
*/
|
|
8
9
|
export type RedundantSwapPriceAssets<T extends MultiChain> = {
|
|
9
10
|
binancePair?: string;
|
|
@@ -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
|
|
37
|
-
*
|
|
38
|
+
*
|
|
39
|
+
* @category Pricing
|
|
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
|
|
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,8 +2,9 @@ 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
|
|
6
|
-
*
|
|
5
|
+
* Swap price API using a single price source
|
|
6
|
+
*
|
|
7
|
+
* @category Pricing
|
|
7
8
|
*/
|
|
8
9
|
export declare class SingleSwapPrice<T extends MultiChain> extends ICachedSwapPrice<T> {
|
|
9
10
|
priceProvider: IPriceProvider<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,8 +3,9 @@ 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
|
|
7
|
-
*
|
|
6
|
+
* Swap price API using a single price source
|
|
7
|
+
*
|
|
8
|
+
* @category Pricing
|
|
8
9
|
*/
|
|
9
10
|
class SingleSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
|
|
10
11
|
constructor(maxAllowedFeeDiffPPM, priceProvider, cacheTimeout) {
|
|
@@ -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,7 +4,8 @@ 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
|
|
8
9
|
*/
|
|
9
10
|
export declare class SwapPriceWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
|
|
10
11
|
swapPrice: ISwapPrice<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 abortSignal
|
|
23
|
-
* @param preFetchedPrice
|
|
22
|
+
* @param tokenAddress Token address to be paid
|
|
23
|
+
* @param abortSignal Abort signal
|
|
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,77 @@ 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 Abort signal
|
|
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 tokenAddress Token address
|
|
44
|
+
* @param abortSignal Abort signal
|
|
45
|
+
*/
|
|
46
|
+
preFetchPrice(tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
47
|
+
/**
|
|
48
|
+
* Pre-fetches the Bitcoin USD price data, such that further calls to {@link getBtcUsdValue},
|
|
49
|
+
* {@link getTokenUsdValue} or {@link getUsdValue} are quicker and don't need to wait for the price fetch
|
|
50
|
+
*
|
|
34
51
|
* @param abortSignal
|
|
35
|
-
* @param preFetchedPrice Already pre-fetched price
|
|
36
52
|
*/
|
|
37
|
-
isValidAmountReceive(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
|
|
38
|
-
preFetchPrice(token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
39
53
|
preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
|
|
40
54
|
/**
|
|
41
|
-
* Returns amount of
|
|
55
|
+
* Returns amount of `toToken` that is equivalent to `fromAmount` satoshis
|
|
42
56
|
*
|
|
43
|
-
* @param fromAmount
|
|
44
|
-
* @param toToken
|
|
57
|
+
* @param fromAmount Amount of satoshis
|
|
58
|
+
* @param toToken Token address
|
|
45
59
|
* @param abortSignal
|
|
46
|
-
* @param preFetchedPrice
|
|
60
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
47
61
|
* @throws {Error} when token is not found
|
|
48
62
|
*/
|
|
49
63
|
getFromBtcSwapAmount(fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
50
64
|
/**
|
|
51
|
-
* Returns amount of satoshis that are equivalent to
|
|
65
|
+
* Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`
|
|
52
66
|
*
|
|
53
67
|
* @param fromAmount Amount of the token
|
|
54
|
-
* @param fromToken Token
|
|
68
|
+
* @param fromToken Token address
|
|
55
69
|
* @param abortSignal
|
|
56
|
-
* @param preFetchedPrice
|
|
70
|
+
* @param preFetchedPrice An optional price pre-fetched with {@link preFetchPrice}
|
|
57
71
|
* @throws {Error} when token is not found
|
|
58
72
|
*/
|
|
59
73
|
getToBtcSwapAmount(fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
|
|
60
74
|
/**
|
|
61
75
|
* Returns whether the token should be ignored and pricing for it not calculated
|
|
62
76
|
*
|
|
63
|
-
* @param tokenAddress
|
|
77
|
+
* @param tokenAddress Token address
|
|
64
78
|
* @throws {Error} if token is not found
|
|
65
79
|
*/
|
|
66
80
|
shouldIgnore(tokenAddress: string): boolean;
|
|
67
|
-
|
|
68
|
-
|
|
81
|
+
/**
|
|
82
|
+
* Returns the USD value of the bitcoin amount
|
|
83
|
+
*
|
|
84
|
+
* @param btcSats Bitcoin amount in satoshis
|
|
85
|
+
* @param abortSignal
|
|
86
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
87
|
+
*/
|
|
88
|
+
getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
89
|
+
/**
|
|
90
|
+
* Returns the USD value of the smart chain token amount
|
|
91
|
+
*
|
|
92
|
+
* @param tokenAmount Amount of the token in base units
|
|
93
|
+
* @param tokenAddress Token address
|
|
94
|
+
* @param abortSignal
|
|
95
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
96
|
+
*/
|
|
97
|
+
getTokenUsdValue(tokenAmount: bigint, tokenAddress: string, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
98
|
+
/**
|
|
99
|
+
* Returns the USD value of the token amount
|
|
100
|
+
*
|
|
101
|
+
* @param amount Amount in base units of the token
|
|
102
|
+
* @param token Token to fetch the usd price for
|
|
103
|
+
* @param abortSignal
|
|
104
|
+
* @param preFetchedUsdPrice An optional price pre-fetched with {@link preFetchUsdPrice}
|
|
105
|
+
*/
|
|
69
106
|
getUsdValue(amount: bigint, token: Token<ChainIdentifier>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
|
|
70
107
|
}
|