@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,114 +1,115 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* @
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* @param
|
|
44
|
-
* @param
|
|
45
|
-
* @param
|
|
46
|
-
* @param
|
|
47
|
-
* @param
|
|
48
|
-
* @
|
|
49
|
-
* @
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*
|
|
57
|
-
* @param
|
|
58
|
-
* @
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
*
|
|
66
|
-
* @param
|
|
67
|
-
* @
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
*
|
|
75
|
-
* @param
|
|
76
|
-
* @
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
*
|
|
84
|
-
* @param
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
* @
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* @param
|
|
104
|
-
* @param
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ISwapWrapper, ISwapWrapperOptions, SwapTypeDefinition, WrapperCtorTokens } from "../ISwapWrapper";
|
|
3
|
+
import { ChainType, ClaimEvent, InitializeEvent, RefundEvent, SignatureData, SwapCommitState, SwapEvent } from "@atomiqlabs/base";
|
|
4
|
+
import { ISwap } from "../ISwap";
|
|
5
|
+
import { UnifiedSwapStorage } from "../../storage/UnifiedSwapStorage";
|
|
6
|
+
import { UnifiedSwapEventListener } from "../../events/UnifiedSwapEventListener";
|
|
7
|
+
import { ISwapPrice } from "../../prices/abstract/ISwapPrice";
|
|
8
|
+
import { EventEmitter } from "events";
|
|
9
|
+
import { SwapType } from "../../enums/SwapType";
|
|
10
|
+
import { IEscrowSwap } from "./IEscrowSwap";
|
|
11
|
+
import { Intermediary } from "../../intermediaries/Intermediary";
|
|
12
|
+
export type IEscrowSwapDefinition<T extends ChainType, W extends IEscrowSwapWrapper<T, any>, S extends IEscrowSwap<T>> = SwapTypeDefinition<T, W, S>;
|
|
13
|
+
/**
|
|
14
|
+
* Base class for wrappers of escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
|
|
15
|
+
*
|
|
16
|
+
* @category Swaps/Abstract
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class IEscrowSwapWrapper<T extends ChainType, D extends IEscrowSwapDefinition<T, IEscrowSwapWrapper<T, D>, IEscrowSwap<T, D>>, O extends ISwapWrapperOptions = ISwapWrapperOptions> extends ISwapWrapper<T, D, O> {
|
|
19
|
+
readonly abstract TYPE: SwapType;
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
readonly _contract: T["Contract"];
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
readonly _swapDataDeserializer: new (data: any) => T["Data"];
|
|
28
|
+
constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], contract: T["Contract"], prices: ISwapPrice, tokens: WrapperCtorTokens, swapDataDeserializer: new (data: any) => T["Data"], options: O, events?: EventEmitter<{
|
|
29
|
+
swapState: [ISwap];
|
|
30
|
+
}>);
|
|
31
|
+
/**
|
|
32
|
+
* Pre-fetches signature verification data from the server's pre-sent promise, doesn't throw, instead returns null
|
|
33
|
+
*
|
|
34
|
+
* @param signDataPrefetch Promise that resolves when we receive "signDataPrefetch" from the LP in streaming mode
|
|
35
|
+
* @returns Pre-fetched signature verification data or null if failed
|
|
36
|
+
*
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
protected preFetchSignData(signDataPrefetch: Promise<any | null>): Promise<T["PreFetchVerification"] | undefined>;
|
|
40
|
+
/**
|
|
41
|
+
* Verifies swap initialization signature returned by the intermediary
|
|
42
|
+
*
|
|
43
|
+
* @param initiator A smart chain account initiating the swap
|
|
44
|
+
* @param data Parsed swap data from the intermediary
|
|
45
|
+
* @param signature Response of the intermediary
|
|
46
|
+
* @param feeRatePromise Pre-fetched fee rate promise
|
|
47
|
+
* @param preFetchSignatureVerificationData Pre-fetched signature verification data
|
|
48
|
+
* @param abortSignal
|
|
49
|
+
* @returns Swap initialization signature expiry
|
|
50
|
+
* @throws {SignatureVerificationError} when swap init signature is invalid
|
|
51
|
+
*
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
protected verifyReturnedSignature(initiator: string, data: T["Data"], signature: SignatureData, feeRatePromise: Promise<any>, preFetchSignatureVerificationData: Promise<any>, abortSignal?: AbortSignal): Promise<number>;
|
|
55
|
+
/**
|
|
56
|
+
* Processes InitializeEvent for a given swap
|
|
57
|
+
* @param swap
|
|
58
|
+
* @param event
|
|
59
|
+
* @returns Whether the swap was updated/changed
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
protected abstract processEventInitialize(swap: D["Swap"], event: InitializeEvent<T["Data"]>): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Processes ClaimEvent for a given swap
|
|
66
|
+
* @param swap
|
|
67
|
+
* @param event
|
|
68
|
+
* @returns Whether the swap was updated/changed
|
|
69
|
+
*
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
protected abstract processEventClaim(swap: D["Swap"], event: ClaimEvent<T["Data"]>): Promise<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Processes RefundEvent for a given swap
|
|
75
|
+
* @param swap
|
|
76
|
+
* @param event
|
|
77
|
+
* @returns Whether the swap was updated/changed
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
protected abstract processEventRefund(swap: D["Swap"], event: RefundEvent<T["Data"]>): Promise<boolean>;
|
|
82
|
+
/**
|
|
83
|
+
* Processes a single SC on-chain event
|
|
84
|
+
* @param event
|
|
85
|
+
* @param swap
|
|
86
|
+
*
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
89
|
+
protected processEvent(event: SwapEvent<T["Data"]>, swap: D["Swap"]): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* @inheritDoc
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
protected _checkPastSwaps(pastSwaps: D["Swap"][]): Promise<{
|
|
95
|
+
changedSwaps: D["Swap"][];
|
|
96
|
+
removeSwaps: D["Swap"][];
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Recovers a swap from smart chain on-chain data, please note that not all values for the recovered
|
|
100
|
+
* swaps might be populated, as some data is purely off-chain and can never be recovered purely
|
|
101
|
+
* from on-chain data.
|
|
102
|
+
*
|
|
103
|
+
* @param init Swap escrow initialization transaction and swap data
|
|
104
|
+
* @param state Current on-chain state of the swap
|
|
105
|
+
* @param lp Intermediary (LP) used as a counterparty for the swap
|
|
106
|
+
*/
|
|
107
|
+
abstract recoverFromSwapDataAndState(init: {
|
|
108
|
+
data: T["Data"];
|
|
109
|
+
getInitTxId: () => Promise<string>;
|
|
110
|
+
getTxBlock: () => Promise<{
|
|
111
|
+
blockTime: number;
|
|
112
|
+
blockHeight: number;
|
|
113
|
+
}>;
|
|
114
|
+
}, state: SwapCommitState, lp?: Intermediary): Promise<D["Swap"] | null>;
|
|
115
|
+
}
|
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IEscrowSwapWrapper = void 0;
|
|
4
|
-
const ISwapWrapper_1 = require("../ISwapWrapper");
|
|
5
|
-
const base_1 = require("@atomiqlabs/base");
|
|
6
|
-
/**
|
|
7
|
-
* Base class for wrappers of escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
|
|
8
|
-
*
|
|
9
|
-
* @category Swaps/Abstract
|
|
10
|
-
*/
|
|
11
|
-
class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
|
|
12
|
-
constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, options, events) {
|
|
13
|
-
super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, options, events);
|
|
14
|
-
this._swapDataDeserializer = swapDataDeserializer;
|
|
15
|
-
this._contract = contract;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Pre-fetches signature verification data from the server's pre-sent promise, doesn't throw, instead returns null
|
|
19
|
-
*
|
|
20
|
-
* @param signDataPrefetch Promise that resolves when we receive "signDataPrefetch" from the LP in streaming mode
|
|
21
|
-
* @returns Pre-fetched signature verification data or null if failed
|
|
22
|
-
*
|
|
23
|
-
* @internal
|
|
24
|
-
*/
|
|
25
|
-
preFetchSignData(signDataPrefetch) {
|
|
26
|
-
if (this._contract.preFetchForInitSignatureVerification == null) {
|
|
27
|
-
// Catch promise rejections, should they happen
|
|
28
|
-
signDataPrefetch.catch(() => { });
|
|
29
|
-
return Promise.resolve(undefined);
|
|
30
|
-
}
|
|
31
|
-
return signDataPrefetch.then(obj => {
|
|
32
|
-
if (obj == null)
|
|
33
|
-
return undefined;
|
|
34
|
-
return this._contract.preFetchForInitSignatureVerification(obj);
|
|
35
|
-
}).catch(e => {
|
|
36
|
-
this.logger.error("preFetchSignData(): Error: ", e);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Verifies swap initialization signature returned by the intermediary
|
|
41
|
-
*
|
|
42
|
-
* @param initiator A smart chain account initiating the swap
|
|
43
|
-
* @param data Parsed swap data from the intermediary
|
|
44
|
-
* @param signature Response of the intermediary
|
|
45
|
-
* @param feeRatePromise Pre-fetched fee rate promise
|
|
46
|
-
* @param preFetchSignatureVerificationData Pre-fetched signature verification data
|
|
47
|
-
* @param abortSignal
|
|
48
|
-
* @returns Swap initialization signature expiry
|
|
49
|
-
* @throws {SignatureVerificationError} when swap init signature is invalid
|
|
50
|
-
*
|
|
51
|
-
* @internal
|
|
52
|
-
*/
|
|
53
|
-
async verifyReturnedSignature(initiator, data, signature, feeRatePromise, preFetchSignatureVerificationData, abortSignal) {
|
|
54
|
-
const [feeRate, preFetchedSignatureData] = await Promise.all([feeRatePromise, preFetchSignatureVerificationData]);
|
|
55
|
-
await this._contract.isValidInitAuthorization(initiator, data, signature, feeRate, preFetchedSignatureData);
|
|
56
|
-
return await this._contract.getInitAuthorizationExpiry(data, signature, preFetchedSignatureData);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Processes a single SC on-chain event
|
|
60
|
-
* @param event
|
|
61
|
-
* @param swap
|
|
62
|
-
*
|
|
63
|
-
* @internal
|
|
64
|
-
*/
|
|
65
|
-
async processEvent(event, swap) {
|
|
66
|
-
if (swap == null)
|
|
67
|
-
return;
|
|
68
|
-
let swapChanged = false;
|
|
69
|
-
if (event instanceof base_1.InitializeEvent) {
|
|
70
|
-
swapChanged = await this.processEventInitialize(swap, event);
|
|
71
|
-
if (event.meta?.txId != null && swap._commitTxId !== event.meta.txId) {
|
|
72
|
-
swap._commitTxId = event.meta.txId;
|
|
73
|
-
swapChanged ||= true;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (event instanceof base_1.ClaimEvent) {
|
|
77
|
-
swapChanged = await this.processEventClaim(swap, event);
|
|
78
|
-
if (event.meta?.txId != null && swap._claimTxId !== event.meta.txId) {
|
|
79
|
-
swap._claimTxId = event.meta.txId;
|
|
80
|
-
swapChanged ||= true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (event instanceof base_1.RefundEvent) {
|
|
84
|
-
swapChanged = await this.processEventRefund(swap, event);
|
|
85
|
-
if (event.meta?.txId != null && swap._refundTxId !== event.meta.txId) {
|
|
86
|
-
swap._refundTxId = event.meta.txId;
|
|
87
|
-
swapChanged ||= true;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
this.logger.info("processEvents(): " + event.constructor.name + " processed for " + swap.getId() + " swap: ", swap);
|
|
91
|
-
if (swapChanged) {
|
|
92
|
-
await swap._saveAndEmit();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* @inheritDoc
|
|
97
|
-
* @internal
|
|
98
|
-
*/
|
|
99
|
-
async _checkPastSwaps(pastSwaps) {
|
|
100
|
-
const changedSwaps = [];
|
|
101
|
-
const removeSwaps = [];
|
|
102
|
-
const swapExpiredStatus = {};
|
|
103
|
-
const checkStatusSwaps = [];
|
|
104
|
-
for (let pastSwap of pastSwaps) {
|
|
105
|
-
if (pastSwap._shouldFetchExpiryStatus()) {
|
|
106
|
-
//Check expiry
|
|
107
|
-
swapExpiredStatus[pastSwap.getId()] = await pastSwap._verifyQuoteDefinitelyExpired();
|
|
108
|
-
}
|
|
109
|
-
if (pastSwap._shouldFetchOnchainState()) {
|
|
110
|
-
//Add to swaps for which status should be checked
|
|
111
|
-
if (pastSwap._data != null)
|
|
112
|
-
checkStatusSwaps.push(pastSwap);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
const swapStatuses = await this._contract.getCommitStatuses(checkStatusSwaps.map(val => ({ signer: val._getInitiator(), swapData: val._data })));
|
|
116
|
-
for (let pastSwap of checkStatusSwaps) {
|
|
117
|
-
const escrowHash = pastSwap.getEscrowHash();
|
|
118
|
-
const shouldSave = await pastSwap._sync(false, swapExpiredStatus[pastSwap.getId()], escrowHash == null ? undefined : swapStatuses[escrowHash]);
|
|
119
|
-
if (shouldSave) {
|
|
120
|
-
if (pastSwap.isQuoteExpired()) {
|
|
121
|
-
removeSwaps.push(pastSwap);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
changedSwaps.push(pastSwap);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return {
|
|
129
|
-
changedSwaps,
|
|
130
|
-
removeSwaps
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
exports.IEscrowSwapWrapper = IEscrowSwapWrapper;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IEscrowSwapWrapper = void 0;
|
|
4
|
+
const ISwapWrapper_1 = require("../ISwapWrapper");
|
|
5
|
+
const base_1 = require("@atomiqlabs/base");
|
|
6
|
+
/**
|
|
7
|
+
* Base class for wrappers of escrow-based swaps (i.e. swaps utilizing PrTLC and HTLC primitives)
|
|
8
|
+
*
|
|
9
|
+
* @category Swaps/Abstract
|
|
10
|
+
*/
|
|
11
|
+
class IEscrowSwapWrapper extends ISwapWrapper_1.ISwapWrapper {
|
|
12
|
+
constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, contract, prices, tokens, swapDataDeserializer, options, events) {
|
|
13
|
+
super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, options, events);
|
|
14
|
+
this._swapDataDeserializer = swapDataDeserializer;
|
|
15
|
+
this._contract = contract;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Pre-fetches signature verification data from the server's pre-sent promise, doesn't throw, instead returns null
|
|
19
|
+
*
|
|
20
|
+
* @param signDataPrefetch Promise that resolves when we receive "signDataPrefetch" from the LP in streaming mode
|
|
21
|
+
* @returns Pre-fetched signature verification data or null if failed
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
preFetchSignData(signDataPrefetch) {
|
|
26
|
+
if (this._contract.preFetchForInitSignatureVerification == null) {
|
|
27
|
+
// Catch promise rejections, should they happen
|
|
28
|
+
signDataPrefetch.catch(() => { });
|
|
29
|
+
return Promise.resolve(undefined);
|
|
30
|
+
}
|
|
31
|
+
return signDataPrefetch.then(obj => {
|
|
32
|
+
if (obj == null)
|
|
33
|
+
return undefined;
|
|
34
|
+
return this._contract.preFetchForInitSignatureVerification(obj);
|
|
35
|
+
}).catch(e => {
|
|
36
|
+
this.logger.error("preFetchSignData(): Error: ", e);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Verifies swap initialization signature returned by the intermediary
|
|
41
|
+
*
|
|
42
|
+
* @param initiator A smart chain account initiating the swap
|
|
43
|
+
* @param data Parsed swap data from the intermediary
|
|
44
|
+
* @param signature Response of the intermediary
|
|
45
|
+
* @param feeRatePromise Pre-fetched fee rate promise
|
|
46
|
+
* @param preFetchSignatureVerificationData Pre-fetched signature verification data
|
|
47
|
+
* @param abortSignal
|
|
48
|
+
* @returns Swap initialization signature expiry
|
|
49
|
+
* @throws {SignatureVerificationError} when swap init signature is invalid
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
async verifyReturnedSignature(initiator, data, signature, feeRatePromise, preFetchSignatureVerificationData, abortSignal) {
|
|
54
|
+
const [feeRate, preFetchedSignatureData] = await Promise.all([feeRatePromise, preFetchSignatureVerificationData]);
|
|
55
|
+
await this._contract.isValidInitAuthorization(initiator, data, signature, feeRate, preFetchedSignatureData);
|
|
56
|
+
return await this._contract.getInitAuthorizationExpiry(data, signature, preFetchedSignatureData);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Processes a single SC on-chain event
|
|
60
|
+
* @param event
|
|
61
|
+
* @param swap
|
|
62
|
+
*
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
async processEvent(event, swap) {
|
|
66
|
+
if (swap == null)
|
|
67
|
+
return;
|
|
68
|
+
let swapChanged = false;
|
|
69
|
+
if (event instanceof base_1.InitializeEvent) {
|
|
70
|
+
swapChanged = await this.processEventInitialize(swap, event);
|
|
71
|
+
if (event.meta?.txId != null && swap._commitTxId !== event.meta.txId) {
|
|
72
|
+
swap._commitTxId = event.meta.txId;
|
|
73
|
+
swapChanged ||= true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (event instanceof base_1.ClaimEvent) {
|
|
77
|
+
swapChanged = await this.processEventClaim(swap, event);
|
|
78
|
+
if (event.meta?.txId != null && swap._claimTxId !== event.meta.txId) {
|
|
79
|
+
swap._claimTxId = event.meta.txId;
|
|
80
|
+
swapChanged ||= true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (event instanceof base_1.RefundEvent) {
|
|
84
|
+
swapChanged = await this.processEventRefund(swap, event);
|
|
85
|
+
if (event.meta?.txId != null && swap._refundTxId !== event.meta.txId) {
|
|
86
|
+
swap._refundTxId = event.meta.txId;
|
|
87
|
+
swapChanged ||= true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
this.logger.info("processEvents(): " + event.constructor.name + " processed for " + swap.getId() + " swap: ", swap);
|
|
91
|
+
if (swapChanged) {
|
|
92
|
+
await swap._saveAndEmit();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* @inheritDoc
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
async _checkPastSwaps(pastSwaps) {
|
|
100
|
+
const changedSwaps = [];
|
|
101
|
+
const removeSwaps = [];
|
|
102
|
+
const swapExpiredStatus = {};
|
|
103
|
+
const checkStatusSwaps = [];
|
|
104
|
+
for (let pastSwap of pastSwaps) {
|
|
105
|
+
if (pastSwap._shouldFetchExpiryStatus()) {
|
|
106
|
+
//Check expiry
|
|
107
|
+
swapExpiredStatus[pastSwap.getId()] = await pastSwap._verifyQuoteDefinitelyExpired();
|
|
108
|
+
}
|
|
109
|
+
if (pastSwap._shouldFetchOnchainState()) {
|
|
110
|
+
//Add to swaps for which status should be checked
|
|
111
|
+
if (pastSwap._data != null)
|
|
112
|
+
checkStatusSwaps.push(pastSwap);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const swapStatuses = await this._contract.getCommitStatuses(checkStatusSwaps.map(val => ({ signer: val._getInitiator(), swapData: val._data })));
|
|
116
|
+
for (let pastSwap of checkStatusSwaps) {
|
|
117
|
+
const escrowHash = pastSwap.getEscrowHash();
|
|
118
|
+
const shouldSave = await pastSwap._sync(false, swapExpiredStatus[pastSwap.getId()], escrowHash == null ? undefined : swapStatuses[escrowHash]);
|
|
119
|
+
if (shouldSave) {
|
|
120
|
+
if (pastSwap.isQuoteExpired()) {
|
|
121
|
+
removeSwaps.push(pastSwap);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
changedSwaps.push(pastSwap);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
changedSwaps,
|
|
130
|
+
removeSwaps
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.IEscrowSwapWrapper = IEscrowSwapWrapper;
|