@bitgo-beta/abstract-lightning 1.0.1-beta.152 → 1.0.1-beta.1521
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/src/abstractLightningCoin.d.ts +11 -6
- package/dist/src/abstractLightningCoin.d.ts.map +1 -1
- package/dist/src/abstractLightningCoin.js +79 -8
- package/dist/src/codecs/api/backup.d.ts +15 -0
- package/dist/src/codecs/api/backup.d.ts.map +1 -0
- package/dist/src/codecs/api/backup.js +47 -0
- package/dist/src/codecs/api/balance.d.ts +156 -0
- package/dist/src/codecs/api/balance.d.ts.map +1 -0
- package/dist/src/codecs/api/balance.js +107 -0
- package/dist/src/codecs/api/index.d.ts +8 -0
- package/dist/src/codecs/api/index.d.ts.map +1 -0
- package/dist/src/codecs/api/index.js +24 -0
- package/dist/src/codecs/api/invoice.d.ts +68 -0
- package/dist/src/codecs/api/invoice.d.ts.map +1 -0
- package/dist/src/codecs/api/invoice.js +102 -0
- package/dist/src/codecs/api/payment.d.ts +107 -0
- package/dist/src/codecs/api/payment.d.ts.map +1 -0
- package/dist/src/codecs/api/payment.js +153 -0
- package/dist/src/codecs/api/transaction.d.ts +141 -0
- package/dist/src/codecs/api/transaction.d.ts.map +1 -0
- package/dist/src/codecs/api/transaction.js +123 -0
- package/dist/src/codecs/api/wallet.d.ts +100 -0
- package/dist/src/codecs/api/wallet.d.ts.map +1 -0
- package/dist/src/codecs/api/wallet.js +104 -0
- package/dist/src/codecs/api/withdraw.d.ts +92 -0
- package/dist/src/codecs/api/withdraw.d.ts.map +1 -0
- package/dist/src/codecs/api/withdraw.js +92 -0
- package/dist/src/codecs/index.d.ts +3 -0
- package/dist/src/codecs/index.d.ts.map +1 -0
- package/dist/src/codecs/index.js +19 -0
- package/dist/src/codecs/shared.d.ts +7 -0
- package/dist/src/codecs/shared.d.ts.map +1 -0
- package/dist/src/codecs/shared.js +42 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/lightning/index.d.ts +5 -0
- package/dist/src/lightning/index.d.ts.map +1 -0
- package/dist/src/lightning/index.js +21 -0
- package/dist/src/lightning/lightningUtils.d.ts +90 -0
- package/dist/src/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/src/lightning/lightningUtils.js +290 -0
- package/dist/src/lightning/parseWithdrawPsbt.d.ts +11 -0
- package/dist/src/lightning/parseWithdrawPsbt.d.ts.map +1 -0
- package/dist/src/lightning/parseWithdrawPsbt.js +163 -0
- package/dist/src/lightning/signableJson.d.ts +17 -0
- package/dist/src/lightning/signableJson.d.ts.map +1 -0
- package/dist/src/lightning/signableJson.js +29 -0
- package/dist/src/lightning/signature.d.ts +22 -0
- package/dist/src/lightning/signature.d.ts.map +1 -0
- package/dist/src/lightning/signature.js +69 -0
- package/dist/src/wallet/custodialLightning.d.ts +7 -0
- package/dist/src/wallet/custodialLightning.d.ts.map +1 -0
- package/dist/src/wallet/custodialLightning.js +14 -0
- package/dist/src/wallet/index.d.ts +5 -0
- package/dist/src/wallet/index.d.ts.map +1 -0
- package/dist/src/wallet/index.js +21 -0
- package/dist/src/wallet/lightning.d.ts +141 -0
- package/dist/src/wallet/lightning.d.ts.map +1 -0
- package/dist/src/wallet/lightning.js +288 -0
- package/dist/src/wallet/selfCustodialLightning.d.ts +32 -0
- package/dist/src/wallet/selfCustodialLightning.d.ts.map +1 -0
- package/dist/src/wallet/selfCustodialLightning.js +134 -0
- package/dist/src/wallet/wallet.d.ts +7 -0
- package/dist/src/wallet/wallet.d.ts.map +1 -0
- package/dist/src/wallet/wallet.js +22 -0
- package/dist/test/unit/lightning/codecs.d.ts +2 -0
- package/dist/test/unit/lightning/codecs.d.ts.map +1 -0
- package/dist/test/unit/lightning/codecs.js +151 -0
- package/dist/test/unit/lightning/createPsbt.d.ts +27 -0
- package/dist/test/unit/lightning/createPsbt.d.ts.map +1 -0
- package/dist/test/unit/lightning/createPsbt.js +162 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts +4 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts.map +1 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.js +1561 -0
- package/dist/test/unit/lightning/lightningUtils.d.ts +2 -0
- package/dist/test/unit/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/test/unit/lightning/lightningUtils.js +123 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts +2 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts.map +1 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.js +478 -0
- package/dist/test/unit/lightning/signableJson.d.ts +2 -0
- package/dist/test/unit/lightning/signableJson.d.ts.map +1 -0
- package/dist/test/unit/lightning/signableJson.js +52 -0
- package/dist/test/unit/lightning/signature.d.ts +2 -0
- package/dist/test/unit/lightning/signature.d.ts.map +1 -0
- package/dist/test/unit/lightning/signature.js +91 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +19 -6
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -100
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.LightningWallet = void 0;
|
|
37
|
+
exports.getLightningKeychain = getLightningKeychain;
|
|
38
|
+
exports.getLightningAuthKeychains = getLightningAuthKeychains;
|
|
39
|
+
const sdkcore = __importStar(require("@bitgo-beta/sdk-core"));
|
|
40
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const t = __importStar(require("io-ts"));
|
|
42
|
+
const lightning_1 = require("../lightning");
|
|
43
|
+
const codecs_1 = require("../codecs");
|
|
44
|
+
const public_types_1 = require("@bitgo/public-types");
|
|
45
|
+
/**
|
|
46
|
+
* Get the lightning keychain for the given wallet.
|
|
47
|
+
*/
|
|
48
|
+
async function getLightningKeychain(wallet) {
|
|
49
|
+
const coin = wallet.baseCoin;
|
|
50
|
+
if (coin.getFamily() !== 'lnbtc') {
|
|
51
|
+
throw new Error(`Invalid coin to get lightning wallet key: ${coin.getFamily()}`);
|
|
52
|
+
}
|
|
53
|
+
const keyIds = wallet.keyIds();
|
|
54
|
+
if (keyIds.length !== 1) {
|
|
55
|
+
throw new Error(`Invalid number of key in lightning wallet: ${keyIds.length}`);
|
|
56
|
+
}
|
|
57
|
+
const keychain = await coin.keychains().get({ id: keyIds[0] });
|
|
58
|
+
return sdkcore.decodeOrElse(codecs_1.LightningKeychain.name, codecs_1.LightningKeychain, keychain, (_) => {
|
|
59
|
+
throw new Error(`Invalid user key`);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get the lightning auth keychains for the given wallet.
|
|
64
|
+
*/
|
|
65
|
+
async function getLightningAuthKeychains(wallet) {
|
|
66
|
+
const coin = wallet.baseCoin;
|
|
67
|
+
if (coin.getFamily() !== 'lnbtc') {
|
|
68
|
+
throw new Error(`Invalid coin to get lightning wallet auth keys: ${coin.getFamily()}`);
|
|
69
|
+
}
|
|
70
|
+
const authKeyIds = wallet.coinSpecific()?.keys;
|
|
71
|
+
if (authKeyIds?.length !== 2) {
|
|
72
|
+
throw new Error(`Invalid number of auth keys in lightning wallet: ${authKeyIds?.length}`);
|
|
73
|
+
}
|
|
74
|
+
const keychains = await Promise.all(authKeyIds.map((id) => coin.keychains().get({ id })));
|
|
75
|
+
const authKeychains = keychains.map((keychain) => {
|
|
76
|
+
return sdkcore.decodeOrElse(codecs_1.LightningAuthKeychain.name, codecs_1.LightningAuthKeychain, keychain, (_) => {
|
|
77
|
+
// DON'T throw errors from decodeOrElse. It could leak sensitive information.
|
|
78
|
+
throw new Error(`Invalid lightning auth key: ${keychain?.id}`);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
const [userAuthKey, nodeAuthKey] = ['userAuth', 'nodeAuth'].map((purpose) => {
|
|
82
|
+
const keychain = authKeychains.find((k) => (0, lightning_1.unwrapLightningCoinSpecific)(k.coinSpecific, coin.getChain()).purpose === purpose);
|
|
83
|
+
if (!keychain) {
|
|
84
|
+
throw new Error(`Missing ${purpose} key`);
|
|
85
|
+
}
|
|
86
|
+
return keychain;
|
|
87
|
+
});
|
|
88
|
+
return { userAuthKey, nodeAuthKey };
|
|
89
|
+
}
|
|
90
|
+
class LightningWallet {
|
|
91
|
+
constructor(wallet) {
|
|
92
|
+
const coin = wallet.baseCoin;
|
|
93
|
+
if (coin.getFamily() !== 'lnbtc') {
|
|
94
|
+
throw new Error(`Invalid coin for lightning wallet: ${coin.getFamily()}`);
|
|
95
|
+
}
|
|
96
|
+
this.wallet = wallet;
|
|
97
|
+
}
|
|
98
|
+
async createInvoice(params) {
|
|
99
|
+
const createInvoiceResponse = await this.wallet.bitgo
|
|
100
|
+
.post(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/invoice`, 2))
|
|
101
|
+
.send(t.exact(codecs_1.CreateInvoiceBody).encode(params))
|
|
102
|
+
.result();
|
|
103
|
+
return sdkcore.decodeOrElse(codecs_1.Invoice.name, codecs_1.Invoice, createInvoiceResponse, (error) => {
|
|
104
|
+
// DON'T throw errors from decodeOrElse. It could leak sensitive information.
|
|
105
|
+
throw new Error(`Invalid create invoice response ${error}`);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
async getInvoice(paymentHash) {
|
|
109
|
+
const response = await this.wallet.bitgo
|
|
110
|
+
.get(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/invoice/${paymentHash}`, 2))
|
|
111
|
+
.result();
|
|
112
|
+
return (0, sdk_core_1.decodeOrElse)(codecs_1.Invoice.name, codecs_1.Invoice, response, (error) => {
|
|
113
|
+
throw new Error(`Invalid get invoice response ${error}`);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async listInvoices(params) {
|
|
117
|
+
const returnCodec = codecs_1.ListInvoicesResponse;
|
|
118
|
+
const createInvoiceResponse = await this.wallet.bitgo
|
|
119
|
+
.get(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/invoice`, 2))
|
|
120
|
+
.query(codecs_1.InvoiceQuery.encode(params))
|
|
121
|
+
.result();
|
|
122
|
+
return sdkcore.decodeOrElse(returnCodec.name, returnCodec, createInvoiceResponse, (error) => {
|
|
123
|
+
throw new Error(`Invalid list invoices response ${error}`);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
async payInvoice(params) {
|
|
127
|
+
const reqId = new sdk_core_1.RequestTracer();
|
|
128
|
+
this.wallet.bitgo.setRequestTracer(reqId);
|
|
129
|
+
const { userAuthKey } = await getLightningAuthKeychains(this.wallet);
|
|
130
|
+
const userAuthKeyEncryptedPrv = userAuthKey.encryptedPrv;
|
|
131
|
+
if (!userAuthKeyEncryptedPrv) {
|
|
132
|
+
throw new Error(`user auth key is missing encrypted private key`);
|
|
133
|
+
}
|
|
134
|
+
const signature = (0, lightning_1.createMessageSignature)(t.exact(public_types_1.LightningPaymentRequest).encode(params), await this.wallet.bitgo.decrypt({ password: params.passphrase, input: userAuthKeyEncryptedPrv }));
|
|
135
|
+
const paymentIntent = {
|
|
136
|
+
intent: {
|
|
137
|
+
comment: params.comment,
|
|
138
|
+
sequenceId: params.sequenceId,
|
|
139
|
+
intentType: 'payment',
|
|
140
|
+
signedRequest: {
|
|
141
|
+
invoice: params.invoice,
|
|
142
|
+
amountMsat: params.amountMsat,
|
|
143
|
+
feeLimitMsat: params.feeLimitMsat,
|
|
144
|
+
feeLimitRatio: params.feeLimitRatio,
|
|
145
|
+
},
|
|
146
|
+
signature,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
const transactionRequestCreate = (await this.wallet.bitgo
|
|
150
|
+
.post(this.wallet.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests', 2))
|
|
151
|
+
.send(t.type({ intent: public_types_1.LightningPaymentIntent }).encode(paymentIntent))
|
|
152
|
+
.result());
|
|
153
|
+
if (transactionRequestCreate.state === 'pendingApproval') {
|
|
154
|
+
const pendingApprovals = new sdk_core_1.PendingApprovals(this.wallet.bitgo, this.wallet.baseCoin);
|
|
155
|
+
const pendingApproval = await pendingApprovals.get({ id: transactionRequestCreate.pendingApprovalId });
|
|
156
|
+
return {
|
|
157
|
+
pendingApproval: pendingApproval.toJSON(),
|
|
158
|
+
txRequestId: transactionRequestCreate.txRequestId,
|
|
159
|
+
txRequestState: transactionRequestCreate.state,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
await this.wallet.bitgo
|
|
163
|
+
.post(this.wallet.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests/' + transactionRequestCreate.txRequestId + '/transfers', 2))
|
|
164
|
+
.send()
|
|
165
|
+
.result();
|
|
166
|
+
const transactionRequestSend = await sdk_core_1.commonTssMethods.sendTxRequest(this.wallet.bitgo, this.wallet.id(), transactionRequestCreate.txRequestId, sdk_core_1.RequestType.tx, reqId);
|
|
167
|
+
const coinSpecific = transactionRequestSend.transactions?.[0]?.unsignedTx?.coinSpecific;
|
|
168
|
+
return {
|
|
169
|
+
txRequestId: transactionRequestCreate.txRequestId,
|
|
170
|
+
txRequestState: transactionRequestSend.state,
|
|
171
|
+
paymentStatus: coinSpecific
|
|
172
|
+
? t.exact(codecs_1.LndCreatePaymentResponse).encode(coinSpecific)
|
|
173
|
+
: undefined,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
async withdrawOnchain(params) {
|
|
177
|
+
const reqId = new sdk_core_1.RequestTracer();
|
|
178
|
+
this.wallet.bitgo.setRequestTracer(reqId);
|
|
179
|
+
const paymentIntent = {
|
|
180
|
+
intent: {
|
|
181
|
+
comment: params.comment,
|
|
182
|
+
sequenceId: params.sequenceId,
|
|
183
|
+
onchainRequest: {
|
|
184
|
+
recipients: params.recipients,
|
|
185
|
+
satsPerVbyte: params.satsPerVbyte,
|
|
186
|
+
numBlocks: params.numBlocks,
|
|
187
|
+
},
|
|
188
|
+
intentType: 'payment',
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
const transactionRequestCreate = (await this.wallet.bitgo
|
|
192
|
+
.post(this.wallet.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests', 2))
|
|
193
|
+
.send(t.type({ intent: public_types_1.LightningPaymentIntent }).encode(paymentIntent))
|
|
194
|
+
.result());
|
|
195
|
+
if (!transactionRequestCreate.transactions ||
|
|
196
|
+
transactionRequestCreate.transactions.length === 0 ||
|
|
197
|
+
!transactionRequestCreate.transactions[0].unsignedTx.serializedTxHex) {
|
|
198
|
+
throw new Error(`serialized txHex is missing`);
|
|
199
|
+
}
|
|
200
|
+
const walletData = this.wallet.toJSON();
|
|
201
|
+
if (!walletData.coinSpecific.watchOnlyAccounts) {
|
|
202
|
+
throw new Error(`wallet is missing watch only accounts`);
|
|
203
|
+
}
|
|
204
|
+
const watchOnlyAccountDetails = (0, sdk_core_1.decodeOrElse)(codecs_1.WatchOnly.name, codecs_1.WatchOnly, walletData.coinSpecific.watchOnlyAccounts, (errors) => {
|
|
205
|
+
throw new Error(`invalid watch only accounts, error: ${errors}`);
|
|
206
|
+
});
|
|
207
|
+
const network = (0, lightning_1.getUtxolibNetwork)(this.wallet.coin());
|
|
208
|
+
try {
|
|
209
|
+
(0, lightning_1.validatePsbtForWithdraw)(transactionRequestCreate.transactions[0].unsignedTx.serializedTxHex, network, params.recipients, watchOnlyAccountDetails.accounts);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
throw new Error(`error validating withdraw psbt: ${err}`);
|
|
213
|
+
}
|
|
214
|
+
const { userAuthKey } = await getLightningAuthKeychains(this.wallet);
|
|
215
|
+
const userAuthKeyEncryptedPrv = userAuthKey.encryptedPrv;
|
|
216
|
+
if (!userAuthKeyEncryptedPrv) {
|
|
217
|
+
throw new Error(`user auth key is missing encrypted private key`);
|
|
218
|
+
}
|
|
219
|
+
const signature = (0, lightning_1.createMessageSignature)(transactionRequestCreate.transactions[0].unsignedTx.serializedTxHex, await this.wallet.bitgo.decrypt({ password: params.passphrase, input: userAuthKeyEncryptedPrv }));
|
|
220
|
+
const transactionRequestWithSignature = (await this.wallet.bitgo
|
|
221
|
+
.put(this.wallet.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests/' + transactionRequestCreate.txRequestId + '/coinSpecific', 2))
|
|
222
|
+
.send({
|
|
223
|
+
unsignedCoinSpecific: {
|
|
224
|
+
coin: this.wallet.baseCoin.getChain(),
|
|
225
|
+
data: { signature },
|
|
226
|
+
},
|
|
227
|
+
})
|
|
228
|
+
.result());
|
|
229
|
+
if (transactionRequestWithSignature.state === 'pendingApproval') {
|
|
230
|
+
const pendingApprovals = new sdk_core_1.PendingApprovals(this.wallet.bitgo, this.wallet.baseCoin);
|
|
231
|
+
const pendingApproval = await pendingApprovals.get({ id: transactionRequestWithSignature.pendingApprovalId });
|
|
232
|
+
return {
|
|
233
|
+
pendingApproval: pendingApproval.toJSON(),
|
|
234
|
+
txRequestId: transactionRequestWithSignature.txRequestId,
|
|
235
|
+
txRequestState: transactionRequestWithSignature.state,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
await this.wallet.bitgo
|
|
239
|
+
.post(this.wallet.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests/' + transactionRequestWithSignature.txRequestId + '/transfers', 2))
|
|
240
|
+
.send()
|
|
241
|
+
.result();
|
|
242
|
+
const transactionRequestSend = await sdk_core_1.commonTssMethods.sendTxRequest(this.wallet.bitgo, this.wallet.id(), transactionRequestWithSignature.txRequestId, sdk_core_1.RequestType.tx, reqId);
|
|
243
|
+
const coinSpecific = transactionRequestSend.transactions?.[0]?.unsignedTx?.coinSpecific;
|
|
244
|
+
return {
|
|
245
|
+
txRequestId: transactionRequestWithSignature.txRequestId,
|
|
246
|
+
txRequestState: transactionRequestSend.state,
|
|
247
|
+
withdrawStatus: coinSpecific && 'status' in coinSpecific
|
|
248
|
+
? t.exact(codecs_1.LndCreateWithdrawResponse).encode(coinSpecific)
|
|
249
|
+
: undefined,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
async getPayment(paymentId) {
|
|
253
|
+
const response = await this.wallet.bitgo
|
|
254
|
+
.get(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/payment/${paymentId}`, 2))
|
|
255
|
+
.result();
|
|
256
|
+
return (0, sdk_core_1.decodeOrElse)(codecs_1.PaymentInfo.name, codecs_1.PaymentInfo, response, (error) => {
|
|
257
|
+
throw new Error(`Invalid payment response: ${error}`);
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
async listPayments(params) {
|
|
261
|
+
const response = await this.wallet.bitgo
|
|
262
|
+
.get(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/payment`, 2))
|
|
263
|
+
.query(codecs_1.PaymentQuery.encode(params))
|
|
264
|
+
.result();
|
|
265
|
+
return (0, sdk_core_1.decodeOrElse)(codecs_1.ListPaymentsResponse.name, codecs_1.ListPaymentsResponse, response, (error) => {
|
|
266
|
+
throw new Error(`Invalid payment list response: ${error}`);
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
async getTransaction(txId) {
|
|
270
|
+
const response = await this.wallet.bitgo
|
|
271
|
+
.get(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/transaction/${txId}`, 2))
|
|
272
|
+
.result();
|
|
273
|
+
return (0, sdk_core_1.decodeOrElse)(codecs_1.Transaction.name, codecs_1.Transaction, response, (error) => {
|
|
274
|
+
throw new Error(`Invalid transaction response: ${error}`);
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
async listTransactions(params) {
|
|
278
|
+
const response = await this.wallet.bitgo
|
|
279
|
+
.get(this.wallet.bitgo.url(`/wallet/${this.wallet.id()}/lightning/transaction`, 2))
|
|
280
|
+
.query(codecs_1.TransactionQuery.encode(params))
|
|
281
|
+
.result();
|
|
282
|
+
return (0, sdk_core_1.decodeOrElse)(codecs_1.ListTransactionsResponse.name, codecs_1.ListTransactionsResponse, response, (error) => {
|
|
283
|
+
throw new Error(`Invalid transaction list response: ${error}`);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.LightningWallet = LightningWallet;
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dhbGxldC9saWdodG5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBLG9EQWFDO0FBS0QsOERBOEJDO0FBeEhELDhEQUFnRDtBQUNoRCxtREFTOEI7QUFDOUIseUNBQTJCO0FBQzNCLDRDQUtzQjtBQUN0QixzQ0FtQm1CO0FBQ25CLHNEQUFzRjtBQStCdEY7O0dBRUc7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQUMsTUFBdUI7SUFDaEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsMEJBQWlCLENBQUMsSUFBSSxFQUFFLDBCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3JGLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFD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QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQXdCO1FBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2FBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNsRixLQUFLLENBQUMseUJBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3RDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxJQUFBLHVCQUFZLEVBQUMsaUNBQXdCLENBQUMsSUFBSSxFQUFFLGlDQUF3QixFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9GLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqUkQsMENBaVJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2RrY29yZSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICBQZW5kaW5nQXBwcm92YWxEYXRhLFxuICBQZW5kaW5nQXBwcm92YWxzLFxuICBSZXF1ZXN0VHJhY2VyLFxuICBSZXF1ZXN0VHlwZSxcbiAgVHhSZXF1ZXN0LFxuICBjb21tb25Uc3NNZXRob2RzLFxuICBUeFJlcXVlc3RTdGF0ZSxcbiAgZGVjb2RlT3JFbHNlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7XG4gIGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUsXG4gIGdldFV0eG9saWJOZXR3b3JrLFxuICB1bndyYXBMaWdodG5pbmdDb2luU3BlY2lmaWMsXG4gIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3LFxufSBmcm9tICcuLi9saWdodG5pbmcnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlSW52b2ljZUJvZHksXG4gIEludm9pY2UsXG4gIEludm9pY2VRdWVyeSxcbiAgTGlnaHRuaW5nQXV0aEtleWNoYWluLFxuICBMaWdodG5pbmdLZXljaGFpbixcbiAgTG5kQ3JlYXRlUGF5bWVudFJlc3BvbnNlLFxuICBTdWJtaXRQYXltZW50UGFyYW1zLFxuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25RdWVyeSxcbiAgTGlzdFRyYW5zYWN0aW9uc1Jlc3BvbnNlLFxuICBQYXltZW50SW5mbyxcbiAgUGF5bWVudFF1ZXJ5LFxuICBMaWdodG5pbmdPbmNoYWluV2l0aGRyYXdQYXJhbXMsXG4gIExpZ2h0bmluZ09uY2hhaW5XaXRoZHJhd1Jlc3BvbnNlLFxuICBMaXN0SW52b2ljZXNSZXNwb25zZSxcbiAgTGlzdFBheW1lbnRzUmVzcG9uc2UsXG4gIExuZENyZWF0ZVdpdGhkcmF3UmVzcG9uc2UsXG4gIFdhdGNoT25seSxcbn0gZnJvbSAnLi4vY29kZWNzJztcbmltcG9ydCB7IExpZ2h0bmluZ1BheW1lbnRJbnRlbnQsIExpZ2h0bmluZ1BheW1lbnRSZXF1ZXN0IH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFBheUludm9pY2VSZXNwb25zZSA9IHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcGF5bWVudCByZXF1ZXN0IHN1Ym1pdHRlZCB0byBCaXRHby5cbiAgICovXG4gIHR4UmVxdWVzdElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0YXR1cyBvZiB0aGUgcGF5bWVudCByZXF1ZXN0IHN1Ym1pc3Npb24gdG8gQml0R28uXG4gICAqIC0gYCdkZWxpdmVyZWQnYDogU3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGJ5IEJpdEdvLCBidXQgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIHNlbnQgdG8gdGhlIExpZ2h0bmluZyBOZXR3b3JrIHlldC5cbiAgICogLSBGb3IgdGhlIGFjdHVhbCBwYXltZW50IHN0YXR1cywgcmVmZXIgdG8gYHBheW1lbnRTdGF0dXNgIGFuZCB0cmFjayBgdHJhbnNmZXJgLlxuICAgKi9cbiAgdHhSZXF1ZXN0U3RhdGU6IFR4UmVxdWVzdFN0YXRlO1xuXG4gIC8qKlxuICAgKiBQZW5kaW5nIGFwcHJvdmFsIGRldGFpbHMsIGlmIGFwcGxpY2FibGUuXG4gICAqIC0gSWYgcHJlc2VudCwgdGhlIHBheW1lbnQgaGFzIG5vdCBiZWVuIGluaXRpYXRlZCB5ZXQuXG4gICAqL1xuICBwZW5kaW5nQXBwcm92YWw/OiBQZW5kaW5nQXBwcm92YWxEYXRhO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHNuYXBzaG90IG9mIHBheW1lbnQgc3RhdHVzIChpZiBhdmFpbGFibGUpLlxuICAgKiAtICoqYCdpbl9mbGlnaHQnYCoqOiBQYXltZW50IGlzIGluIHByb2dyZXNzLlxuICAgKiAtICoqYCdzZXR0bGVkJ2AqKjogUGF5bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC5cbiAgICogLSAqKmAnZmFpbGVkJ2AqKjogUGF5bWVudCBmYWlsZWQuXG4gICAqIFRoaXMgZmllbGQgaXMgYWJzZW50IGlmIGFwcHJvdmFsIGlzIHJlcXVpcmVkIGJlZm9yZSBwcm9jZXNzaW5nLlxuICAgKi9cbiAgcGF5bWVudFN0YXR1cz86IExuZENyZWF0ZVBheW1lbnRSZXNwb25zZTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBsaWdodG5pbmcga2V5Y2hhaW4gZm9yIHRoZSBnaXZlbiB3YWxsZXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRMaWdodG5pbmdLZXljaGFpbih3YWxsZXQ6IHNka2NvcmUuSVdhbGxldCk6IFByb21pc2U8TGlnaHRuaW5nS2V5Y2hhaW4+IHtcbiAgY29uc3QgY29pbiA9IHdhbGxldC5iYXNlQ29pbjtcbiAgaWYgKGNvaW4uZ2V0RmFtaWx5KCkgIT09ICdsbmJ0YycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29pbiB0byBnZXQgbGlnaHRuaW5nIHdhbGxldCBrZXk6ICR7Y29pbi5nZXRGYW1pbHkoKX1gKTtcbiAgfVxuICBjb25zdCBrZXlJZHMgPSB3YWxsZXQua2V5SWRzKCk7XG4gIGlmIChrZXlJZHMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG51bWJlciBvZiBrZXkgaW4gbGlnaHRuaW5nIHdhbGxldDogJHtrZXlJZHMubGVuZ3RofWApO1xuICB9XG4gIGNvbnN0IGtleWNoYWluID0gYXdhaXQgY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDoga2V5SWRzWzBdIH0pO1xuICByZXR1cm4gc2RrY29yZS5kZWNvZGVPckVsc2UoTGlnaHRuaW5nS2V5Y2hhaW4ubmFtZSwgTGlnaHRuaW5nS2V5Y2hhaW4sIGtleWNoYWluLCAoXykgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1c2VyIGtleWApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGxpZ2h0bmluZyBhdXRoIGtleWNoYWlucyBmb3IgdGhlIGdpdmVuIHdhbGxldC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldExpZ2h0bmluZ0F1dGhLZXljaGFpbnMod2FsbGV0OiBzZGtjb3JlLklXYWxsZXQpOiBQcm9taXNlPHtcbiAgdXNlckF1dGhLZXk6IExpZ2h0bmluZ0F1dGhLZXljaGFpbjtcbiAgbm9kZUF1dGhLZXk6IExpZ2h0bmluZ0F1dGhLZXljaGFpbjtcbn0+IHtcbiAgY29uc3QgY29pbiA9IHdhbGxldC5iYXNlQ29pbjtcbiAgaWYgKGNvaW4uZ2V0RmFtaWx5KCkgIT09ICdsbmJ0YycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29pbiB0byBnZXQgbGlnaHRuaW5nIHdhbGxldCBhdXRoIGtleXM6ICR7Y29pbi5nZXRGYW1pbHkoKX1gKTtcbiAgfVxuICBjb25zdCBhdXRoS2V5SWRzID0gd2FsbGV0LmNvaW5TcGVjaWZpYygpPy5rZXlzO1xuICBpZiAoYXV0aEtleUlkcz8ubGVuZ3RoICE9PSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG51bWJlciBvZiBhdXRoIGtleXMgaW4gbGlnaHRuaW5nIHdhbGxldDogJHthdXRoS2V5SWRzPy5sZW5ndGh9YCk7XG4gIH1cbiAgY29uc3Qga2V5Y2hhaW5zID0gYXdhaXQgUHJvbWlzZS5hbGwoYXV0aEtleUlkcy5tYXAoKGlkKSA9PiBjb2luLmtleWNoYWlucygpLmdldCh7IGlkIH0pKSk7XG4gIGNvbnN0IGF1dGhLZXljaGFpbnMgPSBrZXljaGFpbnMubWFwKChrZXljaGFpbikgPT4ge1xuICAgIHJldHVybiBzZGtjb3JlLmRlY29kZU9yRWxzZShMaWdodG5pbmdBdXRoS2V5Y2hhaW4ubmFtZSwgTGlnaHRuaW5nQXV0aEtleWNoYWluLCBrZXljaGFpbiwgKF8pID0+IHtcbiAgICAgIC8vIERPTidUIHRocm93IGVycm9ycyBmcm9tIGRlY29kZU9yRWxzZS4gSXQgY291bGQgbGVhayBzZW5zaXRpdmUgaW5mb3JtYXRpb24uXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbGlnaHRuaW5nIGF1dGgga2V5OiAke2tleWNoYWluPy5pZH1gKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IFt1c2VyQXV0aEtleSwgbm9kZUF1dGhLZXldID0gKFsndXNlckF1dGgnLCAnbm9kZUF1dGgnXSBhcyBjb25zdCkubWFwKChwdXJwb3NlKSA9PiB7XG4gICAgY29uc3Qga2V5Y2hhaW4gPSBhdXRoS2V5Y2hhaW5zLmZpbmQoXG4gICAgICAoaykgPT4gdW53cmFwTGlnaHRuaW5nQ29pblNwZWNpZmljKGsuY29pblNwZWNpZmljLCBjb2luLmdldENoYWluKCkpLnB1cnBvc2UgPT09IHB1cnBvc2VcbiAgICApO1xuICAgIGlmICgha2V5Y2hhaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke3B1cnBvc2V9IGtleWApO1xuICAgIH1cbiAgICByZXR1cm4ga2V5Y2hhaW47XG4gIH0pO1xuXG4gIHJldHVybiB7IHVzZXJBdXRoS2V5LCBub2RlQXV0aEtleSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMaWdodG5pbmdXYWxsZXQge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGxpZ2h0bmluZyBpbnZvaWNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXMgSW52b2ljZSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSB7YmlnaW50fSBwYXJhbXMudmFsdWVNc2F0IFRoZSB2YWx1ZSBvZiB0aGUgaW52b2ljZSBpbiBtaWxsaXNhdG9zaGlzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLm1lbW9dIEEgbWVtbyBvciBkZXNjcmlwdGlvbiBmb3IgdGhlIGludm9pY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtwYXJhbXMuZXhwaXJ5XSBUaGUgZXhwaXJ5IHRpbWUgb2YgdGhlIGludm9pY2UgaW4gc2Vjb25kc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxJbnZvaWNlPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNyZWF0ZWQgaW52b2ljZVxuICAgKi9cbiAgY3JlYXRlSW52b2ljZShwYXJhbXM6IENyZWF0ZUludm9pY2VCb2R5KTogUHJvbWlzZTxJbnZvaWNlPjtcbiAgLyoqXG4gICAqIEdldCBpbnZvaWNlIGRldGFpbHMgYnkgcGF5bWVudCBoYXNoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXltZW50SGFzaCAtIFBheW1lbnQgaGFzaCB0byBsb29rdXBcbiAgICogQHJldHVybnMge1Byb21pc2U8SW52b2ljZT59IEludm9pY2UgZGV0YWlsc1xuICAgKiBAdGhyb3dzIHtJbnZhbGlkUGF5bWVudEhhc2h9IFdoZW4gcGF5bWVudCBoYXNoIGlzIG5vdCB2YWxpZFxuICAgKi9cbiAgZ2V0SW52b2ljZShwYXltZW50SGFzaDogc3RyaW5nKTogUHJvbWlzZTxJbnZvaWNlPjtcbiAgLyoqXG4gICAqIExpc3RzIGN1cnJlbnQgbGlnaHRuaW5nIGludm9pY2VzXG4gICAqIEBwYXJhbSB7SW52b2ljZVF1ZXJ5fSBwYXJhbXMgUXVlcnkgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nIGludm9pY2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnN0YXR1c10gVGhlIHN0YXR1cyBvZiB0aGUgaW52b2ljZSAob3Blbiwgc2V0dGxlZCwgY2FuY2VsZWQpXG4gICAqIEBwYXJhbSB7YmlnaW50fSBbcGFyYW1zLmxpbWl0XSBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW52b2ljZXMgdG8gcmV0dXJuXG4gICAqIEBwYXJhbSB7RGF0ZX0gW3BhcmFtcy5zdGFydERhdGVdIFRoZSBzdGFydCBkYXRlIGZvciB0aGUgcXVlcnlcbiAgICogQHBhcmFtIHtEYXRlfSBbcGFyYW1zLmVuZERhdGVdIFRoZSBlbmQgZGF0ZSBmb3IgdGhlIHF1ZXJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnByZXZJZF0gQ29udGludWUgaXRlcmF0aW5nIChwcm92aWRlZCBieSBuZXh0QmF0Y2hQcmV2SWQgaW4gdGhlIHByZXZpb3VzIGxpc3QpXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPExpc3RJbnZvaWNlc1Jlc3BvbnNlPn0gTGlzdCBvZiBpbnZvaWNlcyBhbmQgbmV4dEJhdGNoUHJldklkXG4gICAqL1xuICBsaXN0SW52b2ljZXMocGFyYW1zOiBJbnZvaWNlUXVlcnkpOiBQcm9taXNlPExpc3RJbnZvaWNlc1Jlc3BvbnNlPjtcblxuICAvKipcbiAgICogUGF5IGEgbGlnaHRuaW5nIGludm9pY2VcbiAgICogQHBhcmFtIHtTdWJtaXRQYXltZW50UGFyYW1zfSBwYXJhbXMgLSBQYXltZW50IHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5pbnZvaWNlIC0gVGhlIGludm9pY2UgdG8gcGF5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMuYW1vdW50TXNhdCAtIFRoZSBhbW91bnQgdG8gcGF5IGluIG1pbGxpc2F0b3NoaXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5wYXNzcGhyYXNlIC0gVGhlIHdhbGxldCBwYXNzcGhyYXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnNlcXVlbmNlSWRdIC0gT3B0aW9uYWwgc2VxdWVuY2UgSUQgZm9yIHRoZSByZXNwZWN0aXZlIHBheW1lbnQgdHJhbnNmZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwYXJhbXMuY29tbWVudF0gLSBPcHRpb25hbCBjb21tZW50IGZvciB0aGUgcmVzcGVjdGl2ZSBwYXltZW50IHRyYW5zZmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFBheUludm9pY2VSZXNwb25zZT59IFBheW1lbnQgcmVzdWx0IGNvbnRhaW5pbmcgdHJhbnNhY3Rpb24gcmVxdWVzdCBkZXRhaWxzIGFuZCBwYXltZW50IHN0YXR1c1xuICAgKi9cbiAgcGF5SW52b2ljZShwYXJhbXM6IFN1Ym1pdFBheW1lbnRQYXJhbXMpOiBQcm9taXNlPFBheUludm9pY2VSZXNwb25zZT47XG5cbiAgLyoqXG4gICAqIE9uIGNoYWluIHdpdGhkcmF3YWxcbiAgICogQHBhcmFtIHtMaWdodG5pbmdPbmNoYWluV2l0aGRyYXdQYXJhbXN9IHBhcmFtcyAtIFdpdGhkcmF3IHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtMaWdodG5pbmdPbmNoYWluUmVjaXBpZW50W119IHBhcmFtcy5yZWNpcGllbnRzIC0gVGhlIHJlY2lwaWVudHMgdG8gcGF5XG4gICAqIEBwYXJhbSB7YmlnaW50fSBbcGFyYW1zLnNhdHNQZXJWYnl0ZV0gLSBPcHRpb25hbCB2YWx1ZSBmb3Igc2F0cyBwZXIgdmlydHVhbCBieXRlLiBJZiBub3QgcHJlc2VudCwgaXQgd2lsbCBiZSBlc3RpbWF0ZWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbcGFyYW1zLm51bUJsb2Nrc10gLSBUYXJnZXQgYmxvY2tzIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gYmUgY29uZmlybWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMucGFzc3BocmFzZSAtIFRoZSB3YWxsZXQgcGFzc3BocmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3BhcmFtcy5zZXF1ZW5jZUlkXSAtIE9wdGlvbmFsIHNlcXVlbmNlIElEIGZvciB0aGUgcmVzcGVjdGl2ZSB3aXRoZHJhdyB0cmFuc2ZlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3BhcmFtcy5jb21tZW50XSAtIE9wdGlvbmFsIGNvbW1lbnQgZm9yIHRoZSByZXNwZWN0aXZlIHdpdGhkcmF3IHRyYW5zZmVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPExpZ2h0bmluZ09uY2hhaW5XaXRoZHJhd1Jlc3BvbnNlPn0gV2l0aGRyYXcgcmVzdWx0IGNvbnRhaW5pbmcgdHJhbnNhY3Rpb24gcmVxdWVzdCBkZXRhaWxzIGFuZCBzdGF0dXNcbiAgICovXG4gIHdpdGhkcmF3T25jaGFpbihwYXJhbXM6IExpZ2h0bmluZ09uY2hhaW5XaXRoZHJhd1BhcmFtcyk6IFByb21pc2U8TGlnaHRuaW5nT25jaGFpbldpdGhkcmF3UmVzcG9uc2U+O1xuICAvKipcbiAgICogR2V0IHBheW1lbnQgZGV0YWlscyBieSBwYXltZW50IGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXltZW50SWQgLSBQYXltZW50IGlkIHRvIGxvb2t1cFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQYXltZW50SW5mbz59IFBheW1lbnQgZGV0YWlsc1xuICAgKiBAdGhyb3dzIHtJbnZhbGlkUGF5bWVudElkfSBXaGVuIHBheW1lbnQgaWQgaXMgbm90IHZhbGlkXG4gICAqL1xuICBnZXRQYXltZW50KHBheW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTxQYXltZW50SW5mbz47XG4gIC8qKlxuICAgKiBMaXN0IHBheW1lbnRzIGZvciBhIHdhbGxldCB3aXRoIG9wdGlvbmFsIGZpbHRlcmluZ1xuICAgKiBAcGFyYW0ge1BheW1lbnRRdWVyeX0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyBwYXltZW50c1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW3BhcmFtcy5zdGF0dXNdIFRoZSBzdGF0dXMgb2YgdGhlIHBheW1lbnRcbiAgICogQHBhcmFtIHtiaWdpbnR9IFtwYXJhbXMubGltaXRdIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXltZW50cyB0byByZXR1cm5cbiAgICogQHBhcmFtIHtEYXRlfSBbcGFyYW1zLnN0YXJ0RGF0ZV0gVGhlIHN0YXJ0IGRhdGUgZm9yIHRoZSBxdWVyeVxuICAgKiBAcGFyYW0ge0RhdGV9IFtwYXJhbXMuZW5kRGF0ZV0gVGhlIGVuZCBkYXRlIGZvciB0aGUgcXVlcnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtwYXJhbXMucGF5bWVudEhhc2hdIFRoZSBwYXltZW50IGhhc2ggb2YgdGhlIHBheW1lbnRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnByZXZJZF0gQ29udGludWUgaXRlcmF0aW5nIChwcm92aWRlZCBieSBuZXh0QmF0Y2hQcmV2SWQgaW4gdGhlIHByZXZpb3VzIGxpc3QpXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPExpc3RQYXltZW50c1Jlc3BvbnNlPn0gTGlzdCBvZiBwYXltZW50cyBhbmQgbmV4dEJhdGNoUHJldklkXG4gICAqL1xuICBsaXN0UGF5bWVudHMocGFyYW1zOiBQYXltZW50UXVlcnkpOiBQcm9taXNlPExpc3RQYXltZW50c1Jlc3BvbnNlPjtcbiAgLyoqXG4gICAqIEdldCB0cmFuc2FjdGlvbiBkZXRhaWxzIGJ5IElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eElkIC0gVHJhbnNhY3Rpb24gSUQgdG8gbG9va3VwXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFRyYW5zYWN0aW9uPn0gVHJhbnNhY3Rpb24gZGV0YWlsc1xuICAgKiBAdGhyb3dzIHtJbnZhbGlkVHhJZH0gV2hlbiB0cmFuc2FjdGlvbiBJRCBpcyBub3QgdmFsaWRcbiAgICovXG4gIGdldFRyYW5zYWN0aW9uKHR4SWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBMaXN0IHRyYW5zYWN0aW9ucyBmb3IgYSB3YWxsZXQgd2l0aCBvcHRpb25hbCBmaWx0ZXJpbmcgYW5kIGN1cnNvci1iYXNlZCBwYWdpbmF0aW9uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25RdWVyeX0gcGFyYW1zIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHtiaWdpbnR9IFtwYXJhbXMubGltaXRdIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgdG8gcmV0dXJuXG4gICAqIEBwYXJhbSB7RGF0ZX0gW3BhcmFtcy5zdGFydERhdGVdIFRoZSBzdGFydCBkYXRlIGZvciB0aGUgcXVlcnlcbiAgICogQHBhcmFtIHtEYXRlfSBbcGFyYW1zLmVuZERhdGVdIFRoZSBlbmQgZGF0ZSBmb3IgdGhlIHF1ZXJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyYW1zLnByZXZJZF0gVHJhbnNhY3Rpb24gSUQgZm9yIGN1cnNvci1iYXNlZCBwYWdpbmF0aW9uIChmcm9tIG5leHRCYXRjaFByZXZJZClcbiAgICogQHJldHVybnMge1Byb21pc2U8TGlzdFRyYW5zYWN0aW9uc1Jlc3BvbnNlPn0gTGlzdCBvZiB0cmFuc2FjdGlvbnMgd2l0aCBwYWdpbmF0aW9uIGluZm9cbiAgICovXG4gIGxpc3RUcmFuc2FjdGlvbnMocGFyYW1zOiBUcmFuc2FjdGlvblF1ZXJ5KTogUHJvbWlzZTxMaXN0VHJhbnNhY3Rpb25zUmVzcG9uc2U+O1xufVxuXG5leHBvcnQgY2xhc3MgTGlnaHRuaW5nV2FsbGV0IGltcGxlbWVudHMgSUxpZ2h0bmluZ1dhbGxldCB7XG4gIHB1YmxpYyB3YWxsZXQ6IHNka2NvcmUuSVdhbGxldDtcblxuICBjb25zdHJ1Y3Rvcih3YWxsZXQ6IHNka2NvcmUuSVdhbGxldCkge1xuICAgIGNvbnN0IGNvaW4gPSB3YWxsZXQuYmFzZUNvaW47XG4gICAgaWYgKGNvaW4uZ2V0RmFtaWx5KCkgIT09ICdsbmJ0YycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb2luIGZvciBsaWdodG5pbmcgd2FsbGV0OiAke2NvaW4uZ2V0RmFtaWx5KCl9YCk7XG4gICAgfVxuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlSW52b2ljZShwYXJhbXM6IENyZWF0ZUludm9pY2VCb2R5KTogUHJvbWlzZTxJbnZvaWNlPiB7XG4gICAgY29uc3QgY3JlYXRlSW52b2ljZVJlc3BvbnNlID0gYXdhaXQgdGhpcy53YWxsZXQuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMud2FsbGV0LmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L2xpZ2h0bmluZy9pbnZvaWNlYCwgMikpXG4gICAgICAuc2VuZCh0LmV4YWN0KENyZWF0ZUludm9pY2VCb2R5KS5lbmNvZGUocGFyYW1zKSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgICByZXR1cm4gc2RrY29yZS5kZWNvZGVPckVsc2UoSW52b2ljZS5uYW1lLCBJbnZvaWNlLCBjcmVhdGVJbnZvaWNlUmVzcG9uc2UsIChlcnJvcikgPT4ge1xuICAgICAgLy8gRE9OJ1QgdGhyb3cgZXJyb3JzIGZyb20gZGVjb2RlT3JFbHNlLiBJdCBjb3VsZCBsZWFrIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjcmVhdGUgaW52b2ljZSByZXNwb25zZSAke2Vycm9yfWApO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0SW52b2ljZShwYXltZW50SGFzaDogc3RyaW5nKTogUHJvbWlzZTxJbnZvaWNlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndhbGxldC5iaXRnb1xuICAgICAgLmdldCh0aGlzLndhbGxldC5iaXRnby51cmwoYC93YWxsZXQvJHt0aGlzLndhbGxldC5pZCgpfS9saWdodG5pbmcvaW52b2ljZS8ke3BheW1lbnRIYXNofWAsIDIpKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoSW52b2ljZS5uYW1lLCBJbnZvaWNlLCByZXNwb25zZSwgKGVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZ2V0IGludm9pY2UgcmVzcG9uc2UgJHtlcnJvcn1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RJbnZvaWNlcyhwYXJhbXM6IEludm9pY2VRdWVyeSk6IFByb21pc2U8TGlzdEludm9pY2VzUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXR1cm5Db2RlYyA9IExpc3RJbnZvaWNlc1Jlc3BvbnNlO1xuICAgIGNvbnN0IGNyZWF0ZUludm9pY2VSZXNwb25zZSA9IGF3YWl0IHRoaXMud2FsbGV0LmJpdGdvXG4gICAgICAuZ2V0KHRoaXMud2FsbGV0LmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L2xpZ2h0bmluZy9pbnZvaWNlYCwgMikpXG4gICAgICAucXVlcnkoSW52b2ljZVF1ZXJ5LmVuY29kZShwYXJhbXMpKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBzZGtjb3JlLmRlY29kZU9yRWxzZShyZXR1cm5Db2RlYy5uYW1lLCByZXR1cm5Db2RlYywgY3JlYXRlSW52b2ljZVJlc3BvbnNlLCAoZXJyb3IpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsaXN0IGludm9pY2VzIHJlc3BvbnNlICR7ZXJyb3J9YCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwYXlJbnZvaWNlKHBhcmFtczogU3VibWl0UGF5bWVudFBhcmFtcyk6IFByb21pc2U8UGF5SW52b2ljZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIHRoaXMud2FsbGV0LmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuXG4gICAgY29uc3QgeyB1c2VyQXV0aEtleSB9ID0gYXdhaXQgZ2V0TGlnaHRuaW5nQXV0aEtleWNoYWlucyh0aGlzLndhbGxldCk7XG4gICAgY29uc3QgdXNlckF1dGhLZXlFbmNyeXB0ZWRQcnYgPSB1c2VyQXV0aEtleS5lbmNyeXB0ZWRQcnY7XG4gICAgaWYgKCF1c2VyQXV0aEtleUVuY3J5cHRlZFBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1c2VyIGF1dGgga2V5IGlzIG1pc3NpbmcgZW5jcnlwdGVkIHByaXZhdGUga2V5YCk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUoXG4gICAgICB0LmV4YWN0KExpZ2h0bmluZ1BheW1lbnRSZXF1ZXN0KS5lbmNvZGUocGFyYW1zKSxcbiAgICAgIGF3YWl0IHRoaXMud2FsbGV0LmJpdGdvLmRlY3J5cHQoeyBwYXNzd29yZDogcGFyYW1zLnBhc3NwaHJhc2UsIGlucHV0OiB1c2VyQXV0aEtleUVuY3J5cHRlZFBydiB9KVxuICAgICk7XG5cbiAgICBjb25zdCBwYXltZW50SW50ZW50OiB7IGludGVudDogTGlnaHRuaW5nUGF5bWVudEludGVudCB9ID0ge1xuICAgICAgaW50ZW50OiB7XG4gICAgICAgIGNvbW1lbnQ6IHBhcmFtcy5jb21tZW50LFxuICAgICAgICBzZXF1ZW5jZUlkOiBwYXJhbXMuc2VxdWVuY2VJZCxcbiAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICBzaWduZWRSZXF1ZXN0OiB7XG4gICAgICAgICAgaW52b2ljZTogcGFyYW1zLmludm9pY2UsXG4gICAgICAgICAgYW1vdW50TXNhdDogcGFyYW1zLmFtb3VudE1zYXQsXG4gICAgICAgICAgZmVlTGltaXRNc2F0OiBwYXJhbXMuZmVlTGltaXRNc2F0LFxuICAgICAgICAgIGZlZUxpbWl0UmF0aW86IHBhcmFtcy5mZWVMaW1pdFJhdGlvLFxuICAgICAgICB9LFxuICAgICAgICBzaWduYXR1cmUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3RDcmVhdGUgPSAoYXdhaXQgdGhpcy53YWxsZXQuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMud2FsbGV0LmJpdGdvLnVybCgnL3dhbGxldC8nICsgdGhpcy53YWxsZXQuaWQoKSArICcvdHhyZXF1ZXN0cycsIDIpKVxuICAgICAgLnNlbmQodC50eXBlKHsgaW50ZW50OiBMaWdodG5pbmdQYXltZW50SW50ZW50IH0pLmVuY29kZShwYXltZW50SW50ZW50KSlcbiAgICAgIC5yZXN1bHQoKSkgYXMgVHhSZXF1ZXN0O1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uUmVxdWVzdENyZWF0ZS5zdGF0ZSA9PT0gJ3BlbmRpbmdBcHByb3ZhbCcpIHtcbiAgICAgIGNvbnN0IHBlbmRpbmdBcHByb3ZhbHMgPSBuZXcgUGVuZGluZ0FwcHJvdmFscyh0aGlzLndhbGxldC5iaXRnbywgdGhpcy53YWxsZXQuYmFzZUNvaW4pO1xuICAgICAgY29uc3QgcGVuZGluZ0FwcHJvdmFsID0gYXdhaXQgcGVuZGluZ0FwcHJvdmFscy5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0Q3JlYXRlLnBlbmRpbmdBcHByb3ZhbElkIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGVuZGluZ0FwcHJvdmFsOiBwZW5kaW5nQXBwcm92YWwudG9KU09OKCksXG4gICAgICAgIHR4UmVxdWVzdElkOiB0cmFuc2FjdGlvblJlcXVlc3RDcmVhdGUudHhSZXF1ZXN0SWQsXG4gICAgICAgIHR4UmVxdWVzdFN0YXRlOiB0cmFuc2FjdGlvblJlcXVlc3RDcmVhdGUuc3RhdGUsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMud2FsbGV0LmJpdGdvXG4gICAgICAucG9zdChcbiAgICAgICAgdGhpcy53YWxsZXQuYml0Z28udXJsKFxuICAgICAgICAgICcvd2FsbGV0LycgKyB0aGlzLndhbGxldC5pZCgpICsgJy90eHJlcXVlc3RzLycgKyB0cmFuc2FjdGlvblJlcXVlc3RDcmVhdGUudHhSZXF1ZXN0SWQgKyAnL3RyYW5zZmVycycsXG4gICAgICAgICAgMlxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc2VuZCgpXG4gICAgICAucmVzdWx0KCk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3RTZW5kID0gYXdhaXQgY29tbW9uVHNzTWV0aG9kcy5zZW5kVHhSZXF1ZXN0KFxuICAgICAgdGhpcy53YWxsZXQuYml0Z28sXG4gICAgICB0aGlzLndhbGxldC5pZCgpLFxuICAgICAgdHJhbnNhY3Rpb25SZXF1ZXN0Q3JlYXRlLnR4UmVxdWVzdElkLFxuICAgICAgUmVxdWVzdFR5cGUudHgsXG4gICAgICByZXFJZFxuICAgICk7XG5cbiAgICBjb25zdCBjb2luU3BlY2lmaWMgPSB0cmFuc2FjdGlvblJlcXVlc3RTZW5kLnRyYW5zYWN0aW9ucz8uWzBdPy51bnNpZ25lZFR4Py5jb2luU3BlY2lmaWM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHhSZXF1ZXN0SWQ6IHRyYW5zYWN0aW9uUmVxdWVzdENyZWF0ZS50eFJlcXVlc3RJZCxcbiAgICAgIHR4UmVxdWVzdFN0YXRlOiB0cmFuc2FjdGlvblJlcXVlc3RTZW5kLnN0YXRlLFxuICAgICAgcGF5bWVudFN0YXR1czogY29pblNwZWNpZmljXG4gICAgICAgID8gdC5leGFjdChMbmRDcmVhdGVQYXltZW50UmVzcG9uc2UpLmVuY29kZShjb2luU3BlY2lmaWMgYXMgTG5kQ3JlYXRlUGF5bWVudFJlc3BvbnNlKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgd2l0aGRyYXdPbmNoYWluKHBhcmFtczogTGlnaHRuaW5nT25jaGFpbldpdGhkcmF3UGFyYW1zKTogUHJvbWlzZTxMaWdodG5pbmdPbmNoYWluV2l0aGRyYXdSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlcUlkID0gbmV3IFJlcXVlc3RUcmFjZXIoKTtcbiAgICB0aGlzLndhbGxldC5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcblxuICAgIGNvbnN0IHBheW1lbnRJbnRlbnQ6IHsgaW50ZW50OiBMaWdodG5pbmdQYXltZW50SW50ZW50IH0gPSB7XG4gICAgICBpbnRlbnQ6IHtcbiAgICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgICBvbmNoYWluUmVxdWVzdDoge1xuICAgICAgICAgIHJlY2lwaWVudHM6IHBhcmFtcy5yZWNpcGllbnRzLFxuICAgICAgICAgIHNhdHNQZXJWYnl0ZTogcGFyYW1zLnNhdHNQZXJWYnl0ZSxcbiAgICAgICAgICBudW1CbG9ja3M6IHBhcmFtcy5udW1CbG9ja3MsXG4gICAgICAgIH0sXG4gICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdENyZWF0ZSA9IChhd2FpdCB0aGlzLndhbGxldC5iaXRnb1xuICAgICAgLnBvc3QodGhpcy53YWxsZXQuYml0Z28udXJsKCcvd2FsbGV0LycgKyB0aGlzLndhbGxldC5pZCgpICsgJy90eHJlcXVlc3RzJywgMikpXG4gICAgICAuc2VuZCh0LnR5cGUoeyBpbnRlbnQ6IExpZ2h0bmluZ1BheW1lbnRJbnRlbnQgfSkuZW5jb2RlKHBheW1lbnRJbnRlbnQpKVxuICAgICAgLnJlc3VsdCgpKSBhcyBUeFJlcXVlc3Q7XG5cbiAgICBpZiAoXG4gICAgICAhdHJhbnNhY3Rpb25SZXF1ZXN0Q3JlYXRlLnRyYW5zYWN0aW9ucyB8fFxuICAgICAgdHJhbnNhY3Rpb25SZXF1ZXN0Q3JlYXRlLnRyYW5zYWN0aW9ucy5sZW5ndGggPT09IDAgfHxcbiAgICAgICF0cmFuc2FjdGlvblJlcXVlc3RDcmVhdGUudHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4SGV4XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNlcmlhbGl6ZWQgdHhIZXggaXMgbWlzc2luZ2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHdhbGxldERhdGEgPSB0aGlzLndhbGxldC50b0pTT04oKTtcbiAgICBpZiAoIXdhbGxldERhdGEuY29pblNwZWNpZmljLndhdGNoT25seUFjY291bnRzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHdhbGxldCBpcyBtaXNzaW5nIHdhdGNoIG9ubHkgYWNjb3VudHNgKTtcbiAgICB9XG5cbiAgICBjb25zdCB3YXRjaE9ubHlBY2NvdW50RGV0YWlscyA9IGRlY29kZU9yRWxzZShcbiAgICAgIFdhdGNoT25seS5uYW1lLFxuICAgICAgV2F0Y2hPbmx5LFxuICAgICAgd2FsbGV0RGF0YS5jb2luU3BlY2lmaWMud2F0Y2hPbmx5QWNjb3VudHMsXG4gICAgICAoZXJyb3JzKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB3YXRjaCBvbmx5IGFjY291bnRzLCBlcnJvcjogJHtlcnJvcnN9YCk7XG4gICAgICB9XG4gICAgKTtcbiAgICBjb25zdCBuZXR3b3JrID0gZ2V0VXR4b2xpYk5ldHdvcmsodGhpcy53YWxsZXQuY29pbigpKTtcblxuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhcbiAgICAgICAgdHJhbnNhY3Rpb25SZXF1ZXN0Q3JlYXRlLnRyYW5zYWN0aW9uc1swXS51bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeEhleCxcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgcGFyYW1zLnJlY2lwaWVudHMsXG4gICAgICAgIHdhdGNoT25seUFjY291bnREZXRhaWxzLmFjY291bnRzXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yIHZhbGlkYXRpbmcgd2l0aGRyYXcgcHNidDogJHtlcnJ9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyB1c2VyQXV0aEtleSB9ID0gYXdhaXQgZ2V0TGlnaHRuaW5nQXV0aEtleWNoYWlucyh0aGlzLndhbGxldCk7XG4gICAgY29uc3QgdXNlckF1dGhLZXlFbmNyeXB0ZWRQcnYgPSB1c2VyQXV0aEtleS5lbmNyeXB0ZWRQcnY7XG4gICAgaWYgKCF1c2VyQXV0aEtleUVuY3J5cHRlZFBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1c2VyIGF1dGgga2V5IGlzIG1pc3NpbmcgZW5jcnlwdGVkIHByaXZhdGUga2V5YCk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZU1lc3NhZ2VTaWduYXR1cmUoXG4gICAgICB0cmFuc2FjdGlvblJlcXVlc3RDcmVhdGUudHJhbnNhY3Rpb25zWzBdLnVuc2lnbmVkVHguc2VyaWFsaXplZFR4SGV4LFxuICAgICAgYXdhaXQgdGhpcy53YWxsZXQuYml0Z28uZGVjcnlwdCh7IHBhc3N3b3JkOiBwYXJhbXMucGFzc3BocmFzZSwgaW5wdXQ6IHVzZXJBdXRoS2V5RW5jcnlwdGVkUHJ2IH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdFdpdGhTaWduYXR1cmUgPSAoYXdhaXQgdGhpcy53YWxsZXQuYml0Z29cbiAgICAgIC5wdXQoXG4gICAgICAgIHRoaXMud2FsbGV0LmJpdGdvLnVybChcbiAgICAgICAgICAnL3dhbGxldC8nICsgdGhpcy53YWxsZXQuaWQoKSArICcvdHhyZXF1ZXN0cy8nICsgdHJhbnNhY3Rpb25SZXF1ZXN0Q3JlYXRlLnR4UmVxdWVzdElkICsgJy9jb2luU3BlY2lmaWMnLFxuICAgICAgICAgIDJcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnNlbmQoe1xuICAgICAgICB1bnNpZ25lZENvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIGNvaW46IHRoaXMud2FsbGV0LmJhc2VDb2luLmdldENoYWluKCksXG4gICAgICAgICAgZGF0YTogeyBzaWduYXR1cmUgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucmVzdWx0KCkpIGFzIFR4UmVxdWVzdDtcblxuICAgIGlmICh0cmFuc2FjdGlvblJlcXVlc3RXaXRoU2lnbmF0dXJlLnN0YXRlID09PSAncGVuZGluZ0FwcHJvdmFsJykge1xuICAgICAgY29uc3QgcGVuZGluZ0FwcHJvdmFscyA9IG5ldyBQZW5kaW5nQXBwcm92YWxzKHRoaXMud2FsbGV0LmJpdGdvLCB0aGlzLndhbGxldC5iYXNlQ29pbik7XG4gICAgICBjb25zdCBwZW5kaW5nQXBwcm92YWwgPSBhd2FpdCBwZW5kaW5nQXBwcm92YWxzLmdldCh7IGlkOiB0cmFuc2FjdGlvblJlcXVlc3RXaXRoU2lnbmF0dXJlLnBlbmRpbmdBcHByb3ZhbElkIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGVuZGluZ0FwcHJvdmFsOiBwZW5kaW5nQXBwcm92YWwudG9KU09OKCksXG4gICAgICAgIHR4UmVxdWVzdElkOiB0cmFuc2FjdGlvblJlcXVlc3RXaXRoU2lnbmF0dXJlLnR4UmVxdWVzdElkLFxuICAgICAgICB0eFJlcXVlc3RTdGF0ZTogdHJhbnNhY3Rpb25SZXF1ZXN0V2l0aFNpZ25hdHVyZS5zdGF0ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy53YWxsZXQuYml0Z29cbiAgICAgIC5wb3N0KFxuICAgICAgICB0aGlzLndhbGxldC5iaXRnby51cmwoXG4gICAgICAgICAgJy93YWxsZXQvJyArIHRoaXMud2FsbGV0LmlkKCkgKyAnL3R4cmVxdWVzdHMvJyArIHRyYW5zYWN0aW9uUmVxdWVzdFdpdGhTaWduYXR1cmUudHhSZXF1ZXN0SWQgKyAnL3RyYW5zZmVycycsXG4gICAgICAgICAgMlxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc2VuZCgpXG4gICAgICAucmVzdWx0KCk7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3RTZW5kID0gYXdhaXQgY29tbW9uVHNzTWV0aG9kcy5zZW5kVHhSZXF1ZXN0KFxuICAgICAgdGhpcy53YWxsZXQuYml0Z28sXG4gICAgICB0aGlzLndhbGxldC5pZCgpLFxuICAgICAgdHJhbnNhY3Rpb25SZXF1ZXN0V2l0aFNpZ25hdHVyZS50eFJlcXVlc3RJZCxcbiAgICAgIFJlcXVlc3RUeXBlLnR4LFxuICAgICAgcmVxSWRcbiAgICApO1xuXG4gICAgY29uc3QgY29pblNwZWNpZmljID0gdHJhbnNhY3Rpb25SZXF1ZXN0U2VuZC50cmFuc2FjdGlvbnM/LlswXT8udW5zaWduZWRUeD8uY29pblNwZWNpZmljO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR4UmVxdWVzdElkOiB0cmFuc2FjdGlvblJlcXVlc3RXaXRoU2lnbmF0dXJlLnR4UmVxdWVzdElkLFxuICAgICAgdHhSZXF1ZXN0U3RhdGU6IHRyYW5zYWN0aW9uUmVxdWVzdFNlbmQuc3RhdGUsXG4gICAgICB3aXRoZHJhd1N0YXR1czpcbiAgICAgICAgY29pblNwZWNpZmljICYmICdzdGF0dXMnIGluIGNvaW5TcGVjaWZpY1xuICAgICAgICAgID8gdC5leGFjdChMbmRDcmVhdGVXaXRoZHJhd1Jlc3BvbnNlKS5lbmNvZGUoY29pblNwZWNpZmljIGFzIExuZENyZWF0ZVdpdGhkcmF3UmVzcG9uc2UpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldFBheW1lbnQocGF5bWVudElkOiBzdHJpbmcpOiBQcm9taXNlPFBheW1lbnRJbmZvPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndhbGxldC5iaXRnb1xuICAgICAgLmdldCh0aGlzLndhbGxldC5iaXRnby51cmwoYC93YWxsZXQvJHt0aGlzLndhbGxldC5pZCgpfS9saWdodG5pbmcvcGF5bWVudC8ke3BheW1lbnRJZH1gLCAyKSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKFBheW1lbnRJbmZvLm5hbWUsIFBheW1lbnRJbmZvLCByZXNwb25zZSwgKGVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGF5bWVudCByZXNwb25zZTogJHtlcnJvcn1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RQYXltZW50cyhwYXJhbXM6IFBheW1lbnRRdWVyeSk6IFByb21pc2U8TGlzdFBheW1lbnRzUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMud2FsbGV0LmJpdGdvXG4gICAgICAuZ2V0KHRoaXMud2FsbGV0LmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L2xpZ2h0bmluZy9wYXltZW50YCwgMikpXG4gICAgICAucXVlcnkoUGF5bWVudFF1ZXJ5LmVuY29kZShwYXJhbXMpKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoTGlzdFBheW1lbnRzUmVzcG9uc2UubmFtZSwgTGlzdFBheW1lbnRzUmVzcG9uc2UsIHJlc3BvbnNlLCAoZXJyb3IpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYXltZW50IGxpc3QgcmVzcG9uc2U6ICR7ZXJyb3J9YCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRUcmFuc2FjdGlvbih0eElkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLndhbGxldC5iaXRnb1xuICAgICAgLmdldCh0aGlzLndhbGxldC5iaXRnby51cmwoYC93YWxsZXQvJHt0aGlzLndhbGxldC5pZCgpfS9saWdodG5pbmcvdHJhbnNhY3Rpb24vJHt0eElkfWAsIDIpKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoVHJhbnNhY3Rpb24ubmFtZSwgVHJhbnNhY3Rpb24sIHJlc3BvbnNlLCAoZXJyb3IpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2FjdGlvbiByZXNwb25zZTogJHtlcnJvcn1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RUcmFuc2FjdGlvbnMocGFyYW1zOiBUcmFuc2FjdGlvblF1ZXJ5KTogUHJvbWlzZTxMaXN0VHJhbnNhY3Rpb25zUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMud2FsbGV0LmJpdGdvXG4gICAgICAuZ2V0KHRoaXMud2FsbGV0LmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L2xpZ2h0bmluZy90cmFuc2FjdGlvbmAsIDIpKVxuICAgICAgLnF1ZXJ5KFRyYW5zYWN0aW9uUXVlcnkuZW5jb2RlKHBhcmFtcykpXG4gICAgICAucmVzdWx0KCk7XG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShMaXN0VHJhbnNhY3Rpb25zUmVzcG9uc2UubmFtZSwgTGlzdFRyYW5zYWN0aW9uc1Jlc3BvbnNlLCByZXNwb25zZSwgKGVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHJhbnNhY3Rpb24gbGlzdCByZXNwb25zZTogJHtlcnJvcn1gKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as sdkcore from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BackupResponse, UpdateLightningWalletClientRequest } from '../codecs';
|
|
3
|
+
import { ILightningWallet, LightningWallet } from './lightning';
|
|
4
|
+
/**
|
|
5
|
+
* Updates the coin-specific configuration for a Lightning Wallet.
|
|
6
|
+
*
|
|
7
|
+
* @param {Wallet} wallet - Wallet.
|
|
8
|
+
* @param {UpdateLightningWalletClientRequest} params - The parameters containing the updated wallet-specific details.
|
|
9
|
+
* - `encryptedSignerMacaroon` (optional): This macaroon is used by the watch-only node to ask the signer node to sign transactions.
|
|
10
|
+
* Encrypted with ECDH secret key from private key of wallet's user auth key and public key of lightning service.
|
|
11
|
+
* - `encryptedSignerAdminMacaroon` (optional): Generated when initializing the wallet of the signer node.
|
|
12
|
+
* Encrypted with client's wallet passphrase.
|
|
13
|
+
* - `signerHost` (optional): The host address of the Lightning signer node.
|
|
14
|
+
* - `encryptedSignerTlsKey` (optional): The wallet passphrase encrypted TLS key of the signer.
|
|
15
|
+
* - `passphrase` (required): The wallet passphrase.
|
|
16
|
+
* - `signerTlsCert` (optional): The TLS certificate of the signer.
|
|
17
|
+
* - `watchOnlyAccounts` (optional): These are the accounts used to initialize the watch-only wallet.
|
|
18
|
+
* @returns {Promise<unknown>} A promise resolving to the updated wallet response or throwing an error if the update fails.
|
|
19
|
+
*/
|
|
20
|
+
export declare function updateWalletCoinSpecific(wallet: sdkcore.IWallet, params: UpdateLightningWalletClientRequest): Promise<unknown>;
|
|
21
|
+
export interface ISelfCustodialLightningWallet extends ILightningWallet {
|
|
22
|
+
/**
|
|
23
|
+
* Get the channel backup for the given wallet.
|
|
24
|
+
* @returns {Promise<BackupResponse>} A promise resolving to the channel backup
|
|
25
|
+
*/
|
|
26
|
+
getChannelBackup(): Promise<BackupResponse>;
|
|
27
|
+
}
|
|
28
|
+
export declare class SelfCustodialLightningWallet extends LightningWallet implements ISelfCustodialLightningWallet {
|
|
29
|
+
constructor(wallet: sdkcore.IWallet);
|
|
30
|
+
getChannelBackup(): Promise<BackupResponse>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=selfCustodialLightning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selfCustodialLightning.d.ts","sourceRoot":"","sources":["../../../src/wallet/selfCustodialLightning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,kCAAkC,EAAyC,MAAM,WAAW,CAAC;AACtH,OAAO,EAA6B,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA+C3F;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,MAAM,EAAE,kCAAkC,GACzC,OAAO,CAAC,OAAO,CAAC,CAmClB;AAED,MAAM,WAAW,6BAA8B,SAAQ,gBAAgB;IACrE;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7C;AAED,qBAAa,4BAA6B,SAAQ,eAAgB,YAAW,6BAA6B;gBAC5F,MAAM,EAAE,OAAO,CAAC,OAAO;IAO7B,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;CAQlD"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SelfCustodialLightningWallet = void 0;
|
|
37
|
+
exports.updateWalletCoinSpecific = updateWalletCoinSpecific;
|
|
38
|
+
const sdkcore = __importStar(require("@bitgo-beta/sdk-core"));
|
|
39
|
+
const codecs_1 = require("../codecs");
|
|
40
|
+
const lightning_1 = require("./lightning");
|
|
41
|
+
const lightning_2 = require("../lightning");
|
|
42
|
+
const t = __importStar(require("io-ts"));
|
|
43
|
+
async function encryptWalletUpdateRequest(wallet, params, userAuthKeyEncryptedPrv) {
|
|
44
|
+
const coinName = wallet.coin();
|
|
45
|
+
const requestWithEncryption = {
|
|
46
|
+
...params,
|
|
47
|
+
};
|
|
48
|
+
const userAuthXprv = await wallet.bitgo.decrypt({
|
|
49
|
+
password: params.passphrase,
|
|
50
|
+
input: userAuthKeyEncryptedPrv,
|
|
51
|
+
});
|
|
52
|
+
if (params.signerTlsKey) {
|
|
53
|
+
requestWithEncryption.encryptedSignerTlsKey = await wallet.bitgo.encrypt({
|
|
54
|
+
password: params.passphrase,
|
|
55
|
+
input: params.signerTlsKey,
|
|
56
|
+
encryptionVersion: params.encryptionVersion,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (params.signerAdminMacaroon) {
|
|
60
|
+
requestWithEncryption.encryptedSignerAdminMacaroon = await wallet.bitgo.encrypt({
|
|
61
|
+
password: params.passphrase,
|
|
62
|
+
input: params.signerAdminMacaroon,
|
|
63
|
+
encryptionVersion: params.encryptionVersion,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (params.signerMacaroon) {
|
|
67
|
+
requestWithEncryption.encryptedSignerMacaroon = await wallet.bitgo.encrypt({
|
|
68
|
+
password: (0, lightning_2.deriveLightningServiceSharedSecret)(coinName, userAuthXprv).toString('hex'),
|
|
69
|
+
input: params.signerMacaroon,
|
|
70
|
+
encryptionVersion: params.encryptionVersion,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return t.exact(codecs_1.UpdateLightningWalletEncryptedRequest).encode(requestWithEncryption);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Updates the coin-specific configuration for a Lightning Wallet.
|
|
77
|
+
*
|
|
78
|
+
* @param {Wallet} wallet - Wallet.
|
|
79
|
+
* @param {UpdateLightningWalletClientRequest} params - The parameters containing the updated wallet-specific details.
|
|
80
|
+
* - `encryptedSignerMacaroon` (optional): This macaroon is used by the watch-only node to ask the signer node to sign transactions.
|
|
81
|
+
* Encrypted with ECDH secret key from private key of wallet's user auth key and public key of lightning service.
|
|
82
|
+
* - `encryptedSignerAdminMacaroon` (optional): Generated when initializing the wallet of the signer node.
|
|
83
|
+
* Encrypted with client's wallet passphrase.
|
|
84
|
+
* - `signerHost` (optional): The host address of the Lightning signer node.
|
|
85
|
+
* - `encryptedSignerTlsKey` (optional): The wallet passphrase encrypted TLS key of the signer.
|
|
86
|
+
* - `passphrase` (required): The wallet passphrase.
|
|
87
|
+
* - `signerTlsCert` (optional): The TLS certificate of the signer.
|
|
88
|
+
* - `watchOnlyAccounts` (optional): These are the accounts used to initialize the watch-only wallet.
|
|
89
|
+
* @returns {Promise<unknown>} A promise resolving to the updated wallet response or throwing an error if the update fails.
|
|
90
|
+
*/
|
|
91
|
+
async function updateWalletCoinSpecific(wallet, params) {
|
|
92
|
+
if (!(0, lightning_2.isLightningCoinName)(wallet.coin())) {
|
|
93
|
+
throw new Error(`cant update lightning wallet coin specific for coin ${wallet.subType()}`);
|
|
94
|
+
}
|
|
95
|
+
if (wallet.subType() !== 'lightningSelfCustody') {
|
|
96
|
+
throw new Error(`cant update lightning wallet coin specific for wallet type ${wallet.subType()}`);
|
|
97
|
+
}
|
|
98
|
+
sdkcore.decodeOrElse(codecs_1.UpdateLightningWalletClientRequest.name, codecs_1.UpdateLightningWalletClientRequest, params, (errors) => {
|
|
99
|
+
// DON'T throw errors from decodeOrElse. It could leak sensitive information.
|
|
100
|
+
throw new Error(`Invalid params for lightning specific update wallet`);
|
|
101
|
+
});
|
|
102
|
+
const { userAuthKey } = await (0, lightning_1.getLightningAuthKeychains)(wallet);
|
|
103
|
+
const userAuthKeyEncryptedPrv = userAuthKey.encryptedPrv;
|
|
104
|
+
if (!userAuthKeyEncryptedPrv) {
|
|
105
|
+
throw new Error(`user auth key is missing encrypted private key`);
|
|
106
|
+
}
|
|
107
|
+
const updateRequestWithEncryption = await encryptWalletUpdateRequest(wallet, params, userAuthKeyEncryptedPrv);
|
|
108
|
+
const signature = (0, lightning_2.createMessageSignature)(updateRequestWithEncryption, await wallet.bitgo.decrypt({ password: params.passphrase, input: userAuthKeyEncryptedPrv }));
|
|
109
|
+
const coinSpecific = {
|
|
110
|
+
[wallet.coin()]: {
|
|
111
|
+
signedRequest: updateRequestWithEncryption,
|
|
112
|
+
signature,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
return await wallet.bitgo.put(wallet.url()).send({ coinSpecific }).result();
|
|
116
|
+
}
|
|
117
|
+
class SelfCustodialLightningWallet extends lightning_1.LightningWallet {
|
|
118
|
+
constructor(wallet) {
|
|
119
|
+
super(wallet);
|
|
120
|
+
if (wallet.subType() !== 'lightningSelfCustody') {
|
|
121
|
+
throw new Error(`Invalid lightning wallet type for self custodial lightning: ${wallet.subType()}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async getChannelBackup() {
|
|
125
|
+
const backupResponse = await this.wallet.bitgo
|
|
126
|
+
.get(this.wallet.baseCoin.url(`/wallet/${this.wallet.id()}/lightning/backup`))
|
|
127
|
+
.result();
|
|
128
|
+
return sdkcore.decodeOrElse(codecs_1.BackupResponse.name, codecs_1.BackupResponse, backupResponse, (error) => {
|
|
129
|
+
throw new Error(`Invalid backup response: ${error}`);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.SelfCustodialLightningWallet = SelfCustodialLightningWallet;
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZkN1c3RvZGlhbExpZ2h0bmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93YWxsZXQvc2VsZkN1c3RvZGlhbExpZ2h0bmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRUEsNERBc0NDO0FBdkdELDhEQUFnRDtBQUNoRCxzQ0FBc0g7QUFDdEgsMkNBQTJGO0FBQzNGLDRDQUErRztBQUMvRyx5Q0FBMkI7QUFFM0IsS0FBSyxVQUFVLDBCQUEwQixDQUN2QyxNQUF1QixFQUN2QixNQUEwQyxFQUMxQyx1QkFBK0I7SUFFL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBd0IsQ0FBQztJQUVyRCxNQUFNLHFCQUFxQixHQUF3RjtRQUNqSCxHQUFHLE1BQU07S0FDVixDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QyxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVU7UUFDM0IsS0FBSyxFQUFFLHVCQUF1QjtLQUMvQixDQUFDLENBQUM7SUFFSCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixxQkFBcUIsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3ZFLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUMzQixLQUFLLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDMUIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtTQUM1QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixxQkFBcUIsQ0FBQyw0QkFBNEIsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzlFLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVTtZ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K0QsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRyxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7YUFDM0MsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7YUFDN0UsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsdUJBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQWMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN6RixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBaEJELG9FQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNka2NvcmUgZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFja3VwUmVzcG9uc2UsIFVwZGF0ZUxpZ2h0bmluZ1dhbGxldENsaWVudFJlcXVlc3QsIFVwZGF0ZUxpZ2h0bmluZ1dhbGxldEVuY3J5cHRlZFJlcXVlc3QgfSBmcm9tICcuLi9jb2RlY3MnO1xuaW1wb3J0IHsgZ2V0TGlnaHRuaW5nQXV0aEtleWNoYWlucywgSUxpZ2h0bmluZ1dhbGxldCwgTGlnaHRuaW5nV2FsbGV0IH0gZnJvbSAnLi9saWdodG5pbmcnO1xuaW1wb3J0IHsgY3JlYXRlTWVzc2FnZVNpZ25hdHVyZSwgZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldCwgaXNMaWdodG5pbmdDb2luTmFtZSB9IGZyb20gJy4uL2xpZ2h0bmluZyc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcblxuYXN5bmMgZnVuY3Rpb24gZW5jcnlwdFdhbGxldFVwZGF0ZVJlcXVlc3QoXG4gIHdhbGxldDogc2RrY29yZS5JV2FsbGV0LFxuICBwYXJhbXM6IFVwZGF0ZUxpZ2h0bmluZ1dhbGxldENsaWVudFJlcXVlc3QsXG4gIHVzZXJBdXRoS2V5RW5jcnlwdGVkUHJ2OiBzdHJpbmdcbik6IFByb21pc2U8VXBkYXRlTGlnaHRuaW5nV2FsbGV0RW5jcnlwdGVkUmVxdWVzdD4ge1xuICBjb25zdCBjb2luTmFtZSA9IHdhbGxldC5jb2luKCkgYXMgJ3RsbmJ0YycgfCAnbG5idGMnO1xuXG4gIGNvbnN0IHJlcXVlc3RXaXRoRW5jcnlwdGlvbjogUGFydGlhbDxVcGRhdGVMaWdodG5pbmdXYWxsZXRDbGllbnRSZXF1ZXN0ICYgVXBkYXRlTGlnaHRuaW5nV2FsbGV0RW5jcnlwdGVkUmVxdWVzdD4gPSB7XG4gICAgLi4ucGFyYW1zLFxuICB9O1xuXG4gIGNvbnN0IHVzZXJBdXRoWHBydiA9IGF3YWl0IHdhbGxldC5iaXRnby5kZWNyeXB0KHtcbiAgICBwYXNzd29yZDogcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgaW5wdXQ6IHVzZXJBdXRoS2V5RW5jcnlwdGVkUHJ2LFxuICB9KTtcblxuICBpZiAocGFyYW1zLnNpZ25lclRsc0tleSkge1xuICAgIHJlcXVlc3RXaXRoRW5jcnlwdGlvbi5lbmNyeXB0ZWRTaWduZXJUbHNLZXkgPSBhd2FpdCB3YWxsZXQuYml0Z28uZW5jcnlwdCh7XG4gICAgICBwYXNzd29yZDogcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICBpbnB1dDogcGFyYW1zLnNpZ25lclRsc0tleSxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgfSk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNpZ25lckFkbWluTWFjYXJvb24pIHtcbiAgICByZXF1ZXN0V2l0aEVuY3J5cHRpb24uZW5jcnlwdGVkU2lnbmVyQWRtaW5NYWNhcm9vbiA9IGF3YWl0IHdhbGxldC5iaXRnby5lbmNyeXB0KHtcbiAgICAgIHBhc3N3b3JkOiBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIGlucHV0OiBwYXJhbXMuc2lnbmVyQWRtaW5NYWNhcm9vbixcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgfSk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNpZ25lck1hY2Fyb29uKSB7XG4gICAgcmVxdWVzdFdpdGhFbmNyeXB0aW9uLmVuY3J5cHRlZFNpZ25lck1hY2Fyb29uID0gYXdhaXQgd2FsbGV0LmJpdGdvLmVuY3J5cHQoe1xuICAgICAgcGFzc3dvcmQ6IGRlcml2ZUxpZ2h0bmluZ1NlcnZpY2VTaGFyZWRTZWNyZXQoY29pbk5hbWUsIHVzZXJBdXRoWHBydikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgaW5wdXQ6IHBhcmFtcy5zaWduZXJNYWNhcm9vbixcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdC5leGFjdChVcGRhdGVMaWdodG5pbmdXYWxsZXRFbmNyeXB0ZWRSZXF1ZXN0KS5lbmNvZGUocmVxdWVzdFdpdGhFbmNyeXB0aW9uKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBjb2luLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgTGlnaHRuaW5nIFdhbGxldC5cbiAqXG4gKiBAcGFyYW0ge1dhbGxldH0gd2FsbGV0IC0gV2FsbGV0LlxuICogQHBhcmFtIHtVcGRhdGVMaWdodG5pbmdXYWxsZXRDbGllbnRSZXF1ZXN0fSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBjb250YWluaW5nIHRoZSB1cGRhdGVkIHdhbGxldC1zcGVjaWZpYyBkZXRhaWxzLlxuICogICAtIGBlbmNyeXB0ZWRTaWduZXJNYWNhcm9vbmAgKG9wdGlvbmFsKTogVGhpcyBtYWNhcm9vbiBpcyB1c2VkIGJ5IHRoZSB3YXRjaC1vbmx5IG5vZGUgdG8gYXNrIHRoZSBzaWduZXIgbm9kZSB0byBzaWduIHRyYW5zYWN0aW9ucy5cbiAqICAgICBFbmNyeXB0ZWQgd2l0aCBFQ0RIIHNlY3JldCBrZXkgZnJvbSBwcml2YXRlIGtleSBvZiB3YWxsZXQncyB1c2VyIGF1dGgga2V5IGFuZCBwdWJsaWMga2V5IG9mIGxpZ2h0bmluZyBzZXJ2aWNlLlxuICogICAtIGBlbmNyeXB0ZWRTaWduZXJBZG1pbk1hY2Fyb29uYCAob3B0aW9uYWwpOiBHZW5lcmF0ZWQgd2hlbiBpbml0aWFsaXppbmcgdGhlIHdhbGxldCBvZiB0aGUgc2lnbmVyIG5vZGUuXG4gKiAgICAgRW5jcnlwdGVkIHdpdGggY2xpZW50J3Mgd2FsbGV0IHBhc3NwaHJhc2UuXG4gKiAgIC0gYHNpZ25lckhvc3RgIChvcHRpb25hbCk6IFRoZSBob3N0IGFkZHJlc3Mgb2YgdGhlIExpZ2h0bmluZyBzaWduZXIgbm9kZS5cbiAqICAgLSBgZW5jcnlwdGVkU2lnbmVyVGxzS2V5YCAob3B0aW9uYWwpOiBUaGUgd2FsbGV0IHBhc3NwaHJhc2UgZW5jcnlwdGVkIFRMUyBrZXkgb2YgdGhlIHNpZ25lci5cbiAqICAgLSBgcGFzc3BocmFzZWAgKHJlcXVpcmVkKTogVGhlIHdhbGxldCBwYXNzcGhyYXNlLlxuICogICAtIGBzaWduZXJUbHNDZXJ0YCAob3B0aW9uYWwpOiBUaGUgVExTIGNlcnRpZmljYXRlIG9mIHRoZSBzaWduZXIuXG4gKiAgIC0gYHdhdGNoT25seUFjY291bnRzYCAob3B0aW9uYWwpOiBUaGVzZSBhcmUgdGhlIGFjY291bnRzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgd2F0Y2gtb25seSB3YWxsZXQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx1bmtub3duPn0gQSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgdXBkYXRlZCB3YWxsZXQgcmVzcG9uc2Ugb3IgdGhyb3dpbmcgYW4gZXJyb3IgaWYgdGhlIHVwZGF0ZSBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVdhbGxldENvaW5TcGVjaWZpYyhcbiAgd2FsbGV0OiBzZGtjb3JlLklXYWxsZXQsXG4gIHBhcmFtczogVXBkYXRlTGlnaHRuaW5nV2FsbGV0Q2xpZW50UmVxdWVzdFxuKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGlmICghaXNMaWdodG5pbmdDb2luTmFtZSh3YWxsZXQuY29pbigpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2FudCB1cGRhdGUgbGlnaHRuaW5nIHdhbGxldCBjb2luIHNwZWNpZmljIGZvciBjb2luICR7d2FsbGV0LnN1YlR5cGUoKX1gKTtcbiAgfVxuICBpZiAod2FsbGV0LnN1YlR5cGUoKSAhPT0gJ2xpZ2h0bmluZ1NlbGZDdXN0b2R5Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2FudCB1cGRhdGUgbGlnaHRuaW5nIHdhbGxldCBjb2luIHNwZWNpZmljIGZvciB3YWxsZXQgdHlwZSAke3dhbGxldC5zdWJUeXBlKCl9YCk7XG4gIH1cblxuICBzZGtjb3JlLmRlY29kZU9yRWxzZShcbiAgICBVcGRhdGVMaWdodG5pbmdXYWxsZXRDbGllbnRSZXF1ZXN0Lm5hbWUsXG4gICAgVXBkYXRlTGlnaHRuaW5nV2FsbGV0Q2xpZW50UmVxdWVzdCxcbiAgICBwYXJhbXMsXG4gICAgKGVycm9ycykgPT4ge1xuICAgICAgLy8gRE9OJ1QgdGhyb3cgZXJyb3JzIGZyb20gZGVjb2RlT3JFbHNlLiBJdCBjb3VsZCBsZWFrIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYXJhbXMgZm9yIGxpZ2h0bmluZyBzcGVjaWZpYyB1cGRhdGUgd2FsbGV0YCk7XG4gICAgfVxuICApO1xuXG4gIGNvbnN0IHsgdXNlckF1dGhLZXkgfSA9IGF3YWl0IGdldExpZ2h0bmluZ0F1dGhLZXljaGFpbnMod2FsbGV0KTtcbiAgY29uc3QgdXNlckF1dGhLZXlFbmNyeXB0ZWRQcnYgPSB1c2VyQXV0aEtleS5lbmNyeXB0ZWRQcnY7XG4gIGlmICghdXNlckF1dGhLZXlFbmNyeXB0ZWRQcnYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVzZXIgYXV0aCBrZXkgaXMgbWlzc2luZyBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXlgKTtcbiAgfVxuICBjb25zdCB1cGRhdGVSZXF1ZXN0V2l0aEVuY3J5cHRpb24gPSBhd2FpdCBlbmNyeXB0V2FsbGV0VXBkYXRlUmVxdWVzdCh3YWxsZXQsIHBhcmFtcywgdXNlckF1dGhLZXlFbmNyeXB0ZWRQcnYpO1xuICBjb25zdCBzaWduYXR1cmUgPSBjcmVhdGVNZXNzYWdlU2lnbmF0dXJlKFxuICAgIHVwZGF0ZVJlcXVlc3RXaXRoRW5jcnlwdGlvbixcbiAgICBhd2FpdCB3YWxsZXQuYml0Z28uZGVjcnlwdCh7IHBhc3N3b3JkOiBwYXJhbXMucGFzc3BocmFzZSwgaW5wdXQ6IHVzZXJBdXRoS2V5RW5jcnlwdGVkUHJ2IH0pXG4gICk7XG4gIGNvbnN0IGNvaW5TcGVjaWZpYyA9IHtcbiAgICBbd2FsbGV0LmNvaW4oKV06IHtcbiAgICAgIHNpZ25lZFJlcXVlc3Q6IHVwZGF0ZVJlcXVlc3RXaXRoRW5jcnlwdGlvbixcbiAgICAgIHNpZ25hdHVyZSxcbiAgICB9LFxuICB9O1xuICByZXR1cm4gYXdhaXQgd2FsbGV0LmJpdGdvLnB1dCh3YWxsZXQudXJsKCkpLnNlbmQoeyBjb2luU3BlY2lmaWMgfSkucmVzdWx0KCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlbGZDdXN0b2RpYWxMaWdodG5pbmdXYWxsZXQgZXh0ZW5kcyBJTGlnaHRuaW5nV2FsbGV0IHtcbiAgLyoqXG4gICAqIEdldCB0aGUgY2hhbm5lbCBiYWNrdXAgZm9yIHRoZSBnaXZlbiB3YWxsZXQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJhY2t1cFJlc3BvbnNlPn0gQSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgY2hhbm5lbCBiYWNrdXBcbiAgICovXG4gIGdldENoYW5uZWxCYWNrdXAoKTogUHJvbWlzZTxCYWNrdXBSZXNwb25zZT47XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxmQ3VzdG9kaWFsTGlnaHRuaW5nV2FsbGV0IGV4dGVuZHMgTGlnaHRuaW5nV2FsbGV0IGltcGxlbWVudHMgSVNlbGZDdXN0b2RpYWxMaWdodG5pbmdXYWxsZXQge1xuICBjb25zdHJ1Y3Rvcih3YWxsZXQ6IHNka2NvcmUuSVdhbGxldCkge1xuICAgIHN1cGVyKHdhbGxldCk7XG4gICAgaWYgKHdhbGxldC5zdWJUeXBlKCkgIT09ICdsaWdodG5pbmdTZWxmQ3VzdG9keScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsaWdodG5pbmcgd2FsbGV0IHR5cGUgZm9yIHNlbGYgY3VzdG9kaWFsIGxpZ2h0bmluZzogJHt3YWxsZXQuc3ViVHlwZSgpfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldENoYW5uZWxCYWNrdXAoKTogUHJvbWlzZTxCYWNrdXBSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJhY2t1cFJlc3BvbnNlID0gYXdhaXQgdGhpcy53YWxsZXQuYml0Z29cbiAgICAgIC5nZXQodGhpcy53YWxsZXQuYmFzZUNvaW4udXJsKGAvd2FsbGV0LyR7dGhpcy53YWxsZXQuaWQoKX0vbGlnaHRuaW5nL2JhY2t1cGApKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBzZGtjb3JlLmRlY29kZU9yRWxzZShCYWNrdXBSZXNwb25zZS5uYW1lLCBCYWNrdXBSZXNwb25zZSwgYmFja3VwUmVzcG9uc2UsIChlcnJvcikgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGJhY2t1cCByZXNwb25zZTogJHtlcnJvcn1gKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as sdkcore from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { ILightningWallet } from './lightning';
|
|
3
|
+
/**
|
|
4
|
+
* Returns custodial or self custodial lightning wallet depends on wallet type.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getLightningWallet(wallet: sdkcore.IWallet): ILightningWallet;
|
|
7
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/wallet/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAa5E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLightningWallet = getLightningWallet;
|
|
4
|
+
const selfCustodialLightning_1 = require("./selfCustodialLightning");
|
|
5
|
+
const custodialLightning_1 = require("./custodialLightning");
|
|
6
|
+
/**
|
|
7
|
+
* Returns custodial or self custodial lightning wallet depends on wallet type.
|
|
8
|
+
*/
|
|
9
|
+
function getLightningWallet(wallet) {
|
|
10
|
+
if (wallet.baseCoin.getFamily() !== 'lnbtc') {
|
|
11
|
+
throw new Error(`invalid coin for lightning wallet: ${wallet.baseCoin.getFamily()}`);
|
|
12
|
+
}
|
|
13
|
+
switch (wallet.subType()) {
|
|
14
|
+
case 'lightningCustody':
|
|
15
|
+
return new custodialLightning_1.CustodialLightningWallet(wallet);
|
|
16
|
+
case 'lightningSelfCustody':
|
|
17
|
+
return new selfCustodialLightning_1.SelfCustodialLightningWallet(wallet);
|
|
18
|
+
default:
|
|
19
|
+
throw new Error(`invalid wallet type ${wallet.subType()} for lightning coin`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dhbGxldC93YWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxnREFhQztBQXBCRCxxRUFBd0U7QUFDeEUsNkRBQWdFO0FBR2hFOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsTUFBdUI7SUFDeEQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxRQUFRLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLEtBQUssa0JBQWtCO1lBQ3JCLE9BQU8sSUFBSSw2Q0FBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxLQUFLLHNCQUFzQjtZQUN6QixPQUFPLElBQUkscURBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQ7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixNQUFNLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDbEYsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZGtjb3JlIGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFNlbGZDdXN0b2RpYWxMaWdodG5pbmdXYWxsZXQgfSBmcm9tICcuL3NlbGZDdXN0b2RpYWxMaWdodG5pbmcnO1xuaW1wb3J0IHsgQ3VzdG9kaWFsTGlnaHRuaW5nV2FsbGV0IH0gZnJvbSAnLi9jdXN0b2RpYWxMaWdodG5pbmcnO1xuaW1wb3J0IHsgSUxpZ2h0bmluZ1dhbGxldCB9IGZyb20gJy4vbGlnaHRuaW5nJztcblxuLyoqXG4gKiBSZXR1cm5zIGN1c3RvZGlhbCBvciBzZWxmIGN1c3RvZGlhbCBsaWdodG5pbmcgd2FsbGV0IGRlcGVuZHMgb24gd2FsbGV0IHR5cGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaWdodG5pbmdXYWxsZXQod2FsbGV0OiBzZGtjb3JlLklXYWxsZXQpOiBJTGlnaHRuaW5nV2FsbGV0IHtcbiAgaWYgKHdhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKSAhPT0gJ2xuYnRjJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjb2luIGZvciBsaWdodG5pbmcgd2FsbGV0OiAke3dhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKX1gKTtcbiAgfVxuXG4gIHN3aXRjaCAod2FsbGV0LnN1YlR5cGUoKSkge1xuICAgIGNhc2UgJ2xpZ2h0bmluZ0N1c3RvZHknOlxuICAgICAgcmV0dXJuIG5ldyBDdXN0b2RpYWxMaWdodG5pbmdXYWxsZXQod2FsbGV0KTtcbiAgICBjYXNlICdsaWdodG5pbmdTZWxmQ3VzdG9keSc6XG4gICAgICByZXR1cm4gbmV3IFNlbGZDdXN0b2RpYWxMaWdodG5pbmdXYWxsZXQod2FsbGV0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHdhbGxldCB0eXBlICR7d2FsbGV0LnN1YlR5cGUoKX0gZm9yIGxpZ2h0bmluZyBjb2luYCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/codecs.ts"],"names":[],"mappings":""}
|