@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,23 +1,23 @@
|
|
|
1
|
-
import { ChainEvent, ChainType } from "@atomiqlabs/base";
|
|
2
|
-
import { ISwap } from "../swaps/ISwap";
|
|
3
|
-
import { EventListener } from "@atomiqlabs/base/src/events/ChainEvents";
|
|
4
|
-
import { SwapType } from "../enums/SwapType";
|
|
5
|
-
import { UnifiedSwapStorage } from "../storage/UnifiedSwapStorage";
|
|
6
|
-
export type SwapEventListener<T extends ChainType, S extends ISwap<T>> = (event: ChainEvent<T["Data"]>, swap: S) => Promise<void>;
|
|
7
|
-
export declare class UnifiedSwapEventListener<T extends ChainType> {
|
|
8
|
-
readonly storage: UnifiedSwapStorage<T>;
|
|
9
|
-
readonly events: T["Events"];
|
|
10
|
-
readonly listeners: {
|
|
11
|
-
[key in SwapType]?: {
|
|
12
|
-
listener: SwapEventListener<T, any>;
|
|
13
|
-
reviver: new (obj: any) => ISwap<T>;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
constructor(unifiedStorage: UnifiedSwapStorage<T>, events: T["Events"]);
|
|
17
|
-
processEvents(events: ChainEvent<T["Data"]>[]): Promise<void>;
|
|
18
|
-
listener?: EventListener<T["Data"]>;
|
|
19
|
-
start(): Promise<void>;
|
|
20
|
-
stop(): Promise<void>;
|
|
21
|
-
registerListener<S extends ISwap<T>>(type: SwapType, listener: SwapEventListener<T, S>, reviver: new (val: any) => S): void;
|
|
22
|
-
unregisterListener(type: SwapType): boolean;
|
|
23
|
-
}
|
|
1
|
+
import { ChainEvent, ChainType } from "@atomiqlabs/base";
|
|
2
|
+
import { ISwap } from "../swaps/ISwap";
|
|
3
|
+
import { EventListener } from "@atomiqlabs/base/src/events/ChainEvents";
|
|
4
|
+
import { SwapType } from "../enums/SwapType";
|
|
5
|
+
import { UnifiedSwapStorage } from "../storage/UnifiedSwapStorage";
|
|
6
|
+
export type SwapEventListener<T extends ChainType, S extends ISwap<T>> = (event: ChainEvent<T["Data"]>, swap: S) => Promise<void>;
|
|
7
|
+
export declare class UnifiedSwapEventListener<T extends ChainType> {
|
|
8
|
+
readonly storage: UnifiedSwapStorage<T>;
|
|
9
|
+
readonly events: T["Events"];
|
|
10
|
+
readonly listeners: {
|
|
11
|
+
[key in SwapType]?: {
|
|
12
|
+
listener: SwapEventListener<T, any>;
|
|
13
|
+
reviver: new (obj: any) => ISwap<T>;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
constructor(unifiedStorage: UnifiedSwapStorage<T>, events: T["Events"]);
|
|
17
|
+
processEvents(events: ChainEvent<T["Data"]>[]): Promise<void>;
|
|
18
|
+
listener?: EventListener<T["Data"]>;
|
|
19
|
+
start(): Promise<void>;
|
|
20
|
+
stop(): Promise<void>;
|
|
21
|
+
registerListener<S extends ISwap<T>>(type: SwapType, listener: SwapEventListener<T, S>, reviver: new (val: any) => S): void;
|
|
22
|
+
unregisterListener(type: SwapType): boolean;
|
|
23
|
+
}
|
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnifiedSwapEventListener = void 0;
|
|
4
|
-
const base_1 = require("@atomiqlabs/base");
|
|
5
|
-
const Logger_1 = require("../utils/Logger");
|
|
6
|
-
function chainEventToEscrowHash(event) {
|
|
7
|
-
if (event instanceof base_1.SwapEvent)
|
|
8
|
-
return event.escrowHash;
|
|
9
|
-
if (event instanceof base_1.SpvVaultFrontEvent ||
|
|
10
|
-
event instanceof base_1.SpvVaultClaimEvent ||
|
|
11
|
-
event instanceof base_1.SpvVaultCloseEvent)
|
|
12
|
-
return event.btcTxId;
|
|
13
|
-
}
|
|
14
|
-
const logger = (0, Logger_1.getLogger)("UnifiedSwapEventListener: ");
|
|
15
|
-
class UnifiedSwapEventListener {
|
|
16
|
-
constructor(unifiedStorage, events) {
|
|
17
|
-
this.listeners = {};
|
|
18
|
-
this.storage = unifiedStorage;
|
|
19
|
-
this.events = events;
|
|
20
|
-
}
|
|
21
|
-
async processEvents(events) {
|
|
22
|
-
const escrowHashesDeduped = new Set();
|
|
23
|
-
events.forEach(event => {
|
|
24
|
-
const escrowHash = chainEventToEscrowHash(event);
|
|
25
|
-
if (escrowHash != null)
|
|
26
|
-
escrowHashesDeduped.add(escrowHash);
|
|
27
|
-
});
|
|
28
|
-
const escrowHashes = Array.from(escrowHashesDeduped);
|
|
29
|
-
logger.debug("processEvents(): Processing events with escrow hashes: ", escrowHashes);
|
|
30
|
-
const swaps = await this.storage.query([
|
|
31
|
-
[{ key: "escrowHash", value: escrowHashes }]
|
|
32
|
-
], (val) => {
|
|
33
|
-
const obj = this.listeners?.[val.type];
|
|
34
|
-
if (obj == null)
|
|
35
|
-
return null;
|
|
36
|
-
return new obj.reviver(val);
|
|
37
|
-
});
|
|
38
|
-
const swapsByEscrowHash = {};
|
|
39
|
-
swaps.forEach(swap => {
|
|
40
|
-
const escrowHash = swap._getEscrowHash();
|
|
41
|
-
if (escrowHash != null)
|
|
42
|
-
swapsByEscrowHash[escrowHash] = swap;
|
|
43
|
-
});
|
|
44
|
-
//We need to do this because FromBTCLNAutoSwaps might not yet know its escrowHash
|
|
45
|
-
// hence we try to get the claimHash and try to query based on that, FromBTCLNAutoSwaps
|
|
46
|
-
// will use their claimHash as escrowHash before they know the real escrowHash
|
|
47
|
-
const htlcCheckInitializeEvents = {};
|
|
48
|
-
for (let event of events) {
|
|
49
|
-
const escrowHash = chainEventToEscrowHash(event);
|
|
50
|
-
if (escrowHash != null) {
|
|
51
|
-
const swap = swapsByEscrowHash[escrowHash];
|
|
52
|
-
if (swap != null) {
|
|
53
|
-
const obj = this.listeners[swap.getType()];
|
|
54
|
-
if (obj == null)
|
|
55
|
-
continue;
|
|
56
|
-
await obj.listener(event, swap);
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (event instanceof base_1.InitializeEvent) {
|
|
61
|
-
if (event.swapType === base_1.ChainSwapType.HTLC) {
|
|
62
|
-
const swapData = await event.swapData();
|
|
63
|
-
htlcCheckInitializeEvents[swapData.getClaimHash()] = event;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
logger.debug("processEvents(): Additionally checking HTLC claim hashes: ", Object.keys(htlcCheckInitializeEvents));
|
|
68
|
-
if (Object.keys(htlcCheckInitializeEvents).length === 0)
|
|
69
|
-
return;
|
|
70
|
-
//Try to query based on claimData
|
|
71
|
-
const claimDataSwaps = await this.storage.query([
|
|
72
|
-
[{ key: "escrowHash", value: Object.keys(htlcCheckInitializeEvents) }]
|
|
73
|
-
], (val) => {
|
|
74
|
-
const obj = this.listeners?.[val.type];
|
|
75
|
-
if (obj == null)
|
|
76
|
-
return null;
|
|
77
|
-
return new obj.reviver(val);
|
|
78
|
-
});
|
|
79
|
-
const swapsByClaimDataHash = {};
|
|
80
|
-
claimDataSwaps.forEach(swap => {
|
|
81
|
-
const escrowHash = swap._getEscrowHash();
|
|
82
|
-
if (escrowHash != null)
|
|
83
|
-
swapsByClaimDataHash[escrowHash] = swap;
|
|
84
|
-
});
|
|
85
|
-
logger.debug("processEvents(): Additional HTLC swaps founds: ", swapsByClaimDataHash);
|
|
86
|
-
for (let claimData in htlcCheckInitializeEvents) {
|
|
87
|
-
const event = htlcCheckInitializeEvents[claimData];
|
|
88
|
-
const swap = swapsByClaimDataHash[claimData];
|
|
89
|
-
if (swap != null) {
|
|
90
|
-
const obj = this.listeners[swap.getType()];
|
|
91
|
-
if (obj == null)
|
|
92
|
-
continue;
|
|
93
|
-
await obj.listener(event, swap);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async start() {
|
|
98
|
-
if (this.listener != null)
|
|
99
|
-
return;
|
|
100
|
-
logger.info("start(): Starting unified swap event listener");
|
|
101
|
-
await this.storage.init();
|
|
102
|
-
logger.debug("start(): Storage initialized");
|
|
103
|
-
await this.events.init();
|
|
104
|
-
logger.debug("start(): Events initialized");
|
|
105
|
-
this.events.registerListener(this.listener = async (events) => {
|
|
106
|
-
await this.processEvents(events);
|
|
107
|
-
return true;
|
|
108
|
-
});
|
|
109
|
-
logger.info("start(): Successfully initiated the unified swap event listener!");
|
|
110
|
-
}
|
|
111
|
-
stop() {
|
|
112
|
-
logger.info("stop(): Stopping unified swap event listener");
|
|
113
|
-
if (this.listener != null)
|
|
114
|
-
this.events.unregisterListener(this.listener);
|
|
115
|
-
return this.events.stop();
|
|
116
|
-
}
|
|
117
|
-
registerListener(type, listener, reviver) {
|
|
118
|
-
this.listeners[type] = {
|
|
119
|
-
listener,
|
|
120
|
-
reviver
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
unregisterListener(type) {
|
|
124
|
-
if (this.listeners[type])
|
|
125
|
-
return false;
|
|
126
|
-
delete this.listeners[type];
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
exports.UnifiedSwapEventListener = UnifiedSwapEventListener;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnifiedSwapEventListener = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
const Logger_1 = require("../utils/Logger");
|
|
6
|
+
function chainEventToEscrowHash(event) {
|
|
7
|
+
if (event instanceof base_1.SwapEvent)
|
|
8
|
+
return event.escrowHash;
|
|
9
|
+
if (event instanceof base_1.SpvVaultFrontEvent ||
|
|
10
|
+
event instanceof base_1.SpvVaultClaimEvent ||
|
|
11
|
+
event instanceof base_1.SpvVaultCloseEvent)
|
|
12
|
+
return event.btcTxId;
|
|
13
|
+
}
|
|
14
|
+
const logger = (0, Logger_1.getLogger)("UnifiedSwapEventListener: ");
|
|
15
|
+
class UnifiedSwapEventListener {
|
|
16
|
+
constructor(unifiedStorage, events) {
|
|
17
|
+
this.listeners = {};
|
|
18
|
+
this.storage = unifiedStorage;
|
|
19
|
+
this.events = events;
|
|
20
|
+
}
|
|
21
|
+
async processEvents(events) {
|
|
22
|
+
const escrowHashesDeduped = new Set();
|
|
23
|
+
events.forEach(event => {
|
|
24
|
+
const escrowHash = chainEventToEscrowHash(event);
|
|
25
|
+
if (escrowHash != null)
|
|
26
|
+
escrowHashesDeduped.add(escrowHash);
|
|
27
|
+
});
|
|
28
|
+
const escrowHashes = Array.from(escrowHashesDeduped);
|
|
29
|
+
logger.debug("processEvents(): Processing events with escrow hashes: ", escrowHashes);
|
|
30
|
+
const swaps = await this.storage.query([
|
|
31
|
+
[{ key: "escrowHash", value: escrowHashes }]
|
|
32
|
+
], (val) => {
|
|
33
|
+
const obj = this.listeners?.[val.type];
|
|
34
|
+
if (obj == null)
|
|
35
|
+
return null;
|
|
36
|
+
return new obj.reviver(val);
|
|
37
|
+
});
|
|
38
|
+
const swapsByEscrowHash = {};
|
|
39
|
+
swaps.forEach(swap => {
|
|
40
|
+
const escrowHash = swap._getEscrowHash();
|
|
41
|
+
if (escrowHash != null)
|
|
42
|
+
swapsByEscrowHash[escrowHash] = swap;
|
|
43
|
+
});
|
|
44
|
+
//We need to do this because FromBTCLNAutoSwaps might not yet know its escrowHash
|
|
45
|
+
// hence we try to get the claimHash and try to query based on that, FromBTCLNAutoSwaps
|
|
46
|
+
// will use their claimHash as escrowHash before they know the real escrowHash
|
|
47
|
+
const htlcCheckInitializeEvents = {};
|
|
48
|
+
for (let event of events) {
|
|
49
|
+
const escrowHash = chainEventToEscrowHash(event);
|
|
50
|
+
if (escrowHash != null) {
|
|
51
|
+
const swap = swapsByEscrowHash[escrowHash];
|
|
52
|
+
if (swap != null) {
|
|
53
|
+
const obj = this.listeners[swap.getType()];
|
|
54
|
+
if (obj == null)
|
|
55
|
+
continue;
|
|
56
|
+
await obj.listener(event, swap);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (event instanceof base_1.InitializeEvent) {
|
|
61
|
+
if (event.swapType === base_1.ChainSwapType.HTLC) {
|
|
62
|
+
const swapData = await event.swapData();
|
|
63
|
+
htlcCheckInitializeEvents[swapData.getClaimHash()] = event;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
logger.debug("processEvents(): Additionally checking HTLC claim hashes: ", Object.keys(htlcCheckInitializeEvents));
|
|
68
|
+
if (Object.keys(htlcCheckInitializeEvents).length === 0)
|
|
69
|
+
return;
|
|
70
|
+
//Try to query based on claimData
|
|
71
|
+
const claimDataSwaps = await this.storage.query([
|
|
72
|
+
[{ key: "escrowHash", value: Object.keys(htlcCheckInitializeEvents) }]
|
|
73
|
+
], (val) => {
|
|
74
|
+
const obj = this.listeners?.[val.type];
|
|
75
|
+
if (obj == null)
|
|
76
|
+
return null;
|
|
77
|
+
return new obj.reviver(val);
|
|
78
|
+
});
|
|
79
|
+
const swapsByClaimDataHash = {};
|
|
80
|
+
claimDataSwaps.forEach(swap => {
|
|
81
|
+
const escrowHash = swap._getEscrowHash();
|
|
82
|
+
if (escrowHash != null)
|
|
83
|
+
swapsByClaimDataHash[escrowHash] = swap;
|
|
84
|
+
});
|
|
85
|
+
logger.debug("processEvents(): Additional HTLC swaps founds: ", swapsByClaimDataHash);
|
|
86
|
+
for (let claimData in htlcCheckInitializeEvents) {
|
|
87
|
+
const event = htlcCheckInitializeEvents[claimData];
|
|
88
|
+
const swap = swapsByClaimDataHash[claimData];
|
|
89
|
+
if (swap != null) {
|
|
90
|
+
const obj = this.listeners[swap.getType()];
|
|
91
|
+
if (obj == null)
|
|
92
|
+
continue;
|
|
93
|
+
await obj.listener(event, swap);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async start() {
|
|
98
|
+
if (this.listener != null)
|
|
99
|
+
return;
|
|
100
|
+
logger.info("start(): Starting unified swap event listener");
|
|
101
|
+
await this.storage.init();
|
|
102
|
+
logger.debug("start(): Storage initialized");
|
|
103
|
+
await this.events.init();
|
|
104
|
+
logger.debug("start(): Events initialized");
|
|
105
|
+
this.events.registerListener(this.listener = async (events) => {
|
|
106
|
+
await this.processEvents(events);
|
|
107
|
+
return true;
|
|
108
|
+
});
|
|
109
|
+
logger.info("start(): Successfully initiated the unified swap event listener!");
|
|
110
|
+
}
|
|
111
|
+
stop() {
|
|
112
|
+
logger.info("stop(): Stopping unified swap event listener");
|
|
113
|
+
if (this.listener != null)
|
|
114
|
+
this.events.unregisterListener(this.listener);
|
|
115
|
+
return this.events.stop();
|
|
116
|
+
}
|
|
117
|
+
registerListener(type, listener, reviver) {
|
|
118
|
+
this.listeners[type] = {
|
|
119
|
+
listener,
|
|
120
|
+
reviver
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
unregisterListener(type) {
|
|
124
|
+
if (this.listeners[type])
|
|
125
|
+
return false;
|
|
126
|
+
delete this.listeners[type];
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.UnifiedSwapEventListener = UnifiedSwapEventListener;
|
package/dist/http/HttpUtils.d.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mimics fetch API byt adds a timeout to the request
|
|
3
|
-
*
|
|
4
|
-
* @param input
|
|
5
|
-
* @param init
|
|
6
|
-
*/
|
|
7
|
-
export declare function fetchWithTimeout(input: RequestInfo | URL, init: RequestInit & {
|
|
8
|
-
timeout?: number;
|
|
9
|
-
}): Promise<Response>;
|
|
10
|
-
/**
|
|
11
|
-
* Sends an HTTP GET request through a fetch API, handles non 200 response codes as errors
|
|
12
|
-
* @param url Send request to this URL
|
|
13
|
-
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
14
|
-
* @param abortSignal
|
|
15
|
-
* @param allowNon200 Whether to allow non-200 status code HTTP responses
|
|
16
|
-
* @throws {RequestError} if non 200 response code was returned or body cannot be parsed
|
|
17
|
-
*/
|
|
18
|
-
export declare function httpGet<T>(url: string, timeout?: number, abortSignal?: AbortSignal, allowNon200?: boolean): Promise<T>;
|
|
19
|
-
/**
|
|
20
|
-
* Sends an HTTP POST request through a fetch API, handles non 200 response codes as errors
|
|
21
|
-
* @param url Send request to this URL
|
|
22
|
-
* @param body A HTTP request body to send to the server
|
|
23
|
-
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
24
|
-
* @param abortSignal
|
|
25
|
-
* @throws {RequestError} if non 200 response code was returned
|
|
26
|
-
*/
|
|
27
|
-
export declare function httpPost<T>(url: string, body: any, timeout?: number, abortSignal?: AbortSignal): Promise<T>;
|
|
1
|
+
/**
|
|
2
|
+
* Mimics fetch API byt adds a timeout to the request
|
|
3
|
+
*
|
|
4
|
+
* @param input
|
|
5
|
+
* @param init
|
|
6
|
+
*/
|
|
7
|
+
export declare function fetchWithTimeout(input: RequestInfo | URL, init: RequestInit & {
|
|
8
|
+
timeout?: number;
|
|
9
|
+
}): Promise<Response>;
|
|
10
|
+
/**
|
|
11
|
+
* Sends an HTTP GET request through a fetch API, handles non 200 response codes as errors
|
|
12
|
+
* @param url Send request to this URL
|
|
13
|
+
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
14
|
+
* @param abortSignal
|
|
15
|
+
* @param allowNon200 Whether to allow non-200 status code HTTP responses
|
|
16
|
+
* @throws {RequestError} if non 200 response code was returned or body cannot be parsed
|
|
17
|
+
*/
|
|
18
|
+
export declare function httpGet<T>(url: string, timeout?: number, abortSignal?: AbortSignal, allowNon200?: boolean): Promise<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Sends an HTTP POST request through a fetch API, handles non 200 response codes as errors
|
|
21
|
+
* @param url Send request to this URL
|
|
22
|
+
* @param body A HTTP request body to send to the server
|
|
23
|
+
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
24
|
+
* @param abortSignal
|
|
25
|
+
* @throws {RequestError} if non 200 response code was returned
|
|
26
|
+
*/
|
|
27
|
+
export declare function httpPost<T>(url: string, body: any, timeout?: number, abortSignal?: AbortSignal): Promise<T>;
|
package/dist/http/HttpUtils.js
CHANGED
|
@@ -1,90 +1,91 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchWithTimeout =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (init
|
|
16
|
-
init =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
*
|
|
30
|
-
* @param
|
|
31
|
-
* @param
|
|
32
|
-
* @param
|
|
33
|
-
* @
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Sends an HTTP POST request through a fetch API, handles non 200 response codes as errors
|
|
64
|
-
* @param url Send request to this URL
|
|
65
|
-
* @param body A HTTP request body to send to the server
|
|
66
|
-
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
67
|
-
* @param abortSignal
|
|
68
|
-
* @throws {RequestError} if non 200 response code was returned
|
|
69
|
-
*/
|
|
70
|
-
async function httpPost(url, body, timeout, abortSignal) {
|
|
71
|
-
const init = {
|
|
72
|
-
method: "POST",
|
|
73
|
-
timeout,
|
|
74
|
-
body: JSON.stringify(body),
|
|
75
|
-
headers: { 'Content-Type': 'application/json' },
|
|
76
|
-
signal: abortSignal
|
|
77
|
-
};
|
|
78
|
-
const response = timeout == null ? await fetch(url, init) : await fetchWithTimeout(url, init);
|
|
79
|
-
if (response.status !== 200) {
|
|
80
|
-
let resp;
|
|
81
|
-
try {
|
|
82
|
-
resp = await response.text();
|
|
83
|
-
}
|
|
84
|
-
catch (e) {
|
|
85
|
-
throw new RequestError_1.RequestError(response.statusText, response.status);
|
|
86
|
-
}
|
|
87
|
-
throw RequestError_1.RequestError.parse(resp, response.status);
|
|
88
|
-
}
|
|
89
|
-
return await response.json();
|
|
90
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.httpPost = exports.httpGet = exports.fetchWithTimeout = void 0;
|
|
4
|
+
const RequestError_1 = require("../errors/RequestError");
|
|
5
|
+
const TimeoutUtils_1 = require("../utils/TimeoutUtils");
|
|
6
|
+
/**
|
|
7
|
+
* Mimics fetch API byt adds a timeout to the request
|
|
8
|
+
*
|
|
9
|
+
* @param input
|
|
10
|
+
* @param init
|
|
11
|
+
*/
|
|
12
|
+
function fetchWithTimeout(input, init) {
|
|
13
|
+
if (init == null)
|
|
14
|
+
init = {};
|
|
15
|
+
if (init.timeout != null)
|
|
16
|
+
init.signal = (0, TimeoutUtils_1.timeoutSignal)(init.timeout, new Error("Network request timed out"), init.signal ?? undefined);
|
|
17
|
+
return fetch(input, init).catch(e => {
|
|
18
|
+
if (e.name === "AbortError" && init.signal != null) {
|
|
19
|
+
throw init.signal.reason;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
throw e;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
exports.fetchWithTimeout = fetchWithTimeout;
|
|
27
|
+
/**
|
|
28
|
+
* Sends an HTTP GET request through a fetch API, handles non 200 response codes as errors
|
|
29
|
+
* @param url Send request to this URL
|
|
30
|
+
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
31
|
+
* @param abortSignal
|
|
32
|
+
* @param allowNon200 Whether to allow non-200 status code HTTP responses
|
|
33
|
+
* @throws {RequestError} if non 200 response code was returned or body cannot be parsed
|
|
34
|
+
*/
|
|
35
|
+
async function httpGet(url, timeout, abortSignal, allowNon200 = false) {
|
|
36
|
+
const init = {
|
|
37
|
+
method: "GET",
|
|
38
|
+
timeout,
|
|
39
|
+
signal: abortSignal
|
|
40
|
+
};
|
|
41
|
+
const response = await fetchWithTimeout(url, init);
|
|
42
|
+
if (response.status !== 200) {
|
|
43
|
+
let resp;
|
|
44
|
+
try {
|
|
45
|
+
resp = await response.text();
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
throw new RequestError_1.RequestError(response.statusText, response.status);
|
|
49
|
+
}
|
|
50
|
+
if (allowNon200) {
|
|
51
|
+
try {
|
|
52
|
+
return JSON.parse(resp);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
throw RequestError_1.RequestError.parse(resp, response.status);
|
|
58
|
+
}
|
|
59
|
+
return await response.json();
|
|
60
|
+
}
|
|
61
|
+
exports.httpGet = httpGet;
|
|
62
|
+
/**
|
|
63
|
+
* Sends an HTTP POST request through a fetch API, handles non 200 response codes as errors
|
|
64
|
+
* @param url Send request to this URL
|
|
65
|
+
* @param body A HTTP request body to send to the server
|
|
66
|
+
* @param timeout Timeout (in milliseconds) for the request to conclude
|
|
67
|
+
* @param abortSignal
|
|
68
|
+
* @throws {RequestError} if non 200 response code was returned
|
|
69
|
+
*/
|
|
70
|
+
async function httpPost(url, body, timeout, abortSignal) {
|
|
71
|
+
const init = {
|
|
72
|
+
method: "POST",
|
|
73
|
+
timeout,
|
|
74
|
+
body: JSON.stringify(body),
|
|
75
|
+
headers: { 'Content-Type': 'application/json' },
|
|
76
|
+
signal: abortSignal
|
|
77
|
+
};
|
|
78
|
+
const response = timeout == null ? await fetch(url, init) : await fetchWithTimeout(url, init);
|
|
79
|
+
if (response.status !== 200) {
|
|
80
|
+
let resp;
|
|
81
|
+
try {
|
|
82
|
+
resp = await response.text();
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
throw new RequestError_1.RequestError(response.statusText, response.status);
|
|
86
|
+
}
|
|
87
|
+
throw RequestError_1.RequestError.parse(resp, response.status);
|
|
88
|
+
}
|
|
89
|
+
return await response.json();
|
|
90
|
+
}
|
|
91
|
+
exports.httpPost = httpPost;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export interface IParamReader {
|
|
2
|
-
/**
|
|
3
|
-
* Returns a promise when the specific property with the name is read from the stream
|
|
4
|
-
*
|
|
5
|
-
* @param name Name of the property
|
|
6
|
-
*/
|
|
7
|
-
getParam<T>(name: string): Promise<T>;
|
|
8
|
-
}
|
|
1
|
+
export interface IParamReader {
|
|
2
|
+
/**
|
|
3
|
+
* Returns a promise when the specific property with the name is read from the stream
|
|
4
|
+
*
|
|
5
|
+
* @param name Name of the property
|
|
6
|
+
*/
|
|
7
|
+
getParam<T>(name: string): Promise<T>;
|
|
8
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|