@atomiqlabs/sdk 8.6.6 → 8.6.8
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/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
- package/dist/bitcoin/coinselect2/accumulative.js +52 -51
- package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
- package/dist/bitcoin/coinselect2/blackjack.js +38 -37
- package/dist/bitcoin/coinselect2/index.d.ts +19 -17
- package/dist/bitcoin/coinselect2/index.js +69 -69
- package/dist/bitcoin/coinselect2/utils.d.ts +77 -75
- package/dist/bitcoin/coinselect2/utils.js +123 -123
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +130 -128
- package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
- package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -20
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +101 -99
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +190 -176
- package/dist/enums/FeeType.d.ts +15 -15
- package/dist/enums/FeeType.js +19 -19
- package/dist/enums/SwapAmountType.d.ts +15 -15
- package/dist/enums/SwapAmountType.js +19 -19
- package/dist/enums/SwapDirection.d.ts +15 -15
- package/dist/enums/SwapDirection.js +19 -19
- package/dist/enums/SwapSide.d.ts +15 -15
- package/dist/enums/SwapSide.js +19 -19
- package/dist/enums/SwapType.d.ts +75 -75
- package/dist/enums/SwapType.js +79 -79
- package/dist/errors/IntermediaryError.d.ts +13 -13
- package/dist/errors/IntermediaryError.js +27 -27
- package/dist/errors/RequestError.d.ts +32 -32
- package/dist/errors/RequestError.js +54 -54
- package/dist/errors/UserError.d.ts +8 -8
- package/dist/errors/UserError.js +16 -16
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
- package/dist/events/UnifiedSwapEventListener.js +130 -130
- package/dist/http/HttpUtils.d.ts +27 -27
- package/dist/http/HttpUtils.js +91 -90
- package/dist/http/paramcoders/IParamReader.d.ts +8 -8
- package/dist/http/paramcoders/IParamReader.js +2 -2
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -42
- package/dist/http/paramcoders/ParamDecoder.js +137 -137
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -18
- package/dist/http/paramcoders/ParamEncoder.js +36 -36
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
- package/dist/http/paramcoders/SchemaVerifier.js +145 -145
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -11
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -173
- package/dist/index.d.ts +85 -85
- package/dist/index.js +158 -158
- package/dist/intermediaries/Intermediary.d.ts +157 -157
- package/dist/intermediaries/Intermediary.js +142 -142
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +199 -198
- package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +439 -437
- package/dist/intermediaries/apis/IntermediaryAPI.js +603 -603
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/lnurl/LNURL.d.ts +102 -102
- package/dist/lnurl/LNURL.js +321 -321
- package/dist/prices/RedundantSwapPrice.d.ts +110 -110
- package/dist/prices/RedundantSwapPrice.js +222 -222
- package/dist/prices/SingleSwapPrice.d.ts +34 -34
- package/dist/prices/SingleSwapPrice.js +44 -44
- package/dist/prices/SwapPriceWithChain.d.ts +107 -107
- package/dist/prices/SwapPriceWithChain.js +128 -128
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
- package/dist/prices/abstract/IPriceProvider.js +74 -74
- package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
- package/dist/prices/abstract/ISwapPrice.js +279 -279
- package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
- package/dist/prices/providers/BinancePriceProvider.js +30 -30
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
- package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
- package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
- package/dist/prices/providers/CustomPriceProvider.js +35 -35
- package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
- package/dist/prices/providers/KrakenPriceProvider.js +45 -45
- package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
- package/dist/prices/providers/OKXPriceProvider.js +29 -29
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
- package/dist/storage/IUnifiedStorage.d.ts +85 -85
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
- package/dist/storage/UnifiedSwapStorage.js +116 -116
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
- package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
- package/dist/storage-browser/LocalStorageManager.js +93 -93
- package/dist/swapper/Swapper.d.ts +687 -686
- package/dist/swapper/Swapper.js +1603 -1603
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +200 -200
- package/dist/swapper/SwapperUtils.js +467 -467
- package/dist/swapper/SwapperWithChain.d.ts +404 -404
- package/dist/swapper/SwapperWithChain.js +469 -469
- package/dist/swapper/SwapperWithSigner.d.ts +322 -322
- package/dist/swapper/SwapperWithSigner.js +318 -318
- package/dist/swaps/IAddressSwap.d.ts +22 -22
- package/dist/swaps/IAddressSwap.js +14 -13
- package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
- package/dist/swaps/IBTCWalletSwap.js +18 -17
- package/dist/swaps/IClaimableSwap.d.ts +49 -49
- package/dist/swaps/IClaimableSwap.js +15 -14
- package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
- package/dist/swaps/IClaimableSwapWrapper.js +2 -2
- package/dist/swaps/IRefundableSwap.d.ts +43 -43
- package/dist/swaps/IRefundableSwap.js +14 -13
- package/dist/swaps/ISwap.d.ts +387 -386
- package/dist/swaps/ISwap.js +346 -346
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +12 -11
- package/dist/swaps/ISwapWrapper.d.ts +285 -283
- package/dist/swaps/ISwapWrapper.js +353 -353
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +135 -133
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +115 -114
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +101 -98
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +531 -529
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +184 -181
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -418
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -581
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +228 -225
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +191 -190
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -378
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -125
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +242 -241
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +128 -127
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +214 -213
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -756
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
- package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +69 -68
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
- package/dist/types/AmountData.d.ts +10 -10
- package/dist/types/AmountData.js +2 -2
- package/dist/types/CustomPriceFunction.d.ts +11 -11
- package/dist/types/CustomPriceFunction.js +2 -2
- package/dist/types/PriceInfoType.d.ts +28 -28
- package/dist/types/PriceInfoType.js +57 -56
- package/dist/types/SwapExecutionAction.d.ts +88 -88
- package/dist/types/SwapExecutionAction.js +2 -2
- package/dist/types/SwapStateInfo.d.ts +5 -5
- package/dist/types/SwapStateInfo.js +2 -2
- package/dist/types/SwapWithSigner.d.ts +17 -17
- package/dist/types/SwapWithSigner.js +43 -42
- package/dist/types/Token.d.ts +99 -99
- package/dist/types/Token.js +76 -76
- package/dist/types/TokenAmount.d.ts +69 -69
- package/dist/types/TokenAmount.js +60 -59
- package/dist/types/fees/Fee.d.ts +50 -50
- package/dist/types/fees/Fee.js +2 -2
- package/dist/types/fees/FeeBreakdown.d.ts +11 -11
- package/dist/types/fees/FeeBreakdown.js +2 -2
- package/dist/types/fees/PercentagePPM.d.ts +17 -17
- package/dist/types/fees/PercentagePPM.js +18 -17
- package/dist/types/lnurl/LNURLPay.d.ts +61 -61
- package/dist/types/lnurl/LNURLPay.js +31 -30
- package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
- package/dist/types/lnurl/LNURLWithdraw.js +27 -26
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -14
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
- package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -69
- package/dist/utils/BitcoinUtils.d.ts +14 -12
- package/dist/utils/BitcoinUtils.js +102 -101
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
- package/dist/utils/BitcoinWalletUtils.js +14 -13
- package/dist/utils/Logger.d.ts +7 -7
- package/dist/utils/Logger.js +12 -11
- package/dist/utils/RetryUtils.d.ts +22 -22
- package/dist/utils/RetryUtils.js +67 -66
- package/dist/utils/SwapUtils.d.ts +88 -88
- package/dist/utils/SwapUtils.js +72 -72
- package/dist/utils/TimeoutUtils.d.ts +17 -17
- package/dist/utils/TimeoutUtils.js +55 -54
- package/dist/utils/TokenUtils.d.ts +19 -19
- package/dist/utils/TokenUtils.js +37 -36
- package/dist/utils/TypeUtils.d.ts +7 -7
- package/dist/utils/TypeUtils.js +2 -2
- package/dist/utils/Utils.d.ts +58 -56
- package/dist/utils/Utils.js +194 -193
- package/package.json +1 -1
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +14 -2
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
import { SwapType } from "../enums/SwapType";
|
|
2
|
-
import { SwapHandlerInfoType } from "./IntermediaryDiscovery";
|
|
3
|
-
import { ChainSwapType, LNNodeLiquidity, SwapContract } from "@atomiqlabs/base";
|
|
4
|
-
/**
|
|
5
|
-
* Services offered by an intermediary
|
|
6
|
-
*
|
|
7
|
-
* @category LPs
|
|
8
|
-
*/
|
|
9
|
-
export type ServicesType = {
|
|
10
|
-
[key in SwapType]?: SwapHandlerInfoType;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Reputation data for an intermediary on a single chain
|
|
14
|
-
*
|
|
15
|
-
* @category LPs
|
|
16
|
-
*/
|
|
17
|
-
export type SingleChainReputationType = {
|
|
18
|
-
[token: string]: {
|
|
19
|
-
[key in ChainSwapType]: {
|
|
20
|
-
successVolume: bigint;
|
|
21
|
-
successCount: bigint;
|
|
22
|
-
failVolume: bigint;
|
|
23
|
-
failCount: bigint;
|
|
24
|
-
coopCloseVolume: bigint;
|
|
25
|
-
coopCloseCount: bigint;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Smart chain liquidity data
|
|
31
|
-
*
|
|
32
|
-
* @category LPs
|
|
33
|
-
*/
|
|
34
|
-
export type SCLiquidity = {
|
|
35
|
-
[token: string]: bigint;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Represents an intermediary (liquidity provider)
|
|
39
|
-
*
|
|
40
|
-
* @category LPs
|
|
41
|
-
*/
|
|
42
|
-
export declare class Intermediary {
|
|
43
|
-
/**
|
|
44
|
-
* Base URL where the intermediary is listening for HTTP requests
|
|
45
|
-
*/
|
|
46
|
-
readonly url: string;
|
|
47
|
-
/**
|
|
48
|
-
* Addresses of the intermediary on smart chains, used for checking the provided signatures
|
|
49
|
-
*/
|
|
50
|
-
readonly addresses: {
|
|
51
|
-
[chainIdentifier: string]: string;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Swap protocol services offered by the intermediary
|
|
55
|
-
*/
|
|
56
|
-
readonly services: ServicesType;
|
|
57
|
-
/**
|
|
58
|
-
* Input/output swap bounds for various swap protocols offered by the intermediary
|
|
59
|
-
*/
|
|
60
|
-
readonly swapBounds: {
|
|
61
|
-
[swapType in SwapType]?: {
|
|
62
|
-
[chainIdentifier: string]: {
|
|
63
|
-
[tokenAddress: string]: {
|
|
64
|
-
input: {
|
|
65
|
-
min?: bigint;
|
|
66
|
-
max?: bigint;
|
|
67
|
-
};
|
|
68
|
-
output: {
|
|
69
|
-
min?: bigint;
|
|
70
|
-
max?: bigint;
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
/**
|
|
77
|
-
* Reputation of the intermediary on different smart chains, this is only fetched
|
|
78
|
-
* on-demand when creating a swap where reputation is checked
|
|
79
|
-
*/
|
|
80
|
-
reputation: {
|
|
81
|
-
[chainIdentifier: string]: SingleChainReputationType;
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Liquidity of the intermediary across different smart chains, this is only fetched
|
|
85
|
-
* on-demand when creating a swap where intermediary's liquidity is checked
|
|
86
|
-
*/
|
|
87
|
-
liquidity: {
|
|
88
|
-
[chainIdentifier: string]: SCLiquidity;
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* Data about a lightning network node used by this intermediary, if it offers lightning
|
|
92
|
-
* network swaps, this is only fetched on-demand when creating a Bitcoin Lightning -> Smart chain
|
|
93
|
-
* swap through the intermediary (which necessitates checking intermediary's channel capacities)
|
|
94
|
-
*/
|
|
95
|
-
lnData?: LNNodeLiquidity;
|
|
96
|
-
constructor(url: string, addresses: {
|
|
97
|
-
[chainIdentifier: string]: string;
|
|
98
|
-
}, services: ServicesType, reputation?: {
|
|
99
|
-
[chainIdentifier: string]: SingleChainReputationType;
|
|
100
|
-
});
|
|
101
|
-
/**
|
|
102
|
-
* Returns the input/output swap limit for given swap type, chain and token
|
|
103
|
-
*
|
|
104
|
-
* @param swapType Swap protocol service to check
|
|
105
|
-
* @param chainId Chain identifier of the smart chain to check
|
|
106
|
-
* @param tokenAddress Address of the token to check
|
|
107
|
-
*/
|
|
108
|
-
getSwapLimits(swapType: SwapType, chainId: string, tokenAddress: string): {
|
|
109
|
-
input: {
|
|
110
|
-
min?: bigint;
|
|
111
|
-
max?: bigint;
|
|
112
|
-
};
|
|
113
|
-
output: {
|
|
114
|
-
min?: bigint;
|
|
115
|
-
max?: bigint;
|
|
116
|
-
};
|
|
117
|
-
} | undefined;
|
|
118
|
-
/**
|
|
119
|
-
* Returns tokens supported by the intermediary, optionally constrained to the specific swap types
|
|
120
|
-
*
|
|
121
|
-
* @param chainIdentifier Chain identifier of the smart chain to check
|
|
122
|
-
* @param swapTypesArr An array of swap type services to check
|
|
123
|
-
* @private
|
|
124
|
-
*/
|
|
125
|
-
private getSupportedTokens;
|
|
126
|
-
/**
|
|
127
|
-
* Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
|
|
128
|
-
*
|
|
129
|
-
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
130
|
-
* @param swapContract Swap contract for the requested smart chain
|
|
131
|
-
* @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
|
|
132
|
-
* by the intermediary)
|
|
133
|
-
* @param abortSignal
|
|
134
|
-
*/
|
|
135
|
-
getReputation(chainIdentifier: string, swapContract: SwapContract<any>, tokens?: string[], abortSignal?: AbortSignal): Promise<SingleChainReputationType>;
|
|
136
|
-
/**
|
|
137
|
-
* Fetches, returns and saves the liquidity of the intermediary for a specific token
|
|
138
|
-
*
|
|
139
|
-
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
140
|
-
* @param swapContract Swap contract for the requested smart chain
|
|
141
|
-
* @param token Token address of the token to fetch the liquidity for
|
|
142
|
-
* @param abortSignal
|
|
143
|
-
*/
|
|
144
|
-
getLiquidity(chainIdentifier: string, swapContract: SwapContract<any>, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
145
|
-
/**
|
|
146
|
-
* Checks whether the intermediary supports swaps of any tokens on the smart chain
|
|
147
|
-
*
|
|
148
|
-
* @param chainIdentifier Chain identifier of the smart chain
|
|
149
|
-
*/
|
|
150
|
-
supportsChain(chainIdentifier: string): boolean;
|
|
151
|
-
/**
|
|
152
|
-
* Returns intermediary's address on a given smart chain
|
|
153
|
-
*
|
|
154
|
-
* @param chainIdentifier Chain identifier of the smart chain
|
|
155
|
-
*/
|
|
156
|
-
getAddress(chainIdentifier: string): string;
|
|
157
|
-
}
|
|
1
|
+
import { SwapType } from "../enums/SwapType";
|
|
2
|
+
import { SwapHandlerInfoType } from "./IntermediaryDiscovery";
|
|
3
|
+
import { ChainSwapType, LNNodeLiquidity, SwapContract } from "@atomiqlabs/base";
|
|
4
|
+
/**
|
|
5
|
+
* Services offered by an intermediary
|
|
6
|
+
*
|
|
7
|
+
* @category LPs
|
|
8
|
+
*/
|
|
9
|
+
export type ServicesType = {
|
|
10
|
+
[key in SwapType]?: SwapHandlerInfoType;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Reputation data for an intermediary on a single chain
|
|
14
|
+
*
|
|
15
|
+
* @category LPs
|
|
16
|
+
*/
|
|
17
|
+
export type SingleChainReputationType = {
|
|
18
|
+
[token: string]: {
|
|
19
|
+
[key in ChainSwapType]: {
|
|
20
|
+
successVolume: bigint;
|
|
21
|
+
successCount: bigint;
|
|
22
|
+
failVolume: bigint;
|
|
23
|
+
failCount: bigint;
|
|
24
|
+
coopCloseVolume: bigint;
|
|
25
|
+
coopCloseCount: bigint;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Smart chain liquidity data
|
|
31
|
+
*
|
|
32
|
+
* @category LPs
|
|
33
|
+
*/
|
|
34
|
+
export type SCLiquidity = {
|
|
35
|
+
[token: string]: bigint;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Represents an intermediary (liquidity provider)
|
|
39
|
+
*
|
|
40
|
+
* @category LPs
|
|
41
|
+
*/
|
|
42
|
+
export declare class Intermediary {
|
|
43
|
+
/**
|
|
44
|
+
* Base URL where the intermediary is listening for HTTP requests
|
|
45
|
+
*/
|
|
46
|
+
readonly url: string;
|
|
47
|
+
/**
|
|
48
|
+
* Addresses of the intermediary on smart chains, used for checking the provided signatures
|
|
49
|
+
*/
|
|
50
|
+
readonly addresses: {
|
|
51
|
+
[chainIdentifier: string]: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Swap protocol services offered by the intermediary
|
|
55
|
+
*/
|
|
56
|
+
readonly services: ServicesType;
|
|
57
|
+
/**
|
|
58
|
+
* Input/output swap bounds for various swap protocols offered by the intermediary
|
|
59
|
+
*/
|
|
60
|
+
readonly swapBounds: {
|
|
61
|
+
[swapType in SwapType]?: {
|
|
62
|
+
[chainIdentifier: string]: {
|
|
63
|
+
[tokenAddress: string]: {
|
|
64
|
+
input: {
|
|
65
|
+
min?: bigint;
|
|
66
|
+
max?: bigint;
|
|
67
|
+
};
|
|
68
|
+
output: {
|
|
69
|
+
min?: bigint;
|
|
70
|
+
max?: bigint;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Reputation of the intermediary on different smart chains, this is only fetched
|
|
78
|
+
* on-demand when creating a swap where reputation is checked
|
|
79
|
+
*/
|
|
80
|
+
reputation: {
|
|
81
|
+
[chainIdentifier: string]: SingleChainReputationType;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Liquidity of the intermediary across different smart chains, this is only fetched
|
|
85
|
+
* on-demand when creating a swap where intermediary's liquidity is checked
|
|
86
|
+
*/
|
|
87
|
+
liquidity: {
|
|
88
|
+
[chainIdentifier: string]: SCLiquidity;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Data about a lightning network node used by this intermediary, if it offers lightning
|
|
92
|
+
* network swaps, this is only fetched on-demand when creating a Bitcoin Lightning -> Smart chain
|
|
93
|
+
* swap through the intermediary (which necessitates checking intermediary's channel capacities)
|
|
94
|
+
*/
|
|
95
|
+
lnData?: LNNodeLiquidity;
|
|
96
|
+
constructor(url: string, addresses: {
|
|
97
|
+
[chainIdentifier: string]: string;
|
|
98
|
+
}, services: ServicesType, reputation?: {
|
|
99
|
+
[chainIdentifier: string]: SingleChainReputationType;
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* Returns the input/output swap limit for given swap type, chain and token
|
|
103
|
+
*
|
|
104
|
+
* @param swapType Swap protocol service to check
|
|
105
|
+
* @param chainId Chain identifier of the smart chain to check
|
|
106
|
+
* @param tokenAddress Address of the token to check
|
|
107
|
+
*/
|
|
108
|
+
getSwapLimits(swapType: SwapType, chainId: string, tokenAddress: string): {
|
|
109
|
+
input: {
|
|
110
|
+
min?: bigint;
|
|
111
|
+
max?: bigint;
|
|
112
|
+
};
|
|
113
|
+
output: {
|
|
114
|
+
min?: bigint;
|
|
115
|
+
max?: bigint;
|
|
116
|
+
};
|
|
117
|
+
} | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* Returns tokens supported by the intermediary, optionally constrained to the specific swap types
|
|
120
|
+
*
|
|
121
|
+
* @param chainIdentifier Chain identifier of the smart chain to check
|
|
122
|
+
* @param swapTypesArr An array of swap type services to check
|
|
123
|
+
* @private
|
|
124
|
+
*/
|
|
125
|
+
private getSupportedTokens;
|
|
126
|
+
/**
|
|
127
|
+
* Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
|
|
128
|
+
*
|
|
129
|
+
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
130
|
+
* @param swapContract Swap contract for the requested smart chain
|
|
131
|
+
* @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
|
|
132
|
+
* by the intermediary)
|
|
133
|
+
* @param abortSignal
|
|
134
|
+
*/
|
|
135
|
+
getReputation(chainIdentifier: string, swapContract: SwapContract<any>, tokens?: string[], abortSignal?: AbortSignal): Promise<SingleChainReputationType>;
|
|
136
|
+
/**
|
|
137
|
+
* Fetches, returns and saves the liquidity of the intermediary for a specific token
|
|
138
|
+
*
|
|
139
|
+
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
140
|
+
* @param swapContract Swap contract for the requested smart chain
|
|
141
|
+
* @param token Token address of the token to fetch the liquidity for
|
|
142
|
+
* @param abortSignal
|
|
143
|
+
*/
|
|
144
|
+
getLiquidity(chainIdentifier: string, swapContract: SwapContract<any>, token: string, abortSignal?: AbortSignal): Promise<bigint>;
|
|
145
|
+
/**
|
|
146
|
+
* Checks whether the intermediary supports swaps of any tokens on the smart chain
|
|
147
|
+
*
|
|
148
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
149
|
+
*/
|
|
150
|
+
supportsChain(chainIdentifier: string): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Returns intermediary's address on a given smart chain
|
|
153
|
+
*
|
|
154
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
155
|
+
*/
|
|
156
|
+
getAddress(chainIdentifier: string): string;
|
|
157
|
+
}
|
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Intermediary = void 0;
|
|
4
|
-
const SwapType_1 = require("../enums/SwapType");
|
|
5
|
-
const RetryUtils_1 = require("../utils/RetryUtils");
|
|
6
|
-
/**
|
|
7
|
-
* Represents an intermediary (liquidity provider)
|
|
8
|
-
*
|
|
9
|
-
* @category LPs
|
|
10
|
-
*/
|
|
11
|
-
class Intermediary {
|
|
12
|
-
constructor(url, addresses, services, reputation = {}) {
|
|
13
|
-
/**
|
|
14
|
-
* Reputation of the intermediary on different smart chains, this is only fetched
|
|
15
|
-
* on-demand when creating a swap where reputation is checked
|
|
16
|
-
*/
|
|
17
|
-
this.reputation = {};
|
|
18
|
-
/**
|
|
19
|
-
* Liquidity of the intermediary across different smart chains, this is only fetched
|
|
20
|
-
* on-demand when creating a swap where intermediary's liquidity is checked
|
|
21
|
-
*/
|
|
22
|
-
this.liquidity = {};
|
|
23
|
-
this.url = url;
|
|
24
|
-
this.addresses = addresses;
|
|
25
|
-
this.services = services;
|
|
26
|
-
this.reputation = reputation;
|
|
27
|
-
this.swapBounds = {};
|
|
28
|
-
for (let _swapType in this.services) {
|
|
29
|
-
const swapType = parseInt(_swapType);
|
|
30
|
-
const serviceInfo = this.services[swapType];
|
|
31
|
-
const btcBounds = { min: BigInt(serviceInfo.min), max: BigInt(serviceInfo.max) };
|
|
32
|
-
const isSend = swapType === SwapType_1.SwapType.TO_BTC || swapType === SwapType_1.SwapType.TO_BTCLN;
|
|
33
|
-
this.swapBounds[swapType] = {};
|
|
34
|
-
for (let chainIdentifier in serviceInfo.chainTokens) {
|
|
35
|
-
this.swapBounds[swapType][chainIdentifier] = {};
|
|
36
|
-
for (let tokenAddress of serviceInfo.chainTokens[chainIdentifier]) {
|
|
37
|
-
this.swapBounds[swapType][chainIdentifier][tokenAddress] = {
|
|
38
|
-
input: isSend ? {} : btcBounds,
|
|
39
|
-
output: !isSend ? {} : btcBounds,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Returns the input/output swap limit for given swap type, chain and token
|
|
47
|
-
*
|
|
48
|
-
* @param swapType Swap protocol service to check
|
|
49
|
-
* @param chainId Chain identifier of the smart chain to check
|
|
50
|
-
* @param tokenAddress Address of the token to check
|
|
51
|
-
*/
|
|
52
|
-
getSwapLimits(swapType, chainId, tokenAddress) {
|
|
53
|
-
return this.swapBounds[swapType]?.[chainId]?.[tokenAddress];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Returns tokens supported by the intermediary, optionally constrained to the specific swap types
|
|
57
|
-
*
|
|
58
|
-
* @param chainIdentifier Chain identifier of the smart chain to check
|
|
59
|
-
* @param swapTypesArr An array of swap type services to check
|
|
60
|
-
* @private
|
|
61
|
-
*/
|
|
62
|
-
getSupportedTokens(chainIdentifier, swapTypesArr = [
|
|
63
|
-
SwapType_1.SwapType.TO_BTC,
|
|
64
|
-
SwapType_1.SwapType.TO_BTCLN,
|
|
65
|
-
SwapType_1.SwapType.FROM_BTC,
|
|
66
|
-
SwapType_1.SwapType.FROM_BTCLN,
|
|
67
|
-
SwapType_1.SwapType.SPV_VAULT_FROM_BTC,
|
|
68
|
-
SwapType_1.SwapType.FROM_BTCLN_AUTO
|
|
69
|
-
]) {
|
|
70
|
-
const swapTypes = new Set(swapTypesArr);
|
|
71
|
-
let tokens = new Set();
|
|
72
|
-
swapTypes.forEach((swapType) => {
|
|
73
|
-
const supportedTokens = this.services[swapType]?.chainTokens?.[chainIdentifier];
|
|
74
|
-
if (supportedTokens != null)
|
|
75
|
-
supportedTokens.forEach(token => tokens.add(token));
|
|
76
|
-
});
|
|
77
|
-
return tokens;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
|
|
81
|
-
*
|
|
82
|
-
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
83
|
-
* @param swapContract Swap contract for the requested smart chain
|
|
84
|
-
* @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
|
|
85
|
-
* by the intermediary)
|
|
86
|
-
* @param abortSignal
|
|
87
|
-
*/
|
|
88
|
-
async getReputation(chainIdentifier, swapContract, tokens, abortSignal) {
|
|
89
|
-
const checkReputationTokens = tokens == null ?
|
|
90
|
-
this.getSupportedTokens(chainIdentifier, [SwapType_1.SwapType.TO_BTC, SwapType_1.SwapType.TO_BTCLN]) :
|
|
91
|
-
new Set(tokens);
|
|
92
|
-
const promises = [];
|
|
93
|
-
const reputation = {};
|
|
94
|
-
for (let token of checkReputationTokens) {
|
|
95
|
-
promises.push((0, RetryUtils_1.tryWithRetries)(() => swapContract.getIntermediaryReputation(this.getAddress(chainIdentifier), token), undefined, undefined, abortSignal).then(result => {
|
|
96
|
-
if (result != null)
|
|
97
|
-
reputation[token] = result;
|
|
98
|
-
}));
|
|
99
|
-
}
|
|
100
|
-
await Promise.all(promises);
|
|
101
|
-
this.reputation ??= {};
|
|
102
|
-
this.reputation[chainIdentifier] ??= {};
|
|
103
|
-
for (let key in reputation) {
|
|
104
|
-
this.reputation[chainIdentifier][key] = reputation[key];
|
|
105
|
-
}
|
|
106
|
-
return reputation;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Fetches, returns and saves the liquidity of the intermediary for a specific token
|
|
110
|
-
*
|
|
111
|
-
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
112
|
-
* @param swapContract Swap contract for the requested smart chain
|
|
113
|
-
* @param token Token address of the token to fetch the liquidity for
|
|
114
|
-
* @param abortSignal
|
|
115
|
-
*/
|
|
116
|
-
async getLiquidity(chainIdentifier, swapContract, token, abortSignal) {
|
|
117
|
-
const result = await (0, RetryUtils_1.tryWithRetries)(() => swapContract.getBalance(this.getAddress(chainIdentifier), token, true), undefined, undefined, abortSignal);
|
|
118
|
-
this.liquidity ??= {};
|
|
119
|
-
this.liquidity[chainIdentifier] ??= {};
|
|
120
|
-
this.liquidity[chainIdentifier][token] = result;
|
|
121
|
-
return result;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Checks whether the intermediary supports swaps of any tokens on the smart chain
|
|
125
|
-
*
|
|
126
|
-
* @param chainIdentifier Chain identifier of the smart chain
|
|
127
|
-
*/
|
|
128
|
-
supportsChain(chainIdentifier) {
|
|
129
|
-
if (this.addresses[chainIdentifier] == null)
|
|
130
|
-
return false;
|
|
131
|
-
return this.getSupportedTokens(chainIdentifier).size !== 0;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Returns intermediary's address on a given smart chain
|
|
135
|
-
*
|
|
136
|
-
* @param chainIdentifier Chain identifier of the smart chain
|
|
137
|
-
*/
|
|
138
|
-
getAddress(chainIdentifier) {
|
|
139
|
-
return this.addresses[chainIdentifier];
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
exports.Intermediary = Intermediary;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Intermediary = void 0;
|
|
4
|
+
const SwapType_1 = require("../enums/SwapType");
|
|
5
|
+
const RetryUtils_1 = require("../utils/RetryUtils");
|
|
6
|
+
/**
|
|
7
|
+
* Represents an intermediary (liquidity provider)
|
|
8
|
+
*
|
|
9
|
+
* @category LPs
|
|
10
|
+
*/
|
|
11
|
+
class Intermediary {
|
|
12
|
+
constructor(url, addresses, services, reputation = {}) {
|
|
13
|
+
/**
|
|
14
|
+
* Reputation of the intermediary on different smart chains, this is only fetched
|
|
15
|
+
* on-demand when creating a swap where reputation is checked
|
|
16
|
+
*/
|
|
17
|
+
this.reputation = {};
|
|
18
|
+
/**
|
|
19
|
+
* Liquidity of the intermediary across different smart chains, this is only fetched
|
|
20
|
+
* on-demand when creating a swap where intermediary's liquidity is checked
|
|
21
|
+
*/
|
|
22
|
+
this.liquidity = {};
|
|
23
|
+
this.url = url;
|
|
24
|
+
this.addresses = addresses;
|
|
25
|
+
this.services = services;
|
|
26
|
+
this.reputation = reputation;
|
|
27
|
+
this.swapBounds = {};
|
|
28
|
+
for (let _swapType in this.services) {
|
|
29
|
+
const swapType = parseInt(_swapType);
|
|
30
|
+
const serviceInfo = this.services[swapType];
|
|
31
|
+
const btcBounds = { min: BigInt(serviceInfo.min), max: BigInt(serviceInfo.max) };
|
|
32
|
+
const isSend = swapType === SwapType_1.SwapType.TO_BTC || swapType === SwapType_1.SwapType.TO_BTCLN;
|
|
33
|
+
this.swapBounds[swapType] = {};
|
|
34
|
+
for (let chainIdentifier in serviceInfo.chainTokens) {
|
|
35
|
+
this.swapBounds[swapType][chainIdentifier] = {};
|
|
36
|
+
for (let tokenAddress of serviceInfo.chainTokens[chainIdentifier]) {
|
|
37
|
+
this.swapBounds[swapType][chainIdentifier][tokenAddress] = {
|
|
38
|
+
input: isSend ? {} : btcBounds,
|
|
39
|
+
output: !isSend ? {} : btcBounds,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns the input/output swap limit for given swap type, chain and token
|
|
47
|
+
*
|
|
48
|
+
* @param swapType Swap protocol service to check
|
|
49
|
+
* @param chainId Chain identifier of the smart chain to check
|
|
50
|
+
* @param tokenAddress Address of the token to check
|
|
51
|
+
*/
|
|
52
|
+
getSwapLimits(swapType, chainId, tokenAddress) {
|
|
53
|
+
return this.swapBounds[swapType]?.[chainId]?.[tokenAddress];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Returns tokens supported by the intermediary, optionally constrained to the specific swap types
|
|
57
|
+
*
|
|
58
|
+
* @param chainIdentifier Chain identifier of the smart chain to check
|
|
59
|
+
* @param swapTypesArr An array of swap type services to check
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
getSupportedTokens(chainIdentifier, swapTypesArr = [
|
|
63
|
+
SwapType_1.SwapType.TO_BTC,
|
|
64
|
+
SwapType_1.SwapType.TO_BTCLN,
|
|
65
|
+
SwapType_1.SwapType.FROM_BTC,
|
|
66
|
+
SwapType_1.SwapType.FROM_BTCLN,
|
|
67
|
+
SwapType_1.SwapType.SPV_VAULT_FROM_BTC,
|
|
68
|
+
SwapType_1.SwapType.FROM_BTCLN_AUTO
|
|
69
|
+
]) {
|
|
70
|
+
const swapTypes = new Set(swapTypesArr);
|
|
71
|
+
let tokens = new Set();
|
|
72
|
+
swapTypes.forEach((swapType) => {
|
|
73
|
+
const supportedTokens = this.services[swapType]?.chainTokens?.[chainIdentifier];
|
|
74
|
+
if (supportedTokens != null)
|
|
75
|
+
supportedTokens.forEach(token => tokens.add(token));
|
|
76
|
+
});
|
|
77
|
+
return tokens;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Fetches, returns and saves the reputation of the intermediary, either for all or just for a single token
|
|
81
|
+
*
|
|
82
|
+
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
83
|
+
* @param swapContract Swap contract for the requested smart chain
|
|
84
|
+
* @param tokens An optional array of tokens to fetch the data for (by default it uses all tokens supported
|
|
85
|
+
* by the intermediary)
|
|
86
|
+
* @param abortSignal
|
|
87
|
+
*/
|
|
88
|
+
async getReputation(chainIdentifier, swapContract, tokens, abortSignal) {
|
|
89
|
+
const checkReputationTokens = tokens == null ?
|
|
90
|
+
this.getSupportedTokens(chainIdentifier, [SwapType_1.SwapType.TO_BTC, SwapType_1.SwapType.TO_BTCLN]) :
|
|
91
|
+
new Set(tokens);
|
|
92
|
+
const promises = [];
|
|
93
|
+
const reputation = {};
|
|
94
|
+
for (let token of checkReputationTokens) {
|
|
95
|
+
promises.push((0, RetryUtils_1.tryWithRetries)(() => swapContract.getIntermediaryReputation(this.getAddress(chainIdentifier), token), undefined, undefined, abortSignal).then(result => {
|
|
96
|
+
if (result != null)
|
|
97
|
+
reputation[token] = result;
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
await Promise.all(promises);
|
|
101
|
+
this.reputation ??= {};
|
|
102
|
+
this.reputation[chainIdentifier] ??= {};
|
|
103
|
+
for (let key in reputation) {
|
|
104
|
+
this.reputation[chainIdentifier][key] = reputation[key];
|
|
105
|
+
}
|
|
106
|
+
return reputation;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Fetches, returns and saves the liquidity of the intermediary for a specific token
|
|
110
|
+
*
|
|
111
|
+
* @param chainIdentifier Chain identifier of the chain on which to fetch the reputation
|
|
112
|
+
* @param swapContract Swap contract for the requested smart chain
|
|
113
|
+
* @param token Token address of the token to fetch the liquidity for
|
|
114
|
+
* @param abortSignal
|
|
115
|
+
*/
|
|
116
|
+
async getLiquidity(chainIdentifier, swapContract, token, abortSignal) {
|
|
117
|
+
const result = await (0, RetryUtils_1.tryWithRetries)(() => swapContract.getBalance(this.getAddress(chainIdentifier), token, true), undefined, undefined, abortSignal);
|
|
118
|
+
this.liquidity ??= {};
|
|
119
|
+
this.liquidity[chainIdentifier] ??= {};
|
|
120
|
+
this.liquidity[chainIdentifier][token] = result;
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Checks whether the intermediary supports swaps of any tokens on the smart chain
|
|
125
|
+
*
|
|
126
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
127
|
+
*/
|
|
128
|
+
supportsChain(chainIdentifier) {
|
|
129
|
+
if (this.addresses[chainIdentifier] == null)
|
|
130
|
+
return false;
|
|
131
|
+
return this.getSupportedTokens(chainIdentifier).size !== 0;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Returns intermediary's address on a given smart chain
|
|
135
|
+
*
|
|
136
|
+
* @param chainIdentifier Chain identifier of the smart chain
|
|
137
|
+
*/
|
|
138
|
+
getAddress(chainIdentifier) {
|
|
139
|
+
return this.addresses[chainIdentifier];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.Intermediary = Intermediary;
|