@atomiqlabs/lp-lib 12.1.0 → 13.0.0-beta.1
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 +18 -13
- package/dist/index.js +18 -13
- package/dist/plugins/IPlugin.d.ts +35 -12
- package/dist/plugins/PluginManager.d.ts +38 -15
- package/dist/plugins/PluginManager.js +33 -9
- package/dist/prices/BinanceSwapPrice.d.ts +1 -1
- package/dist/prices/BinanceSwapPrice.js +1 -1
- package/dist/prices/CoinGeckoSwapPrice.d.ts +1 -1
- package/dist/prices/CoinGeckoSwapPrice.js +1 -1
- package/dist/{swaps → prices}/ISwapPrice.js +4 -0
- package/dist/prices/OKXSwapPrice.d.ts +1 -1
- package/dist/prices/OKXSwapPrice.js +1 -1
- package/dist/swaps/SwapHandler.d.ts +20 -58
- package/dist/swaps/SwapHandler.js +17 -186
- package/dist/swaps/SwapHandlerSwap.d.ts +8 -23
- package/dist/swaps/SwapHandlerSwap.js +7 -39
- package/dist/swaps/assertions/AmountAssertions.d.ts +28 -0
- package/dist/swaps/assertions/AmountAssertions.js +72 -0
- package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -0
- package/dist/swaps/assertions/FromBtcAmountAssertions.js +162 -0
- package/dist/swaps/assertions/LightningAssertions.d.ts +44 -0
- package/dist/swaps/assertions/LightningAssertions.js +86 -0
- package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -0
- package/dist/swaps/{ToBtcBaseSwapHandler.js → assertions/ToBtcAmountAssertions.js} +20 -94
- package/dist/swaps/escrow/EscrowHandler.d.ts +51 -0
- package/dist/swaps/escrow/EscrowHandler.js +158 -0
- package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -0
- package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -0
- package/dist/swaps/{FromBtcBaseSwap.d.ts → escrow/FromBtcBaseSwap.d.ts} +2 -3
- package/dist/swaps/{FromBtcBaseSwap.js → escrow/FromBtcBaseSwap.js} +4 -7
- package/dist/swaps/{FromBtcBaseSwapHandler.d.ts → escrow/FromBtcBaseSwapHandler.d.ts} +10 -49
- package/dist/swaps/{FromBtcBaseSwapHandler.js → escrow/FromBtcBaseSwapHandler.js} +16 -137
- package/dist/swaps/{ToBtcBaseSwap.d.ts → escrow/ToBtcBaseSwap.d.ts} +2 -2
- package/dist/swaps/{ToBtcBaseSwap.js → escrow/ToBtcBaseSwap.js} +4 -4
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -0
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -0
- package/dist/swaps/{frombtc_abstract → escrow/frombtc_abstract}/FromBtcAbs.d.ts +4 -4
- package/dist/swaps/{frombtc_abstract → escrow/frombtc_abstract}/FromBtcAbs.js +15 -15
- package/dist/swaps/{frombtc_abstract → escrow/frombtc_abstract}/FromBtcSwapAbs.js +1 -1
- package/dist/swaps/{frombtcln_abstract → escrow/frombtcln_abstract}/FromBtcLnAbs.d.ts +9 -7
- package/dist/swaps/{frombtcln_abstract → escrow/frombtcln_abstract}/FromBtcLnAbs.js +22 -19
- package/dist/swaps/{frombtcln_abstract → escrow/frombtcln_abstract}/FromBtcLnSwapAbs.js +3 -3
- package/dist/swaps/{tobtc_abstract → escrow/tobtc_abstract}/ToBtcAbs.d.ts +4 -4
- package/dist/swaps/{tobtc_abstract → escrow/tobtc_abstract}/ToBtcAbs.js +14 -13
- package/dist/swaps/{tobtc_abstract → escrow/tobtc_abstract}/ToBtcSwapAbs.js +3 -3
- package/dist/swaps/{tobtcln_abstract → escrow/tobtcln_abstract}/ToBtcLnAbs.d.ts +6 -26
- package/dist/swaps/{tobtcln_abstract → escrow/tobtcln_abstract}/ToBtcLnAbs.js +20 -57
- package/dist/swaps/{tobtcln_abstract → escrow/tobtcln_abstract}/ToBtcLnSwapAbs.js +3 -3
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +41 -0
- package/dist/swaps/spv_vault_swap/SpvVault.js +111 -0
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +63 -0
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +145 -0
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -0
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +469 -0
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +57 -0
- package/dist/swaps/spv_vault_swap/SpvVaults.js +369 -0
- package/dist/swaps/{frombtc_trusted → trusted/frombtc_trusted}/FromBtcTrusted.d.ts +10 -13
- package/dist/swaps/{frombtc_trusted → trusted/frombtc_trusted}/FromBtcTrusted.js +25 -30
- package/dist/swaps/{frombtc_trusted → trusted/frombtc_trusted}/FromBtcTrustedSwap.d.ts +9 -4
- package/dist/swaps/{frombtc_trusted → trusted/frombtc_trusted}/FromBtcTrustedSwap.js +15 -7
- package/dist/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrusted.d.ts +12 -14
- package/dist/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrusted.js +33 -35
- package/dist/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrustedSwap.d.ts +9 -4
- package/dist/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrustedSwap.js +17 -7
- package/dist/utils/Utils.d.ts +13 -5
- package/dist/utils/Utils.js +23 -1
- package/dist/wallets/IBitcoinWallet.d.ts +6 -0
- package/dist/wallets/ISpvVaultSigner.d.ts +7 -0
- package/dist/wallets/ISpvVaultSigner.js +2 -0
- package/dist/wallets/ISpvVaultWallet.d.ts +42 -0
- package/dist/wallets/ISpvVaultWallet.js +2 -0
- package/package.json +2 -2
- package/src/index.ts +21 -15
- package/src/plugins/IPlugin.ts +27 -19
- package/src/plugins/PluginManager.ts +51 -26
- package/src/prices/BinanceSwapPrice.ts +1 -1
- package/src/prices/CoinGeckoSwapPrice.ts +1 -1
- package/src/{swaps → prices}/ISwapPrice.ts +4 -0
- package/src/prices/OKXSwapPrice.ts +1 -1
- package/src/swaps/SwapHandler.ts +22 -205
- package/src/swaps/SwapHandlerSwap.ts +10 -46
- package/src/swaps/assertions/AmountAssertions.ts +77 -0
- package/src/swaps/assertions/FromBtcAmountAssertions.ts +228 -0
- package/src/swaps/assertions/LightningAssertions.ts +103 -0
- package/src/swaps/{ToBtcBaseSwapHandler.ts → assertions/ToBtcAmountAssertions.ts} +27 -142
- package/src/swaps/escrow/EscrowHandler.ts +179 -0
- package/src/swaps/escrow/EscrowHandlerSwap.ts +87 -0
- package/src/swaps/{FromBtcBaseSwap.ts → escrow/FromBtcBaseSwap.ts} +4 -8
- package/src/swaps/{FromBtcBaseSwapHandler.ts → escrow/FromBtcBaseSwapHandler.ts} +30 -190
- package/src/swaps/{ToBtcBaseSwap.ts → escrow/ToBtcBaseSwap.ts} +4 -5
- package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +130 -0
- package/src/swaps/{frombtc_abstract → escrow/frombtc_abstract}/FromBtcAbs.ts +20 -20
- package/src/swaps/{frombtc_abstract → escrow/frombtc_abstract}/FromBtcSwapAbs.ts +1 -1
- package/src/swaps/{frombtcln_abstract → escrow/frombtcln_abstract}/FromBtcLnAbs.ts +29 -25
- package/src/swaps/{frombtcln_abstract → escrow/frombtcln_abstract}/FromBtcLnSwapAbs.ts +2 -2
- package/src/swaps/{tobtc_abstract → escrow/tobtc_abstract}/ToBtcAbs.ts +19 -18
- package/src/swaps/{tobtc_abstract → escrow/tobtc_abstract}/ToBtcSwapAbs.ts +2 -2
- package/src/swaps/{tobtcln_abstract → escrow/tobtcln_abstract}/ToBtcLnAbs.ts +26 -66
- package/src/swaps/{tobtcln_abstract → escrow/tobtcln_abstract}/ToBtcLnSwapAbs.ts +2 -2
- package/src/swaps/spv_vault_swap/SpvVault.ts +143 -0
- package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +207 -0
- package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +606 -0
- package/src/swaps/spv_vault_swap/SpvVaults.ts +441 -0
- package/src/swaps/{frombtc_trusted → trusted/frombtc_trusted}/FromBtcTrusted.ts +36 -51
- package/src/swaps/{frombtc_trusted → trusted/frombtc_trusted}/FromBtcTrustedSwap.ts +18 -8
- package/src/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrusted.ts +43 -52
- package/src/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrustedSwap.ts +20 -8
- package/src/utils/Utils.ts +27 -1
- package/src/wallets/IBitcoinWallet.ts +4 -0
- package/src/wallets/ISpvVaultSigner.ts +11 -0
- package/dist/swaps/FromBtcLnBaseSwapHandler.d.ts +0 -26
- package/dist/swaps/FromBtcLnBaseSwapHandler.js +0 -46
- package/dist/swaps/ToBtcBaseSwapHandler.d.ts +0 -95
- package/src/swaps/FromBtcLnBaseSwapHandler.ts +0 -63
- /package/dist/{swaps → prices}/ISwapPrice.d.ts +0 -0
- /package/dist/swaps/{frombtc_abstract → escrow/frombtc_abstract}/FromBtcSwapAbs.d.ts +0 -0
- /package/dist/swaps/{frombtcln_abstract → escrow/frombtcln_abstract}/FromBtcLnSwapAbs.d.ts +0 -0
- /package/dist/swaps/{tobtc_abstract → escrow/tobtc_abstract}/ToBtcSwapAbs.d.ts +0 -0
- /package/dist/swaps/{tobtcln_abstract → escrow/tobtcln_abstract}/ToBtcLnSwapAbs.d.ts +0 -0
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FromBtcTrustedSwap = exports.FromBtcTrustedSwapState = void 0;
|
|
4
4
|
const base_1 = require("@atomiqlabs/base");
|
|
5
|
-
const
|
|
6
|
-
const Utils_1 = require("../../utils/Utils");
|
|
5
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
7
6
|
const crypto_1 = require("crypto");
|
|
7
|
+
const SwapHandlerSwap_1 = require("../../SwapHandlerSwap");
|
|
8
|
+
const SwapHandler_1 = require("../../SwapHandler");
|
|
8
9
|
var FromBtcTrustedSwapState;
|
|
9
10
|
(function (FromBtcTrustedSwapState) {
|
|
10
11
|
FromBtcTrustedSwapState[FromBtcTrustedSwapState["DOUBLE_SPENT"] = -4] = "DOUBLE_SPENT";
|
|
@@ -18,12 +19,13 @@ var FromBtcTrustedSwapState;
|
|
|
18
19
|
FromBtcTrustedSwapState[FromBtcTrustedSwapState["CONFIRMED"] = 4] = "CONFIRMED";
|
|
19
20
|
FromBtcTrustedSwapState[FromBtcTrustedSwapState["FINISHED"] = 5] = "FINISHED";
|
|
20
21
|
})(FromBtcTrustedSwapState = exports.FromBtcTrustedSwapState || (exports.FromBtcTrustedSwapState = {}));
|
|
21
|
-
class FromBtcTrustedSwap extends
|
|
22
|
+
class FromBtcTrustedSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
|
|
22
23
|
constructor(objOrChainIdentifier, swapFee, swapFeeInToken, btcAddress, inputSats, dstAddress, outputTokens, createdHeight, expiresAt, recommendedFee, refundAddress, token) {
|
|
23
24
|
if (typeof (objOrChainIdentifier) === "string") {
|
|
24
|
-
super(objOrChainIdentifier,
|
|
25
|
+
super(objOrChainIdentifier, swapFee, swapFeeInToken);
|
|
25
26
|
this.state = FromBtcTrustedSwapState.CREATED;
|
|
26
27
|
this.doubleSpent = false;
|
|
28
|
+
this.amount = inputSats;
|
|
27
29
|
this.sequence = base_1.BigIntBufferUtils.fromBuffer((0, crypto_1.randomBytes)(8));
|
|
28
30
|
this.btcAddress = btcAddress;
|
|
29
31
|
this.dstAddress = dstAddress;
|
|
@@ -37,6 +39,7 @@ class FromBtcTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
37
39
|
else {
|
|
38
40
|
super(objOrChainIdentifier);
|
|
39
41
|
this.btcAddress = objOrChainIdentifier.btcAddress;
|
|
42
|
+
this.amount = (0, Utils_1.deserializeBN)(objOrChainIdentifier.amount);
|
|
40
43
|
this.sequence = (0, Utils_1.deserializeBN)(objOrChainIdentifier.sequence);
|
|
41
44
|
this.dstAddress = objOrChainIdentifier.dstAddress;
|
|
42
45
|
this.outputTokens = (0, Utils_1.deserializeBN)(objOrChainIdentifier.outputTokens);
|
|
@@ -57,10 +60,12 @@ class FromBtcTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
57
60
|
this.refundTxId = objOrChainIdentifier.refundTxId;
|
|
58
61
|
this.token = objOrChainIdentifier.token;
|
|
59
62
|
}
|
|
63
|
+
this.type = SwapHandler_1.SwapHandlerType.FROM_BTC_TRUSTED;
|
|
60
64
|
}
|
|
61
65
|
serialize() {
|
|
62
66
|
const partialSerialized = super.serialize();
|
|
63
67
|
partialSerialized.btcAddress = this.btcAddress;
|
|
68
|
+
partialSerialized.amount = (0, Utils_1.serializeBN)(this.amount);
|
|
64
69
|
partialSerialized.sequence = (0, Utils_1.serializeBN)(this.sequence);
|
|
65
70
|
partialSerialized.dstAddress = this.dstAddress;
|
|
66
71
|
partialSerialized.outputTokens = (0, Utils_1.serializeBN)(this.outputTokens);
|
|
@@ -82,9 +87,6 @@ class FromBtcTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
82
87
|
partialSerialized.token = this.token;
|
|
83
88
|
return partialSerialized;
|
|
84
89
|
}
|
|
85
|
-
getClaimHash() {
|
|
86
|
-
return (0, crypto_1.createHash)("sha256").update(this.btcAddress).digest().toString("hex");
|
|
87
|
-
}
|
|
88
90
|
getSequence() {
|
|
89
91
|
return this.sequence;
|
|
90
92
|
}
|
|
@@ -97,6 +99,9 @@ class FromBtcTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
97
99
|
getTotalInputAmount() {
|
|
98
100
|
return this.adjustedInput || this.amount;
|
|
99
101
|
}
|
|
102
|
+
getSwapFee() {
|
|
103
|
+
return { inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken };
|
|
104
|
+
}
|
|
100
105
|
isFailed() {
|
|
101
106
|
return this.state === FromBtcTrustedSwapState.EXPIRED || this.state === FromBtcTrustedSwapState.REFUNDED || this.state === FromBtcTrustedSwapState.DOUBLE_SPENT;
|
|
102
107
|
}
|
|
@@ -106,5 +111,8 @@ class FromBtcTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
106
111
|
isSuccess() {
|
|
107
112
|
return this.state === FromBtcTrustedSwapState.CONFIRMED;
|
|
108
113
|
}
|
|
114
|
+
getIdentifierHash() {
|
|
115
|
+
return (0, crypto_1.createHash)("sha256").update(this.btcAddress).digest().toString("hex");
|
|
116
|
+
}
|
|
109
117
|
}
|
|
110
118
|
exports.FromBtcTrustedSwap = FromBtcTrustedSwap;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Express } from "express";
|
|
2
|
-
import { ClaimEvent, InitializeEvent, RefundEvent, SwapData } from "@atomiqlabs/base";
|
|
3
2
|
import { FromBtcLnTrustedSwap, FromBtcLnTrustedSwapState } from "./FromBtcLnTrustedSwap";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
export type SwapForGasServerConfig =
|
|
3
|
+
import { ISwapPrice } from "../../../prices/ISwapPrice";
|
|
4
|
+
import { MultichainData, SwapBaseConfig, SwapHandler, SwapHandlerType } from "../../SwapHandler";
|
|
5
|
+
import { IIntermediaryStorage } from "../../../storage/IIntermediaryStorage";
|
|
6
|
+
import { ILightningWallet } from "../../../wallets/ILightningWallet";
|
|
7
|
+
import { FromBtcAmountAssertions } from "../../assertions/FromBtcAmountAssertions";
|
|
8
|
+
import { LightningAssertions } from "../../assertions/LightningAssertions";
|
|
9
|
+
export type SwapForGasServerConfig = SwapBaseConfig & {
|
|
11
10
|
minCltv: bigint;
|
|
12
11
|
invoiceTimeoutSeconds?: number;
|
|
13
12
|
};
|
|
@@ -20,12 +19,14 @@ export type FromBtcLnTrustedRequestType = {
|
|
|
20
19
|
/**
|
|
21
20
|
* Swap handler handling from BTCLN swaps using submarine swaps
|
|
22
21
|
*/
|
|
23
|
-
export declare class FromBtcLnTrusted extends
|
|
24
|
-
readonly type
|
|
25
|
-
readonly swapType: any;
|
|
22
|
+
export declare class FromBtcLnTrusted extends SwapHandler<FromBtcLnTrustedSwap, FromBtcLnTrustedSwapState> {
|
|
23
|
+
readonly type = SwapHandlerType.FROM_BTCLN_TRUSTED;
|
|
26
24
|
activeSubscriptions: Map<string, AbortController>;
|
|
27
25
|
processedTxIds: Map<string, string>;
|
|
28
26
|
readonly config: SwapForGasServerConfig;
|
|
27
|
+
readonly lightning: ILightningWallet;
|
|
28
|
+
readonly LightningAssertions: LightningAssertions;
|
|
29
|
+
readonly AmountAssertions: FromBtcAmountAssertions;
|
|
29
30
|
constructor(storageDirectory: IIntermediaryStorage<FromBtcLnTrustedSwap>, path: string, chains: MultichainData, lightning: ILightningWallet, swapPricing: ISwapPrice, config: SwapForGasServerConfig);
|
|
30
31
|
/**
|
|
31
32
|
* Unsubscribe from the pending lightning network invoice
|
|
@@ -72,7 +73,4 @@ export declare class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler<FromBtcLn
|
|
|
72
73
|
startRestServer(restServer: Express): void;
|
|
73
74
|
init(): Promise<void>;
|
|
74
75
|
getInfoData(): any;
|
|
75
|
-
protected processClaimEvent(chainIdentifier: string, swap: FromBtcLnTrustedSwap, event: ClaimEvent<SwapData>): Promise<void>;
|
|
76
|
-
protected processInitializeEvent(chainIdentifier: string, swap: FromBtcLnTrustedSwap, event: InitializeEvent<SwapData>): Promise<void>;
|
|
77
|
-
protected processRefundEvent(chainIdentifier: string, swap: FromBtcLnTrustedSwap, event: RefundEvent<SwapData>): Promise<void>;
|
|
78
76
|
}
|
|
@@ -3,21 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FromBtcLnTrusted = void 0;
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
5
|
const FromBtcLnTrustedSwap_1 = require("./FromBtcLnTrustedSwap");
|
|
6
|
-
const SwapHandler_1 = require("
|
|
7
|
-
const Utils_1 = require("
|
|
8
|
-
const SchemaVerifier_1 = require("
|
|
9
|
-
const PluginManager_1 = require("
|
|
10
|
-
const
|
|
6
|
+
const SwapHandler_1 = require("../../SwapHandler");
|
|
7
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
8
|
+
const SchemaVerifier_1 = require("../../../utils/paramcoders/SchemaVerifier");
|
|
9
|
+
const PluginManager_1 = require("../../../plugins/PluginManager");
|
|
10
|
+
const FromBtcAmountAssertions_1 = require("../../assertions/FromBtcAmountAssertions");
|
|
11
|
+
const LightningAssertions_1 = require("../../assertions/LightningAssertions");
|
|
11
12
|
/**
|
|
12
13
|
* Swap handler handling from BTCLN swaps using submarine swaps
|
|
13
14
|
*/
|
|
14
|
-
class FromBtcLnTrusted extends
|
|
15
|
+
class FromBtcLnTrusted extends SwapHandler_1.SwapHandler {
|
|
15
16
|
constructor(storageDirectory, path, chains, lightning, swapPricing, config) {
|
|
16
|
-
super(storageDirectory, path, chains,
|
|
17
|
+
super(storageDirectory, path, chains, swapPricing);
|
|
17
18
|
this.type = SwapHandler_1.SwapHandlerType.FROM_BTCLN_TRUSTED;
|
|
18
|
-
this.swapType = null;
|
|
19
19
|
this.activeSubscriptions = new Map();
|
|
20
20
|
this.processedTxIds = new Map();
|
|
21
|
+
this.lightning = lightning;
|
|
22
|
+
this.LightningAssertions = new LightningAssertions_1.LightningAssertions(this.logger, lightning);
|
|
23
|
+
this.AmountAssertions = new FromBtcAmountAssertions_1.FromBtcAmountAssertions(config, swapPricing);
|
|
21
24
|
this.config = config;
|
|
22
25
|
this.config.invoiceTimeoutSeconds = this.config.invoiceTimeoutSeconds || 90;
|
|
23
26
|
}
|
|
@@ -145,7 +148,7 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
145
148
|
* @param invoice
|
|
146
149
|
*/
|
|
147
150
|
async htlcReceived(invoiceData, invoice) {
|
|
148
|
-
const {
|
|
151
|
+
const { signer, chainInterface } = this.getChain(invoiceData.chainIdentifier);
|
|
149
152
|
//Important to prevent race condition and issuing 2 signed init messages at the same time
|
|
150
153
|
if (invoiceData.state === FromBtcLnTrustedSwap_1.FromBtcLnTrustedSwapState.CREATED) {
|
|
151
154
|
if (invoiceData.metadata != null)
|
|
@@ -154,7 +157,7 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
154
157
|
await this.storageManager.saveData(invoice.id, null, invoiceData);
|
|
155
158
|
}
|
|
156
159
|
if (invoiceData.state === FromBtcLnTrustedSwap_1.FromBtcLnTrustedSwapState.RECEIVED) {
|
|
157
|
-
const balance =
|
|
160
|
+
const balance = chainInterface.getBalance(signer.getAddress(), invoiceData.token);
|
|
158
161
|
try {
|
|
159
162
|
await this.checkBalance(invoiceData.output, balance, null);
|
|
160
163
|
if (invoiceData.metadata != null)
|
|
@@ -166,11 +169,11 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
166
169
|
}
|
|
167
170
|
if (invoiceData.state !== FromBtcLnTrustedSwap_1.FromBtcLnTrustedSwapState.RECEIVED)
|
|
168
171
|
return;
|
|
169
|
-
const txns = await
|
|
172
|
+
const txns = await chainInterface.txsTransfer(signer.getAddress(), invoiceData.token, invoiceData.output, invoiceData.dstAddress);
|
|
170
173
|
let unlock = invoiceData.lock(Infinity);
|
|
171
174
|
if (unlock == null)
|
|
172
175
|
return;
|
|
173
|
-
const result = await
|
|
176
|
+
const result = await chainInterface.sendAndConfirm(signer, txns, true, null, false, async (txId, rawTx) => {
|
|
174
177
|
invoiceData.txIds = { init: txId };
|
|
175
178
|
invoiceData.scRawTx = rawTx;
|
|
176
179
|
if (invoiceData.state === FromBtcLnTrustedSwap_1.FromBtcLnTrustedSwapState.RECEIVED) {
|
|
@@ -202,7 +205,7 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
202
205
|
if (invoiceData.state === FromBtcLnTrustedSwap_1.FromBtcLnTrustedSwapState.SENT) {
|
|
203
206
|
if (invoiceData.isLocked())
|
|
204
207
|
return;
|
|
205
|
-
const txStatus = await
|
|
208
|
+
const txStatus = await chainInterface.getTxStatus(invoiceData.scRawTx);
|
|
206
209
|
if (txStatus === "not_found") {
|
|
207
210
|
//Retry
|
|
208
211
|
invoiceData.txIds = { init: null };
|
|
@@ -269,8 +272,8 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
269
272
|
chainIdentifier = this.chains.default;
|
|
270
273
|
address = invoice.description;
|
|
271
274
|
}
|
|
272
|
-
const {
|
|
273
|
-
if (!
|
|
275
|
+
const { chainInterface } = this.getChain(chainIdentifier);
|
|
276
|
+
if (!chainInterface.isValidAddress(address))
|
|
274
277
|
throw {
|
|
275
278
|
_httpStatus: 200,
|
|
276
279
|
code: 10001,
|
|
@@ -309,17 +312,17 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
309
312
|
var _a;
|
|
310
313
|
const metadata = { request: {}, times: {} };
|
|
311
314
|
const chainIdentifier = req.query.chain ?? this.chains.default;
|
|
312
|
-
const {
|
|
315
|
+
const { signer, chainInterface } = this.getChain(chainIdentifier);
|
|
313
316
|
metadata.times.requestReceived = Date.now();
|
|
314
317
|
/**
|
|
315
318
|
* address: string solana address of the recipient
|
|
316
319
|
* amount: string amount (in lamports/smart chain base units) of the invoice
|
|
317
320
|
*/
|
|
318
|
-
(_a = req.query).token ?? (_a.token =
|
|
321
|
+
(_a = req.query).token ?? (_a.token = chainInterface.getNativeCurrencyAddress());
|
|
319
322
|
const parsedBody = (0, SchemaVerifier_1.verifySchema)(req.query, {
|
|
320
323
|
address: (val) => val != null &&
|
|
321
324
|
typeof (val) === "string" &&
|
|
322
|
-
|
|
325
|
+
chainInterface.isValidAddress(val) ? val : null,
|
|
323
326
|
token: (val) => val != null &&
|
|
324
327
|
typeof (val) === "string" &&
|
|
325
328
|
this.isTokenSupported(chainIdentifier, val) ? val : null,
|
|
@@ -333,7 +336,7 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
333
336
|
msg: "Invalid request body"
|
|
334
337
|
};
|
|
335
338
|
metadata.request = parsedBody;
|
|
336
|
-
const requestedAmount = { input: parsedBody.exactIn, amount: parsedBody.amount };
|
|
339
|
+
const requestedAmount = { input: parsedBody.exactIn, amount: parsedBody.amount, token: parsedBody.token };
|
|
337
340
|
const request = {
|
|
338
341
|
chainIdentifier,
|
|
339
342
|
raw: req,
|
|
@@ -342,25 +345,29 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
342
345
|
};
|
|
343
346
|
const useToken = parsedBody.token;
|
|
344
347
|
//Check request params
|
|
345
|
-
const fees = await this.
|
|
348
|
+
const fees = await this.AmountAssertions.preCheckFromBtcAmounts(this.type, request, requestedAmount);
|
|
346
349
|
metadata.times.requestChecked = Date.now();
|
|
347
350
|
//Create abortController for parallel prefetches
|
|
348
351
|
const responseStream = res.responseStream;
|
|
349
|
-
const abortController =
|
|
352
|
+
const abortController = (0, Utils_1.getAbortController)(responseStream);
|
|
350
353
|
//Pre-fetch data
|
|
351
|
-
const
|
|
352
|
-
|
|
354
|
+
const pricePrefetchPromise = this.swapPricing.preFetchPrice(useToken, chainIdentifier).catch(e => {
|
|
355
|
+
this.logger.error("pricePrefetchPromise(): pricePrefetch error: ", e);
|
|
356
|
+
abortController.abort(e);
|
|
357
|
+
return null;
|
|
358
|
+
});
|
|
359
|
+
const balancePrefetch = chainInterface.getBalance(signer.getAddress(), useToken).catch(e => {
|
|
353
360
|
this.logger.error("getBalancePrefetch(): balancePrefetch error: ", e);
|
|
354
361
|
abortController.abort(e);
|
|
355
362
|
return null;
|
|
356
363
|
});
|
|
357
|
-
const channelsPrefetch = this.getChannelsPrefetch(abortController);
|
|
364
|
+
const channelsPrefetch = this.LightningAssertions.getChannelsPrefetch(abortController);
|
|
358
365
|
//Check valid amount specified (min/max)
|
|
359
|
-
const { amountBD, swapFee, swapFeeInToken, totalInToken } = await this.checkFromBtcAmount(request, requestedAmount,
|
|
366
|
+
const { amountBD, swapFee, swapFeeInToken, totalInToken } = await this.AmountAssertions.checkFromBtcAmount(this.type, request, { ...requestedAmount, pricePrefetch: pricePrefetchPromise }, fees, abortController.signal);
|
|
360
367
|
metadata.times.priceCalculated = Date.now();
|
|
361
368
|
//Check if we have enough funds to honor the request
|
|
362
369
|
await this.checkBalance(totalInToken, balancePrefetch, abortController.signal);
|
|
363
|
-
await this.checkInboundLiquidity(amountBD, channelsPrefetch, abortController.signal);
|
|
370
|
+
await this.LightningAssertions.checkInboundLiquidity(amountBD, channelsPrefetch, abortController.signal);
|
|
364
371
|
metadata.times.balanceChecked = Date.now();
|
|
365
372
|
const secret = (0, crypto_1.randomBytes)(32);
|
|
366
373
|
const hash = (0, crypto_1.createHash)("sha256").update(secret).digest();
|
|
@@ -482,14 +489,5 @@ class FromBtcLnTrusted extends FromBtcLnBaseSwapHandler_1.FromBtcLnBaseSwapHandl
|
|
|
482
489
|
minCltv: Number(this.config.minCltv)
|
|
483
490
|
};
|
|
484
491
|
}
|
|
485
|
-
processClaimEvent(chainIdentifier, swap, event) {
|
|
486
|
-
return Promise.resolve();
|
|
487
|
-
}
|
|
488
|
-
processInitializeEvent(chainIdentifier, swap, event) {
|
|
489
|
-
return Promise.resolve();
|
|
490
|
-
}
|
|
491
|
-
processRefundEvent(chainIdentifier, swap, event) {
|
|
492
|
-
return Promise.resolve();
|
|
493
|
-
}
|
|
494
492
|
}
|
|
495
493
|
exports.FromBtcLnTrusted = FromBtcLnTrusted;
|
package/dist/swaps/{frombtcln_trusted → trusted/frombtcln_trusted}/FromBtcLnTrustedSwap.d.ts
RENAMED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FromBtcBaseSwap } from "../FromBtcBaseSwap";
|
|
1
|
+
import { SwapHandlerSwap } from "../../SwapHandlerSwap";
|
|
3
2
|
export declare enum FromBtcLnTrustedSwapState {
|
|
4
3
|
REFUNDED = -2,
|
|
5
4
|
CANCELED = -1,
|
|
@@ -9,8 +8,9 @@ export declare enum FromBtcLnTrustedSwapState {
|
|
|
9
8
|
CONFIRMED = 3,
|
|
10
9
|
SETTLED = 4
|
|
11
10
|
}
|
|
12
|
-
export declare class FromBtcLnTrustedSwap
|
|
11
|
+
export declare class FromBtcLnTrustedSwap extends SwapHandlerSwap<FromBtcLnTrustedSwapState> {
|
|
13
12
|
readonly pr: string;
|
|
13
|
+
amount: bigint;
|
|
14
14
|
readonly output: bigint;
|
|
15
15
|
readonly dstAddress: string;
|
|
16
16
|
readonly secret: string;
|
|
@@ -20,10 +20,15 @@ export declare class FromBtcLnTrustedSwap<T extends SwapData = SwapData> extends
|
|
|
20
20
|
constructor(obj: any);
|
|
21
21
|
getToken(): string;
|
|
22
22
|
getOutputAmount(): bigint;
|
|
23
|
-
|
|
23
|
+
getSwapFee(): {
|
|
24
|
+
inInputToken: bigint;
|
|
25
|
+
inOutputToken: bigint;
|
|
26
|
+
};
|
|
27
|
+
getTotalInputAmount(): bigint;
|
|
24
28
|
getSequence(): bigint;
|
|
25
29
|
serialize(): any;
|
|
26
30
|
isFailed(): boolean;
|
|
27
31
|
isInitiated(): boolean;
|
|
28
32
|
isSuccess(): boolean;
|
|
33
|
+
getIdentifierHash(): string;
|
|
29
34
|
}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FromBtcLnTrustedSwap = exports.FromBtcLnTrustedSwapState = void 0;
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const Utils_1 = require("../../../utils/Utils");
|
|
6
|
+
const SwapHandlerSwap_1 = require("../../SwapHandlerSwap");
|
|
7
|
+
const SwapHandler_1 = require("../../SwapHandler");
|
|
7
8
|
var FromBtcLnTrustedSwapState;
|
|
8
9
|
(function (FromBtcLnTrustedSwapState) {
|
|
9
10
|
FromBtcLnTrustedSwapState[FromBtcLnTrustedSwapState["REFUNDED"] = -2] = "REFUNDED";
|
|
@@ -14,12 +15,13 @@ var FromBtcLnTrustedSwapState;
|
|
|
14
15
|
FromBtcLnTrustedSwapState[FromBtcLnTrustedSwapState["CONFIRMED"] = 3] = "CONFIRMED";
|
|
15
16
|
FromBtcLnTrustedSwapState[FromBtcLnTrustedSwapState["SETTLED"] = 4] = "SETTLED";
|
|
16
17
|
})(FromBtcLnTrustedSwapState = exports.FromBtcLnTrustedSwapState || (exports.FromBtcLnTrustedSwapState = {}));
|
|
17
|
-
class FromBtcLnTrustedSwap extends
|
|
18
|
+
class FromBtcLnTrustedSwap extends SwapHandlerSwap_1.SwapHandlerSwap {
|
|
18
19
|
constructor(chainIdOrObj, pr, inputMtokens, swapFee, swapFeeInToken, output, secret, dstAddress, token) {
|
|
19
20
|
if (typeof (chainIdOrObj) === "string") {
|
|
20
|
-
super(chainIdOrObj,
|
|
21
|
+
super(chainIdOrObj, swapFee, swapFeeInToken);
|
|
21
22
|
this.state = FromBtcLnTrustedSwapState.CREATED;
|
|
22
23
|
this.pr = pr;
|
|
24
|
+
this.amount = (inputMtokens + 999n) / 1000n;
|
|
23
25
|
this.output = output;
|
|
24
26
|
this.secret = secret;
|
|
25
27
|
this.dstAddress = dstAddress;
|
|
@@ -28,13 +30,14 @@ class FromBtcLnTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
28
30
|
else {
|
|
29
31
|
super(chainIdOrObj);
|
|
30
32
|
this.pr = chainIdOrObj.pr;
|
|
33
|
+
this.amount = (0, Utils_1.deserializeBN)(chainIdOrObj.amount);
|
|
31
34
|
this.output = (0, Utils_1.deserializeBN)(chainIdOrObj.output);
|
|
32
35
|
this.secret = chainIdOrObj.secret;
|
|
33
36
|
this.dstAddress = chainIdOrObj.dstAddress;
|
|
34
37
|
this.token = chainIdOrObj.token;
|
|
35
38
|
this.scRawTx = chainIdOrObj.scRawTx;
|
|
36
39
|
}
|
|
37
|
-
this.type =
|
|
40
|
+
this.type = SwapHandler_1.SwapHandlerType.FROM_BTCLN_TRUSTED;
|
|
38
41
|
}
|
|
39
42
|
getToken() {
|
|
40
43
|
return this.token;
|
|
@@ -42,8 +45,11 @@ class FromBtcLnTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
42
45
|
getOutputAmount() {
|
|
43
46
|
return this.output;
|
|
44
47
|
}
|
|
45
|
-
|
|
46
|
-
return
|
|
48
|
+
getSwapFee() {
|
|
49
|
+
return { inInputToken: this.swapFee, inOutputToken: this.swapFeeInToken };
|
|
50
|
+
}
|
|
51
|
+
getTotalInputAmount() {
|
|
52
|
+
return this.amount;
|
|
47
53
|
}
|
|
48
54
|
getSequence() {
|
|
49
55
|
return 0n;
|
|
@@ -51,6 +57,7 @@ class FromBtcLnTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
51
57
|
serialize() {
|
|
52
58
|
const partialSerialized = super.serialize();
|
|
53
59
|
partialSerialized.pr = this.pr;
|
|
60
|
+
partialSerialized.amount = (0, Utils_1.serializeBN)(this.amount);
|
|
54
61
|
partialSerialized.output = (0, Utils_1.serializeBN)(this.output);
|
|
55
62
|
partialSerialized.secret = this.secret;
|
|
56
63
|
partialSerialized.dstAddress = this.dstAddress;
|
|
@@ -67,5 +74,8 @@ class FromBtcLnTrustedSwap extends FromBtcBaseSwap_1.FromBtcBaseSwap {
|
|
|
67
74
|
isSuccess() {
|
|
68
75
|
return this.state === FromBtcLnTrustedSwapState.SETTLED;
|
|
69
76
|
}
|
|
77
|
+
getIdentifierHash() {
|
|
78
|
+
return (0, crypto_1.createHash)("sha256").update(Buffer.from(this.secret, "hex")).digest().toString("hex");
|
|
79
|
+
}
|
|
70
80
|
}
|
|
71
81
|
exports.FromBtcLnTrustedSwap = FromBtcLnTrustedSwap;
|
package/dist/utils/Utils.d.ts
CHANGED
|
@@ -10,12 +10,20 @@ export declare function isDefinedRuntimeError(obj: any): obj is DefinedRuntimeEr
|
|
|
10
10
|
export declare function expressHandlerWrapper(func: (req: Request, res: Response) => Promise<void>): ((req: Request, res: Response & {
|
|
11
11
|
responseStream: ServerParamEncoder;
|
|
12
12
|
}) => void);
|
|
13
|
-
export
|
|
14
|
-
debug: (msg:
|
|
15
|
-
info: (msg:
|
|
16
|
-
warn: (msg:
|
|
17
|
-
error: (msg:
|
|
13
|
+
export type LoggerType = {
|
|
14
|
+
debug: (msg: string, ...args: any[]) => void;
|
|
15
|
+
info: (msg: string, ...args: any[]) => void;
|
|
16
|
+
warn: (msg: string, ...args: any[]) => void;
|
|
17
|
+
error: (msg: string, ...args: any[]) => void;
|
|
18
18
|
};
|
|
19
|
+
export declare function getLogger(prefix: string): LoggerType;
|
|
19
20
|
export declare const HEX_REGEX: RegExp;
|
|
20
21
|
export declare function serializeBN(bn: bigint | null): string | null;
|
|
21
22
|
export declare function deserializeBN(str: string | null): bigint | null;
|
|
23
|
+
export declare function bigIntSorter(a: bigint, b: bigint): -1 | 0 | 1;
|
|
24
|
+
/**
|
|
25
|
+
* Creates an abort controller that extends the responseStream's abort signal
|
|
26
|
+
*
|
|
27
|
+
* @param responseStream
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAbortController(responseStream: ServerParamEncoder): AbortController;
|
package/dist/utils/Utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deserializeBN = exports.serializeBN = exports.HEX_REGEX = exports.getLogger = exports.expressHandlerWrapper = exports.isDefinedRuntimeError = void 0;
|
|
3
|
+
exports.getAbortController = exports.bigIntSorter = exports.deserializeBN = exports.serializeBN = exports.HEX_REGEX = exports.getLogger = exports.expressHandlerWrapper = exports.isDefinedRuntimeError = void 0;
|
|
4
4
|
function isDefinedRuntimeError(obj) {
|
|
5
5
|
if (obj.code != null && typeof (obj.code) === "number") {
|
|
6
6
|
if (obj.msg != null && typeof (obj.msg) !== "string")
|
|
@@ -64,3 +64,25 @@ function deserializeBN(str) {
|
|
|
64
64
|
return str == null ? null : BigInt(str);
|
|
65
65
|
}
|
|
66
66
|
exports.deserializeBN = deserializeBN;
|
|
67
|
+
function bigIntSorter(a, b) {
|
|
68
|
+
if (a < b)
|
|
69
|
+
return -1;
|
|
70
|
+
if (a > b)
|
|
71
|
+
return 1;
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
exports.bigIntSorter = bigIntSorter;
|
|
75
|
+
/**
|
|
76
|
+
* Creates an abort controller that extends the responseStream's abort signal
|
|
77
|
+
*
|
|
78
|
+
* @param responseStream
|
|
79
|
+
*/
|
|
80
|
+
function getAbortController(responseStream) {
|
|
81
|
+
const abortController = new AbortController();
|
|
82
|
+
if (responseStream == null || responseStream.getAbortSignal == null)
|
|
83
|
+
return abortController;
|
|
84
|
+
const responseStreamAbortController = responseStream.getAbortSignal();
|
|
85
|
+
responseStreamAbortController.addEventListener("abort", () => abortController.abort(responseStreamAbortController.reason));
|
|
86
|
+
return abortController;
|
|
87
|
+
}
|
|
88
|
+
exports.getAbortController = getAbortController;
|
|
@@ -47,15 +47,21 @@ export interface IBitcoinWallet {
|
|
|
47
47
|
getWalletTransactions(startHeight?: number): Promise<BtcTx[]>;
|
|
48
48
|
getWalletTransaction(txId: string): Promise<BtcTx | null>;
|
|
49
49
|
subscribeToWalletTransactions(callback: (tx: BtcTx) => void, abortSignal?: AbortSignal): void;
|
|
50
|
+
fundPsbt(psbt: Transaction, feeRate?: number): Promise<Transaction>;
|
|
50
51
|
signPsbt(psbt: Transaction): Promise<SignPsbtResponse>;
|
|
51
52
|
sendRawTransaction(tx: string): Promise<void>;
|
|
52
53
|
getSignedTransaction(destination: string, amount: number, feeRate?: number, nonce?: bigint, maxAllowedFeeRate?: number): Promise<SignPsbtResponse>;
|
|
54
|
+
getSignedMultiTransaction(destinations: {
|
|
55
|
+
address: string;
|
|
56
|
+
amount: number;
|
|
57
|
+
}[], feeRate?: number, nonce?: bigint, maxAllowedFeeRate?: number): Promise<SignPsbtResponse>;
|
|
53
58
|
estimateFee(destination: string, amount: number, feeRate?: number, feeRateMultiplier?: number): Promise<{
|
|
54
59
|
satsPerVbyte: number;
|
|
55
60
|
networkFee: number;
|
|
56
61
|
}>;
|
|
57
62
|
drainAll(destination: string | Buffer, inputs: Omit<BitcoinUtxo, "address">[], feeRate?: number): Promise<SignPsbtResponse>;
|
|
58
63
|
burnAll(inputs: Omit<BitcoinUtxo, "address">[]): Promise<SignPsbtResponse>;
|
|
64
|
+
parsePsbt(psbt: Transaction): Promise<BtcTx>;
|
|
59
65
|
getBlockheight(): Promise<number>;
|
|
60
66
|
getFeeRate(): Promise<number>;
|
|
61
67
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Transaction } from "@scure/btc-signer";
|
|
2
|
+
export interface ISpvVaultSigner {
|
|
3
|
+
init(): Promise<void>;
|
|
4
|
+
getAddressType(): "p2wpkh" | "p2tr";
|
|
5
|
+
getAddress(chainId: string, vaultId: bigint): Promise<string>;
|
|
6
|
+
signPsbt(chainId: string, vaultId: bigint, psbt: Transaction, inputs: number[]): Promise<Transaction>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Command } from "@atomiqlabs/server-base";
|
|
3
|
+
import { Transaction } from "@scure/btc-signer";
|
|
4
|
+
export type BitcoinUtxo = {
|
|
5
|
+
address: string;
|
|
6
|
+
type: "p2wpkh" | "p2sh-p2wpkh" | "p2tr";
|
|
7
|
+
confirmations: number;
|
|
8
|
+
outputScript: Buffer;
|
|
9
|
+
value: number;
|
|
10
|
+
txId: string;
|
|
11
|
+
vout: number;
|
|
12
|
+
};
|
|
13
|
+
export type SignPsbtResponse = {
|
|
14
|
+
psbt: Transaction;
|
|
15
|
+
tx: Transaction;
|
|
16
|
+
raw: string;
|
|
17
|
+
txId: string;
|
|
18
|
+
networkFee: number;
|
|
19
|
+
};
|
|
20
|
+
export interface ISpvVaultSigner {
|
|
21
|
+
init(): Promise<void>;
|
|
22
|
+
isReady(): boolean;
|
|
23
|
+
getStatus(): string;
|
|
24
|
+
getStatusInfo(): Promise<Record<string, string>>;
|
|
25
|
+
getCommands(): Command<any>[];
|
|
26
|
+
getAddressType(): "p2wpkh" | "p2sh-p2wpkh" | "p2tr";
|
|
27
|
+
/**
|
|
28
|
+
* Returns an unused address suitable for receiving
|
|
29
|
+
*/
|
|
30
|
+
getAddress(vaultId: bigint): Promise<string>;
|
|
31
|
+
signPsbt(vaultId: bigint, psbt: Transaction): Promise<SignPsbtResponse>;
|
|
32
|
+
sendRawTransaction(tx: string): Promise<void>;
|
|
33
|
+
getSignedTransaction(destination: string, amount: number, feeRate?: number, nonce?: bigint, maxAllowedFeeRate?: number): Promise<SignPsbtResponse>;
|
|
34
|
+
estimateFee(destination: string, amount: number, feeRate?: number, feeRateMultiplier?: number): Promise<{
|
|
35
|
+
satsPerVbyte: number;
|
|
36
|
+
networkFee: number;
|
|
37
|
+
}>;
|
|
38
|
+
drainAll(destination: string | Buffer, inputs: Omit<BitcoinUtxo, "address">[], feeRate?: number): Promise<SignPsbtResponse>;
|
|
39
|
+
burnAll(inputs: Omit<BitcoinUtxo, "address">[]): Promise<SignPsbtResponse>;
|
|
40
|
+
getBlockheight(): Promise<number>;
|
|
41
|
+
getFeeRate(): Promise<number>;
|
|
42
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomiqlabs/lp-lib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0-beta.1",
|
|
4
4
|
"description": "Main functionality implementation for atomiq LP node",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types:": "./dist/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"author": "adambor",
|
|
23
23
|
"license": "ISC",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@atomiqlabs/base": "^
|
|
25
|
+
"@atomiqlabs/base": "^9.0.0-beta.1",
|
|
26
26
|
"@atomiqlabs/server-base": "2.0.0",
|
|
27
27
|
"@scure/btc-signer": "1.6.0",
|
|
28
28
|
"express": "4.21.1",
|
package/src/index.ts
CHANGED
|
@@ -9,21 +9,21 @@ export * from "./storage/IIntermediaryStorage";
|
|
|
9
9
|
export * from "./storagemanager/StorageManager";
|
|
10
10
|
export * from "./storagemanager/IntermediaryStorageManager";
|
|
11
11
|
|
|
12
|
-
export * from "./swaps/frombtc_abstract/FromBtcAbs";
|
|
13
|
-
export * from "./swaps/frombtc_abstract/FromBtcSwapAbs";
|
|
14
|
-
export * from "./swaps/frombtcln_abstract/FromBtcLnAbs";
|
|
15
|
-
export * from "./swaps/frombtcln_abstract/FromBtcLnSwapAbs";
|
|
16
|
-
export * from "./swaps/tobtc_abstract/ToBtcAbs";
|
|
17
|
-
export * from "./swaps/tobtc_abstract/ToBtcSwapAbs";
|
|
18
|
-
export * from "./swaps/tobtcln_abstract/ToBtcLnAbs";
|
|
19
|
-
export * from "./swaps/tobtcln_abstract/ToBtcLnSwapAbs";
|
|
20
|
-
|
|
21
|
-
export * from "./swaps/frombtc_trusted/FromBtcTrusted";
|
|
22
|
-
export * from "./swaps/frombtc_trusted/FromBtcTrustedSwap";
|
|
23
|
-
export * from "./swaps/frombtcln_trusted/FromBtcLnTrusted";
|
|
24
|
-
export * from "./swaps/frombtcln_trusted/FromBtcLnTrustedSwap";
|
|
25
|
-
|
|
26
|
-
export * from "./
|
|
12
|
+
export * from "./swaps/escrow/frombtc_abstract/FromBtcAbs";
|
|
13
|
+
export * from "./swaps/escrow/frombtc_abstract/FromBtcSwapAbs";
|
|
14
|
+
export * from "./swaps/escrow/frombtcln_abstract/FromBtcLnAbs";
|
|
15
|
+
export * from "./swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs";
|
|
16
|
+
export * from "./swaps/escrow/tobtc_abstract/ToBtcAbs";
|
|
17
|
+
export * from "./swaps/escrow/tobtc_abstract/ToBtcSwapAbs";
|
|
18
|
+
export * from "./swaps/escrow/tobtcln_abstract/ToBtcLnAbs";
|
|
19
|
+
export * from "./swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs";
|
|
20
|
+
|
|
21
|
+
export * from "./swaps/trusted/frombtc_trusted/FromBtcTrusted";
|
|
22
|
+
export * from "./swaps/trusted/frombtc_trusted/FromBtcTrustedSwap";
|
|
23
|
+
export * from "./swaps/trusted/frombtcln_trusted/FromBtcLnTrusted";
|
|
24
|
+
export * from "./swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap";
|
|
25
|
+
|
|
26
|
+
export * from "./prices/ISwapPrice";
|
|
27
27
|
export * from "./swaps/SwapHandler";
|
|
28
28
|
export * from "./swaps/SwapHandlerSwap";
|
|
29
29
|
|
|
@@ -43,3 +43,9 @@ export * from "./utils/paramcoders/server/ServerParamEncoder";
|
|
|
43
43
|
|
|
44
44
|
export * from "./wallets/IBitcoinWallet";
|
|
45
45
|
export * from "./wallets/ILightningWallet";
|
|
46
|
+
export * from "./wallets/ISpvVaultSigner";
|
|
47
|
+
|
|
48
|
+
export * from "./swaps/spv_vault_swap/SpvVaults";
|
|
49
|
+
export * from "./swaps/spv_vault_swap/SpvVault";
|
|
50
|
+
export * from "./swaps/spv_vault_swap/SpvVaultSwap";
|
|
51
|
+
export * from "./swaps/spv_vault_swap/SpvVaultSwapHandler";
|