@atomiqlabs/sdk 8.6.4 → 8.6.6
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 +51 -52
- package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
- package/dist/bitcoin/coinselect2/blackjack.js +37 -38
- package/dist/bitcoin/coinselect2/index.d.ts +17 -19
- package/dist/bitcoin/coinselect2/index.js +69 -69
- package/dist/bitcoin/coinselect2/utils.d.ts +75 -77
- package/dist/bitcoin/coinselect2/utils.js +123 -123
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +128 -130
- package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
- package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -21
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +99 -101
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +176 -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 +90 -91
- package/dist/http/paramcoders/IParamReader.d.ts +8 -8
- package/dist/http/paramcoders/IParamReader.js +2 -2
- package/dist/http/paramcoders/ParamDecoder.d.ts +42 -44
- package/dist/http/paramcoders/ParamDecoder.js +137 -137
- package/dist/http/paramcoders/ParamEncoder.d.ts +18 -20
- 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 +11 -13
- 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 +173 -174
- 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 +198 -199
- package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +437 -438
- package/dist/intermediaries/apis/IntermediaryAPI.js +603 -602
- 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 -166
- package/dist/prices/abstract/ISwapPrice.js +279 -267
- 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 +686 -687
- 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 +13 -14
- package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
- package/dist/swaps/IBTCWalletSwap.js +17 -18
- package/dist/swaps/IClaimableSwap.d.ts +49 -49
- package/dist/swaps/IClaimableSwap.js +14 -15
- 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 +13 -14
- package/dist/swaps/ISwap.d.ts +386 -387
- package/dist/swaps/ISwap.js +346 -341
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +11 -12
- package/dist/swaps/ISwapWrapper.d.ts +283 -284
- 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 +133 -135
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +114 -115
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +98 -101
- 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 +529 -531
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +181 -184
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -417
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +581 -583
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +225 -228
- 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 +190 -191
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -377
- 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 +125 -127
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +241 -242
- 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 +127 -128
- 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 +213 -207
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -755
- 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 +68 -69
- 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 +56 -57
- 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 +42 -43
- 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 +59 -60
- 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 +17 -18
- package/dist/types/lnurl/LNURLPay.d.ts +61 -61
- package/dist/types/lnurl/LNURLPay.js +30 -31
- package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
- package/dist/types/lnurl/LNURLWithdraw.js +26 -27
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
- package/dist/types/wallets/LightningInvoiceCreateService.js +14 -15
- 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 +69 -70
- package/dist/utils/BitcoinUtils.d.ts +12 -14
- package/dist/utils/BitcoinUtils.js +101 -102
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
- package/dist/utils/BitcoinWalletUtils.js +13 -14
- package/dist/utils/Logger.d.ts +7 -7
- package/dist/utils/Logger.js +11 -12
- package/dist/utils/RetryUtils.d.ts +22 -22
- package/dist/utils/RetryUtils.js +66 -67
- 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 +54 -55
- package/dist/utils/TokenUtils.d.ts +19 -19
- package/dist/utils/TokenUtils.js +36 -37
- package/dist/utils/TypeUtils.d.ts +7 -7
- package/dist/utils/TypeUtils.js +2 -2
- package/dist/utils/Utils.d.ts +56 -58
- package/dist/utils/Utils.js +193 -194
- package/package.json +1 -1
- package/src/intermediaries/apis/IntermediaryAPI.ts +4 -2
- package/src/prices/abstract/ISwapPrice.ts +19 -6
- package/src/swaps/ISwap.ts +17 -6
- package/src/swaps/ISwapWrapper.ts +4 -3
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +4 -2
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +4 -1
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +2 -2
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +4 -2
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +6 -6
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +5 -5
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +4 -1
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +10 -2
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +1 -1
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +1 -1
package/dist/swaps/ISwap.js
CHANGED
|
@@ -1,341 +1,346 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ISwap =
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
(
|
|
21
|
-
typeof obj.
|
|
22
|
-
typeof
|
|
23
|
-
typeof (obj.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Base abstract class for all swap types
|
|
29
|
-
*
|
|
30
|
-
* @category Swaps/Base
|
|
31
|
-
*/
|
|
32
|
-
class ISwap {
|
|
33
|
-
constructor(wrapper, swapInitOrObj) {
|
|
34
|
-
/**
|
|
35
|
-
* Current newest defined version of the swap
|
|
36
|
-
* @internal
|
|
37
|
-
*/
|
|
38
|
-
this.currentVersion = 1;
|
|
39
|
-
/**
|
|
40
|
-
* Whether a swap was initialized, a swap is considered initialize on first interaction with it, i.e.
|
|
41
|
-
* calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
|
|
42
|
-
* direction. Not initiated swaps are not saved to the persistent storage by default (see
|
|
43
|
-
* {@link SwapperOptions.saveUninitializedSwaps})
|
|
44
|
-
* @internal
|
|
45
|
-
*/
|
|
46
|
-
this.initiated = false;
|
|
47
|
-
/**
|
|
48
|
-
* Swap state
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
this._state = 0;
|
|
52
|
-
/**
|
|
53
|
-
* Whether the swap is saved in the persistent storage or not.
|
|
54
|
-
*
|
|
55
|
-
* @remarks This field itself is not persisted but is instead derived during runtime
|
|
56
|
-
*
|
|
57
|
-
* @internal
|
|
58
|
-
*/
|
|
59
|
-
this._persisted = false;
|
|
60
|
-
/**
|
|
61
|
-
* Event emitter emitting `"swapState"` event when swap's state changes
|
|
62
|
-
*/
|
|
63
|
-
this.events = new events_1.EventEmitter();
|
|
64
|
-
this.chainIdentifier = wrapper.chainIdentifier;
|
|
65
|
-
this.wrapper = wrapper;
|
|
66
|
-
if (isISwapInit(swapInitOrObj)) {
|
|
67
|
-
this.pricingInfo = swapInitOrObj.pricingInfo;
|
|
68
|
-
this.url = swapInitOrObj.url;
|
|
69
|
-
this.expiry = swapInitOrObj.expiry;
|
|
70
|
-
this.swapFee = swapInitOrObj.swapFee;
|
|
71
|
-
this.swapFeeBtc = swapInitOrObj.swapFeeBtc;
|
|
72
|
-
this.exactIn = swapInitOrObj.exactIn;
|
|
73
|
-
this.version = this.currentVersion;
|
|
74
|
-
this.createdAt = Date.now();
|
|
75
|
-
this._randomNonce = (0, Utils_1.randomBytes)(16).toString("hex");
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
this.expiry = swapInitOrObj.expiry;
|
|
79
|
-
this.url = swapInitOrObj.url;
|
|
80
|
-
this._state = swapInitOrObj.state;
|
|
81
|
-
if (swapInitOrObj._isValid != null && swapInitOrObj._differencePPM != null && swapInitOrObj._satsBaseFee != null &&
|
|
82
|
-
swapInitOrObj._feePPM != null && swapInitOrObj._swapPriceUSatPerToken != null) {
|
|
83
|
-
this.pricingInfo = {
|
|
84
|
-
isValid: swapInitOrObj._isValid,
|
|
85
|
-
differencePPM: BigInt(swapInitOrObj._differencePPM),
|
|
86
|
-
satsBaseFee: BigInt(swapInitOrObj._satsBaseFee),
|
|
87
|
-
feePPM: BigInt(swapInitOrObj._feePPM),
|
|
88
|
-
realPriceUSatPerToken: (0, Utils_1.toBigInt)(swapInitOrObj._realPriceUSatPerToken),
|
|
89
|
-
realPriceUsdPerBitcoin: swapInitOrObj._realPriceUsdPerBitcoin,
|
|
90
|
-
swapPriceUSatPerToken: BigInt(swapInitOrObj._swapPriceUSatPerToken),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
this.swapFee = (0, Utils_1.toBigInt)(swapInitOrObj.swapFee);
|
|
94
|
-
this.swapFeeBtc = (0, Utils_1.toBigInt)(swapInitOrObj.swapFeeBtc);
|
|
95
|
-
this.version = swapInitOrObj.version;
|
|
96
|
-
this.initiated = swapInitOrObj.initiated;
|
|
97
|
-
this.exactIn = swapInitOrObj.exactIn;
|
|
98
|
-
this.createdAt = swapInitOrObj.createdAt ?? swapInitOrObj.expiry;
|
|
99
|
-
this._randomNonce = swapInitOrObj.randomNonce;
|
|
100
|
-
}
|
|
101
|
-
if (this.version !== this.currentVersion) {
|
|
102
|
-
this.upgradeVersion();
|
|
103
|
-
}
|
|
104
|
-
if (this.initiated == null)
|
|
105
|
-
this.initiated = true;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Waits till the swap reaches a specific state
|
|
109
|
-
*
|
|
110
|
-
* @param targetState The state to wait for
|
|
111
|
-
* @param type Whether to wait for the state exactly or also to a state with a higher number
|
|
112
|
-
* @param abortSignal Abort signal
|
|
113
|
-
* @internal
|
|
114
|
-
*/
|
|
115
|
-
waitTillState(targetState, type = "eq", abortSignal) {
|
|
116
|
-
//TODO: This doesn't hold strong reference to the swap, hence if no other strong reference to the
|
|
117
|
-
// swap exists, it will just never resolve!
|
|
118
|
-
return new Promise((resolve, reject) => {
|
|
119
|
-
let listener;
|
|
120
|
-
listener = () => {
|
|
121
|
-
if (type === "eq" ? this._state === targetState : type === "gte" ? this._state >= targetState : this._state != targetState) {
|
|
122
|
-
resolve();
|
|
123
|
-
this.events.removeListener("swapState", listener);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
this.events.on("swapState", listener);
|
|
127
|
-
if (abortSignal != null)
|
|
128
|
-
abortSignal.addEventListener("abort", () => {
|
|
129
|
-
this.events.removeListener("swapState", listener);
|
|
130
|
-
reject(abortSignal.reason);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
//////////////////////////////
|
|
135
|
-
//// Pricing
|
|
136
|
-
/**
|
|
137
|
-
* This attempts to populate missing fields in the pricing info based on the swap amounts
|
|
138
|
-
*
|
|
139
|
-
* @internal
|
|
140
|
-
*/
|
|
141
|
-
tryRecomputeSwapPrice() {
|
|
142
|
-
if (this.pricingInfo == null)
|
|
143
|
-
return;
|
|
144
|
-
if (this.pricingInfo.swapPriceUSatPerToken == null) {
|
|
145
|
-
const priceUsdPerBtc = this.pricingInfo.realPriceUsdPerBitcoin;
|
|
146
|
-
const input = this.getInput();
|
|
147
|
-
const output = this.getOutput();
|
|
148
|
-
if (input.isUnknown || output.isUnknown)
|
|
149
|
-
return;
|
|
150
|
-
if ((0, Token_1.isSCToken)(input.token) && this.getDirection() === SwapDirection_1.SwapDirection.TO_BTC) {
|
|
151
|
-
this.pricingInfo = this.wrapper._prices.recomputePriceInfoSend(this.chainIdentifier, output.rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, input.rawAmount, input.token.address);
|
|
152
|
-
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
153
|
-
}
|
|
154
|
-
else if ((0, Token_1.isSCToken)(output.token) && this.getDirection() === SwapDirection_1.SwapDirection.FROM_BTC) {
|
|
155
|
-
this.pricingInfo = this.wrapper._prices.recomputePriceInfoReceive(this.chainIdentifier, input.rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, output.rawAmount, output.token.address);
|
|
156
|
-
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Re-fetches & revalidates the price data based on the current market prices
|
|
162
|
-
*/
|
|
163
|
-
async refreshPriceData() {
|
|
164
|
-
if (this.pricingInfo == null)
|
|
165
|
-
return;
|
|
166
|
-
const priceUsdPerBtc = this.pricingInfo.realPriceUsdPerBitcoin;
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ISwap = void 0;
|
|
4
|
+
exports.isISwapInit = isISwapInit;
|
|
5
|
+
const SwapType_1 = require("../enums/SwapType");
|
|
6
|
+
const events_1 = require("events");
|
|
7
|
+
const Utils_1 = require("../utils/Utils");
|
|
8
|
+
const SwapDirection_1 = require("../enums/SwapDirection");
|
|
9
|
+
const PercentagePPM_1 = require("../types/fees/PercentagePPM");
|
|
10
|
+
const Token_1 = require("../types/Token");
|
|
11
|
+
const PriceInfoType_1 = require("../types/PriceInfoType");
|
|
12
|
+
/**
|
|
13
|
+
* Type guard to check if an object is an ISwapInit
|
|
14
|
+
*
|
|
15
|
+
* @category Swaps/Base
|
|
16
|
+
*/
|
|
17
|
+
function isISwapInit(obj) {
|
|
18
|
+
return typeof obj === 'object' &&
|
|
19
|
+
obj != null &&
|
|
20
|
+
(0, PriceInfoType_1.isPriceInfoType)(obj.pricingInfo) &&
|
|
21
|
+
(obj.url == null || typeof obj.url === 'string') &&
|
|
22
|
+
typeof obj.expiry === 'number' &&
|
|
23
|
+
typeof (obj.swapFee) === "bigint" &&
|
|
24
|
+
typeof (obj.swapFeeBtc) === "bigint" &&
|
|
25
|
+
(typeof obj.exactIn === 'boolean');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Base abstract class for all swap types
|
|
29
|
+
*
|
|
30
|
+
* @category Swaps/Base
|
|
31
|
+
*/
|
|
32
|
+
class ISwap {
|
|
33
|
+
constructor(wrapper, swapInitOrObj) {
|
|
34
|
+
/**
|
|
35
|
+
* Current newest defined version of the swap
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
this.currentVersion = 1;
|
|
39
|
+
/**
|
|
40
|
+
* Whether a swap was initialized, a swap is considered initialize on first interaction with it, i.e.
|
|
41
|
+
* calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
|
|
42
|
+
* direction. Not initiated swaps are not saved to the persistent storage by default (see
|
|
43
|
+
* {@link SwapperOptions.saveUninitializedSwaps})
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
this.initiated = false;
|
|
47
|
+
/**
|
|
48
|
+
* Swap state
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
this._state = 0;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the swap is saved in the persistent storage or not.
|
|
54
|
+
*
|
|
55
|
+
* @remarks This field itself is not persisted but is instead derived during runtime
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
this._persisted = false;
|
|
60
|
+
/**
|
|
61
|
+
* Event emitter emitting `"swapState"` event when swap's state changes
|
|
62
|
+
*/
|
|
63
|
+
this.events = new events_1.EventEmitter();
|
|
64
|
+
this.chainIdentifier = wrapper.chainIdentifier;
|
|
65
|
+
this.wrapper = wrapper;
|
|
66
|
+
if (isISwapInit(swapInitOrObj)) {
|
|
67
|
+
this.pricingInfo = swapInitOrObj.pricingInfo;
|
|
68
|
+
this.url = swapInitOrObj.url;
|
|
69
|
+
this.expiry = swapInitOrObj.expiry;
|
|
70
|
+
this.swapFee = swapInitOrObj.swapFee;
|
|
71
|
+
this.swapFeeBtc = swapInitOrObj.swapFeeBtc;
|
|
72
|
+
this.exactIn = swapInitOrObj.exactIn;
|
|
73
|
+
this.version = this.currentVersion;
|
|
74
|
+
this.createdAt = Date.now();
|
|
75
|
+
this._randomNonce = (0, Utils_1.randomBytes)(16).toString("hex");
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.expiry = swapInitOrObj.expiry;
|
|
79
|
+
this.url = swapInitOrObj.url;
|
|
80
|
+
this._state = swapInitOrObj.state;
|
|
81
|
+
if (swapInitOrObj._isValid != null && swapInitOrObj._differencePPM != null && swapInitOrObj._satsBaseFee != null &&
|
|
82
|
+
swapInitOrObj._feePPM != null && swapInitOrObj._swapPriceUSatPerToken != null) {
|
|
83
|
+
this.pricingInfo = {
|
|
84
|
+
isValid: swapInitOrObj._isValid,
|
|
85
|
+
differencePPM: BigInt(swapInitOrObj._differencePPM),
|
|
86
|
+
satsBaseFee: BigInt(swapInitOrObj._satsBaseFee),
|
|
87
|
+
feePPM: BigInt(swapInitOrObj._feePPM),
|
|
88
|
+
realPriceUSatPerToken: (0, Utils_1.toBigInt)(swapInitOrObj._realPriceUSatPerToken),
|
|
89
|
+
realPriceUsdPerBitcoin: swapInitOrObj._realPriceUsdPerBitcoin,
|
|
90
|
+
swapPriceUSatPerToken: BigInt(swapInitOrObj._swapPriceUSatPerToken),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
this.swapFee = (0, Utils_1.toBigInt)(swapInitOrObj.swapFee);
|
|
94
|
+
this.swapFeeBtc = (0, Utils_1.toBigInt)(swapInitOrObj.swapFeeBtc);
|
|
95
|
+
this.version = swapInitOrObj.version;
|
|
96
|
+
this.initiated = swapInitOrObj.initiated;
|
|
97
|
+
this.exactIn = swapInitOrObj.exactIn;
|
|
98
|
+
this.createdAt = swapInitOrObj.createdAt ?? swapInitOrObj.expiry;
|
|
99
|
+
this._randomNonce = swapInitOrObj.randomNonce;
|
|
100
|
+
}
|
|
101
|
+
if (this.version !== this.currentVersion) {
|
|
102
|
+
this.upgradeVersion();
|
|
103
|
+
}
|
|
104
|
+
if (this.initiated == null)
|
|
105
|
+
this.initiated = true;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Waits till the swap reaches a specific state
|
|
109
|
+
*
|
|
110
|
+
* @param targetState The state to wait for
|
|
111
|
+
* @param type Whether to wait for the state exactly or also to a state with a higher number
|
|
112
|
+
* @param abortSignal Abort signal
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
waitTillState(targetState, type = "eq", abortSignal) {
|
|
116
|
+
//TODO: This doesn't hold strong reference to the swap, hence if no other strong reference to the
|
|
117
|
+
// swap exists, it will just never resolve!
|
|
118
|
+
return new Promise((resolve, reject) => {
|
|
119
|
+
let listener;
|
|
120
|
+
listener = () => {
|
|
121
|
+
if (type === "eq" ? this._state === targetState : type === "gte" ? this._state >= targetState : this._state != targetState) {
|
|
122
|
+
resolve();
|
|
123
|
+
this.events.removeListener("swapState", listener);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
this.events.on("swapState", listener);
|
|
127
|
+
if (abortSignal != null)
|
|
128
|
+
abortSignal.addEventListener("abort", () => {
|
|
129
|
+
this.events.removeListener("swapState", listener);
|
|
130
|
+
reject(abortSignal.reason);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//////////////////////////////
|
|
135
|
+
//// Pricing
|
|
136
|
+
/**
|
|
137
|
+
* This attempts to populate missing fields in the pricing info based on the swap amounts
|
|
138
|
+
*
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
141
|
+
tryRecomputeSwapPrice() {
|
|
142
|
+
if (this.pricingInfo == null)
|
|
143
|
+
return;
|
|
144
|
+
if (this.pricingInfo.swapPriceUSatPerToken == null) {
|
|
145
|
+
const priceUsdPerBtc = this.pricingInfo.realPriceUsdPerBitcoin;
|
|
146
|
+
const input = this.getInput();
|
|
147
|
+
const output = this.getOutput();
|
|
148
|
+
if (input.isUnknown || output.isUnknown)
|
|
149
|
+
return;
|
|
150
|
+
if ((0, Token_1.isSCToken)(input.token) && this.getDirection() === SwapDirection_1.SwapDirection.TO_BTC) {
|
|
151
|
+
this.pricingInfo = this.wrapper._prices.recomputePriceInfoSend(this.chainIdentifier, output.rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, input.rawAmount, input.token.address);
|
|
152
|
+
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
153
|
+
}
|
|
154
|
+
else if ((0, Token_1.isSCToken)(output.token) && this.getDirection() === SwapDirection_1.SwapDirection.FROM_BTC) {
|
|
155
|
+
this.pricingInfo = this.wrapper._prices.recomputePriceInfoReceive(this.chainIdentifier, input.rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, output.rawAmount, output.token.address);
|
|
156
|
+
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Re-fetches & revalidates the price data based on the current market prices
|
|
162
|
+
*/
|
|
163
|
+
async refreshPriceData() {
|
|
164
|
+
if (this.pricingInfo == null)
|
|
165
|
+
return;
|
|
166
|
+
const priceUsdPerBtc = this.pricingInfo.realPriceUsdPerBitcoin;
|
|
167
|
+
const output = this.getOutput();
|
|
168
|
+
if (output.isUnknown)
|
|
169
|
+
return;
|
|
170
|
+
if ((0, Token_1.isSCToken)(this.getInputToken()) && this.getDirection() === SwapDirection_1.SwapDirection.TO_BTC) {
|
|
171
|
+
const input = this.getInputWithoutFee();
|
|
172
|
+
if (input.isUnknown)
|
|
173
|
+
return;
|
|
174
|
+
this.pricingInfo = await this.wrapper._prices.isValidAmountSend(this.chainIdentifier, output.rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, input.rawAmount + this.swapFee, input.token.address, undefined, undefined, this.swapFeeBtc);
|
|
175
|
+
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
176
|
+
}
|
|
177
|
+
else if ((0, Token_1.isSCToken)(output.token) && this.getDirection() === SwapDirection_1.SwapDirection.FROM_BTC) {
|
|
178
|
+
const input = this.getInput();
|
|
179
|
+
if (input.isUnknown)
|
|
180
|
+
return;
|
|
181
|
+
this.pricingInfo = await this.wrapper._prices.isValidAmountReceive(this.chainIdentifier, input.rawAmount, this.pricingInfo.satsBaseFee, this.pricingInfo.feePPM, output.rawAmount, output.token.address, undefined, undefined, this.swapFeeBtc);
|
|
182
|
+
this.pricingInfo.realPriceUsdPerBitcoin = priceUsdPerBtc;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Checks if the pricing for the swap is valid, according to max allowed price difference set in the ISwapPrice
|
|
187
|
+
*/
|
|
188
|
+
hasValidPrice() {
|
|
189
|
+
if (this.pricingInfo == null)
|
|
190
|
+
throw new Error("Pricing info not found, cannot check price validity!");
|
|
191
|
+
return this.pricingInfo.isValid;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Returns pricing info about the swap
|
|
195
|
+
*/
|
|
196
|
+
getPriceInfo() {
|
|
197
|
+
if (this.pricingInfo == null)
|
|
198
|
+
throw new Error("Pricing info not provided and not known!");
|
|
199
|
+
const swapPrice = this.getDirection() === SwapDirection_1.SwapDirection.TO_BTC ?
|
|
200
|
+
100_000_000_000_000 / Number(this.pricingInfo.swapPriceUSatPerToken) :
|
|
201
|
+
Number(this.pricingInfo.swapPriceUSatPerToken) / 100_000_000_000_000;
|
|
202
|
+
let marketPrice;
|
|
203
|
+
if (this.pricingInfo.realPriceUSatPerToken != null)
|
|
204
|
+
marketPrice = this.getDirection() === SwapDirection_1.SwapDirection.TO_BTC ?
|
|
205
|
+
100_000_000_000_000 / Number(this.pricingInfo.realPriceUSatPerToken) :
|
|
206
|
+
Number(this.pricingInfo.realPriceUSatPerToken) / 100_000_000_000_000;
|
|
207
|
+
return {
|
|
208
|
+
marketPrice,
|
|
209
|
+
swapPrice,
|
|
210
|
+
difference: (0, PercentagePPM_1.ppmToPercentage)(this.pricingInfo.differencePPM)
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
//////////////////////////////
|
|
214
|
+
//// Getters & utils
|
|
215
|
+
/**
|
|
216
|
+
* Asserts a given signer is the initiator of this swap
|
|
217
|
+
*
|
|
218
|
+
* @param signer Signer to check with this swap's initiator
|
|
219
|
+
* @throws {Error} When signer's address doesn't match with the swap's initiator one
|
|
220
|
+
* @internal
|
|
221
|
+
*/
|
|
222
|
+
checkSigner(signer) {
|
|
223
|
+
if ((typeof (signer) === "string" ? signer : signer.getAddress()) !== this._getInitiator())
|
|
224
|
+
throw new Error("Invalid signer provided!");
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Sets this swap as initiated
|
|
228
|
+
* @internal
|
|
229
|
+
*/
|
|
230
|
+
_setInitiated() {
|
|
231
|
+
this.initiated = true;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Whether a swap was initialized, a swap is considered initialized on first interaction with it, i.e.
|
|
235
|
+
* calling commit() on a Smart chain -> Bitcoin swaps, calling waitForPayment() or similar on the other
|
|
236
|
+
* direction. Not initiated swaps are not saved to the persistent storage by default (see
|
|
237
|
+
* {@link SwapperOptions.saveUninitializedSwaps})
|
|
238
|
+
*/
|
|
239
|
+
isInitiated() {
|
|
240
|
+
return this.initiated;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Returns quote expiry in UNIX millis
|
|
244
|
+
*/
|
|
245
|
+
getQuoteExpiry() {
|
|
246
|
+
return this.expiry;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Returns the type of the swap
|
|
250
|
+
*/
|
|
251
|
+
getType() {
|
|
252
|
+
return this.TYPE;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Returns the direction of the swap
|
|
256
|
+
*/
|
|
257
|
+
getDirection() {
|
|
258
|
+
return this.TYPE === SwapType_1.SwapType.TO_BTC || this.TYPE === SwapType_1.SwapType.TO_BTCLN ? SwapDirection_1.SwapDirection.TO_BTC : SwapDirection_1.SwapDirection.FROM_BTC;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Returns the current state of the swap
|
|
262
|
+
*/
|
|
263
|
+
getState() {
|
|
264
|
+
return this._state;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Returns the current state of the swap along with the human-readable description of the state
|
|
268
|
+
*/
|
|
269
|
+
getStateInfo() {
|
|
270
|
+
return {
|
|
271
|
+
state: this._state,
|
|
272
|
+
name: this.swapStateName(this._state),
|
|
273
|
+
description: this.swapStateDescription[this._state]
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
//////////////////////////////
|
|
277
|
+
//// Storage
|
|
278
|
+
/**
|
|
279
|
+
* Saves the swap data to the underlying storage, or removes it if it is in a quote expired state
|
|
280
|
+
*
|
|
281
|
+
* @internal
|
|
282
|
+
*/
|
|
283
|
+
_save() {
|
|
284
|
+
if (this.isQuoteExpired()) {
|
|
285
|
+
return this.wrapper._removeSwapData(this);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
return this.wrapper._saveSwapData(this);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Saves the swap data and also emits a swap state change
|
|
293
|
+
*
|
|
294
|
+
* @param state Optional state to set before the swap is saved an event emitted
|
|
295
|
+
*
|
|
296
|
+
* @internal
|
|
297
|
+
*/
|
|
298
|
+
async _saveAndEmit(state) {
|
|
299
|
+
if (state != null)
|
|
300
|
+
this._state = state;
|
|
301
|
+
await this._save();
|
|
302
|
+
this._emitEvent();
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Serializes the swap to a JSON stringifiable representation (i.e. no bigints, buffers etc.)
|
|
306
|
+
*/
|
|
307
|
+
serialize() {
|
|
308
|
+
if (this.pricingInfo == null)
|
|
309
|
+
return {};
|
|
310
|
+
return {
|
|
311
|
+
id: this.getId(),
|
|
312
|
+
type: this.getType(),
|
|
313
|
+
escrowHash: this._getEscrowHash(),
|
|
314
|
+
initiator: this._getInitiator(),
|
|
315
|
+
_isValid: this.pricingInfo.isValid,
|
|
316
|
+
_differencePPM: this.pricingInfo.differencePPM == null ? null : this.pricingInfo.differencePPM.toString(10),
|
|
317
|
+
_satsBaseFee: this.pricingInfo.satsBaseFee == null ? null : this.pricingInfo.satsBaseFee.toString(10),
|
|
318
|
+
_feePPM: this.pricingInfo.feePPM == null ? null : this.pricingInfo.feePPM.toString(10),
|
|
319
|
+
_realPriceUSatPerToken: this.pricingInfo.realPriceUSatPerToken == null ? null : this.pricingInfo.realPriceUSatPerToken.toString(10),
|
|
320
|
+
_realPriceUsdPerBitcoin: this.pricingInfo.realPriceUsdPerBitcoin,
|
|
321
|
+
_swapPriceUSatPerToken: this.pricingInfo.swapPriceUSatPerToken == null ? null : this.pricingInfo.swapPriceUSatPerToken.toString(10),
|
|
322
|
+
state: this._state,
|
|
323
|
+
url: this.url,
|
|
324
|
+
swapFee: this.swapFee == null ? null : this.swapFee.toString(10),
|
|
325
|
+
swapFeeBtc: this.swapFeeBtc == null ? null : this.swapFeeBtc.toString(10),
|
|
326
|
+
expiry: this.expiry,
|
|
327
|
+
version: this.version,
|
|
328
|
+
initiated: this.initiated,
|
|
329
|
+
exactIn: this.exactIn,
|
|
330
|
+
createdAt: this.createdAt,
|
|
331
|
+
randomNonce: this._randomNonce
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
//////////////////////////////
|
|
335
|
+
//// Events
|
|
336
|
+
/**
|
|
337
|
+
* Emits a `swapState` event with the current swap
|
|
338
|
+
*
|
|
339
|
+
* @internal
|
|
340
|
+
*/
|
|
341
|
+
_emitEvent() {
|
|
342
|
+
this.wrapper.events.emit("swapState", this);
|
|
343
|
+
this.events.emit("swapState", this);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.ISwap = ISwap;
|