@atomiqlabs/lp-lib 14.0.0-dev.13 → 14.0.0-dev.16
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/LICENSE +201 -201
- package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
- package/dist/fees/IBtcFeeEstimator.js +2 -2
- package/dist/index.d.ts +42 -42
- package/dist/index.js +58 -58
- package/dist/info/InfoHandler.d.ts +17 -17
- package/dist/info/InfoHandler.js +61 -61
- package/dist/plugins/IPlugin.d.ts +143 -143
- package/dist/plugins/IPlugin.js +34 -34
- package/dist/plugins/PluginManager.d.ts +112 -112
- package/dist/plugins/PluginManager.js +259 -259
- package/dist/prices/BinanceSwapPrice.d.ts +26 -26
- package/dist/prices/BinanceSwapPrice.js +92 -92
- package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
- package/dist/prices/CoinGeckoSwapPrice.js +64 -64
- package/dist/prices/ISwapPrice.d.ts +43 -43
- package/dist/prices/ISwapPrice.js +55 -55
- package/dist/prices/OKXSwapPrice.d.ts +26 -26
- package/dist/prices/OKXSwapPrice.js +92 -92
- package/dist/storage/IIntermediaryStorage.d.ts +18 -18
- package/dist/storage/IIntermediaryStorage.js +2 -2
- package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
- package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
- package/dist/storagemanager/StorageManager.d.ts +13 -13
- package/dist/storagemanager/StorageManager.js +64 -64
- package/dist/swaps/SwapHandler.d.ts +153 -153
- package/dist/swaps/SwapHandler.js +160 -160
- package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
- package/dist/swaps/SwapHandlerSwap.js +78 -78
- package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
- package/dist/swaps/assertions/AmountAssertions.js +72 -72
- package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
- package/dist/swaps/assertions/FromBtcAmountAssertions.js +180 -172
- package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
- package/dist/swaps/assertions/LightningAssertions.js +86 -86
- package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
- package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
- package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
- package/dist/swaps/escrow/EscrowHandler.js +158 -158
- package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
- package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
- package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
- package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
- package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
- package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -675
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +104 -104
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +659 -659
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +861 -861
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +23 -23
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +56 -56
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +41 -41
- package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +491 -491
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
- package/dist/swaps/spv_vault_swap/SpvVaults.js +364 -364
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
- package/dist/utils/Utils.d.ts +29 -29
- package/dist/utils/Utils.js +89 -89
- package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
- package/dist/utils/paramcoders/IParamReader.js +2 -2
- package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
- package/dist/utils/paramcoders/IParamWriter.js +2 -2
- package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
- package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
- package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
- package/dist/utils/paramcoders/ParamDecoder.js +222 -222
- package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
- package/dist/utils/paramcoders/ParamEncoder.js +22 -22
- package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
- package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
- package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
- package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
- package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
- package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
- package/dist/wallets/IBitcoinWallet.d.ts +67 -67
- package/dist/wallets/IBitcoinWallet.js +2 -2
- package/dist/wallets/ILightningWallet.d.ts +117 -117
- package/dist/wallets/ILightningWallet.js +37 -37
- package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
- package/dist/wallets/ISpvVaultSigner.js +2 -2
- package/package.json +36 -36
- package/src/fees/IBtcFeeEstimator.ts +6 -6
- package/src/index.ts +53 -53
- package/src/info/InfoHandler.ts +106 -106
- package/src/plugins/IPlugin.ts +168 -168
- package/src/plugins/PluginManager.ts +336 -336
- package/src/prices/BinanceSwapPrice.ts +113 -113
- package/src/prices/CoinGeckoSwapPrice.ts +87 -87
- package/src/prices/ISwapPrice.ts +88 -88
- package/src/prices/OKXSwapPrice.ts +113 -113
- package/src/storage/IIntermediaryStorage.ts +19 -19
- package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
- package/src/storagemanager/StorageManager.ts +78 -78
- package/src/swaps/SwapHandler.ts +277 -277
- package/src/swaps/SwapHandlerSwap.ts +141 -141
- package/src/swaps/assertions/AmountAssertions.ts +76 -76
- package/src/swaps/assertions/FromBtcAmountAssertions.ts +246 -238
- package/src/swaps/assertions/LightningAssertions.ts +103 -103
- package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
- package/src/swaps/escrow/EscrowHandler.ts +179 -179
- package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
- package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
- package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
- package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
- package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
- package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
- package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -856
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +822 -822
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
- package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
- package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1110 -1110
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +77 -77
- package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
- package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
- package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +627 -627
- package/src/swaps/spv_vault_swap/SpvVaults.ts +435 -435
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
- package/src/utils/Utils.ts +104 -104
- package/src/utils/paramcoders/IParamReader.ts +7 -7
- package/src/utils/paramcoders/IParamWriter.ts +8 -8
- package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
- package/src/utils/paramcoders/ParamDecoder.ts +218 -218
- package/src/utils/paramcoders/ParamEncoder.ts +29 -29
- package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
- package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
- package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
- package/src/wallets/IBitcoinWallet.ts +68 -68
- package/src/wallets/ILightningWallet.ts +178 -178
- package/src/wallets/ISpvVaultSigner.ts +10 -10
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LightningAssertions = void 0;
|
|
4
|
-
class LightningAssertions {
|
|
5
|
-
constructor(logger, lightning) {
|
|
6
|
-
this.LIGHTNING_LIQUIDITY_CACHE_TIMEOUT = 5 * 1000;
|
|
7
|
-
this.logger = logger;
|
|
8
|
-
this.lightning = lightning;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Checks if the prior payment with the same paymentHash exists
|
|
12
|
-
*
|
|
13
|
-
* @param paymentHash
|
|
14
|
-
* @param abortSignal
|
|
15
|
-
* @throws {DefinedRuntimeError} will throw an error if payment already exists
|
|
16
|
-
*/
|
|
17
|
-
async checkPriorPayment(paymentHash, abortSignal) {
|
|
18
|
-
const payment = await this.lightning.getPayment(paymentHash);
|
|
19
|
-
if (payment != null)
|
|
20
|
-
throw {
|
|
21
|
-
code: 20010,
|
|
22
|
-
msg: "Already processed"
|
|
23
|
-
};
|
|
24
|
-
abortSignal.throwIfAborted();
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Checks if the underlying LND backend has enough liquidity in channels to honor the swap
|
|
28
|
-
*
|
|
29
|
-
* @param amount
|
|
30
|
-
* @param abortSignal
|
|
31
|
-
* @param useCached Whether to use cached liquidity values
|
|
32
|
-
* @throws {DefinedRuntimeError} will throw an error if there isn't enough liquidity
|
|
33
|
-
*/
|
|
34
|
-
async checkLiquidity(amount, abortSignal, useCached = false) {
|
|
35
|
-
if (!useCached || this.lightningLiquidityCache == null || this.lightningLiquidityCache.timestamp < Date.now() - this.LIGHTNING_LIQUIDITY_CACHE_TIMEOUT) {
|
|
36
|
-
const channelBalances = await this.lightning.getLightningBalance();
|
|
37
|
-
this.lightningLiquidityCache = {
|
|
38
|
-
liquidity: channelBalances.localBalance,
|
|
39
|
-
timestamp: Date.now()
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
if (amount > this.lightningLiquidityCache.liquidity) {
|
|
43
|
-
throw {
|
|
44
|
-
code: 20002,
|
|
45
|
-
msg: "Not enough liquidity"
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
abortSignal.throwIfAborted();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Checks if we have enough inbound liquidity to be able to receive an LN payment (without MPP)
|
|
52
|
-
*
|
|
53
|
-
* @param amountBD
|
|
54
|
-
* @param channelsPrefetch
|
|
55
|
-
* @param signal
|
|
56
|
-
* @throws {DefinedRuntimeError} will throw an error if there isn't enough inbound liquidity to receive the LN payment
|
|
57
|
-
*/
|
|
58
|
-
async checkInboundLiquidity(amountBD, channelsPrefetch, signal) {
|
|
59
|
-
const channelsResponse = await channelsPrefetch;
|
|
60
|
-
signal.throwIfAborted();
|
|
61
|
-
let hasEnoughInboundLiquidity = false;
|
|
62
|
-
channelsResponse.forEach(channel => {
|
|
63
|
-
if (channel.remoteBalance >= amountBD)
|
|
64
|
-
hasEnoughInboundLiquidity = true;
|
|
65
|
-
});
|
|
66
|
-
if (!hasEnoughInboundLiquidity) {
|
|
67
|
-
throw {
|
|
68
|
-
code: 20050,
|
|
69
|
-
msg: "Not enough LN inbound liquidity"
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Starts LN channels pre-fetch
|
|
75
|
-
*
|
|
76
|
-
* @param abortController
|
|
77
|
-
*/
|
|
78
|
-
getChannelsPrefetch(abortController) {
|
|
79
|
-
return this.lightning.getChannels(true).catch(e => {
|
|
80
|
-
this.logger.error("getChannelsPrefetch(): error", e);
|
|
81
|
-
abortController.abort(e);
|
|
82
|
-
return null;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.LightningAssertions = LightningAssertions;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LightningAssertions = void 0;
|
|
4
|
+
class LightningAssertions {
|
|
5
|
+
constructor(logger, lightning) {
|
|
6
|
+
this.LIGHTNING_LIQUIDITY_CACHE_TIMEOUT = 5 * 1000;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
this.lightning = lightning;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the prior payment with the same paymentHash exists
|
|
12
|
+
*
|
|
13
|
+
* @param paymentHash
|
|
14
|
+
* @param abortSignal
|
|
15
|
+
* @throws {DefinedRuntimeError} will throw an error if payment already exists
|
|
16
|
+
*/
|
|
17
|
+
async checkPriorPayment(paymentHash, abortSignal) {
|
|
18
|
+
const payment = await this.lightning.getPayment(paymentHash);
|
|
19
|
+
if (payment != null)
|
|
20
|
+
throw {
|
|
21
|
+
code: 20010,
|
|
22
|
+
msg: "Already processed"
|
|
23
|
+
};
|
|
24
|
+
abortSignal.throwIfAborted();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Checks if the underlying LND backend has enough liquidity in channels to honor the swap
|
|
28
|
+
*
|
|
29
|
+
* @param amount
|
|
30
|
+
* @param abortSignal
|
|
31
|
+
* @param useCached Whether to use cached liquidity values
|
|
32
|
+
* @throws {DefinedRuntimeError} will throw an error if there isn't enough liquidity
|
|
33
|
+
*/
|
|
34
|
+
async checkLiquidity(amount, abortSignal, useCached = false) {
|
|
35
|
+
if (!useCached || this.lightningLiquidityCache == null || this.lightningLiquidityCache.timestamp < Date.now() - this.LIGHTNING_LIQUIDITY_CACHE_TIMEOUT) {
|
|
36
|
+
const channelBalances = await this.lightning.getLightningBalance();
|
|
37
|
+
this.lightningLiquidityCache = {
|
|
38
|
+
liquidity: channelBalances.localBalance,
|
|
39
|
+
timestamp: Date.now()
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (amount > this.lightningLiquidityCache.liquidity) {
|
|
43
|
+
throw {
|
|
44
|
+
code: 20002,
|
|
45
|
+
msg: "Not enough liquidity"
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
abortSignal.throwIfAborted();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Checks if we have enough inbound liquidity to be able to receive an LN payment (without MPP)
|
|
52
|
+
*
|
|
53
|
+
* @param amountBD
|
|
54
|
+
* @param channelsPrefetch
|
|
55
|
+
* @param signal
|
|
56
|
+
* @throws {DefinedRuntimeError} will throw an error if there isn't enough inbound liquidity to receive the LN payment
|
|
57
|
+
*/
|
|
58
|
+
async checkInboundLiquidity(amountBD, channelsPrefetch, signal) {
|
|
59
|
+
const channelsResponse = await channelsPrefetch;
|
|
60
|
+
signal.throwIfAborted();
|
|
61
|
+
let hasEnoughInboundLiquidity = false;
|
|
62
|
+
channelsResponse.forEach(channel => {
|
|
63
|
+
if (channel.remoteBalance >= amountBD)
|
|
64
|
+
hasEnoughInboundLiquidity = true;
|
|
65
|
+
});
|
|
66
|
+
if (!hasEnoughInboundLiquidity) {
|
|
67
|
+
throw {
|
|
68
|
+
code: 20050,
|
|
69
|
+
msg: "Not enough LN inbound liquidity"
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Starts LN channels pre-fetch
|
|
75
|
+
*
|
|
76
|
+
* @param abortController
|
|
77
|
+
*/
|
|
78
|
+
getChannelsPrefetch(abortController) {
|
|
79
|
+
return this.lightning.getChannels(true).catch(e => {
|
|
80
|
+
this.logger.error("getChannelsPrefetch(): error", e);
|
|
81
|
+
abortController.abort(e);
|
|
82
|
+
return null;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.LightningAssertions = LightningAssertions;
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { AmountAssertions } from "./AmountAssertions";
|
|
2
|
-
import { ToBtcLnRequestType } from "../escrow/tobtcln_abstract/ToBtcLnAbs";
|
|
3
|
-
import { ToBtcRequestType } from "../escrow/tobtc_abstract/ToBtcAbs";
|
|
4
|
-
import { RequestData, SwapHandlerType } from "../SwapHandler";
|
|
5
|
-
export declare class ToBtcAmountAssertions extends AmountAssertions {
|
|
6
|
-
/**
|
|
7
|
-
* Checks minimums/maximums, calculates the fee & total amount
|
|
8
|
-
*
|
|
9
|
-
* @param swapType
|
|
10
|
-
* @param request
|
|
11
|
-
* @param requestedAmount
|
|
12
|
-
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds
|
|
13
|
-
*/
|
|
14
|
-
preCheckToBtcAmounts(swapType: SwapHandlerType.TO_BTCLN | SwapHandlerType.TO_BTC, request: RequestData<ToBtcLnRequestType | ToBtcRequestType>, requestedAmount: {
|
|
15
|
-
input: boolean;
|
|
16
|
-
amount: bigint;
|
|
17
|
-
token: string;
|
|
18
|
-
}): Promise<{
|
|
19
|
-
baseFee: bigint;
|
|
20
|
-
feePPM: bigint;
|
|
21
|
-
}>;
|
|
22
|
-
/**
|
|
23
|
-
* Checks minimums/maximums, calculates network fee (based on the callback passed), swap fee & total amount
|
|
24
|
-
*
|
|
25
|
-
* @param swapType
|
|
26
|
-
* @param request
|
|
27
|
-
* @param requestedAmount
|
|
28
|
-
* @param fees
|
|
29
|
-
* @param getNetworkFee
|
|
30
|
-
* @param signal
|
|
31
|
-
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds,
|
|
32
|
-
* or if we don't have enough funds (getNetworkFee callback throws)
|
|
33
|
-
*/
|
|
34
|
-
checkToBtcAmount<T extends {
|
|
35
|
-
networkFee: bigint;
|
|
36
|
-
}>(swapType: SwapHandlerType.TO_BTCLN | SwapHandlerType.TO_BTC, request: RequestData<ToBtcLnRequestType | ToBtcRequestType>, requestedAmount: {
|
|
37
|
-
input: boolean;
|
|
38
|
-
amount: bigint;
|
|
39
|
-
token: string;
|
|
40
|
-
pricePrefetch?: Promise<bigint>;
|
|
41
|
-
}, fees: {
|
|
42
|
-
baseFee: bigint;
|
|
43
|
-
feePPM: bigint;
|
|
44
|
-
}, getNetworkFee: (amount: bigint) => Promise<T>, signal: AbortSignal): Promise<{
|
|
45
|
-
amountBD: bigint;
|
|
46
|
-
networkFeeData: T;
|
|
47
|
-
swapFee: bigint;
|
|
48
|
-
swapFeeInToken: bigint;
|
|
49
|
-
networkFee: bigint;
|
|
50
|
-
networkFeeInToken: bigint;
|
|
51
|
-
totalInToken: bigint;
|
|
52
|
-
}>;
|
|
53
|
-
}
|
|
1
|
+
import { AmountAssertions } from "./AmountAssertions";
|
|
2
|
+
import { ToBtcLnRequestType } from "../escrow/tobtcln_abstract/ToBtcLnAbs";
|
|
3
|
+
import { ToBtcRequestType } from "../escrow/tobtc_abstract/ToBtcAbs";
|
|
4
|
+
import { RequestData, SwapHandlerType } from "../SwapHandler";
|
|
5
|
+
export declare class ToBtcAmountAssertions extends AmountAssertions {
|
|
6
|
+
/**
|
|
7
|
+
* Checks minimums/maximums, calculates the fee & total amount
|
|
8
|
+
*
|
|
9
|
+
* @param swapType
|
|
10
|
+
* @param request
|
|
11
|
+
* @param requestedAmount
|
|
12
|
+
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds
|
|
13
|
+
*/
|
|
14
|
+
preCheckToBtcAmounts(swapType: SwapHandlerType.TO_BTCLN | SwapHandlerType.TO_BTC, request: RequestData<ToBtcLnRequestType | ToBtcRequestType>, requestedAmount: {
|
|
15
|
+
input: boolean;
|
|
16
|
+
amount: bigint;
|
|
17
|
+
token: string;
|
|
18
|
+
}): Promise<{
|
|
19
|
+
baseFee: bigint;
|
|
20
|
+
feePPM: bigint;
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Checks minimums/maximums, calculates network fee (based on the callback passed), swap fee & total amount
|
|
24
|
+
*
|
|
25
|
+
* @param swapType
|
|
26
|
+
* @param request
|
|
27
|
+
* @param requestedAmount
|
|
28
|
+
* @param fees
|
|
29
|
+
* @param getNetworkFee
|
|
30
|
+
* @param signal
|
|
31
|
+
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds,
|
|
32
|
+
* or if we don't have enough funds (getNetworkFee callback throws)
|
|
33
|
+
*/
|
|
34
|
+
checkToBtcAmount<T extends {
|
|
35
|
+
networkFee: bigint;
|
|
36
|
+
}>(swapType: SwapHandlerType.TO_BTCLN | SwapHandlerType.TO_BTC, request: RequestData<ToBtcLnRequestType | ToBtcRequestType>, requestedAmount: {
|
|
37
|
+
input: boolean;
|
|
38
|
+
amount: bigint;
|
|
39
|
+
token: string;
|
|
40
|
+
pricePrefetch?: Promise<bigint>;
|
|
41
|
+
}, fees: {
|
|
42
|
+
baseFee: bigint;
|
|
43
|
+
feePPM: bigint;
|
|
44
|
+
}, getNetworkFee: (amount: bigint) => Promise<T>, signal: AbortSignal): Promise<{
|
|
45
|
+
amountBD: bigint;
|
|
46
|
+
networkFeeData: T;
|
|
47
|
+
swapFee: bigint;
|
|
48
|
+
swapFeeInToken: bigint;
|
|
49
|
+
networkFee: bigint;
|
|
50
|
+
networkFeeInToken: bigint;
|
|
51
|
+
totalInToken: bigint;
|
|
52
|
+
}>;
|
|
53
|
+
}
|
|
@@ -1,150 +1,150 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ToBtcAmountAssertions = void 0;
|
|
4
|
-
const AmountAssertions_1 = require("./AmountAssertions");
|
|
5
|
-
const PluginManager_1 = require("../../plugins/PluginManager");
|
|
6
|
-
const IPlugin_1 = require("../../plugins/IPlugin");
|
|
7
|
-
class ToBtcAmountAssertions extends AmountAssertions_1.AmountAssertions {
|
|
8
|
-
/**
|
|
9
|
-
* Checks minimums/maximums, calculates the fee & total amount
|
|
10
|
-
*
|
|
11
|
-
* @param swapType
|
|
12
|
-
* @param request
|
|
13
|
-
* @param requestedAmount
|
|
14
|
-
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds
|
|
15
|
-
*/
|
|
16
|
-
async preCheckToBtcAmounts(swapType, request, requestedAmount) {
|
|
17
|
-
const res = await PluginManager_1.PluginManager.onHandlePreToBtcQuote(swapType, request, requestedAmount, request.chainIdentifier, { minInBtc: this.config.min, maxInBtc: this.config.max }, { baseFeeInBtc: this.config.baseFee, feePPM: this.config.feePPM });
|
|
18
|
-
if (res != null) {
|
|
19
|
-
AmountAssertions_1.AmountAssertions.handlePluginErrorResponses(res);
|
|
20
|
-
if ((0, IPlugin_1.isQuoteSetFees)(res)) {
|
|
21
|
-
return {
|
|
22
|
-
baseFee: res.baseFee || this.config.baseFee,
|
|
23
|
-
feePPM: res.feePPM || this.config.feePPM
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (!requestedAmount.input) {
|
|
28
|
-
this.checkBtcAmountInBounds(requestedAmount.amount);
|
|
29
|
-
}
|
|
30
|
-
return {
|
|
31
|
-
baseFee: this.config.baseFee,
|
|
32
|
-
feePPM: this.config.feePPM
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Checks minimums/maximums, calculates network fee (based on the callback passed), swap fee & total amount
|
|
37
|
-
*
|
|
38
|
-
* @param swapType
|
|
39
|
-
* @param request
|
|
40
|
-
* @param requestedAmount
|
|
41
|
-
* @param fees
|
|
42
|
-
* @param getNetworkFee
|
|
43
|
-
* @param signal
|
|
44
|
-
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds,
|
|
45
|
-
* or if we don't have enough funds (getNetworkFee callback throws)
|
|
46
|
-
*/
|
|
47
|
-
async checkToBtcAmount(swapType, request, requestedAmount, fees, getNetworkFee, signal) {
|
|
48
|
-
const chainIdentifier = request.chainIdentifier;
|
|
49
|
-
const res = await PluginManager_1.PluginManager.onHandlePostToBtcQuote(swapType, request, requestedAmount, request.chainIdentifier, { minInBtc: this.config.min, maxInBtc: this.config.max }, { baseFeeInBtc: fees.baseFee, feePPM: fees.feePPM, networkFeeGetter: getNetworkFee });
|
|
50
|
-
signal.throwIfAborted();
|
|
51
|
-
if (res != null) {
|
|
52
|
-
AmountAssertions_1.AmountAssertions.handlePluginErrorResponses(res);
|
|
53
|
-
if ((0, IPlugin_1.isQuoteSetFees)(res)) {
|
|
54
|
-
if (res.baseFee != null)
|
|
55
|
-
fees.baseFee = res.baseFee;
|
|
56
|
-
if (res.feePPM != null)
|
|
57
|
-
fees.feePPM = res.feePPM;
|
|
58
|
-
}
|
|
59
|
-
if ((0, IPlugin_1.isToBtcPluginQuote)(res)) {
|
|
60
|
-
if (requestedAmount.input) {
|
|
61
|
-
return {
|
|
62
|
-
amountBD: res.amount.amount,
|
|
63
|
-
swapFee: res.swapFee.inOutputTokens,
|
|
64
|
-
swapFeeInToken: res.swapFee.inInputTokens,
|
|
65
|
-
networkFee: res.networkFee.inOutputTokens,
|
|
66
|
-
networkFeeInToken: res.networkFee.inInputTokens,
|
|
67
|
-
networkFeeData: res.networkFeeData,
|
|
68
|
-
totalInToken: requestedAmount.amount
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
return {
|
|
73
|
-
amountBD: requestedAmount.amount,
|
|
74
|
-
swapFee: res.swapFee.inOutputTokens,
|
|
75
|
-
swapFeeInToken: res.swapFee.inInputTokens,
|
|
76
|
-
networkFee: res.networkFee.inOutputTokens,
|
|
77
|
-
networkFeeInToken: res.networkFee.inInputTokens,
|
|
78
|
-
networkFeeData: res.networkFeeData,
|
|
79
|
-
totalInToken: res.amount.amount + res.swapFee.inInputTokens + res.networkFee.inInputTokens
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
let amountBD;
|
|
85
|
-
let tooHigh = false;
|
|
86
|
-
let tooLow = false;
|
|
87
|
-
if (requestedAmount.input) {
|
|
88
|
-
amountBD = await this.swapPricing.getToBtcSwapAmount(requestedAmount.amount, requestedAmount.token, chainIdentifier, null, requestedAmount.pricePrefetch);
|
|
89
|
-
signal.throwIfAborted();
|
|
90
|
-
//Decrease by base fee
|
|
91
|
-
amountBD = amountBD - fees.baseFee;
|
|
92
|
-
//If it's already smaller than minimum, set it to minimum so we can calculate the network fee
|
|
93
|
-
if (amountBD < (this.config.min * 95n / 100n)) {
|
|
94
|
-
amountBD = this.config.min;
|
|
95
|
-
tooLow = true;
|
|
96
|
-
}
|
|
97
|
-
//If it's already larger than maximum, set it to maximum so we can calculate the network fee
|
|
98
|
-
if (amountBD > (this.config.max * 105n / 100n)) {
|
|
99
|
-
amountBD = this.config.max;
|
|
100
|
-
tooHigh = true;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
amountBD = requestedAmount.amount;
|
|
105
|
-
this.checkBtcAmountInBounds(amountBD);
|
|
106
|
-
}
|
|
107
|
-
const resp = await getNetworkFee(amountBD);
|
|
108
|
-
signal.throwIfAborted();
|
|
109
|
-
if (requestedAmount.input) {
|
|
110
|
-
//Decrease by network fee
|
|
111
|
-
amountBD = amountBD - resp.networkFee;
|
|
112
|
-
//Decrease by percentage fee
|
|
113
|
-
amountBD = amountBD * 1000000n / (fees.feePPM + 1000000n);
|
|
114
|
-
tooHigh || (tooHigh = amountBD > (this.config.max * 105n / 100n));
|
|
115
|
-
tooLow || (tooLow = amountBD < (this.config.min * 95n / 100n));
|
|
116
|
-
if (tooLow || tooHigh) {
|
|
117
|
-
//Compute min/max
|
|
118
|
-
let adjustedMin = this.config.min * (fees.feePPM + 1000000n) / 1000000n;
|
|
119
|
-
let adjustedMax = this.config.max * (fees.feePPM + 1000000n) / 1000000n;
|
|
120
|
-
adjustedMin = adjustedMin + fees.baseFee + resp.networkFee;
|
|
121
|
-
adjustedMax = adjustedMax + fees.baseFee + resp.networkFee;
|
|
122
|
-
const minIn = await this.swapPricing.getFromBtcSwapAmount(adjustedMin, requestedAmount.token, chainIdentifier, null, requestedAmount.pricePrefetch);
|
|
123
|
-
const maxIn = await this.swapPricing.getFromBtcSwapAmount(adjustedMax, requestedAmount.token, chainIdentifier, null, requestedAmount.pricePrefetch);
|
|
124
|
-
throw {
|
|
125
|
-
code: tooLow ? 20003 : 20004,
|
|
126
|
-
msg: tooLow ? "Amount too low!" : "Amount too high!",
|
|
127
|
-
data: {
|
|
128
|
-
min: minIn.toString(10),
|
|
129
|
-
max: maxIn.toString(10)
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
const swapFee = fees.baseFee + (amountBD * fees.feePPM / 1000000n);
|
|
135
|
-
const networkFeeInToken = await this.swapPricing.getFromBtcSwapAmount(resp.networkFee, requestedAmount.token, chainIdentifier, true, requestedAmount.pricePrefetch);
|
|
136
|
-
const swapFeeInToken = await this.swapPricing.getFromBtcSwapAmount(swapFee, requestedAmount.token, chainIdentifier, true, requestedAmount.pricePrefetch);
|
|
137
|
-
signal.throwIfAborted();
|
|
138
|
-
let total;
|
|
139
|
-
if (requestedAmount.input) {
|
|
140
|
-
total = requestedAmount.amount;
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
const amountInToken = await this.swapPricing.getFromBtcSwapAmount(requestedAmount.amount, requestedAmount.token, chainIdentifier, true, requestedAmount.pricePrefetch);
|
|
144
|
-
signal.throwIfAborted();
|
|
145
|
-
total = amountInToken + swapFeeInToken + networkFeeInToken;
|
|
146
|
-
}
|
|
147
|
-
return { amountBD, networkFeeData: resp, swapFee, swapFeeInToken, networkFee: resp.networkFee, networkFeeInToken, totalInToken: total };
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
exports.ToBtcAmountAssertions = ToBtcAmountAssertions;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ToBtcAmountAssertions = void 0;
|
|
4
|
+
const AmountAssertions_1 = require("./AmountAssertions");
|
|
5
|
+
const PluginManager_1 = require("../../plugins/PluginManager");
|
|
6
|
+
const IPlugin_1 = require("../../plugins/IPlugin");
|
|
7
|
+
class ToBtcAmountAssertions extends AmountAssertions_1.AmountAssertions {
|
|
8
|
+
/**
|
|
9
|
+
* Checks minimums/maximums, calculates the fee & total amount
|
|
10
|
+
*
|
|
11
|
+
* @param swapType
|
|
12
|
+
* @param request
|
|
13
|
+
* @param requestedAmount
|
|
14
|
+
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds
|
|
15
|
+
*/
|
|
16
|
+
async preCheckToBtcAmounts(swapType, request, requestedAmount) {
|
|
17
|
+
const res = await PluginManager_1.PluginManager.onHandlePreToBtcQuote(swapType, request, requestedAmount, request.chainIdentifier, { minInBtc: this.config.min, maxInBtc: this.config.max }, { baseFeeInBtc: this.config.baseFee, feePPM: this.config.feePPM });
|
|
18
|
+
if (res != null) {
|
|
19
|
+
AmountAssertions_1.AmountAssertions.handlePluginErrorResponses(res);
|
|
20
|
+
if ((0, IPlugin_1.isQuoteSetFees)(res)) {
|
|
21
|
+
return {
|
|
22
|
+
baseFee: res.baseFee || this.config.baseFee,
|
|
23
|
+
feePPM: res.feePPM || this.config.feePPM
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!requestedAmount.input) {
|
|
28
|
+
this.checkBtcAmountInBounds(requestedAmount.amount);
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
baseFee: this.config.baseFee,
|
|
32
|
+
feePPM: this.config.feePPM
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Checks minimums/maximums, calculates network fee (based on the callback passed), swap fee & total amount
|
|
37
|
+
*
|
|
38
|
+
* @param swapType
|
|
39
|
+
* @param request
|
|
40
|
+
* @param requestedAmount
|
|
41
|
+
* @param fees
|
|
42
|
+
* @param getNetworkFee
|
|
43
|
+
* @param signal
|
|
44
|
+
* @throws {DefinedRuntimeError} will throw an error if the amount is outside minimum/maximum bounds,
|
|
45
|
+
* or if we don't have enough funds (getNetworkFee callback throws)
|
|
46
|
+
*/
|
|
47
|
+
async checkToBtcAmount(swapType, request, requestedAmount, fees, getNetworkFee, signal) {
|
|
48
|
+
const chainIdentifier = request.chainIdentifier;
|
|
49
|
+
const res = await PluginManager_1.PluginManager.onHandlePostToBtcQuote(swapType, request, requestedAmount, request.chainIdentifier, { minInBtc: this.config.min, maxInBtc: this.config.max }, { baseFeeInBtc: fees.baseFee, feePPM: fees.feePPM, networkFeeGetter: getNetworkFee });
|
|
50
|
+
signal.throwIfAborted();
|
|
51
|
+
if (res != null) {
|
|
52
|
+
AmountAssertions_1.AmountAssertions.handlePluginErrorResponses(res);
|
|
53
|
+
if ((0, IPlugin_1.isQuoteSetFees)(res)) {
|
|
54
|
+
if (res.baseFee != null)
|
|
55
|
+
fees.baseFee = res.baseFee;
|
|
56
|
+
if (res.feePPM != null)
|
|
57
|
+
fees.feePPM = res.feePPM;
|
|
58
|
+
}
|
|
59
|
+
if ((0, IPlugin_1.isToBtcPluginQuote)(res)) {
|
|
60
|
+
if (requestedAmount.input) {
|
|
61
|
+
return {
|
|
62
|
+
amountBD: res.amount.amount,
|
|
63
|
+
swapFee: res.swapFee.inOutputTokens,
|
|
64
|
+
swapFeeInToken: res.swapFee.inInputTokens,
|
|
65
|
+
networkFee: res.networkFee.inOutputTokens,
|
|
66
|
+
networkFeeInToken: res.networkFee.inInputTokens,
|
|
67
|
+
networkFeeData: res.networkFeeData,
|
|
68
|
+
totalInToken: requestedAmount.amount
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return {
|
|
73
|
+
amountBD: requestedAmount.amount,
|
|
74
|
+
swapFee: res.swapFee.inOutputTokens,
|
|
75
|
+
swapFeeInToken: res.swapFee.inInputTokens,
|
|
76
|
+
networkFee: res.networkFee.inOutputTokens,
|
|
77
|
+
networkFeeInToken: res.networkFee.inInputTokens,
|
|
78
|
+
networkFeeData: res.networkFeeData,
|
|
79
|
+
totalInToken: res.amount.amount + res.swapFee.inInputTokens + res.networkFee.inInputTokens
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
let amountBD;
|
|
85
|
+
let tooHigh = false;
|
|
86
|
+
let tooLow = false;
|
|
87
|
+
if (requestedAmount.input) {
|
|
88
|
+
amountBD = await this.swapPricing.getToBtcSwapAmount(requestedAmount.amount, requestedAmount.token, chainIdentifier, null, requestedAmount.pricePrefetch);
|
|
89
|
+
signal.throwIfAborted();
|
|
90
|
+
//Decrease by base fee
|
|
91
|
+
amountBD = amountBD - fees.baseFee;
|
|
92
|
+
//If it's already smaller than minimum, set it to minimum so we can calculate the network fee
|
|
93
|
+
if (amountBD < (this.config.min * 95n / 100n)) {
|
|
94
|
+
amountBD = this.config.min;
|
|
95
|
+
tooLow = true;
|
|
96
|
+
}
|
|
97
|
+
//If it's already larger than maximum, set it to maximum so we can calculate the network fee
|
|
98
|
+
if (amountBD > (this.config.max * 105n / 100n)) {
|
|
99
|
+
amountBD = this.config.max;
|
|
100
|
+
tooHigh = true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
amountBD = requestedAmount.amount;
|
|
105
|
+
this.checkBtcAmountInBounds(amountBD);
|
|
106
|
+
}
|
|
107
|
+
const resp = await getNetworkFee(amountBD);
|
|
108
|
+
signal.throwIfAborted();
|
|
109
|
+
if (requestedAmount.input) {
|
|
110
|
+
//Decrease by network fee
|
|
111
|
+
amountBD = amountBD - resp.networkFee;
|
|
112
|
+
//Decrease by percentage fee
|
|
113
|
+
amountBD = amountBD * 1000000n / (fees.feePPM + 1000000n);
|
|
114
|
+
tooHigh || (tooHigh = amountBD > (this.config.max * 105n / 100n));
|
|
115
|
+
tooLow || (tooLow = amountBD < (this.config.min * 95n / 100n));
|
|
116
|
+
if (tooLow || tooHigh) {
|
|
117
|
+
//Compute min/max
|
|
118
|
+
let adjustedMin = this.config.min * (fees.feePPM + 1000000n) / 1000000n;
|
|
119
|
+
let adjustedMax = this.config.max * (fees.feePPM + 1000000n) / 1000000n;
|
|
120
|
+
adjustedMin = adjustedMin + fees.baseFee + resp.networkFee;
|
|
121
|
+
adjustedMax = adjustedMax + fees.baseFee + resp.networkFee;
|
|
122
|
+
const minIn = await this.swapPricing.getFromBtcSwapAmount(adjustedMin, requestedAmount.token, chainIdentifier, null, requestedAmount.pricePrefetch);
|
|
123
|
+
const maxIn = await this.swapPricing.getFromBtcSwapAmount(adjustedMax, requestedAmount.token, chainIdentifier, null, requestedAmount.pricePrefetch);
|
|
124
|
+
throw {
|
|
125
|
+
code: tooLow ? 20003 : 20004,
|
|
126
|
+
msg: tooLow ? "Amount too low!" : "Amount too high!",
|
|
127
|
+
data: {
|
|
128
|
+
min: minIn.toString(10),
|
|
129
|
+
max: maxIn.toString(10)
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const swapFee = fees.baseFee + (amountBD * fees.feePPM / 1000000n);
|
|
135
|
+
const networkFeeInToken = await this.swapPricing.getFromBtcSwapAmount(resp.networkFee, requestedAmount.token, chainIdentifier, true, requestedAmount.pricePrefetch);
|
|
136
|
+
const swapFeeInToken = await this.swapPricing.getFromBtcSwapAmount(swapFee, requestedAmount.token, chainIdentifier, true, requestedAmount.pricePrefetch);
|
|
137
|
+
signal.throwIfAborted();
|
|
138
|
+
let total;
|
|
139
|
+
if (requestedAmount.input) {
|
|
140
|
+
total = requestedAmount.amount;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const amountInToken = await this.swapPricing.getFromBtcSwapAmount(requestedAmount.amount, requestedAmount.token, chainIdentifier, true, requestedAmount.pricePrefetch);
|
|
144
|
+
signal.throwIfAborted();
|
|
145
|
+
total = amountInToken + swapFeeInToken + networkFeeInToken;
|
|
146
|
+
}
|
|
147
|
+
return { amountBD, networkFeeData: resp, swapFee, swapFeeInToken, networkFee: resp.networkFee, networkFeeInToken, totalInToken: total };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.ToBtcAmountAssertions = ToBtcAmountAssertions;
|