@atomiqlabs/lp-lib 14.0.0-dev.21 → 14.0.0-dev.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
- package/dist/fees/IBtcFeeEstimator.js +2 -2
- package/dist/index.d.ts +42 -42
- package/dist/index.js +58 -58
- package/dist/info/InfoHandler.d.ts +17 -17
- package/dist/info/InfoHandler.js +61 -61
- package/dist/plugins/IPlugin.d.ts +143 -143
- package/dist/plugins/IPlugin.js +34 -34
- package/dist/plugins/PluginManager.d.ts +112 -112
- package/dist/plugins/PluginManager.js +259 -259
- package/dist/prices/BinanceSwapPrice.d.ts +26 -26
- package/dist/prices/BinanceSwapPrice.js +92 -92
- package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
- package/dist/prices/CoinGeckoSwapPrice.js +64 -64
- package/dist/prices/ISwapPrice.d.ts +43 -43
- package/dist/prices/ISwapPrice.js +55 -55
- package/dist/prices/OKXSwapPrice.d.ts +26 -26
- package/dist/prices/OKXSwapPrice.js +92 -92
- package/dist/storage/IIntermediaryStorage.d.ts +18 -18
- package/dist/storage/IIntermediaryStorage.js +2 -2
- package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
- package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
- package/dist/storagemanager/StorageManager.d.ts +13 -13
- package/dist/storagemanager/StorageManager.js +64 -64
- package/dist/swaps/SwapHandler.d.ts +153 -153
- package/dist/swaps/SwapHandler.js +160 -160
- package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
- package/dist/swaps/SwapHandlerSwap.js +78 -78
- package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
- package/dist/swaps/assertions/AmountAssertions.js +72 -72
- package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
- package/dist/swaps/assertions/FromBtcAmountAssertions.js +180 -180
- package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
- package/dist/swaps/assertions/LightningAssertions.js +86 -86
- package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
- package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
- package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
- package/dist/swaps/escrow/EscrowHandler.js +158 -158
- package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
- package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
- package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
- package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
- package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
- package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -675
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +111 -111
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +684 -684
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +863 -863
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +24 -24
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +58 -58
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +40 -41
- package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +492 -492
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
- package/dist/swaps/spv_vault_swap/SpvVaults.js +394 -364
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
- package/dist/utils/BitcoinUtils.d.ts +2 -2
- package/dist/utils/BitcoinUtils.js +45 -45
- package/dist/utils/Utils.d.ts +29 -29
- package/dist/utils/Utils.js +89 -89
- package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
- package/dist/utils/paramcoders/IParamReader.js +2 -2
- package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
- package/dist/utils/paramcoders/IParamWriter.js +2 -2
- package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
- package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
- package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
- package/dist/utils/paramcoders/ParamDecoder.js +222 -222
- package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
- package/dist/utils/paramcoders/ParamEncoder.js +22 -22
- package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
- package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
- package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
- package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
- package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
- package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
- package/dist/wallets/IBitcoinWallet.d.ts +67 -67
- package/dist/wallets/IBitcoinWallet.js +2 -2
- package/dist/wallets/ILightningWallet.d.ts +117 -117
- package/dist/wallets/ILightningWallet.js +37 -37
- package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
- package/dist/wallets/ISpvVaultSigner.js +2 -2
- package/package.json +36 -36
- package/src/fees/IBtcFeeEstimator.ts +6 -6
- package/src/index.ts +53 -53
- package/src/info/InfoHandler.ts +106 -106
- package/src/plugins/IPlugin.ts +168 -168
- package/src/plugins/PluginManager.ts +336 -336
- package/src/prices/BinanceSwapPrice.ts +113 -113
- package/src/prices/CoinGeckoSwapPrice.ts +87 -87
- package/src/prices/ISwapPrice.ts +88 -88
- package/src/prices/OKXSwapPrice.ts +113 -113
- package/src/storage/IIntermediaryStorage.ts +19 -19
- package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
- package/src/storagemanager/StorageManager.ts +78 -78
- package/src/swaps/SwapHandler.ts +277 -277
- package/src/swaps/SwapHandlerSwap.ts +141 -141
- package/src/swaps/assertions/AmountAssertions.ts +76 -76
- package/src/swaps/assertions/FromBtcAmountAssertions.ts +246 -246
- package/src/swaps/assertions/LightningAssertions.ts +103 -103
- package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
- package/src/swaps/escrow/EscrowHandler.ts +179 -179
- package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
- package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
- package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
- package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
- package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
- package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
- package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -856
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +850 -850
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
- package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
- package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1112 -1112
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +80 -80
- package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
- package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
- package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +628 -628
- package/src/swaps/spv_vault_swap/SpvVaults.ts +469 -435
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
- package/src/utils/BitcoinUtils.ts +42 -42
- package/src/utils/Utils.ts +104 -104
- package/src/utils/paramcoders/IParamReader.ts +7 -7
- package/src/utils/paramcoders/IParamWriter.ts +8 -8
- package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
- package/src/utils/paramcoders/ParamDecoder.ts +218 -218
- package/src/utils/paramcoders/ParamEncoder.ts +29 -29
- package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
- package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
- package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
- package/src/wallets/IBitcoinWallet.ts +68 -68
- package/src/wallets/ILightningWallet.ts +178 -178
- package/src/wallets/ISpvVaultSigner.ts +10 -10
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
import { MultichainData, SwapBaseConfig } from "../SwapHandler";
|
|
2
|
-
import { SwapData } from "@atomiqlabs/base";
|
|
3
|
-
import { ServerParamEncoder } from "../../utils/paramcoders/server/ServerParamEncoder";
|
|
4
|
-
import { IParamReader } from "../../utils/paramcoders/IParamReader";
|
|
5
|
-
import { Request } from "express";
|
|
6
|
-
import { ToBtcBaseSwap } from "./ToBtcBaseSwap";
|
|
7
|
-
import { EscrowHandler } from "./EscrowHandler";
|
|
8
|
-
import { ToBtcAmountAssertions } from "../assertions/ToBtcAmountAssertions";
|
|
9
|
-
import { IIntermediaryStorage } from "../../storage/IIntermediaryStorage";
|
|
10
|
-
import { ISwapPrice } from "../../prices/ISwapPrice";
|
|
11
|
-
export type ToBtcBaseConfig = SwapBaseConfig & {
|
|
12
|
-
gracePeriod: bigint;
|
|
13
|
-
refundAuthorizationTimeout: number;
|
|
14
|
-
};
|
|
15
|
-
export declare abstract class ToBtcBaseSwapHandler<V extends ToBtcBaseSwap<SwapData, S>, S> extends EscrowHandler<V, S> {
|
|
16
|
-
readonly AmountAssertions: ToBtcAmountAssertions;
|
|
17
|
-
readonly pdaExistsForToken: {
|
|
18
|
-
[chainIdentifier: string]: {
|
|
19
|
-
[token: string]: boolean;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
constructor(storageDirectory: IIntermediaryStorage<V>, path: string, chainsData: MultichainData, swapPricing: ISwapPrice, config: ToBtcBaseConfig);
|
|
23
|
-
protected checkVaultInitialized(chainIdentifier: string, token: string): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Starts pre-fetches for swap pricing & signature data
|
|
26
|
-
*
|
|
27
|
-
* @param chainIdentifier
|
|
28
|
-
* @param token
|
|
29
|
-
* @param responseStream
|
|
30
|
-
* @param abortController
|
|
31
|
-
*/
|
|
32
|
-
protected getToBtcPrefetches(chainIdentifier: string, token: string, responseStream: ServerParamEncoder, abortController: AbortController): {
|
|
33
|
-
pricePrefetchPromise?: Promise<bigint>;
|
|
34
|
-
signDataPrefetchPromise?: Promise<any>;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Signs the created swap
|
|
38
|
-
*
|
|
39
|
-
* @param chainIdentifier
|
|
40
|
-
* @param swapObject
|
|
41
|
-
* @param req
|
|
42
|
-
* @param abortSignal
|
|
43
|
-
* @param signDataPrefetchPromise
|
|
44
|
-
*/
|
|
45
|
-
protected getToBtcSignatureData(chainIdentifier: string, swapObject: SwapData, req: Request & {
|
|
46
|
-
paramReader: IParamReader;
|
|
47
|
-
}, abortSignal: AbortSignal, signDataPrefetchPromise?: Promise<any>): Promise<{
|
|
48
|
-
prefix: string;
|
|
49
|
-
timeout: string;
|
|
50
|
-
signature: string;
|
|
51
|
-
feeRate: string;
|
|
52
|
-
}>;
|
|
53
|
-
}
|
|
1
|
+
import { MultichainData, SwapBaseConfig } from "../SwapHandler";
|
|
2
|
+
import { SwapData } from "@atomiqlabs/base";
|
|
3
|
+
import { ServerParamEncoder } from "../../utils/paramcoders/server/ServerParamEncoder";
|
|
4
|
+
import { IParamReader } from "../../utils/paramcoders/IParamReader";
|
|
5
|
+
import { Request } from "express";
|
|
6
|
+
import { ToBtcBaseSwap } from "./ToBtcBaseSwap";
|
|
7
|
+
import { EscrowHandler } from "./EscrowHandler";
|
|
8
|
+
import { ToBtcAmountAssertions } from "../assertions/ToBtcAmountAssertions";
|
|
9
|
+
import { IIntermediaryStorage } from "../../storage/IIntermediaryStorage";
|
|
10
|
+
import { ISwapPrice } from "../../prices/ISwapPrice";
|
|
11
|
+
export type ToBtcBaseConfig = SwapBaseConfig & {
|
|
12
|
+
gracePeriod: bigint;
|
|
13
|
+
refundAuthorizationTimeout: number;
|
|
14
|
+
};
|
|
15
|
+
export declare abstract class ToBtcBaseSwapHandler<V extends ToBtcBaseSwap<SwapData, S>, S> extends EscrowHandler<V, S> {
|
|
16
|
+
readonly AmountAssertions: ToBtcAmountAssertions;
|
|
17
|
+
readonly pdaExistsForToken: {
|
|
18
|
+
[chainIdentifier: string]: {
|
|
19
|
+
[token: string]: boolean;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
constructor(storageDirectory: IIntermediaryStorage<V>, path: string, chainsData: MultichainData, swapPricing: ISwapPrice, config: ToBtcBaseConfig);
|
|
23
|
+
protected checkVaultInitialized(chainIdentifier: string, token: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Starts pre-fetches for swap pricing & signature data
|
|
26
|
+
*
|
|
27
|
+
* @param chainIdentifier
|
|
28
|
+
* @param token
|
|
29
|
+
* @param responseStream
|
|
30
|
+
* @param abortController
|
|
31
|
+
*/
|
|
32
|
+
protected getToBtcPrefetches(chainIdentifier: string, token: string, responseStream: ServerParamEncoder, abortController: AbortController): {
|
|
33
|
+
pricePrefetchPromise?: Promise<bigint>;
|
|
34
|
+
signDataPrefetchPromise?: Promise<any>;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Signs the created swap
|
|
38
|
+
*
|
|
39
|
+
* @param chainIdentifier
|
|
40
|
+
* @param swapObject
|
|
41
|
+
* @param req
|
|
42
|
+
* @param abortSignal
|
|
43
|
+
* @param signDataPrefetchPromise
|
|
44
|
+
*/
|
|
45
|
+
protected getToBtcSignatureData(chainIdentifier: string, swapObject: SwapData, req: Request & {
|
|
46
|
+
paramReader: IParamReader;
|
|
47
|
+
}, abortSignal: AbortSignal, signDataPrefetchPromise?: Promise<any>): Promise<{
|
|
48
|
+
prefix: string;
|
|
49
|
+
timeout: string;
|
|
50
|
+
signature: string;
|
|
51
|
+
feeRate: string;
|
|
52
|
+
}>;
|
|
53
|
+
}
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ToBtcBaseSwapHandler = void 0;
|
|
4
|
-
const SchemaVerifier_1 = require("../../utils/paramcoders/SchemaVerifier");
|
|
5
|
-
const EscrowHandler_1 = require("./EscrowHandler");
|
|
6
|
-
const ToBtcAmountAssertions_1 = require("../assertions/ToBtcAmountAssertions");
|
|
7
|
-
class ToBtcBaseSwapHandler extends EscrowHandler_1.EscrowHandler {
|
|
8
|
-
constructor(storageDirectory, path, chainsData, swapPricing, config) {
|
|
9
|
-
super(storageDirectory, path, chainsData, swapPricing);
|
|
10
|
-
this.pdaExistsForToken = {};
|
|
11
|
-
this.AmountAssertions = new ToBtcAmountAssertions_1.ToBtcAmountAssertions(config, swapPricing);
|
|
12
|
-
}
|
|
13
|
-
async checkVaultInitialized(chainIdentifier, token) {
|
|
14
|
-
if (!this.pdaExistsForToken[chainIdentifier] || !this.pdaExistsForToken[chainIdentifier][token]) {
|
|
15
|
-
this.logger.debug("checkVaultInitialized(): checking vault exists for chain: " + chainIdentifier + " token: " + token);
|
|
16
|
-
const { swapContract, signer } = this.getChain(chainIdentifier);
|
|
17
|
-
const reputation = await swapContract.getIntermediaryReputation(signer.getAddress(), token);
|
|
18
|
-
this.logger.debug("checkVaultInitialized(): vault state, chain: " + chainIdentifier + " token: " + token + " exists: " + (reputation != null));
|
|
19
|
-
if (reputation != null) {
|
|
20
|
-
if (this.pdaExistsForToken[chainIdentifier] == null)
|
|
21
|
-
this.pdaExistsForToken[chainIdentifier] = {};
|
|
22
|
-
this.pdaExistsForToken[chainIdentifier][token] = true;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
throw {
|
|
26
|
-
code: 20201,
|
|
27
|
-
msg: "Token not supported!"
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Starts pre-fetches for swap pricing & signature data
|
|
34
|
-
*
|
|
35
|
-
* @param chainIdentifier
|
|
36
|
-
* @param token
|
|
37
|
-
* @param responseStream
|
|
38
|
-
* @param abortController
|
|
39
|
-
*/
|
|
40
|
-
getToBtcPrefetches(chainIdentifier, token, responseStream, abortController) {
|
|
41
|
-
//Fetch pricing & signature data in parallel
|
|
42
|
-
const pricePrefetchPromise = this.swapPricing.preFetchPrice(token, chainIdentifier).catch(e => {
|
|
43
|
-
this.logger.error("getToBtcPrefetches(): pricePrefetch error", e);
|
|
44
|
-
abortController.abort(e);
|
|
45
|
-
return null;
|
|
46
|
-
});
|
|
47
|
-
return {
|
|
48
|
-
pricePrefetchPromise,
|
|
49
|
-
signDataPrefetchPromise: this.getSignDataPrefetch(chainIdentifier, abortController, responseStream)
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Signs the created swap
|
|
54
|
-
*
|
|
55
|
-
* @param chainIdentifier
|
|
56
|
-
* @param swapObject
|
|
57
|
-
* @param req
|
|
58
|
-
* @param abortSignal
|
|
59
|
-
* @param signDataPrefetchPromise
|
|
60
|
-
*/
|
|
61
|
-
async getToBtcSignatureData(chainIdentifier, swapObject, req, abortSignal, signDataPrefetchPromise) {
|
|
62
|
-
const prefetchedSignData = signDataPrefetchPromise != null ? await signDataPrefetchPromise : null;
|
|
63
|
-
if (prefetchedSignData != null)
|
|
64
|
-
this.logger.debug("getToBtcSignatureData(): pre-fetched signature data: ", prefetchedSignData);
|
|
65
|
-
abortSignal.throwIfAborted();
|
|
66
|
-
const feeRateObj = await req.paramReader.getParams({
|
|
67
|
-
feeRate: SchemaVerifier_1.FieldTypeEnum.String
|
|
68
|
-
}).catch(() => null);
|
|
69
|
-
abortSignal.throwIfAborted();
|
|
70
|
-
const feeRate = feeRateObj?.feeRate != null && typeof (feeRateObj.feeRate) === "string" ? feeRateObj.feeRate : null;
|
|
71
|
-
this.logger.debug("getToBtcSignatureData(): using fee rate from client: ", feeRate);
|
|
72
|
-
const { swapContract, signer } = this.getChain(chainIdentifier);
|
|
73
|
-
const sigData = await swapContract.getInitSignature(signer, swapObject, this.getInitAuthorizationTimeout(chainIdentifier), prefetchedSignData, feeRate);
|
|
74
|
-
abortSignal.throwIfAborted();
|
|
75
|
-
return {
|
|
76
|
-
...sigData,
|
|
77
|
-
feeRate
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.ToBtcBaseSwapHandler = ToBtcBaseSwapHandler;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ToBtcBaseSwapHandler = void 0;
|
|
4
|
+
const SchemaVerifier_1 = require("../../utils/paramcoders/SchemaVerifier");
|
|
5
|
+
const EscrowHandler_1 = require("./EscrowHandler");
|
|
6
|
+
const ToBtcAmountAssertions_1 = require("../assertions/ToBtcAmountAssertions");
|
|
7
|
+
class ToBtcBaseSwapHandler extends EscrowHandler_1.EscrowHandler {
|
|
8
|
+
constructor(storageDirectory, path, chainsData, swapPricing, config) {
|
|
9
|
+
super(storageDirectory, path, chainsData, swapPricing);
|
|
10
|
+
this.pdaExistsForToken = {};
|
|
11
|
+
this.AmountAssertions = new ToBtcAmountAssertions_1.ToBtcAmountAssertions(config, swapPricing);
|
|
12
|
+
}
|
|
13
|
+
async checkVaultInitialized(chainIdentifier, token) {
|
|
14
|
+
if (!this.pdaExistsForToken[chainIdentifier] || !this.pdaExistsForToken[chainIdentifier][token]) {
|
|
15
|
+
this.logger.debug("checkVaultInitialized(): checking vault exists for chain: " + chainIdentifier + " token: " + token);
|
|
16
|
+
const { swapContract, signer } = this.getChain(chainIdentifier);
|
|
17
|
+
const reputation = await swapContract.getIntermediaryReputation(signer.getAddress(), token);
|
|
18
|
+
this.logger.debug("checkVaultInitialized(): vault state, chain: " + chainIdentifier + " token: " + token + " exists: " + (reputation != null));
|
|
19
|
+
if (reputation != null) {
|
|
20
|
+
if (this.pdaExistsForToken[chainIdentifier] == null)
|
|
21
|
+
this.pdaExistsForToken[chainIdentifier] = {};
|
|
22
|
+
this.pdaExistsForToken[chainIdentifier][token] = true;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw {
|
|
26
|
+
code: 20201,
|
|
27
|
+
msg: "Token not supported!"
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Starts pre-fetches for swap pricing & signature data
|
|
34
|
+
*
|
|
35
|
+
* @param chainIdentifier
|
|
36
|
+
* @param token
|
|
37
|
+
* @param responseStream
|
|
38
|
+
* @param abortController
|
|
39
|
+
*/
|
|
40
|
+
getToBtcPrefetches(chainIdentifier, token, responseStream, abortController) {
|
|
41
|
+
//Fetch pricing & signature data in parallel
|
|
42
|
+
const pricePrefetchPromise = this.swapPricing.preFetchPrice(token, chainIdentifier).catch(e => {
|
|
43
|
+
this.logger.error("getToBtcPrefetches(): pricePrefetch error", e);
|
|
44
|
+
abortController.abort(e);
|
|
45
|
+
return null;
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
pricePrefetchPromise,
|
|
49
|
+
signDataPrefetchPromise: this.getSignDataPrefetch(chainIdentifier, abortController, responseStream)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Signs the created swap
|
|
54
|
+
*
|
|
55
|
+
* @param chainIdentifier
|
|
56
|
+
* @param swapObject
|
|
57
|
+
* @param req
|
|
58
|
+
* @param abortSignal
|
|
59
|
+
* @param signDataPrefetchPromise
|
|
60
|
+
*/
|
|
61
|
+
async getToBtcSignatureData(chainIdentifier, swapObject, req, abortSignal, signDataPrefetchPromise) {
|
|
62
|
+
const prefetchedSignData = signDataPrefetchPromise != null ? await signDataPrefetchPromise : null;
|
|
63
|
+
if (prefetchedSignData != null)
|
|
64
|
+
this.logger.debug("getToBtcSignatureData(): pre-fetched signature data: ", prefetchedSignData);
|
|
65
|
+
abortSignal.throwIfAborted();
|
|
66
|
+
const feeRateObj = await req.paramReader.getParams({
|
|
67
|
+
feeRate: SchemaVerifier_1.FieldTypeEnum.String
|
|
68
|
+
}).catch(() => null);
|
|
69
|
+
abortSignal.throwIfAborted();
|
|
70
|
+
const feeRate = feeRateObj?.feeRate != null && typeof (feeRateObj.feeRate) === "string" ? feeRateObj.feeRate : null;
|
|
71
|
+
this.logger.debug("getToBtcSignatureData(): using fee rate from client: ", feeRate);
|
|
72
|
+
const { swapContract, signer } = this.getChain(chainIdentifier);
|
|
73
|
+
const sigData = await swapContract.getInitSignature(signer, swapObject, this.getInitAuthorizationTimeout(chainIdentifier), prefetchedSignData, feeRate);
|
|
74
|
+
abortSignal.throwIfAborted();
|
|
75
|
+
return {
|
|
76
|
+
...sigData,
|
|
77
|
+
feeRate
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.ToBtcBaseSwapHandler = ToBtcBaseSwapHandler;
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
2
|
-
import { FromBtcSwapAbs, FromBtcSwapState } from "./FromBtcSwapAbs";
|
|
3
|
-
import { MultichainData, SwapHandlerType } from "../../SwapHandler";
|
|
4
|
-
import { ISwapPrice } from "../../../prices/ISwapPrice";
|
|
5
|
-
import { ChainSwapType, ClaimEvent, InitializeEvent, RefundEvent, SwapData } from "@atomiqlabs/base";
|
|
6
|
-
import { IIntermediaryStorage } from "../../../storage/IIntermediaryStorage";
|
|
7
|
-
import { FromBtcBaseConfig, FromBtcBaseSwapHandler } from "../FromBtcBaseSwapHandler";
|
|
8
|
-
import { IBitcoinWallet } from "../../../wallets/IBitcoinWallet";
|
|
9
|
-
export type FromBtcConfig = FromBtcBaseConfig & {
|
|
10
|
-
confirmations: number;
|
|
11
|
-
swapCsvDelta: number;
|
|
12
|
-
};
|
|
13
|
-
export type FromBtcRequestType = {
|
|
14
|
-
address: string;
|
|
15
|
-
amount: bigint;
|
|
16
|
-
token: string;
|
|
17
|
-
sequence: bigint;
|
|
18
|
-
exactOut?: boolean;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Swap handler handling from BTC swaps using PTLCs (proof-time locked contracts) and btc relay (on-chain bitcoin SPV)
|
|
22
|
-
*/
|
|
23
|
-
export declare class FromBtcAbs extends FromBtcBaseSwapHandler<FromBtcSwapAbs, FromBtcSwapState> {
|
|
24
|
-
readonly type = SwapHandlerType.FROM_BTC;
|
|
25
|
-
readonly swapType = ChainSwapType.CHAIN;
|
|
26
|
-
readonly config: FromBtcConfig & {
|
|
27
|
-
swapTsCsvDelta: bigint;
|
|
28
|
-
};
|
|
29
|
-
readonly bitcoin: IBitcoinWallet;
|
|
30
|
-
constructor(storageDirectory: IIntermediaryStorage<FromBtcSwapAbs>, path: string, chains: MultichainData, bitcoin: IBitcoinWallet, swapPricing: ISwapPrice, config: FromBtcConfig);
|
|
31
|
-
/**
|
|
32
|
-
* Returns the payment hash of the swap, takes swap nonce into account. Payment hash is chain-specific.
|
|
33
|
-
*
|
|
34
|
-
* @param chainIdentifier
|
|
35
|
-
* @param address
|
|
36
|
-
* @param amount
|
|
37
|
-
*/
|
|
38
|
-
private getHash;
|
|
39
|
-
/**
|
|
40
|
-
* Processes past swap
|
|
41
|
-
*
|
|
42
|
-
* @param swap
|
|
43
|
-
* @protected
|
|
44
|
-
* @returns true if the swap should be refunded, false if nothing should be done
|
|
45
|
-
*/
|
|
46
|
-
protected processPastSwap(swap: FromBtcSwapAbs): Promise<boolean>;
|
|
47
|
-
/**
|
|
48
|
-
* Checks past swaps, refunds and deletes ones that are already expired.
|
|
49
|
-
*/
|
|
50
|
-
protected processPastSwaps(): Promise<void>;
|
|
51
|
-
/**
|
|
52
|
-
* Refunds all swaps (calls SC on-chain refund function)
|
|
53
|
-
*
|
|
54
|
-
* @param refundSwaps
|
|
55
|
-
* @protected
|
|
56
|
-
*/
|
|
57
|
-
protected refundSwaps(refundSwaps: FromBtcSwapAbs[]): Promise<void>;
|
|
58
|
-
protected processInitializeEvent(chainIdentifier: string, savedSwap: FromBtcSwapAbs, event: InitializeEvent<SwapData>): Promise<void>;
|
|
59
|
-
protected processClaimEvent(chainIdentifier: string, savedSwap: FromBtcSwapAbs, event: ClaimEvent<SwapData>): Promise<void>;
|
|
60
|
-
protected processRefundEvent(chainIdentifier: string, savedSwap: FromBtcSwapAbs, event: RefundEvent<SwapData>): Promise<void>;
|
|
61
|
-
/**
|
|
62
|
-
* Calculates the requested claimer bounty, based on client's request
|
|
63
|
-
*
|
|
64
|
-
* @param req
|
|
65
|
-
* @param expiry
|
|
66
|
-
* @param signal
|
|
67
|
-
* @throws {DefinedRuntimeError} will throw an error if the plugin cancelled the request
|
|
68
|
-
* @returns {Promise<BN>} resulting claimer bounty to be used with the swap
|
|
69
|
-
*/
|
|
70
|
-
private getClaimerBounty;
|
|
71
|
-
private getDummySwapData;
|
|
72
|
-
/**
|
|
73
|
-
* Sets up required listeners for the REST server
|
|
74
|
-
*
|
|
75
|
-
* @param restServer
|
|
76
|
-
*/
|
|
77
|
-
startRestServer(restServer: Express): void;
|
|
78
|
-
/**
|
|
79
|
-
* Initializes swap handler, loads data and subscribes to chain events
|
|
80
|
-
*/
|
|
81
|
-
init(): Promise<void>;
|
|
82
|
-
getInfoData(): any;
|
|
83
|
-
}
|
|
1
|
+
import { Express } from "express";
|
|
2
|
+
import { FromBtcSwapAbs, FromBtcSwapState } from "./FromBtcSwapAbs";
|
|
3
|
+
import { MultichainData, SwapHandlerType } from "../../SwapHandler";
|
|
4
|
+
import { ISwapPrice } from "../../../prices/ISwapPrice";
|
|
5
|
+
import { ChainSwapType, ClaimEvent, InitializeEvent, RefundEvent, SwapData } from "@atomiqlabs/base";
|
|
6
|
+
import { IIntermediaryStorage } from "../../../storage/IIntermediaryStorage";
|
|
7
|
+
import { FromBtcBaseConfig, FromBtcBaseSwapHandler } from "../FromBtcBaseSwapHandler";
|
|
8
|
+
import { IBitcoinWallet } from "../../../wallets/IBitcoinWallet";
|
|
9
|
+
export type FromBtcConfig = FromBtcBaseConfig & {
|
|
10
|
+
confirmations: number;
|
|
11
|
+
swapCsvDelta: number;
|
|
12
|
+
};
|
|
13
|
+
export type FromBtcRequestType = {
|
|
14
|
+
address: string;
|
|
15
|
+
amount: bigint;
|
|
16
|
+
token: string;
|
|
17
|
+
sequence: bigint;
|
|
18
|
+
exactOut?: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Swap handler handling from BTC swaps using PTLCs (proof-time locked contracts) and btc relay (on-chain bitcoin SPV)
|
|
22
|
+
*/
|
|
23
|
+
export declare class FromBtcAbs extends FromBtcBaseSwapHandler<FromBtcSwapAbs, FromBtcSwapState> {
|
|
24
|
+
readonly type = SwapHandlerType.FROM_BTC;
|
|
25
|
+
readonly swapType = ChainSwapType.CHAIN;
|
|
26
|
+
readonly config: FromBtcConfig & {
|
|
27
|
+
swapTsCsvDelta: bigint;
|
|
28
|
+
};
|
|
29
|
+
readonly bitcoin: IBitcoinWallet;
|
|
30
|
+
constructor(storageDirectory: IIntermediaryStorage<FromBtcSwapAbs>, path: string, chains: MultichainData, bitcoin: IBitcoinWallet, swapPricing: ISwapPrice, config: FromBtcConfig);
|
|
31
|
+
/**
|
|
32
|
+
* Returns the payment hash of the swap, takes swap nonce into account. Payment hash is chain-specific.
|
|
33
|
+
*
|
|
34
|
+
* @param chainIdentifier
|
|
35
|
+
* @param address
|
|
36
|
+
* @param amount
|
|
37
|
+
*/
|
|
38
|
+
private getHash;
|
|
39
|
+
/**
|
|
40
|
+
* Processes past swap
|
|
41
|
+
*
|
|
42
|
+
* @param swap
|
|
43
|
+
* @protected
|
|
44
|
+
* @returns true if the swap should be refunded, false if nothing should be done
|
|
45
|
+
*/
|
|
46
|
+
protected processPastSwap(swap: FromBtcSwapAbs): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Checks past swaps, refunds and deletes ones that are already expired.
|
|
49
|
+
*/
|
|
50
|
+
protected processPastSwaps(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Refunds all swaps (calls SC on-chain refund function)
|
|
53
|
+
*
|
|
54
|
+
* @param refundSwaps
|
|
55
|
+
* @protected
|
|
56
|
+
*/
|
|
57
|
+
protected refundSwaps(refundSwaps: FromBtcSwapAbs[]): Promise<void>;
|
|
58
|
+
protected processInitializeEvent(chainIdentifier: string, savedSwap: FromBtcSwapAbs, event: InitializeEvent<SwapData>): Promise<void>;
|
|
59
|
+
protected processClaimEvent(chainIdentifier: string, savedSwap: FromBtcSwapAbs, event: ClaimEvent<SwapData>): Promise<void>;
|
|
60
|
+
protected processRefundEvent(chainIdentifier: string, savedSwap: FromBtcSwapAbs, event: RefundEvent<SwapData>): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Calculates the requested claimer bounty, based on client's request
|
|
63
|
+
*
|
|
64
|
+
* @param req
|
|
65
|
+
* @param expiry
|
|
66
|
+
* @param signal
|
|
67
|
+
* @throws {DefinedRuntimeError} will throw an error if the plugin cancelled the request
|
|
68
|
+
* @returns {Promise<BN>} resulting claimer bounty to be used with the swap
|
|
69
|
+
*/
|
|
70
|
+
private getClaimerBounty;
|
|
71
|
+
private getDummySwapData;
|
|
72
|
+
/**
|
|
73
|
+
* Sets up required listeners for the REST server
|
|
74
|
+
*
|
|
75
|
+
* @param restServer
|
|
76
|
+
*/
|
|
77
|
+
startRestServer(restServer: Express): void;
|
|
78
|
+
/**
|
|
79
|
+
* Initializes swap handler, loads data and subscribes to chain events
|
|
80
|
+
*/
|
|
81
|
+
init(): Promise<void>;
|
|
82
|
+
getInfoData(): any;
|
|
83
|
+
}
|