@atomiqlabs/lp-lib 10.3.11 → 11.0.0
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/index.d.ts +2 -1
- package/dist/index.js +2 -4
- package/dist/plugins/IPlugin.d.ts +3 -2
- package/dist/plugins/PluginManager.d.ts +3 -2
- package/dist/plugins/PluginManager.js +2 -2
- package/dist/swaps/FromBtcBaseSwap.d.ts +5 -1
- package/dist/swaps/FromBtcBaseSwap.js +20 -0
- package/dist/swaps/FromBtcBaseSwapHandler.d.ts +1 -0
- package/dist/swaps/FromBtcBaseSwapHandler.js +1 -1
- package/dist/swaps/FromBtcLnBaseSwapHandler.d.ts +8 -6
- package/dist/swaps/FromBtcLnBaseSwapHandler.js +7 -5
- package/dist/swaps/SwapHandler.d.ts +1 -4
- package/dist/swaps/SwapHandler.js +1 -2
- package/dist/swaps/SwapHandlerSwap.d.ts +4 -0
- package/dist/swaps/SwapHandlerSwap.js +9 -1
- package/dist/swaps/ToBtcBaseSwap.d.ts +3 -1
- package/dist/swaps/ToBtcBaseSwap.js +8 -2
- package/dist/swaps/ToBtcBaseSwapHandler.d.ts +1 -0
- package/dist/swaps/ToBtcBaseSwapHandler.js +1 -1
- package/dist/swaps/frombtc_abstract/FromBtcAbs.d.ts +3 -5
- package/dist/swaps/frombtc_abstract/FromBtcAbs.js +18 -25
- package/dist/swaps/frombtc_abstract/FromBtcSwapAbs.d.ts +1 -4
- package/dist/swaps/frombtc_abstract/FromBtcSwapAbs.js +3 -16
- package/dist/swaps/frombtc_trusted/FromBtcTrusted.d.ts +6 -9
- package/dist/swaps/frombtc_trusted/FromBtcTrusted.js +238 -137
- package/dist/swaps/frombtc_trusted/FromBtcTrustedSwap.d.ts +9 -6
- package/dist/swaps/frombtc_trusted/FromBtcTrustedSwap.js +15 -10
- package/dist/swaps/frombtcln_abstract/FromBtcLnAbs.d.ts +2 -2
- package/dist/swaps/frombtcln_abstract/FromBtcLnAbs.js +42 -62
- package/dist/swaps/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +1 -6
- package/dist/swaps/frombtcln_abstract/FromBtcLnSwapAbs.js +2 -14
- package/dist/swaps/frombtcln_trusted/FromBtcLnTrusted.d.ts +3 -5
- package/dist/swaps/frombtcln_trusted/FromBtcLnTrusted.js +64 -80
- package/dist/swaps/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +1 -2
- package/dist/swaps/frombtcln_trusted/FromBtcLnTrustedSwap.js +5 -8
- package/dist/swaps/tobtc_abstract/ToBtcAbs.d.ts +5 -125
- package/dist/swaps/tobtc_abstract/ToBtcAbs.js +41 -334
- package/dist/swaps/tobtc_abstract/ToBtcSwapAbs.d.ts +1 -4
- package/dist/swaps/tobtc_abstract/ToBtcSwapAbs.js +2 -11
- package/dist/swaps/tobtcln_abstract/ToBtcLnAbs.d.ts +5 -55
- package/dist/swaps/tobtcln_abstract/ToBtcLnAbs.js +152 -398
- package/dist/swaps/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +1 -6
- package/dist/swaps/tobtcln_abstract/ToBtcLnSwapAbs.js +2 -15
- package/dist/utils/Utils.d.ts +0 -10
- package/dist/utils/Utils.js +1 -34
- package/dist/wallets/IBitcoinWallet.d.ts +62 -0
- package/dist/wallets/IBitcoinWallet.js +2 -0
- package/dist/wallets/ILightningWallet.d.ts +118 -0
- package/dist/wallets/ILightningWallet.js +37 -0
- package/package.json +4 -9
- package/src/index.ts +3 -5
- package/src/plugins/IPlugin.ts +4 -2
- package/src/plugins/PluginManager.ts +6 -3
- package/src/swaps/FromBtcBaseSwap.ts +24 -1
- package/src/swaps/FromBtcBaseSwapHandler.ts +6 -2
- package/src/swaps/FromBtcLnBaseSwapHandler.ts +22 -6
- package/src/swaps/SwapHandler.ts +1 -8
- package/src/swaps/SwapHandlerSwap.ts +14 -1
- package/src/swaps/ToBtcBaseSwap.ts +12 -3
- package/src/swaps/ToBtcBaseSwapHandler.ts +6 -2
- package/src/swaps/frombtc_abstract/FromBtcAbs.ts +24 -28
- package/src/swaps/frombtc_abstract/FromBtcSwapAbs.ts +3 -18
- package/src/swaps/frombtc_trusted/FromBtcTrusted.ts +260 -159
- package/src/swaps/frombtc_trusted/FromBtcTrustedSwap.ts +22 -15
- package/src/swaps/frombtcln_abstract/FromBtcLnAbs.ts +69 -79
- package/src/swaps/frombtcln_abstract/FromBtcLnSwapAbs.ts +3 -20
- package/src/swaps/frombtcln_trusted/FromBtcLnTrusted.ts +80 -97
- package/src/swaps/frombtcln_trusted/FromBtcLnTrustedSwap.ts +6 -9
- package/src/swaps/tobtc_abstract/ToBtcAbs.ts +52 -410
- package/src/swaps/tobtc_abstract/ToBtcSwapAbs.ts +3 -18
- package/src/swaps/tobtcln_abstract/ToBtcLnAbs.ts +157 -434
- package/src/swaps/tobtcln_abstract/ToBtcLnSwapAbs.ts +3 -20
- package/src/utils/Utils.ts +0 -31
- package/src/wallets/IBitcoinWallet.ts +66 -0
- package/src/wallets/ILightningWallet.ts +179 -0
- package/dist/fees/OneDollarFeeEstimator.d.ts +0 -16
- package/dist/fees/OneDollarFeeEstimator.js +0 -71
- package/dist/utils/coinselect2/accumulative.d.ts +0 -6
- package/dist/utils/coinselect2/accumulative.js +0 -44
- package/dist/utils/coinselect2/blackjack.d.ts +0 -6
- package/dist/utils/coinselect2/blackjack.js +0 -41
- package/dist/utils/coinselect2/index.d.ts +0 -16
- package/dist/utils/coinselect2/index.js +0 -40
- package/dist/utils/coinselect2/utils.d.ts +0 -64
- package/dist/utils/coinselect2/utils.js +0 -121
- package/src/fees/OneDollarFeeEstimator.ts +0 -95
- package/src/utils/coinselect2/accumulative.js +0 -32
- package/src/utils/coinselect2/accumulative.ts +0 -58
- package/src/utils/coinselect2/blackjack.js +0 -29
- package/src/utils/coinselect2/blackjack.ts +0 -54
- package/src/utils/coinselect2/index.js +0 -16
- package/src/utils/coinselect2/index.ts +0 -50
- package/src/utils/coinselect2/utils.js +0 -110
- package/src/utils/coinselect2/utils.ts +0 -183
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,6 @@ export * from "./swaps/SwapHandlerSwap";
|
|
|
22
22
|
export * from "./plugins/PluginManager";
|
|
23
23
|
export * from "./plugins/IPlugin";
|
|
24
24
|
export * from "./fees/IBtcFeeEstimator";
|
|
25
|
-
export * from "./fees/OneDollarFeeEstimator";
|
|
26
25
|
export * from "./utils/paramcoders/IParamReader";
|
|
27
26
|
export * from "./utils/paramcoders/IParamWriter";
|
|
28
27
|
export * from "./utils/paramcoders/LegacyParamEncoder";
|
|
@@ -31,3 +30,5 @@ export * from "./utils/paramcoders/ParamEncoder";
|
|
|
31
30
|
export * from "./utils/paramcoders/SchemaVerifier";
|
|
32
31
|
export * from "./utils/paramcoders/server/ServerParamDecoder";
|
|
33
32
|
export * from "./utils/paramcoders/server/ServerParamEncoder";
|
|
33
|
+
export * from "./wallets/IBitcoinWallet";
|
|
34
|
+
export * from "./wallets/ILightningWallet";
|
package/dist/index.js
CHANGED
|
@@ -14,9 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
const bitcoin = require("bitcoinjs-lib");
|
|
18
|
-
const tinySecpk256Interface = require("@bitcoinerlab/secp256k1");
|
|
19
|
-
bitcoin.initEccLib(tinySecpk256Interface);
|
|
20
17
|
__exportStar(require("./info/InfoHandler"), exports);
|
|
21
18
|
__exportStar(require("./prices/CoinGeckoSwapPrice"), exports);
|
|
22
19
|
__exportStar(require("./prices/BinanceSwapPrice"), exports);
|
|
@@ -41,7 +38,6 @@ __exportStar(require("./swaps/SwapHandlerSwap"), exports);
|
|
|
41
38
|
__exportStar(require("./plugins/PluginManager"), exports);
|
|
42
39
|
__exportStar(require("./plugins/IPlugin"), exports);
|
|
43
40
|
__exportStar(require("./fees/IBtcFeeEstimator"), exports);
|
|
44
|
-
__exportStar(require("./fees/OneDollarFeeEstimator"), exports);
|
|
45
41
|
__exportStar(require("./utils/paramcoders/IParamReader"), exports);
|
|
46
42
|
__exportStar(require("./utils/paramcoders/IParamWriter"), exports);
|
|
47
43
|
__exportStar(require("./utils/paramcoders/LegacyParamEncoder"), exports);
|
|
@@ -50,3 +46,5 @@ __exportStar(require("./utils/paramcoders/ParamEncoder"), exports);
|
|
|
50
46
|
__exportStar(require("./utils/paramcoders/SchemaVerifier"), exports);
|
|
51
47
|
__exportStar(require("./utils/paramcoders/server/ServerParamDecoder"), exports);
|
|
52
48
|
__exportStar(require("./utils/paramcoders/server/ServerParamEncoder"), exports);
|
|
49
|
+
__exportStar(require("./wallets/IBitcoinWallet"), exports);
|
|
50
|
+
__exportStar(require("./wallets/ILightningWallet"), exports);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BitcoinRpc } from "@atomiqlabs/base";
|
|
2
2
|
import { FromBtcLnRequestType, FromBtcRequestType, ISwapPrice, MultichainData, RequestData, SwapHandler, ToBtcLnRequestType, ToBtcRequestType } from "..";
|
|
3
3
|
import { SwapHandlerSwap } from "../swaps/SwapHandlerSwap";
|
|
4
|
-
import { AuthenticatedLnd } from "lightning";
|
|
5
4
|
import * as BN from "bn.js";
|
|
6
5
|
import { Command } from "@atomiqlabs/server-base";
|
|
7
6
|
import { FromBtcLnTrustedRequestType } from "../swaps/frombtcln_trusted/FromBtcLnTrusted";
|
|
7
|
+
import { IBitcoinWallet } from "../wallets/IBitcoinWallet";
|
|
8
|
+
import { ILightningWallet } from "../wallets/ILightningWallet";
|
|
8
9
|
export type QuoteThrow = {
|
|
9
10
|
type: "throw";
|
|
10
11
|
message: string;
|
|
@@ -55,7 +56,7 @@ export interface IPlugin {
|
|
|
55
56
|
name: string;
|
|
56
57
|
author: string;
|
|
57
58
|
description: string;
|
|
58
|
-
onEnable(chainsData: MultichainData, bitcoinRpc: BitcoinRpc<any>,
|
|
59
|
+
onEnable(chainsData: MultichainData, bitcoinRpc: BitcoinRpc<any>, bitcoinWallet: IBitcoinWallet, lightningWallet: ILightningWallet, swapPricing: ISwapPrice, tokens: {
|
|
59
60
|
[ticker: string]: {
|
|
60
61
|
[chainId: string]: {
|
|
61
62
|
address: string;
|
|
@@ -2,9 +2,10 @@ import { BitcoinRpc, SwapData } from "@atomiqlabs/base";
|
|
|
2
2
|
import { IPlugin, PluginQuote, QuoteAmountTooHigh, QuoteAmountTooLow, QuoteSetFees, QuoteThrow, ToBtcPluginQuote } from "./IPlugin";
|
|
3
3
|
import { FromBtcLnRequestType, FromBtcRequestType, ISwapPrice, MultichainData, RequestData, SwapHandler, ToBtcLnRequestType, ToBtcRequestType } from "..";
|
|
4
4
|
import { SwapHandlerSwap } from "../swaps/SwapHandlerSwap";
|
|
5
|
-
import { AuthenticatedLnd } from "lightning";
|
|
6
5
|
import * as BN from "bn.js";
|
|
7
6
|
import { FromBtcLnTrustedRequestType } from "../swaps/frombtcln_trusted/FromBtcLnTrusted";
|
|
7
|
+
import { IBitcoinWallet } from "../wallets/IBitcoinWallet";
|
|
8
|
+
import { ILightningWallet } from "../wallets/ILightningWallet";
|
|
8
9
|
export type FailSwapResponse = {
|
|
9
10
|
type: "fail";
|
|
10
11
|
code?: number;
|
|
@@ -26,7 +27,7 @@ export declare class PluginManager {
|
|
|
26
27
|
static plugins: Map<string, IPlugin>;
|
|
27
28
|
static registerPlugin(name: string, plugin: IPlugin): void;
|
|
28
29
|
static unregisterPlugin(name: string): boolean;
|
|
29
|
-
static enable<T extends SwapData>(chainsData: MultichainData, bitcoinRpc: BitcoinRpc<any>,
|
|
30
|
+
static enable<T extends SwapData>(chainsData: MultichainData, bitcoinRpc: BitcoinRpc<any>, bitcoinWallet: IBitcoinWallet, lightningWallet: ILightningWallet, swapPricing: ISwapPrice, tokens: {
|
|
30
31
|
[ticker: string]: {
|
|
31
32
|
[chainId: string]: {
|
|
32
33
|
address: string;
|
|
@@ -27,7 +27,7 @@ class PluginManager {
|
|
|
27
27
|
static unregisterPlugin(name) {
|
|
28
28
|
return PluginManager.plugins.delete(name);
|
|
29
29
|
}
|
|
30
|
-
static enable(chainsData, bitcoinRpc,
|
|
30
|
+
static enable(chainsData, bitcoinRpc, bitcoinWallet, lightningWallet, swapPricing, tokens, directory) {
|
|
31
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
32
32
|
try {
|
|
33
33
|
fs.mkdirSync(directory);
|
|
@@ -39,7 +39,7 @@ class PluginManager {
|
|
|
39
39
|
fs.mkdirSync(directory + "/" + name);
|
|
40
40
|
}
|
|
41
41
|
catch (e) { }
|
|
42
|
-
yield plugin.onEnable(chainsData, bitcoinRpc,
|
|
42
|
+
yield plugin.onEnable(chainsData, bitcoinRpc, bitcoinWallet, lightningWallet, swapPricing, tokens, directory + "/" + name);
|
|
43
43
|
}
|
|
44
44
|
catch (e) {
|
|
45
45
|
pluginLogger.error(plugin, "enable(): plugin enable error", e);
|
|
@@ -2,11 +2,15 @@ import { SwapData } from "@atomiqlabs/base";
|
|
|
2
2
|
import { SwapHandlerSwap } from "./SwapHandlerSwap";
|
|
3
3
|
import * as BN from "bn.js";
|
|
4
4
|
export declare abstract class FromBtcBaseSwap<T extends SwapData, S = any> extends SwapHandlerSwap<T, S> {
|
|
5
|
+
amount: BN;
|
|
6
|
+
protected constructor(chainIdentifier: string, amount: BN, swapFee: BN, swapFeeInToken: BN);
|
|
7
|
+
protected constructor(obj: any);
|
|
5
8
|
getInputAmount(): BN;
|
|
6
|
-
|
|
9
|
+
getTotalInputAmount(): BN;
|
|
7
10
|
getOutputAmount(): BN;
|
|
8
11
|
getSwapFee(): {
|
|
9
12
|
inInputToken: BN;
|
|
10
13
|
inOutputToken: BN;
|
|
11
14
|
};
|
|
15
|
+
serialize(): any;
|
|
12
16
|
}
|
|
@@ -2,15 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FromBtcBaseSwap = void 0;
|
|
4
4
|
const SwapHandlerSwap_1 = require("./SwapHandlerSwap");
|
|
5
|
+
const BN = require("bn.js");
|
|
6
|
+
const Utils_1 = require("../utils/Utils");
|
|
5
7
|
class FromBtcBaseSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
|
|
8
|
+
constructor(obj, amount, swapFee, swapFeeInToken) {
|
|
9
|
+
super(obj, swapFee, swapFeeInToken);
|
|
10
|
+
if (typeof (obj) === "string" && BN.isBN(amount) && BN.isBN(swapFee) && BN.isBN(swapFeeInToken)) {
|
|
11
|
+
this.amount = amount;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this.amount = (0, Utils_1.deserializeBN)(obj.amount);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
;
|
|
6
18
|
getInputAmount() {
|
|
7
19
|
return this.getTotalInputAmount().sub(this.getSwapFee().inInputToken);
|
|
8
20
|
}
|
|
21
|
+
getTotalInputAmount() {
|
|
22
|
+
return this.amount;
|
|
23
|
+
}
|
|
9
24
|
getOutputAmount() {
|
|
10
25
|
return this.data.getAmount();
|
|
11
26
|
}
|
|
12
27
|
getSwapFee() {
|
|
13
28
|
return { inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken };
|
|
14
29
|
}
|
|
30
|
+
serialize() {
|
|
31
|
+
const partialSerialized = super.serialize();
|
|
32
|
+
partialSerialized.amount = (0, Utils_1.serializeBN)(this.amount);
|
|
33
|
+
return partialSerialized;
|
|
34
|
+
}
|
|
15
35
|
}
|
|
16
36
|
exports.FromBtcBaseSwap = FromBtcBaseSwap;
|
|
@@ -287,7 +287,7 @@ class FromBtcBaseSwapHandler extends SwapHandler_1.SwapHandler {
|
|
|
287
287
|
this.logger.debug("getFromBtcSignatureData(): using fee rate from client: ", feeRate);
|
|
288
288
|
const sigData = yield swapContract.getInitSignature(signer, swapObject, this.config.authorizationTimeout, prefetchedSignData, feeRate);
|
|
289
289
|
abortSignal.throwIfAborted();
|
|
290
|
-
return sigData;
|
|
290
|
+
return Object.assign(Object.assign({}, sigData), { feeRate });
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
293
|
}
|
|
@@ -2,7 +2,13 @@ import { SwapHandlerSwap } from "./SwapHandlerSwap";
|
|
|
2
2
|
import { SwapData } from "@atomiqlabs/base";
|
|
3
3
|
import { FromBtcBaseSwapHandler } from "./FromBtcBaseSwapHandler";
|
|
4
4
|
import * as BN from "bn.js";
|
|
5
|
+
import { ILightningWallet, LightningNetworkChannel } from "../wallets/ILightningWallet";
|
|
6
|
+
import { IIntermediaryStorage } from "../storage/IIntermediaryStorage";
|
|
7
|
+
import { MultichainData } from "./SwapHandler";
|
|
8
|
+
import { ISwapPrice } from "./ISwapPrice";
|
|
5
9
|
export declare abstract class FromBtcLnBaseSwapHandler<V extends SwapHandlerSwap<SwapData, S>, S> extends FromBtcBaseSwapHandler<V, S> {
|
|
10
|
+
readonly lightning: ILightningWallet;
|
|
11
|
+
constructor(storageDirectory: IIntermediaryStorage<V>, path: string, chains: MultichainData, lightning: ILightningWallet, swapPricing: ISwapPrice);
|
|
6
12
|
/**
|
|
7
13
|
* Checks if we have enough inbound liquidity to be able to receive an LN payment (without MPP)
|
|
8
14
|
*
|
|
@@ -11,15 +17,11 @@ export declare abstract class FromBtcLnBaseSwapHandler<V extends SwapHandlerSwap
|
|
|
11
17
|
* @param signal
|
|
12
18
|
* @throws {DefinedRuntimeError} will throw an error if there isn't enough inbound liquidity to receive the LN payment
|
|
13
19
|
*/
|
|
14
|
-
protected checkInboundLiquidity(amountBD: BN, channelsPrefetch: Promise<
|
|
15
|
-
channels: any[];
|
|
16
|
-
}>, signal: AbortSignal): Promise<void>;
|
|
20
|
+
protected checkInboundLiquidity(amountBD: BN, channelsPrefetch: Promise<LightningNetworkChannel[]>, signal: AbortSignal): Promise<void>;
|
|
17
21
|
/**
|
|
18
22
|
* Starts LN channels pre-fetch
|
|
19
23
|
*
|
|
20
24
|
* @param abortController
|
|
21
25
|
*/
|
|
22
|
-
protected getChannelsPrefetch(abortController: AbortController): Promise<
|
|
23
|
-
channels: any[];
|
|
24
|
-
}>;
|
|
26
|
+
protected getChannelsPrefetch(abortController: AbortController): Promise<LightningNetworkChannel[]>;
|
|
25
27
|
}
|
|
@@ -11,9 +11,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.FromBtcLnBaseSwapHandler = void 0;
|
|
13
13
|
const FromBtcBaseSwapHandler_1 = require("./FromBtcBaseSwapHandler");
|
|
14
|
-
const BN = require("bn.js");
|
|
15
|
-
const lncli = require("ln-service");
|
|
16
14
|
class FromBtcLnBaseSwapHandler extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
15
|
+
constructor(storageDirectory, path, chains, lightning, swapPricing) {
|
|
16
|
+
super(storageDirectory, path, chains, swapPricing);
|
|
17
|
+
this.lightning = lightning;
|
|
18
|
+
}
|
|
17
19
|
/**
|
|
18
20
|
* Checks if we have enough inbound liquidity to be able to receive an LN payment (without MPP)
|
|
19
21
|
*
|
|
@@ -27,8 +29,8 @@ class FromBtcLnBaseSwapHandler extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapH
|
|
|
27
29
|
const channelsResponse = yield channelsPrefetch;
|
|
28
30
|
signal.throwIfAborted();
|
|
29
31
|
let hasEnoughInboundLiquidity = false;
|
|
30
|
-
channelsResponse.
|
|
31
|
-
if (
|
|
32
|
+
channelsResponse.forEach(channel => {
|
|
33
|
+
if (channel.remoteBalance.gte(amountBD))
|
|
32
34
|
hasEnoughInboundLiquidity = true;
|
|
33
35
|
});
|
|
34
36
|
if (!hasEnoughInboundLiquidity) {
|
|
@@ -45,7 +47,7 @@ class FromBtcLnBaseSwapHandler extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapH
|
|
|
45
47
|
* @param abortController
|
|
46
48
|
*/
|
|
47
49
|
getChannelsPrefetch(abortController) {
|
|
48
|
-
return
|
|
50
|
+
return this.lightning.getChannels(true).catch(e => {
|
|
49
51
|
this.logger.error("getChannelsPrefetch(): error", e);
|
|
50
52
|
abortController.abort(e);
|
|
51
53
|
return null;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Express, Request } from "express";
|
|
2
2
|
import { ISwapPrice } from "./ISwapPrice";
|
|
3
3
|
import { ChainType, ClaimEvent, InitializeEvent, RefundEvent, SwapData, SwapEvent } from "@atomiqlabs/base";
|
|
4
|
-
import { AuthenticatedLnd } from "lightning";
|
|
5
4
|
import { SwapHandlerSwap } from "./SwapHandlerSwap";
|
|
6
5
|
import { IIntermediaryStorage } from "../storage/IIntermediaryStorage";
|
|
7
6
|
import * as BN from "bn.js";
|
|
@@ -33,7 +32,6 @@ export type SwapBaseConfig = {
|
|
|
33
32
|
feePPM: BN;
|
|
34
33
|
max: BN;
|
|
35
34
|
min: BN;
|
|
36
|
-
maxSkew: number;
|
|
37
35
|
safetyFactor: BN;
|
|
38
36
|
swapCheckInterval: number;
|
|
39
37
|
};
|
|
@@ -70,7 +68,6 @@ export declare abstract class SwapHandler<V extends SwapHandlerSwap<SwapData, S>
|
|
|
70
68
|
[chainId: string]: Set<string>;
|
|
71
69
|
};
|
|
72
70
|
readonly swapPricing: ISwapPrice;
|
|
73
|
-
readonly LND: AuthenticatedLnd;
|
|
74
71
|
abstract config: SwapBaseConfig;
|
|
75
72
|
logger: {
|
|
76
73
|
debug: (msg: string, ...args: any) => void;
|
|
@@ -84,7 +81,7 @@ export declare abstract class SwapHandler<V extends SwapHandlerSwap<SwapData, S>
|
|
|
84
81
|
warn: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => void;
|
|
85
82
|
error: (swap: SwapHandlerSwap | SwapEvent<SwapData> | SwapData, msg: string, ...args: any) => void;
|
|
86
83
|
};
|
|
87
|
-
protected constructor(storageDirectory: IIntermediaryStorage<V>, path: string, chainsData: MultichainData,
|
|
84
|
+
protected constructor(storageDirectory: IIntermediaryStorage<V>, path: string, chainsData: MultichainData, swapPricing: ISwapPrice);
|
|
88
85
|
protected getDefaultChain(): ChainData;
|
|
89
86
|
protected getChain(identifier: string): ChainData;
|
|
90
87
|
protected abstract processPastSwaps(): Promise<void>;
|
|
@@ -28,7 +28,7 @@ var SwapHandlerType;
|
|
|
28
28
|
* An abstract class defining a singular swap service
|
|
29
29
|
*/
|
|
30
30
|
class SwapHandler {
|
|
31
|
-
constructor(storageDirectory, path, chainsData,
|
|
31
|
+
constructor(storageDirectory, path, chainsData, swapPricing) {
|
|
32
32
|
this.logger = {
|
|
33
33
|
debug: (msg, ...args) => console.debug("SwapHandler(" + this.type + "): " + msg, ...args),
|
|
34
34
|
info: (msg, ...args) => console.info("SwapHandler(" + this.type + "): " + msg, ...args),
|
|
@@ -46,7 +46,6 @@ class SwapHandler {
|
|
|
46
46
|
if (this.chains.chains[this.chains.default] == null)
|
|
47
47
|
throw new Error("Invalid default chain specified");
|
|
48
48
|
this.path = path;
|
|
49
|
-
this.LND = lnd;
|
|
50
49
|
this.swapPricing = swapPricing;
|
|
51
50
|
this.allowedTokens = {};
|
|
52
51
|
for (let chainId in chainsData.chains) {
|
|
@@ -20,6 +20,10 @@ export declare abstract class SwapHandlerSwap<T extends SwapData = SwapData, S =
|
|
|
20
20
|
};
|
|
21
21
|
readonly swapFee: BN;
|
|
22
22
|
readonly swapFeeInToken: BN;
|
|
23
|
+
prefix: string;
|
|
24
|
+
timeout: string;
|
|
25
|
+
signature: string;
|
|
26
|
+
feeRate: string;
|
|
23
27
|
protected constructor(chainIdentifier: string, swapFee: BN, swapFeeInToken: BN);
|
|
24
28
|
protected constructor(obj: any);
|
|
25
29
|
serialize(): any;
|
|
@@ -23,6 +23,10 @@ class SwapHandlerSwap extends base_1.Lockable {
|
|
|
23
23
|
this.state = obj.state;
|
|
24
24
|
this.swapFee = (0, Utils_1.deserializeBN)(obj.swapFee);
|
|
25
25
|
this.swapFeeInToken = (0, Utils_1.deserializeBN)(obj.swapFeeInToken);
|
|
26
|
+
this.prefix = obj.prefix;
|
|
27
|
+
this.timeout = obj.timeout;
|
|
28
|
+
this.signature = obj.signature;
|
|
29
|
+
this.feeRate = obj.feeRate;
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
serialize() {
|
|
@@ -33,7 +37,11 @@ class SwapHandlerSwap extends base_1.Lockable {
|
|
|
33
37
|
metadata: this.metadata,
|
|
34
38
|
txIds: this.txIds,
|
|
35
39
|
swapFee: (0, Utils_1.serializeBN)(this.swapFee),
|
|
36
|
-
swapFeeInToken: (0, Utils_1.serializeBN)(this.swapFeeInToken)
|
|
40
|
+
swapFeeInToken: (0, Utils_1.serializeBN)(this.swapFeeInToken),
|
|
41
|
+
prefix: this.prefix,
|
|
42
|
+
timeout: this.timeout,
|
|
43
|
+
signature: this.signature,
|
|
44
|
+
feeRate: this.feeRate
|
|
37
45
|
};
|
|
38
46
|
}
|
|
39
47
|
/**
|
|
@@ -2,11 +2,12 @@ import { SwapHandlerSwap } from "./SwapHandlerSwap";
|
|
|
2
2
|
import { SwapData } from "@atomiqlabs/base";
|
|
3
3
|
import * as BN from "bn.js";
|
|
4
4
|
export declare abstract class ToBtcBaseSwap<T extends SwapData = SwapData, S = any> extends SwapHandlerSwap<T, S> {
|
|
5
|
+
amount: BN;
|
|
5
6
|
quotedNetworkFee: BN;
|
|
6
7
|
readonly quotedNetworkFeeInToken: BN;
|
|
7
8
|
realNetworkFee: BN;
|
|
8
9
|
realNetworkFeeInToken: BN;
|
|
9
|
-
protected constructor(chainIdentifier: string, swapFee: BN, swapFeeInToken: BN, quotedNetworkFee: BN, quotedNetworkFeeInToken: BN);
|
|
10
|
+
protected constructor(chainIdentifier: string, amount: BN, swapFee: BN, swapFeeInToken: BN, quotedNetworkFee: BN, quotedNetworkFeeInToken: BN);
|
|
10
11
|
protected constructor(obj: any);
|
|
11
12
|
serialize(): any;
|
|
12
13
|
setRealNetworkFee(networkFeeInBtc: BN): void;
|
|
@@ -32,4 +33,5 @@ export declare abstract class ToBtcBaseSwap<T extends SwapData = SwapData, S = a
|
|
|
32
33
|
inInputToken: BN;
|
|
33
34
|
inOutputToken: BN;
|
|
34
35
|
};
|
|
36
|
+
getOutputAmount(): BN;
|
|
35
37
|
}
|
|
@@ -5,15 +5,17 @@ const SwapHandlerSwap_1 = require("./SwapHandlerSwap");
|
|
|
5
5
|
const BN = require("bn.js");
|
|
6
6
|
const Utils_1 = require("../utils/Utils");
|
|
7
7
|
class ToBtcBaseSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
|
|
8
|
-
constructor(obj, swapFee, swapFeeInToken, quotedNetworkFee, quotedNetworkFeeInToken) {
|
|
9
|
-
if (typeof (obj) === "string" && BN.isBN(swapFee) && BN.isBN(swapFeeInToken) && BN.isBN(quotedNetworkFee) && BN.isBN(quotedNetworkFeeInToken)) {
|
|
8
|
+
constructor(obj, amount, swapFee, swapFeeInToken, quotedNetworkFee, quotedNetworkFeeInToken) {
|
|
9
|
+
if (typeof (obj) === "string" && BN.isBN(amount) && BN.isBN(swapFee) && BN.isBN(swapFeeInToken) && BN.isBN(quotedNetworkFee) && BN.isBN(quotedNetworkFeeInToken)) {
|
|
10
10
|
super(obj, swapFee, swapFeeInToken);
|
|
11
|
+
this.amount = amount;
|
|
11
12
|
this.quotedNetworkFee = quotedNetworkFee;
|
|
12
13
|
this.quotedNetworkFeeInToken = quotedNetworkFeeInToken;
|
|
13
14
|
return;
|
|
14
15
|
}
|
|
15
16
|
else {
|
|
16
17
|
super(obj);
|
|
18
|
+
this.amount = (0, Utils_1.deserializeBN)(obj.amount);
|
|
17
19
|
this.quotedNetworkFee = (0, Utils_1.deserializeBN)(obj.quotedNetworkFee);
|
|
18
20
|
this.quotedNetworkFeeInToken = (0, Utils_1.deserializeBN)(obj.quotedNetworkFeeInToken);
|
|
19
21
|
this.realNetworkFee = (0, Utils_1.deserializeBN)(obj.realNetworkFee);
|
|
@@ -22,6 +24,7 @@ class ToBtcBaseSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
|
|
|
22
24
|
}
|
|
23
25
|
serialize() {
|
|
24
26
|
const obj = super.serialize();
|
|
27
|
+
obj.amount = (0, Utils_1.serializeBN)(this.amount);
|
|
25
28
|
obj.quotedNetworkFee = (0, Utils_1.serializeBN)(this.quotedNetworkFee);
|
|
26
29
|
obj.quotedNetworkFeeInToken = (0, Utils_1.serializeBN)(this.quotedNetworkFeeInToken);
|
|
27
30
|
obj.realNetworkFee = (0, Utils_1.serializeBN)(this.realNetworkFee);
|
|
@@ -57,5 +60,8 @@ class ToBtcBaseSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
|
|
|
57
60
|
getRealNetworkFee() {
|
|
58
61
|
return { inInputToken: this.realNetworkFeeInToken, inOutputToken: this.realNetworkFee };
|
|
59
62
|
}
|
|
63
|
+
getOutputAmount() {
|
|
64
|
+
return this.amount;
|
|
65
|
+
}
|
|
60
66
|
}
|
|
61
67
|
exports.ToBtcBaseSwap = ToBtcBaseSwap;
|
|
@@ -226,7 +226,7 @@ class ToBtcBaseSwapHandler extends SwapHandler_1.SwapHandler {
|
|
|
226
226
|
const { swapContract, signer } = this.getChain(chainIdentifier);
|
|
227
227
|
const sigData = yield swapContract.getInitSignature(signer, swapObject, this.config.authorizationTimeout, prefetchedSignData, feeRate);
|
|
228
228
|
abortSignal.throwIfAborted();
|
|
229
|
-
return sigData;
|
|
229
|
+
return Object.assign(Object.assign({}, sigData), { feeRate });
|
|
230
230
|
});
|
|
231
231
|
}
|
|
232
232
|
}
|
|
@@ -4,12 +4,10 @@ import { FromBtcSwapAbs, FromBtcSwapState } from "./FromBtcSwapAbs";
|
|
|
4
4
|
import { MultichainData, SwapHandlerType } from "../SwapHandler";
|
|
5
5
|
import { ISwapPrice } from "../ISwapPrice";
|
|
6
6
|
import { ClaimEvent, InitializeEvent, RefundEvent, SwapData } from "@atomiqlabs/base";
|
|
7
|
-
import { AuthenticatedLnd } from "lightning";
|
|
8
|
-
import * as bitcoin from "bitcoinjs-lib";
|
|
9
7
|
import { IIntermediaryStorage } from "../../storage/IIntermediaryStorage";
|
|
10
8
|
import { FromBtcBaseConfig, FromBtcBaseSwapHandler } from "../FromBtcBaseSwapHandler";
|
|
9
|
+
import { IBitcoinWallet } from "../../wallets/IBitcoinWallet";
|
|
11
10
|
export type FromBtcConfig = FromBtcBaseConfig & {
|
|
12
|
-
bitcoinNetwork: bitcoin.networks.Network;
|
|
13
11
|
confirmations: number;
|
|
14
12
|
swapCsvDelta: number;
|
|
15
13
|
};
|
|
@@ -28,13 +26,13 @@ export declare class FromBtcAbs extends FromBtcBaseSwapHandler<FromBtcSwapAbs, F
|
|
|
28
26
|
readonly config: FromBtcConfig & {
|
|
29
27
|
swapTsCsvDelta: BN;
|
|
30
28
|
};
|
|
31
|
-
|
|
29
|
+
readonly bitcoin: IBitcoinWallet;
|
|
30
|
+
constructor(storageDirectory: IIntermediaryStorage<FromBtcSwapAbs>, path: string, chains: MultichainData, bitcoin: IBitcoinWallet, swapPricing: ISwapPrice, config: FromBtcConfig);
|
|
32
31
|
/**
|
|
33
32
|
* Returns the TXO hash of the specific address and amount - sha256(u64le(amount) + outputScript(address))
|
|
34
33
|
*
|
|
35
34
|
* @param address
|
|
36
35
|
* @param amount
|
|
37
|
-
* @param bitcoinNetwork
|
|
38
36
|
*/
|
|
39
37
|
private getTxoHash;
|
|
40
38
|
/**
|
|
@@ -11,11 +11,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.FromBtcAbs = void 0;
|
|
13
13
|
const BN = require("bn.js");
|
|
14
|
-
const lncli = require("ln-service");
|
|
15
14
|
const FromBtcSwapAbs_1 = require("./FromBtcSwapAbs");
|
|
16
15
|
const SwapHandler_1 = require("../SwapHandler");
|
|
17
16
|
const base_1 = require("@atomiqlabs/base");
|
|
18
|
-
const bitcoin = require("bitcoinjs-lib");
|
|
19
17
|
const crypto_1 = require("crypto");
|
|
20
18
|
const Utils_1 = require("../../utils/Utils");
|
|
21
19
|
const PluginManager_1 = require("../../plugins/PluginManager");
|
|
@@ -26,22 +24,20 @@ const FromBtcBaseSwapHandler_1 = require("../FromBtcBaseSwapHandler");
|
|
|
26
24
|
* Swap handler handling from BTC swaps using PTLCs (proof-time locked contracts) and btc relay (on-chain bitcoin SPV)
|
|
27
25
|
*/
|
|
28
26
|
class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
29
|
-
constructor(storageDirectory, path, chains,
|
|
30
|
-
super(storageDirectory, path, chains,
|
|
27
|
+
constructor(storageDirectory, path, chains, bitcoin, swapPricing, config) {
|
|
28
|
+
super(storageDirectory, path, chains, swapPricing);
|
|
31
29
|
this.type = SwapHandler_1.SwapHandlerType.FROM_BTC;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.config = anyConfig;
|
|
30
|
+
this.bitcoin = bitcoin;
|
|
31
|
+
this.config = Object.assign(Object.assign({}, config), { swapTsCsvDelta: new BN(config.swapCsvDelta).mul(config.bitcoinBlocktime.div(config.safetyFactor)) });
|
|
35
32
|
}
|
|
36
33
|
/**
|
|
37
34
|
* Returns the TXO hash of the specific address and amount - sha256(u64le(amount) + outputScript(address))
|
|
38
35
|
*
|
|
39
36
|
* @param address
|
|
40
37
|
* @param amount
|
|
41
|
-
* @param bitcoinNetwork
|
|
42
38
|
*/
|
|
43
|
-
getTxoHash(address, amount
|
|
44
|
-
const parsedOutputScript = bitcoin.
|
|
39
|
+
getTxoHash(address, amount) {
|
|
40
|
+
const parsedOutputScript = this.bitcoin.toOutputScript(address);
|
|
45
41
|
return (0, crypto_1.createHash)("sha256").update(Buffer.concat([
|
|
46
42
|
Buffer.from(amount.toArray("le", 8)),
|
|
47
43
|
parsedOutputScript
|
|
@@ -55,7 +51,7 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
55
51
|
* @param amount
|
|
56
52
|
*/
|
|
57
53
|
getHash(chainIdentifier, address, amount) {
|
|
58
|
-
const parsedOutputScript = bitcoin.
|
|
54
|
+
const parsedOutputScript = this.bitcoin.toOutputScript(address);
|
|
59
55
|
const { swapContract } = this.getChain(chainIdentifier);
|
|
60
56
|
return swapContract.getHashForOnchain(parsedOutputScript, amount, new BN(0));
|
|
61
57
|
}
|
|
@@ -68,13 +64,10 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
68
64
|
*/
|
|
69
65
|
processPastSwap(swap) {
|
|
70
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
|
|
72
|
-
const currentTime = new BN(Math.floor(Date.now() / 1000) - this.config.maxSkew);
|
|
73
|
-
const { swapContract } = this.getChain(swap.chainIdentifier);
|
|
67
|
+
const { swapContract, signer } = this.getChain(swap.chainIdentifier);
|
|
74
68
|
//Once authorization expires in CREATED state, the user can no more commit it on-chain
|
|
75
69
|
if (swap.state === FromBtcSwapAbs_1.FromBtcSwapState.CREATED) {
|
|
76
|
-
|
|
77
|
-
if (!isExpired)
|
|
70
|
+
if (!(yield swapContract.isInitAuthorizationExpired(swap.data, swap)))
|
|
78
71
|
return false;
|
|
79
72
|
const isCommited = yield swapContract.isCommited(swap.data);
|
|
80
73
|
if (isCommited) {
|
|
@@ -84,14 +77,13 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
84
77
|
return false;
|
|
85
78
|
}
|
|
86
79
|
this.swapLogger.info(swap, "processPastSwap(state=CREATED): removing past swap due to authorization expiry, address: " + swap.address);
|
|
80
|
+
yield this.bitcoin.addUnusedAddress(swap.address);
|
|
87
81
|
yield this.removeSwapData(swap, FromBtcSwapAbs_1.FromBtcSwapState.CANCELED);
|
|
88
82
|
return false;
|
|
89
83
|
}
|
|
90
|
-
const expiryTime = swap.data.getExpiry();
|
|
91
84
|
//Check if commited swap expired by now
|
|
92
85
|
if (swap.state === FromBtcSwapAbs_1.FromBtcSwapState.COMMITED) {
|
|
93
|
-
|
|
94
|
-
if (!isExpired)
|
|
86
|
+
if (!swapContract.isExpired(signer.getAddress(), swap.data))
|
|
95
87
|
return false;
|
|
96
88
|
const isCommited = yield swapContract.isCommited(swap.data);
|
|
97
89
|
if (isCommited) {
|
|
@@ -201,6 +193,7 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
201
193
|
return;
|
|
202
194
|
savedSwap.txIds.refund = (_a = event.meta) === null || _a === void 0 ? void 0 : _a.txId;
|
|
203
195
|
this.swapLogger.info(event, "SC: RefundEvent: swap refunded, address: " + savedSwap.address);
|
|
196
|
+
yield this.bitcoin.addUnusedAddress(savedSwap.address);
|
|
204
197
|
yield this.removeSwapData(savedSwap, FromBtcSwapAbs_1.FromBtcSwapState.REFUNDED);
|
|
205
198
|
});
|
|
206
199
|
}
|
|
@@ -316,10 +309,7 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
316
309
|
yield this.checkBalance(totalInToken, balancePrefetch, abortController.signal);
|
|
317
310
|
metadata.times.balanceChecked = Date.now();
|
|
318
311
|
//Create swap receive bitcoin address
|
|
319
|
-
const
|
|
320
|
-
lnd: this.LND,
|
|
321
|
-
format: "p2wpkh"
|
|
322
|
-
});
|
|
312
|
+
const receiveAddress = yield this.bitcoin.getAddress();
|
|
323
313
|
abortController.signal.throwIfAborted();
|
|
324
314
|
metadata.times.addressCreated = Date.now();
|
|
325
315
|
const paymentHash = this.getHash(chainIdentifier, receiveAddress, amountBD);
|
|
@@ -334,7 +324,7 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
334
324
|
metadata.times.claimerBountyCalculated = Date.now();
|
|
335
325
|
//Create swap data
|
|
336
326
|
const data = yield swapContract.createSwapData(base_1.ChainSwapType.CHAIN, signer.getAddress(), parsedBody.address, useToken, totalInToken, paymentHash.toString("hex"), parsedBody.sequence, expiry, new BN(0), this.config.confirmations, false, true, totalSecurityDeposit, totalClaimerBounty);
|
|
337
|
-
data.setTxoHash(this.getTxoHash(receiveAddress, amountBD
|
|
327
|
+
data.setTxoHash(this.getTxoHash(receiveAddress, amountBD).toString("hex"));
|
|
338
328
|
abortController.signal.throwIfAborted();
|
|
339
329
|
metadata.times.swapCreated = Date.now();
|
|
340
330
|
//Sign the swap
|
|
@@ -343,7 +333,10 @@ class FromBtcAbs extends FromBtcBaseSwapHandler_1.FromBtcBaseSwapHandler {
|
|
|
343
333
|
const createdSwap = new FromBtcSwapAbs_1.FromBtcSwapAbs(chainIdentifier, receiveAddress, amountBD, swapFee, swapFeeInToken);
|
|
344
334
|
createdSwap.data = data;
|
|
345
335
|
createdSwap.metadata = metadata;
|
|
346
|
-
createdSwap.
|
|
336
|
+
createdSwap.prefix = sigData.prefix;
|
|
337
|
+
createdSwap.timeout = sigData.timeout;
|
|
338
|
+
createdSwap.signature = sigData.signature;
|
|
339
|
+
createdSwap.feeRate = sigData.feeRate;
|
|
347
340
|
yield PluginManager_1.PluginManager.swapCreate(createdSwap);
|
|
348
341
|
yield this.storageManager.saveData(createdSwap.data.getHash(), createdSwap.data.getSequence(), createdSwap);
|
|
349
342
|
this.swapLogger.info(createdSwap, "REST: /getAddress: Created swap address: " + receiveAddress + " amount: " + amountBD.toString(10));
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as BN from "bn.js";
|
|
3
|
-
import * as bitcoin from "bitcoinjs-lib";
|
|
4
3
|
import { SwapData } from "@atomiqlabs/base";
|
|
5
4
|
import { FromBtcBaseSwap } from "../FromBtcBaseSwap";
|
|
6
5
|
export declare enum FromBtcSwapState {
|
|
@@ -12,13 +11,11 @@ export declare enum FromBtcSwapState {
|
|
|
12
11
|
}
|
|
13
12
|
export declare class FromBtcSwapAbs<T extends SwapData = SwapData> extends FromBtcBaseSwap<T, FromBtcSwapState> {
|
|
14
13
|
readonly address: string;
|
|
15
|
-
readonly amount: BN;
|
|
16
|
-
authorizationExpiry: BN;
|
|
17
14
|
txId: string;
|
|
18
15
|
constructor(chainIdentifier: string, address: string, amount: BN, swapFee: BN, swapFeeInToken: BN);
|
|
19
16
|
constructor(obj: any);
|
|
20
17
|
serialize(): any;
|
|
21
|
-
getTxoHash(
|
|
18
|
+
getTxoHash(): Buffer;
|
|
22
19
|
isInitiated(): boolean;
|
|
23
20
|
isFailed(): boolean;
|
|
24
21
|
isSuccess(): boolean;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FromBtcSwapAbs = exports.FromBtcSwapState = void 0;
|
|
4
|
-
const BN = require("bn.js");
|
|
5
|
-
const bitcoin = require("bitcoinjs-lib");
|
|
6
|
-
const crypto_1 = require("crypto");
|
|
7
4
|
const SwapHandler_1 = require("../SwapHandler");
|
|
8
|
-
const Utils_1 = require("../../utils/Utils");
|
|
9
5
|
const FromBtcBaseSwap_1 = require("../FromBtcBaseSwap");
|
|
10
6
|
var FromBtcSwapState;
|
|
11
7
|
(function (FromBtcSwapState) {
|
|
@@ -18,16 +14,13 @@ var FromBtcSwapState;
|
|
|
18
14
|
class FromBtcSwapAbs extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
19
15
|
constructor(prOrObj, address, amount, swapFee, swapFeeInToken) {
|
|
20
16
|
if (typeof (prOrObj) === "string") {
|
|
21
|
-
super(prOrObj, swapFee, swapFeeInToken);
|
|
17
|
+
super(prOrObj, amount, swapFee, swapFeeInToken);
|
|
22
18
|
this.state = FromBtcSwapState.CREATED;
|
|
23
19
|
this.address = address;
|
|
24
|
-
this.amount = amount;
|
|
25
20
|
}
|
|
26
21
|
else {
|
|
27
22
|
super(prOrObj);
|
|
28
23
|
this.address = prOrObj.address;
|
|
29
|
-
this.amount = new BN(prOrObj.amount);
|
|
30
|
-
this.authorizationExpiry = (0, Utils_1.deserializeBN)(prOrObj.authorizationExpiry);
|
|
31
24
|
this.txId = prOrObj.txId;
|
|
32
25
|
}
|
|
33
26
|
this.type = SwapHandler_1.SwapHandlerType.FROM_BTC;
|
|
@@ -35,17 +28,11 @@ class FromBtcSwapAbs extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
35
28
|
serialize() {
|
|
36
29
|
const partialSerialized = super.serialize();
|
|
37
30
|
partialSerialized.address = this.address;
|
|
38
|
-
partialSerialized.amount = this.amount.toString(10);
|
|
39
|
-
partialSerialized.authorizationExpiry = (0, Utils_1.serializeBN)(this.authorizationExpiry);
|
|
40
31
|
partialSerialized.txId = this.txId;
|
|
41
32
|
return partialSerialized;
|
|
42
33
|
}
|
|
43
|
-
getTxoHash(
|
|
44
|
-
|
|
45
|
-
return (0, crypto_1.createHash)("sha256").update(Buffer.concat([
|
|
46
|
-
Buffer.from(this.amount.toArray("le", 8)),
|
|
47
|
-
parsedOutputScript
|
|
48
|
-
])).digest();
|
|
34
|
+
getTxoHash() {
|
|
35
|
+
return Buffer.from(this.data.getTxoHash(), "hex");
|
|
49
36
|
}
|
|
50
37
|
isInitiated() {
|
|
51
38
|
return this.state !== FromBtcSwapState.CREATED;
|