@bitgo/sdk-core 27.7.0 → 27.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/src/bitgo/environments.d.ts +1 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +3 -1
- package/dist/src/bitgo/index.d.ts +1 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +2 -1
- package/dist/src/bitgo/lightning/custodial/iLightning.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/custodial/iLightning.js +110 -0
- package/dist/src/bitgo/lightning/custodial/index.d.ts +5 -0
- package/dist/src/bitgo/lightning/custodial/index.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/custodial/index.js +21 -0
- package/dist/src/bitgo/lightning/{lightning.d.ts → custodial/lightning.d.ts} +2 -2
- package/dist/src/bitgo/lightning/custodial/lightning.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/custodial/lightning.js +111 -0
- package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts +46 -0
- package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/custodial/lightningUtils.js +137 -0
- package/dist/src/bitgo/lightning/custodial/lnurlCodec.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/custodial/lnurlCodec.js +28 -0
- package/dist/src/bitgo/lightning/index.d.ts +2 -3
- package/dist/src/bitgo/lightning/index.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/index.js +3 -4
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +23 -37
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -1
- package/dist/src/bitgo/lightning/lightningUtils.js +41 -96
- package/dist/src/bitgo/lightning/signableJson.d.ts +17 -0
- package/dist/src/bitgo/lightning/signableJson.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/signableJson.js +30 -0
- package/dist/src/bitgo/lightning/signature.d.ts +22 -0
- package/dist/src/bitgo/lightning/signature.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/signature.js +60 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +6 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +71 -58
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +9 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +40 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +92 -8
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +0 -1
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/index.js +1 -2
- package/dist/src/bitgo/wallet/iWallet.d.ts +1 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +3 -3
- package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts +2 -0
- package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/test/unit/bitgo/lightning/lightningUtils.js +62 -0
- package/dist/test/unit/bitgo/lightning/signableJson.d.ts +2 -0
- package/dist/test/unit/bitgo/lightning/signableJson.d.ts.map +1 -0
- package/dist/test/unit/bitgo/lightning/signableJson.js +52 -0
- package/dist/test/unit/bitgo/lightning/signature.d.ts +2 -0
- package/dist/test/unit/bitgo/lightning/signature.d.ts.map +1 -0
- package/dist/test/unit/bitgo/lightning/signature.js +81 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/iLightning.js +0 -110
- package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightning.js +0 -111
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.d.ts +0 -164
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.d.ts.map +0 -1
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.js +0 -22
- /package/dist/src/bitgo/lightning/{iLightning.d.ts → custodial/iLightning.d.ts} +0 -0
- /package/dist/src/bitgo/lightning/{lnurlCodec.d.ts → custodial/lnurlCodec.d.ts} +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.parseLightningInvoice = exports.validateLnurlInvoice = exports.fetchLnurlPayInvoice = exports.decodeLnurlPay = void 0;
|
|
27
|
+
const bolt11 = __importStar(require("bolt11"));
|
|
28
|
+
const crypto = __importStar(require("crypto"));
|
|
29
|
+
const request = __importStar(require("superagent"));
|
|
30
|
+
const iLightning_1 = require("./iLightning");
|
|
31
|
+
const lnurlCodec_1 = require("./lnurlCodec");
|
|
32
|
+
const decode_1 = require("../../utils/decode");
|
|
33
|
+
/**
|
|
34
|
+
* Decodes an LNURL-pay request and makes an HTTP request to the decoded url
|
|
35
|
+
* to retrieve details for the requested payment.
|
|
36
|
+
* @param lnurl A bech32 encoded LNURL-pay request string
|
|
37
|
+
* @returns {DecodedLnurlPayRequest} An LNURL-pay request message specifying
|
|
38
|
+
* a min and max amount for the payment, metadata describing what the payment
|
|
39
|
+
* is for, and a callback that can be used to fetch a lightning invoice for
|
|
40
|
+
* the payment.
|
|
41
|
+
*/
|
|
42
|
+
async function decodeLnurlPay(lnurl) {
|
|
43
|
+
const url = (0, lnurlCodec_1.decodeLnurl)(lnurl);
|
|
44
|
+
const { body } = await request.get(url);
|
|
45
|
+
const decodedRes = (0, decode_1.decodeOrElse)(iLightning_1.LnurlPayResponse.name, iLightning_1.LnurlPayResponse, body, (errors) => {
|
|
46
|
+
throw new Error(`error(s) parsing lnurl response: ${errors}`);
|
|
47
|
+
});
|
|
48
|
+
const domain = new URL(url).hostname;
|
|
49
|
+
return {
|
|
50
|
+
...decodedRes,
|
|
51
|
+
domain,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
exports.decodeLnurlPay = decodeLnurlPay;
|
|
55
|
+
/**
|
|
56
|
+
* Fetches a lightning invoice from an LNURL-pay callback server for a specified
|
|
57
|
+
* amount of millisatoshis.
|
|
58
|
+
* @param params {LnurlPayParams} An object specifying an amount and a callback
|
|
59
|
+
* url with which to request a lightning invoice for an LNURL-pay request.
|
|
60
|
+
* @returns {string} A BOLT #11 encoded lightning invoice
|
|
61
|
+
*/
|
|
62
|
+
async function fetchLnurlPayInvoice(params) {
|
|
63
|
+
const { callback, millisatAmount, metadata } = params;
|
|
64
|
+
const { pr: invoice } = callback.includes('?')
|
|
65
|
+
? (await request.get(callback + `&amount=${millisatAmount}`)).body
|
|
66
|
+
: (await request.get(callback).query({ amount: millisatAmount })).body;
|
|
67
|
+
const parsedInvoice = parseLightningInvoice(invoice);
|
|
68
|
+
validateLnurlInvoice(parsedInvoice, millisatAmount, metadata);
|
|
69
|
+
return invoice;
|
|
70
|
+
}
|
|
71
|
+
exports.fetchLnurlPayInvoice = fetchLnurlPayInvoice;
|
|
72
|
+
function getNetworkForInvoice(invoice) {
|
|
73
|
+
if (invoice.startsWith('lntbs')) {
|
|
74
|
+
// signet invoices are not supported by our bolt11 dependency
|
|
75
|
+
// because the `tbs` prefix used for the invoice does not match the `tb`
|
|
76
|
+
// prefix used by on-chain signet addresses
|
|
77
|
+
// see: https://github.com/bitcoinjs/bolt11/pull/58#issuecomment-1106495709
|
|
78
|
+
// we can still decode the invoice however using a custom network
|
|
79
|
+
return {
|
|
80
|
+
bech32: 'tbs',
|
|
81
|
+
pubKeyHash: 0x6f,
|
|
82
|
+
scriptHash: 0xc4,
|
|
83
|
+
validWitnessVersions: [0, 1],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
|
|
90
|
+
* @param {number} amount - amount intended to pay for the invoice
|
|
91
|
+
* @param {string} metadata - metadata that is used to verify the fetched invoice
|
|
92
|
+
* @throws error for invoice that does not match with amount and metadata
|
|
93
|
+
*/
|
|
94
|
+
function validateLnurlInvoice(invoice, millisatAmount, metadata) {
|
|
95
|
+
const { millisatoshis, descriptionHash } = invoice;
|
|
96
|
+
if (millisatoshis !== millisatAmount) {
|
|
97
|
+
throw new Error('amount of invoice does not match with given amount');
|
|
98
|
+
}
|
|
99
|
+
const hash = crypto.createHash('sha256').update(metadata).digest('hex');
|
|
100
|
+
if (descriptionHash !== hash) {
|
|
101
|
+
throw new Error('invoice h tag does not match with hash of metadata');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.validateLnurlInvoice = validateLnurlInvoice;
|
|
105
|
+
/**
|
|
106
|
+
* @param {unknown} invoiceStr - a lightning invoice
|
|
107
|
+
* @return {ParsedLightningInvoice}
|
|
108
|
+
* @throws error for invalid lightning invoice
|
|
109
|
+
*/
|
|
110
|
+
function parseLightningInvoice(invoiceStr) {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
if (typeof invoiceStr !== 'string') {
|
|
113
|
+
throw new Error('invoice is malformed');
|
|
114
|
+
}
|
|
115
|
+
const decodedInvoice = bolt11.decode(invoiceStr, getNetworkForInvoice(invoiceStr));
|
|
116
|
+
if (decodedInvoice.network === undefined) {
|
|
117
|
+
throw new Error('invoice network is invalid');
|
|
118
|
+
}
|
|
119
|
+
const { millisatoshis, tags, payeeNodeKey } = decodedInvoice;
|
|
120
|
+
const paymentHash = (_a = tags.find((tag) => tag.tagName === 'payment_hash')) === null || _a === void 0 ? void 0 : _a.data;
|
|
121
|
+
if (paymentHash === undefined || typeof paymentHash !== 'string') {
|
|
122
|
+
throw new Error('invoice payment hash is invalid');
|
|
123
|
+
}
|
|
124
|
+
if (payeeNodeKey === undefined) {
|
|
125
|
+
throw new Error('invoice payee pub key is invalid');
|
|
126
|
+
}
|
|
127
|
+
if (millisatoshis === undefined) {
|
|
128
|
+
throw new Error('invoice millisatoshis amount is invalid');
|
|
129
|
+
}
|
|
130
|
+
const descriptionHash = (_b = tags.find((tag) => tag.tagName === 'purpose_commit_hash')) === null || _b === void 0 ? void 0 : _b.data;
|
|
131
|
+
if (descriptionHash !== undefined && typeof descriptionHash !== 'string') {
|
|
132
|
+
throw new Error('invoice description hash is invalid');
|
|
133
|
+
}
|
|
134
|
+
return { millisatoshis, paymentHash, payeeNodeKey, descriptionHash };
|
|
135
|
+
}
|
|
136
|
+
exports.parseLightningInvoice = parseLightningInvoice;
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2N1c3RvZGlhbC9saWdodG5pbmdVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQywrQ0FBaUM7QUFDakMsb0RBQXNDO0FBQ3RDLDZDQUF3RjtBQUN4Riw2Q0FBMkM7QUFDM0MsK0NBQWtEO0FBZ0JsRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxjQUFjLENBQUMsS0FBYTtJQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFBLHdCQUFXLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFBLHFCQUFZLEVBQUMsNkJBQWdCLENBQUMsSUFBSSxFQUFFLDZCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFckMsT0FBTztRQUNMLEdBQUcsVUFBVTtRQUNiLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQVpELHdDQVlDO0FBRUQ7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BQXNCO0lBQy9ELE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN0RCxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENB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Q0FBQztLQUM1RDtJQUVELE1BQU0sZUFBZSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxxQkFBcUIsQ0FBQywwQ0FBRSxJQUFJLENBQUM7SUFDeEYsSUFBSSxlQUFlLEtBQUssU0FBUyxJQUFJLE9BQU8sZUFBZSxLQUFLLFFBQVEsRUFBRTtRQUN4RSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDdkUsQ0FBQztBQTlCRCxzREE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBib2x0MTEgZnJvbSAnYm9sdDExJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCB7IERlY29kZWRMbnVybFBheVJlcXVlc3QsIExudXJsUGF5UGFyYW1zLCBMbnVybFBheVJlc3BvbnNlIH0gZnJvbSAnLi9pTGlnaHRuaW5nJztcbmltcG9ydCB7IGRlY29kZUxudXJsIH0gZnJvbSAnLi9sbnVybENvZGVjJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlY29kZSc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZExpZ2h0bmluZ0ludm9pY2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIG1pbGxpc2F0b3NoaSByZXF1ZXN0ZWQgYnkgdGhpcyBpbnZvaWNlLiBJZiBudWxsIHRoZW5cbiAgICogdGhlIGludm9pY2UgZG9lcyBub3Qgc3BlY2lmeSBhbiBhbW91bnQgYW5kIHdpbGwgYWNjZXB0IGFueSBwYXltZW50LlxuICAgKi9cbiAgbWlsbGlzYXRvc2hpczogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRoZSBoZXggZW5jb2RlZCBwYXltZW50IGhhc2ggZm9yIHRoZSBpbnZvaWNlICovXG4gIHBheW1lbnRIYXNoOiBzdHJpbmc7XG4gIC8qKiBUaGUgaGV4IGVuY29kZWQgbm9kZSBwdWIga2V5IG9mIHRoZSBwYXllZSB0aGF0IGNyZWF0ZWQgdGhlIGludm9pY2UgKi9cbiAgcGF5ZWVOb2RlS2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgaGV4IGVuY29kZWQgU0hBMjU2IGhhc2ggb2YgdGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIGludm9pY2UgaXMgZm9yICovXG4gIGRlc2NyaXB0aW9uSGFzaD86IHN0cmluZztcbn07XG5cbi8qKlxuICogRGVjb2RlcyBhbiBMTlVSTC1wYXkgcmVxdWVzdCBhbmQgbWFrZXMgYW4gSFRUUCByZXF1ZXN0IHRvIHRoZSBkZWNvZGVkIHVybFxuICogdG8gcmV0cmlldmUgZGV0YWlscyBmb3IgdGhlIHJlcXVlc3RlZCBwYXltZW50LlxuICogQHBhcmFtIGxudXJsIEEgYmVjaDMyIGVuY29kZWQgTE5VUkwtcGF5IHJlcXVlc3Qgc3RyaW5nXG4gKiBAcmV0dXJucyB7RGVjb2RlZExudXJsUGF5UmVxdWVzdH0gQW4gTE5VUkwtcGF5IHJlcXVlc3QgbWVzc2FnZSBzcGVjaWZ5aW5nXG4gKiBhIG1pbiBhbmQgbWF4IGFtb3VudCBmb3IgdGhlIHBheW1lbnQsIG1ldGFkYXRhIGRlc2NyaWJpbmcgd2hhdCB0aGUgcGF5bWVudFxuICogaXMgZm9yLCBhbmQgYSBjYWxsYmFjayB0aGF0IGNhbiBiZSB1c2VkIHRvIGZldGNoIGEgbGlnaHRuaW5nIGludm9pY2UgZm9yXG4gKiB0aGUgcGF5bWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY29kZUxudXJsUGF5KGxudXJsOiBzdHJpbmcpOiBQcm9taXNlPERlY29kZWRMbnVybFBheVJlcXVlc3Q+IHtcbiAgY29uc3QgdXJsID0gZGVjb2RlTG51cmwobG51cmwpO1xuICBjb25zdCB7IGJvZHkgfSA9IGF3YWl0IHJlcXVlc3QuZ2V0KHVybCk7XG4gIGNvbnN0IGRlY29kZWRSZXMgPSBkZWNvZGVPckVsc2UoTG51cmxQYXlSZXNwb25zZS5uYW1lLCBMbnVybFBheVJlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvcihzKSBwYXJzaW5nIGxudXJsIHJlc3BvbnNlOiAke2Vycm9yc31gKTtcbiAgfSk7XG4gIGNvbnN0IGRvbWFpbiA9IG5ldyBVUkwodXJsKS5ob3N0bmFtZTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRlY29kZWRSZXMsXG4gICAgZG9tYWluLFxuICB9O1xufVxuXG4vKipcbiAqIEZldGNoZXMgYSBsaWdodG5pbmcgaW52b2ljZSBmcm9tIGFuIExOVVJMLXBheSBjYWxsYmFjayBzZXJ2ZXIgZm9yIGEgc3BlY2lmaWVkXG4gKiBhbW91bnQgb2YgbWlsbGlzYXRvc2hpcy5cbiAqIEBwYXJhbSBwYXJhbXMge0xudXJsUGF5UGFyYW1zfSBBbiBvYmplY3Qgc3BlY2lmeWluZyBhbiBhbW91bnQgYW5kIGEgY2FsbGJhY2tcbiAqIHVybCB3aXRoIHdoaWNoIHRvIHJlcXVlc3QgYSBsaWdodG5pbmcgaW52b2ljZSBmb3IgYW4gTE5VUkwtcGF5IHJlcXVlc3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIEJPTFQgIzExIGVuY29kZWQgbGlnaHRuaW5nIGludm9pY2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoTG51cmxQYXlJbnZvaWNlKHBhcmFtczogTG51cmxQYXlQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7IGNhbGxiYWNrLCBtaWxsaXNhdEFtb3VudCwgbWV0YWRhdGEgfSA9IHBhcmFtcztcbiAgY29uc3QgeyBwcjogaW52b2ljZSB9ID0gY2FsbGJhY2suaW5jbHVkZXMoJz8nKVxuICAgID8gKGF3YWl0IHJlcXVlc3QuZ2V0KGNhbGxiYWNrICsgYCZhbW91bnQ9JHttaWxsaXNhdEFtb3VudH1gKSkuYm9keVxuICAgIDogKGF3YWl0IHJlcXVlc3QuZ2V0KGNhbGxiYWNrKS5xdWVyeSh7IGFtb3VudDogbWlsbGlzYXRBbW91bnQgfSkpLmJvZHk7XG4gIGNvbnN0IHBhcnNlZEludm9pY2UgPSBwYXJzZUxpZ2h0bmluZ0ludm9pY2UoaW52b2ljZSk7XG4gIHZhbGlkYXRlTG51cmxJbnZvaWNlKHBhcnNlZEludm9pY2UsIG1pbGxpc2F0QW1vdW50LCBtZXRhZGF0YSk7XG5cbiAgcmV0dXJuIGludm9pY2U7XG59XG5cbmZ1bmN0aW9uIGdldE5ldHdvcmtGb3JJbnZvaWNlKGludm9pY2U6IHN0cmluZykge1xuICBpZiAoaW52b2ljZS5zdGFydHNXaXRoKCdsbnRicycpKSB7XG4gICAgLy8gc2lnbmV0IGludm9pY2VzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IG91ciBib2x0MTEgZGVwZW5kZW5jeVxuICAgIC8vIGJlY2F1c2UgdGhlIGB0YnNgIHByZWZpeCB1c2VkIGZvciB0aGUgaW52b2ljZSBkb2VzIG5vdCBtYXRjaCB0aGUgYHRiYFxuICAgIC8vIHByZWZpeCB1c2VkIGJ5IG9uLWNoYWluIHNpZ25ldCBhZGRyZXNzZXNcbiAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luanMvYm9sdDExL3B1bGwvNTgjaXNzdWVjb21tZW50LTExMDY0OTU3MDlcbiAgICAvLyB3ZSBjYW4gc3RpbGwgZGVjb2RlIHRoZSBpbnZvaWNlIGhvd2V2ZXIgdXNpbmcgYSBjdXN0b20gbmV0d29ya1xuICAgIHJldHVybiB7XG4gICAgICBiZWNoMzI6ICd0YnMnLFxuICAgICAgcHViS2V5SGFzaDogMHg2ZixcbiAgICAgIHNjcmlwdEhhc2g6IDB4YzQsXG4gICAgICB2YWxpZFdpdG5lc3NWZXJzaW9uczogWzAsIDFdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UGFyc2VkTGlnaHRuaW5nSW52b2ljZX0gaW52b2ljZSAtIGEgcGFyc2VkIGxpZ2h0bmluZyBpbnZvaWNlXG4gKiBAcGFyYW0ge251bWJlcn0gYW1vdW50IC0gYW1vdW50IGludGVuZGVkIHRvIHBheSBmb3IgdGhlIGludm9pY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXRhZGF0YSAtIG1ldGFkYXRhIHRoYXQgaXMgdXNlZCB0byB2ZXJpZnkgdGhlIGZldGNoZWQgaW52b2ljZVxuICogQHRocm93cyBlcnJvciBmb3IgaW52b2ljZSB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggYW1vdW50IGFuZCBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMbnVybEludm9pY2UoaW52b2ljZTogUGFyc2VkTGlnaHRuaW5nSW52b2ljZSwgbWlsbGlzYXRBbW91bnQ6IHN0cmluZywgbWV0YWRhdGE6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCB7IG1pbGxpc2F0b3NoaXMsIGRlc2NyaXB0aW9uSGFzaCB9ID0gaW52b2ljZTtcbiAgaWYgKG1pbGxpc2F0b3NoaXMgIT09IG1pbGxpc2F0QW1vdW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgb2YgaW52b2ljZSBkb2VzIG5vdCBtYXRjaCB3aXRoIGdpdmVuIGFtb3VudCcpO1xuICB9XG5cbiAgY29uc3QgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWV0YWRhdGEpLmRpZ2VzdCgnaGV4Jyk7XG4gIGlmIChkZXNjcmlwdGlvbkhhc2ggIT09IGhhc2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgaCB0YWcgZG9lcyBub3QgbWF0Y2ggd2l0aCBoYXNoIG9mIG1ldGFkYXRhJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IGludm9pY2VTdHIgLSBhIGxpZ2h0bmluZyBpbnZvaWNlXG4gKiBAcmV0dXJuIHtQYXJzZWRMaWdodG5pbmdJbnZvaWNlfVxuICogQHRocm93cyBlcnJvciBmb3IgaW52YWxpZCBsaWdodG5pbmcgaW52b2ljZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaWdodG5pbmdJbnZvaWNlKGludm9pY2VTdHI6IHVua25vd24pOiBQYXJzZWRMaWdodG5pbmdJbnZvaWNlIHtcbiAgaWYgKHR5cGVvZiBpbnZvaWNlU3RyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBpcyBtYWxmb3JtZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGRlY29kZWRJbnZvaWNlID0gYm9sdDExLmRlY29kZShpbnZvaWNlU3RyLCBnZXROZXR3b3JrRm9ySW52b2ljZShpbnZvaWNlU3RyKSk7XG5cbiAgaWYgKGRlY29kZWRJbnZvaWNlLm5ldHdvcmsgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBuZXR3b3JrIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIGNvbnN0IHsgbWlsbGlzYXRvc2hpcywgdGFncywgcGF5ZWVOb2RlS2V5IH0gPSBkZWNvZGVkSW52b2ljZTtcblxuICBjb25zdCBwYXltZW50SGFzaCA9IHRhZ3MuZmluZCgodGFnKSA9PiB0YWcudGFnTmFtZSA9PT0gJ3BheW1lbnRfaGFzaCcpPy5kYXRhO1xuICBpZiAocGF5bWVudEhhc2ggPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGF5bWVudEhhc2ggIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIHBheW1lbnQgaGFzaCBpcyBpbnZhbGlkJyk7XG4gIH1cbiAgaWYgKHBheWVlTm9kZUtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIHBheWVlIHB1YiBrZXkgaXMgaW52YWxpZCcpO1xuICB9XG4gIGlmIChtaWxsaXNhdG9zaGlzID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgbWlsbGlzYXRvc2hpcyBhbW91bnQgaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgY29uc3QgZGVzY3JpcHRpb25IYXNoID0gdGFncy5maW5kKCh0YWcpID0+IHRhZy50YWdOYW1lID09PSAncHVycG9zZV9jb21taXRfaGFzaCcpPy5kYXRhO1xuICBpZiAoZGVzY3JpcHRpb25IYXNoICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRlc2NyaXB0aW9uSGFzaCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgZGVzY3JpcHRpb24gaGFzaCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICByZXR1cm4geyBtaWxsaXNhdG9zaGlzLCBwYXltZW50SGFzaCwgcGF5ZWVOb2RlS2V5LCBkZXNjcmlwdGlvbkhhc2ggfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lnurlCodec.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/lightning/custodial/lnurlCodec.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,UAEtC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAmBxC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeLnurl = exports.encodeLnurl = void 0;
|
|
4
|
+
const bech32_1 = require("bech32");
|
|
5
|
+
function encodeLnurl(url) {
|
|
6
|
+
return bech32_1.bech32.encode('lnurl', bech32_1.bech32.toWords(Buffer.from(url)));
|
|
7
|
+
}
|
|
8
|
+
exports.encodeLnurl = encodeLnurl;
|
|
9
|
+
function decodeLnurl(lnurl) {
|
|
10
|
+
const splittedLnurl = lnurl.split(':');
|
|
11
|
+
let parsedLnurl;
|
|
12
|
+
if (splittedLnurl.length === 2) {
|
|
13
|
+
if (splittedLnurl[0] !== 'lightning') {
|
|
14
|
+
throw new Error('invalid lnurl');
|
|
15
|
+
}
|
|
16
|
+
parsedLnurl = splittedLnurl[1];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
parsedLnurl = splittedLnurl[0];
|
|
20
|
+
}
|
|
21
|
+
const { prefix, words } = bech32_1.bech32.decode(parsedLnurl, 2000);
|
|
22
|
+
if (prefix !== 'lnurl') {
|
|
23
|
+
throw new Error('invalid lnurl');
|
|
24
|
+
}
|
|
25
|
+
return Buffer.from(bech32_1.bech32.fromWords(words)).toString();
|
|
26
|
+
}
|
|
27
|
+
exports.decodeLnurl = decodeLnurl;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG51cmxDb2RlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcvY3VzdG9kaWFsL2xudXJsQ29kZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWdDO0FBRWhDLFNBQWdCLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sZUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsZUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixXQUFXLENBQUMsS0FBYTtJQUN2QyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZDLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzlCLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoQztTQUFNO1FBQ0wsV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoQztJQUNELE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsZUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFM0QsSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDbEM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3pELENBQUM7QUFuQkQsa0NBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUxudXJsKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiBiZWNoMzIuZW5jb2RlKCdsbnVybCcsIGJlY2gzMi50b1dvcmRzKEJ1ZmZlci5mcm9tKHVybCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUxudXJsKGxudXJsOiBzdHJpbmcpIHtcbiAgY29uc3Qgc3BsaXR0ZWRMbnVybCA9IGxudXJsLnNwbGl0KCc6Jyk7XG5cbiAgbGV0IHBhcnNlZExudXJsOiBzdHJpbmc7XG4gIGlmIChzcGxpdHRlZExudXJsLmxlbmd0aCA9PT0gMikge1xuICAgIGlmIChzcGxpdHRlZExudXJsWzBdICE9PSAnbGlnaHRuaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGxudXJsJyk7XG4gICAgfVxuICAgIHBhcnNlZExudXJsID0gc3BsaXR0ZWRMbnVybFsxXTtcbiAgfSBlbHNlIHtcbiAgICBwYXJzZWRMbnVybCA9IHNwbGl0dGVkTG51cmxbMF07XG4gIH1cbiAgY29uc3QgeyBwcmVmaXgsIHdvcmRzIH0gPSBiZWNoMzIuZGVjb2RlKHBhcnNlZExudXJsLCAyMDAwKTtcblxuICBpZiAocHJlZml4ICE9PSAnbG51cmwnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGxudXJsJyk7XG4gIH1cblxuICByZXR1cm4gQnVmZmVyLmZyb20oYmVjaDMyLmZyb21Xb3Jkcyh3b3JkcykpLnRvU3RyaW5nKCk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
|
@@ -14,8 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./lnurlCodec"), exports);
|
|
17
|
+
__exportStar(require("./signableJson"), exports);
|
|
18
|
+
__exportStar(require("./signature"), exports);
|
|
20
19
|
__exportStar(require("./lightningUtils"), exports);
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBK0I7QUFDL0IsOENBQTRCO0FBQzVCLG1EQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2lnbmFibGVKc29uJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbmF0dXJlJztcbmV4cG9ydCAqIGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuIl19
|
|
@@ -1,46 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
* The amount of millisatoshi requested by this invoice. If null then
|
|
5
|
-
* the invoice does not specify an amount and will accept any payment.
|
|
6
|
-
*/
|
|
7
|
-
millisatoshis: string | null;
|
|
8
|
-
/** The hex encoded payment hash for the invoice */
|
|
9
|
-
paymentHash: string;
|
|
10
|
-
/** The hex encoded node pub key of the payee that created the invoice */
|
|
11
|
-
payeeNodeKey: string;
|
|
12
|
-
/** The hex encoded SHA256 hash of the description of what the invoice is for */
|
|
13
|
-
descriptionHash?: string;
|
|
14
|
-
};
|
|
1
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
2
|
+
export declare const lightningNetworkName: readonly ["bitcoin", "testnet"];
|
|
3
|
+
export declare type LightningNetworkName = (typeof lightningNetworkName)[number];
|
|
15
4
|
/**
|
|
16
|
-
*
|
|
17
|
-
* to retrieve details for the requested payment.
|
|
18
|
-
* @param lnurl A bech32 encoded LNURL-pay request string
|
|
19
|
-
* @returns {DecodedLnurlPayRequest} An LNURL-pay request message specifying
|
|
20
|
-
* a min and max amount for the payment, metadata describing what the payment
|
|
21
|
-
* is for, and a callback that can be used to fetch a lightning invoice for
|
|
22
|
-
* the payment.
|
|
5
|
+
* Get the utxolib network for a lightning network.
|
|
23
6
|
*/
|
|
24
|
-
export declare function
|
|
7
|
+
export declare function getLightningNetwork(networkName: LightningNetworkName): utxolib.Network;
|
|
25
8
|
/**
|
|
26
|
-
*
|
|
27
|
-
* amount of millisatoshis.
|
|
28
|
-
* @param params {LnurlPayParams} An object specifying an amount and a callback
|
|
29
|
-
* url with which to request a lightning invoice for an LNURL-pay request.
|
|
30
|
-
* @returns {string} A BOLT #11 encoded lightning invoice
|
|
9
|
+
* Get the lightning coin name for a utxolib network.
|
|
31
10
|
*/
|
|
32
|
-
export declare function
|
|
11
|
+
export declare function getLightningCoinName(network: utxolib.Network): string;
|
|
33
12
|
/**
|
|
34
|
-
*
|
|
35
|
-
* @param {number} amount - amount intended to pay for the invoice
|
|
36
|
-
* @param {string} metadata - metadata that is used to verify the fetched invoice
|
|
37
|
-
* @throws error for invoice that does not match with amount and metadata
|
|
13
|
+
* Checks if the network name is a valid lightning network name.
|
|
38
14
|
*/
|
|
39
|
-
export declare function
|
|
15
|
+
export declare function isValidLightningNetworkName(networkName: unknown): networkName is LightningNetworkName;
|
|
40
16
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @return {ParsedLightningInvoice}
|
|
43
|
-
* @throws error for invalid lightning invoice
|
|
17
|
+
* Checks if the network is a valid lightning network.
|
|
44
18
|
*/
|
|
45
|
-
export declare function
|
|
19
|
+
export declare function isValidLightningNetwork(network: unknown): network is utxolib.Network;
|
|
20
|
+
/**
|
|
21
|
+
* Returns the utxolib network name for a lightning coin.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getUtxolibNetworkName(coinName: string): string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Returns coin specific data for a lightning coin.
|
|
26
|
+
*/
|
|
27
|
+
export declare function unwrapLightningCoinSpecific<V>(obj: {
|
|
28
|
+
lnbtc: V;
|
|
29
|
+
} | {
|
|
30
|
+
tlnbtc: V;
|
|
31
|
+
}, coinSpecificPath: string): V;
|
|
46
32
|
//# sourceMappingURL=lightningUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAE3C,eAAO,MAAM,oBAAoB,iCAAkC,CAAC;AACpE,oBAAY,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAEtF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,OAAO,GAAG,WAAW,IAAI,oBAAoB,CAErG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAEpF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,GAAG,EAAE;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC,CAW7G"}
|
|
@@ -23,115 +23,60 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
const iLightning_1 = require("./iLightning");
|
|
31
|
-
const lnurlCodec_1 = require("./lnurlCodec");
|
|
32
|
-
const decode_1 = require("../utils/decode");
|
|
26
|
+
exports.unwrapLightningCoinSpecific = exports.getUtxolibNetworkName = exports.isValidLightningNetwork = exports.isValidLightningNetworkName = exports.getLightningCoinName = exports.getLightningNetwork = exports.lightningNetworkName = void 0;
|
|
27
|
+
const statics = __importStar(require("@bitgo/statics"));
|
|
28
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
29
|
+
exports.lightningNetworkName = ['bitcoin', 'testnet'];
|
|
33
30
|
/**
|
|
34
|
-
*
|
|
35
|
-
* to retrieve details for the requested payment.
|
|
36
|
-
* @param lnurl A bech32 encoded LNURL-pay request string
|
|
37
|
-
* @returns {DecodedLnurlPayRequest} An LNURL-pay request message specifying
|
|
38
|
-
* a min and max amount for the payment, metadata describing what the payment
|
|
39
|
-
* is for, and a callback that can be used to fetch a lightning invoice for
|
|
40
|
-
* the payment.
|
|
31
|
+
* Get the utxolib network for a lightning network.
|
|
41
32
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const { body } = await request.get(url);
|
|
45
|
-
const decodedRes = (0, decode_1.decodeOrElse)(iLightning_1.LnurlPayResponse.name, iLightning_1.LnurlPayResponse, body, (errors) => {
|
|
46
|
-
throw new Error(`error(s) parsing lnurl response: ${errors}`);
|
|
47
|
-
});
|
|
48
|
-
const domain = new URL(url).hostname;
|
|
49
|
-
return {
|
|
50
|
-
...decodedRes,
|
|
51
|
-
domain,
|
|
52
|
-
};
|
|
33
|
+
function getLightningNetwork(networkName) {
|
|
34
|
+
return utxolib.networks[networkName];
|
|
53
35
|
}
|
|
54
|
-
exports.
|
|
36
|
+
exports.getLightningNetwork = getLightningNetwork;
|
|
55
37
|
/**
|
|
56
|
-
*
|
|
57
|
-
* amount of millisatoshis.
|
|
58
|
-
* @param params {LnurlPayParams} An object specifying an amount and a callback
|
|
59
|
-
* url with which to request a lightning invoice for an LNURL-pay request.
|
|
60
|
-
* @returns {string} A BOLT #11 encoded lightning invoice
|
|
38
|
+
* Get the lightning coin name for a utxolib network.
|
|
61
39
|
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const { pr: invoice } = callback.includes('?')
|
|
65
|
-
? (await request.get(callback + `&amount=${millisatAmount}`)).body
|
|
66
|
-
: (await request.get(callback).query({ amount: millisatAmount })).body;
|
|
67
|
-
const parsedInvoice = parseLightningInvoice(invoice);
|
|
68
|
-
validateLnurlInvoice(parsedInvoice, millisatAmount, metadata);
|
|
69
|
-
return invoice;
|
|
40
|
+
function getLightningCoinName(network) {
|
|
41
|
+
return network === utxolib.networks.bitcoin ? 'lnbtc' : 'tlnbtc';
|
|
70
42
|
}
|
|
71
|
-
exports.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// see: https://github.com/bitcoinjs/bolt11/pull/58#issuecomment-1106495709
|
|
78
|
-
// we can still decode the invoice however using a custom network
|
|
79
|
-
return {
|
|
80
|
-
bech32: 'tbs',
|
|
81
|
-
pubKeyHash: 0x6f,
|
|
82
|
-
scriptHash: 0xc4,
|
|
83
|
-
validWitnessVersions: [0, 1],
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
return undefined;
|
|
43
|
+
exports.getLightningCoinName = getLightningCoinName;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if the network name is a valid lightning network name.
|
|
46
|
+
*/
|
|
47
|
+
function isValidLightningNetworkName(networkName) {
|
|
48
|
+
return exports.lightningNetworkName.includes(networkName);
|
|
87
49
|
}
|
|
50
|
+
exports.isValidLightningNetworkName = isValidLightningNetworkName;
|
|
88
51
|
/**
|
|
89
|
-
*
|
|
90
|
-
* @param {number} amount - amount intended to pay for the invoice
|
|
91
|
-
* @param {string} metadata - metadata that is used to verify the fetched invoice
|
|
92
|
-
* @throws error for invoice that does not match with amount and metadata
|
|
52
|
+
* Checks if the network is a valid lightning network.
|
|
93
53
|
*/
|
|
94
|
-
function
|
|
95
|
-
|
|
96
|
-
if (millisatoshis !== millisatAmount) {
|
|
97
|
-
throw new Error('amount of invoice does not match with given amount');
|
|
98
|
-
}
|
|
99
|
-
const hash = crypto.createHash('sha256').update(metadata).digest('hex');
|
|
100
|
-
if (descriptionHash !== hash) {
|
|
101
|
-
throw new Error('invoice h tag does not match with hash of metadata');
|
|
102
|
-
}
|
|
54
|
+
function isValidLightningNetwork(network) {
|
|
55
|
+
return utxolib.isValidNetwork(network) && isValidLightningNetworkName(utxolib.getNetworkName(network));
|
|
103
56
|
}
|
|
104
|
-
exports.
|
|
57
|
+
exports.isValidLightningNetwork = isValidLightningNetwork;
|
|
105
58
|
/**
|
|
106
|
-
*
|
|
107
|
-
* @return {ParsedLightningInvoice}
|
|
108
|
-
* @throws error for invalid lightning invoice
|
|
59
|
+
* Returns the utxolib network name for a lightning coin.
|
|
109
60
|
*/
|
|
110
|
-
function
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
if (paymentHash === undefined || typeof paymentHash !== 'string') {
|
|
122
|
-
throw new Error('invoice payment hash is invalid');
|
|
123
|
-
}
|
|
124
|
-
if (payeeNodeKey === undefined) {
|
|
125
|
-
throw new Error('invoice payee pub key is invalid');
|
|
61
|
+
function getUtxolibNetworkName(coinName) {
|
|
62
|
+
const coin = statics.coins.get(coinName);
|
|
63
|
+
return coin instanceof statics.LightningCoin ? coin.network.utxolibName : undefined;
|
|
64
|
+
}
|
|
65
|
+
exports.getUtxolibNetworkName = getUtxolibNetworkName;
|
|
66
|
+
/**
|
|
67
|
+
* Returns coin specific data for a lightning coin.
|
|
68
|
+
*/
|
|
69
|
+
function unwrapLightningCoinSpecific(obj, coinSpecificPath) {
|
|
70
|
+
if (coinSpecificPath !== 'lnbtc' && coinSpecificPath !== 'tlnbtc') {
|
|
71
|
+
throw new Error(`invalid coinSpecificPath ${coinSpecificPath} for lightning coin`);
|
|
126
72
|
}
|
|
127
|
-
if (
|
|
128
|
-
|
|
73
|
+
if (coinSpecificPath === 'lnbtc' && 'lnbtc' in obj) {
|
|
74
|
+
return obj.lnbtc;
|
|
129
75
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
throw new Error('invoice description hash is invalid');
|
|
76
|
+
if (coinSpecificPath === 'tlnbtc' && 'tlnbtc' in obj) {
|
|
77
|
+
return obj.tlnbtc;
|
|
133
78
|
}
|
|
134
|
-
|
|
79
|
+
throw new Error('invalid lightning coin specific');
|
|
135
80
|
}
|
|
136
|
-
exports.
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLCtDQUFpQztBQUNqQyxvREFBc0M7QUFDdEMsNkNBQXdGO0FBQ3hGLDZDQUEyQztBQUMzQyw0Q0FBK0M7QUFnQi9DOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FBQyxLQUFhO0lBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUEsd0JBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLElBQUEscUJBQVksRUFBQyw2QkFBZ0IsQ0FBQyxJQUFJLEVBQUUsNkJBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDeEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUVyQyxPQUFPO1FBQ0wsR0FBRyxVQUFVO1FBQ2IsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBWkQsd0NBWUM7QUFFRDs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQUMsTUFBc0I7SUFDL0QsTUFBTSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3RELE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7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RUQsTUFBTSxlQUFlLEdBQUcsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLHFCQUFxQixDQUFDLDBDQUFFLElBQUksQ0FBQztJQUN4RixJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksT0FBTyxlQUFlLEtBQUssUUFBUSxFQUFFO1FBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztLQUN4RDtJQUVELE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUN2RSxDQUFDO0FBOUJELHNEQThCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJvbHQxMSBmcm9tICdib2x0MTEnO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyByZXF1ZXN0IGZyb20gJ3N1cGVyYWdlbnQnO1xuaW1wb3J0IHsgRGVjb2RlZExudXJsUGF5UmVxdWVzdCwgTG51cmxQYXlQYXJhbXMsIExudXJsUGF5UmVzcG9uc2UgfSBmcm9tICcuL2lMaWdodG5pbmcnO1xuaW1wb3J0IHsgZGVjb2RlTG51cmwgfSBmcm9tICcuL2xudXJsQ29kZWMnO1xuaW1wb3J0IHsgZGVjb2RlT3JFbHNlIH0gZnJvbSAnLi4vdXRpbHMvZGVjb2RlJztcblxuZXhwb3J0IHR5cGUgUGFyc2VkTGlnaHRuaW5nSW52b2ljZSA9IHtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgbWlsbGlzYXRvc2hpIHJlcXVlc3RlZCBieSB0aGlzIGludm9pY2UuIElmIG51bGwgdGhlblxuICAgKiB0aGUgaW52b2ljZSBkb2VzIG5vdCBzcGVjaWZ5IGFuIGFtb3VudCBhbmQgd2lsbCBhY2NlcHQgYW55IHBheW1lbnQuXG4gICAqL1xuICBtaWxsaXNhdG9zaGlzOiBzdHJpbmcgfCBudWxsO1xuICAvKiogVGhlIGhleCBlbmNvZGVkIHBheW1lbnQgaGFzaCBmb3IgdGhlIGludm9pY2UgKi9cbiAgcGF5bWVudEhhc2g6IHN0cmluZztcbiAgLyoqIFRoZSBoZXggZW5jb2RlZCBub2RlIHB1YiBrZXkgb2YgdGhlIHBheWVlIHRoYXQgY3JlYXRlZCB0aGUgaW52b2ljZSAqL1xuICBwYXllZU5vZGVLZXk6IHN0cmluZztcbiAgLyoqIFRoZSBoZXggZW5jb2RlZCBTSEEyNTYgaGFzaCBvZiB0aGUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgaW52b2ljZSBpcyBmb3IgKi9cbiAgZGVzY3JpcHRpb25IYXNoPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIGFuIExOVVJMLXBheSByZXF1ZXN0IGFuZCBtYWtlcyBhbiBIVFRQIHJlcXVlc3QgdG8gdGhlIGRlY29kZWQgdXJsXG4gKiB0byByZXRyaWV2ZSBkZXRhaWxzIGZvciB0aGUgcmVxdWVzdGVkIHBheW1lbnQuXG4gKiBAcGFyYW0gbG51cmwgQSBiZWNoMzIgZW5jb2RlZCBMTlVSTC1wYXkgcmVxdWVzdCBzdHJpbmdcbiAqIEByZXR1cm5zIHtEZWNvZGVkTG51cmxQYXlSZXF1ZXN0fSBBbiBMTlVSTC1wYXkgcmVxdWVzdCBtZXNzYWdlIHNwZWNpZnlpbmdcbiAqIGEgbWluIGFuZCBtYXggYW1vdW50IGZvciB0aGUgcGF5bWVudCwgbWV0YWRhdGEgZGVzY3JpYmluZyB3aGF0IHRoZSBwYXltZW50XG4gKiBpcyBmb3IsIGFuZCBhIGNhbGxiYWNrIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmV0Y2ggYSBsaWdodG5pbmcgaW52b2ljZSBmb3JcbiAqIHRoZSBwYXltZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjb2RlTG51cmxQYXkobG51cmw6IHN0cmluZyk6IFByb21pc2U8RGVjb2RlZExudXJsUGF5UmVxdWVzdD4ge1xuICBjb25zdCB1cmwgPSBkZWNvZGVMbnVybChsbnVybCk7XG4gIGNvbnN0IHsgYm9keSB9ID0gYXdhaXQgcmVxdWVzdC5nZXQodXJsKTtcbiAgY29uc3QgZGVjb2RlZFJlcyA9IGRlY29kZU9yRWxzZShMbnVybFBheVJlc3BvbnNlLm5hbWUsIExudXJsUGF5UmVzcG9uc2UsIGJvZHksIChlcnJvcnMpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgbG51cmwgcmVzcG9uc2U6ICR7ZXJyb3JzfWApO1xuICB9KTtcbiAgY29uc3QgZG9tYWluID0gbmV3IFVSTCh1cmwpLmhvc3RuYW1lO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZGVjb2RlZFJlcyxcbiAgICBkb21haW4sXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhIGxpZ2h0bmluZyBpbnZvaWNlIGZyb20gYW4gTE5VUkwtcGF5IGNhbGxiYWNrIHNlcnZlciBmb3IgYSBzcGVjaWZpZWRcbiAqIGFtb3VudCBvZiBtaWxsaXNhdG9zaGlzLlxuICogQHBhcmFtIHBhcmFtcyB7TG51cmxQYXlQYXJhbXN9IEFuIG9iamVjdCBzcGVjaWZ5aW5nIGFuIGFtb3VudCBhbmQgYSBjYWxsYmFja1xuICogdXJsIHdpdGggd2hpY2ggdG8gcmVxdWVzdCBhIGxpZ2h0bmluZyBpbnZvaWNlIGZvciBhbiBMTlVSTC1wYXkgcmVxdWVzdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgQk9MVCAjMTEgZW5jb2RlZCBsaWdodG5pbmcgaW52b2ljZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hMbnVybFBheUludm9pY2UocGFyYW1zOiBMbnVybFBheVBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgY2FsbGJhY2ssIG1pbGxpc2F0QW1vdW50LCBtZXRhZGF0YSB9ID0gcGFyYW1zO1xuICBjb25zdCB7IHByOiBpbnZvaWNlIH0gPSBjYWxsYmFjay5pbmNsdWRlcygnPycpXG4gICAgPyAoYXdhaXQgcmVxdWVzdC5nZXQoY2FsbGJhY2sgKyBgJmFtb3VudD0ke21pbGxpc2F0QW1vdW50fWApKS5ib2R5XG4gICAgOiAoYXdhaXQgcmVxdWVzdC5nZXQoY2FsbGJhY2spLnF1ZXJ5KHsgYW1vdW50OiBtaWxsaXNhdEFtb3VudCB9KSkuYm9keTtcbiAgY29uc3QgcGFyc2VkSW52b2ljZSA9IHBhcnNlTGlnaHRuaW5nSW52b2ljZShpbnZvaWNlKTtcbiAgdmFsaWRhdGVMbnVybEludm9pY2UocGFyc2VkSW52b2ljZSwgbWlsbGlzYXRBbW91bnQsIG1ldGFkYXRhKTtcblxuICByZXR1cm4gaW52b2ljZTtcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29ya0Zvckludm9pY2UoaW52b2ljZTogc3RyaW5nKSB7XG4gIGlmIChpbnZvaWNlLnN0YXJ0c1dpdGgoJ2xudGJzJykpIHtcbiAgICAvLyBzaWduZXQgaW52b2ljZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgb3VyIGJvbHQxMSBkZXBlbmRlbmN5XG4gICAgLy8gYmVjYXVzZSB0aGUgYHRic2AgcHJlZml4IHVzZWQgZm9yIHRoZSBpbnZvaWNlIGRvZXMgbm90IG1hdGNoIHRoZSBgdGJgXG4gICAgLy8gcHJlZml4IHVzZWQgYnkgb24tY2hhaW4gc2lnbmV0IGFkZHJlc3Nlc1xuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9ib2x0MTEvcHVsbC81OCNpc3N1ZWNvbW1lbnQtMTEwNjQ5NTcwOVxuICAgIC8vIHdlIGNhbiBzdGlsbCBkZWNvZGUgdGhlIGludm9pY2UgaG93ZXZlciB1c2luZyBhIGN1c3RvbSBuZXR3b3JrXG4gICAgcmV0dXJuIHtcbiAgICAgIGJlY2gzMjogJ3RicycsXG4gICAgICBwdWJLZXlIYXNoOiAweDZmLFxuICAgICAgc2NyaXB0SGFzaDogMHhjNCxcbiAgICAgIHZhbGlkV2l0bmVzc1ZlcnNpb25zOiBbMCwgMV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJzZWRMaWdodG5pbmdJbnZvaWNlfSBpbnZvaWNlIC0gYSBwYXJzZWQgbGlnaHRuaW5nIGludm9pY2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnQgLSBhbW91bnQgaW50ZW5kZWQgdG8gcGF5IGZvciB0aGUgaW52b2ljZVxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGFkYXRhIC0gbWV0YWRhdGEgdGhhdCBpcyB1c2VkIHRvIHZlcmlmeSB0aGUgZmV0Y2hlZCBpbnZvaWNlXG4gKiBAdGhyb3dzIGVycm9yIGZvciBpbnZvaWNlIHRoYXQgZG9lcyBub3QgbWF0Y2ggd2l0aCBhbW91bnQgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxudXJsSW52b2ljZShpbnZvaWNlOiBQYXJzZWRMaWdodG5pbmdJbnZvaWNlLCBtaWxsaXNhdEFtb3VudDogc3RyaW5nLCBtZXRhZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHsgbWlsbGlzYXRvc2hpcywgZGVzY3JpcHRpb25IYXNoIH0gPSBpbnZvaWNlO1xuICBpZiAobWlsbGlzYXRvc2hpcyAhPT0gbWlsbGlzYXRBbW91bnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBvZiBpbnZvaWNlIGRvZXMgbm90IG1hdGNoIHdpdGggZ2l2ZW4gYW1vdW50Jyk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShtZXRhZGF0YSkuZGlnZXN0KCdoZXgnKTtcbiAgaWYgKGRlc2NyaXB0aW9uSGFzaCAhPT0gaGFzaCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBoIHRhZyBkb2VzIG5vdCBtYXRjaCB3aXRoIGhhc2ggb2YgbWV0YWRhdGEnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gaW52b2ljZVN0ciAtIGEgbGlnaHRuaW5nIGludm9pY2VcbiAqIEByZXR1cm4ge1BhcnNlZExpZ2h0bmluZ0ludm9pY2V9XG4gKiBAdGhyb3dzIGVycm9yIGZvciBpbnZhbGlkIGxpZ2h0bmluZyBpbnZvaWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpZ2h0bmluZ0ludm9pY2UoaW52b2ljZVN0cjogdW5rbm93bik6IFBhcnNlZExpZ2h0bmluZ0ludm9pY2Uge1xuICBpZiAodHlwZW9mIGludm9pY2VTdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIGlzIG1hbGZvcm1lZCcpO1xuICB9XG5cbiAgY29uc3QgZGVjb2RlZEludm9pY2UgPSBib2x0MTEuZGVjb2RlKGludm9pY2VTdHIsIGdldE5ldHdvcmtGb3JJbnZvaWNlKGludm9pY2VTdHIpKTtcblxuICBpZiAoZGVjb2RlZEludm9pY2UubmV0d29yayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIG5ldHdvcmsgaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgY29uc3QgeyBtaWxsaXNhdG9zaGlzLCB0YWdzLCBwYXllZU5vZGVLZXkgfSA9IGRlY29kZWRJbnZvaWNlO1xuXG4gIGNvbnN0IHBheW1lbnRIYXNoID0gdGFncy5maW5kKCh0YWcpID0+IHRhZy50YWdOYW1lID09PSAncGF5bWVudF9oYXNoJyk/LmRhdGE7XG4gIGlmIChwYXltZW50SGFzaCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBwYXltZW50SGFzaCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgcGF5bWVudCBoYXNoIGlzIGludmFsaWQnKTtcbiAgfVxuICBpZiAocGF5ZWVOb2RlS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludm9pY2UgcGF5ZWUgcHViIGtleSBpcyBpbnZhbGlkJyk7XG4gIH1cbiAgaWYgKG1pbGxpc2F0b3NoaXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBtaWxsaXNhdG9zaGlzIGFtb3VudCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICBjb25zdCBkZXNjcmlwdGlvbkhhc2ggPSB0YWdzLmZpbmQoKHRhZykgPT4gdGFnLnRhZ05hbWUgPT09ICdwdXJwb3NlX2NvbW1pdF9oYXNoJyk/LmRhdGE7XG4gIGlmIChkZXNjcmlwdGlvbkhhc2ggIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZGVzY3JpcHRpb25IYXNoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBkZXNjcmlwdGlvbiBoYXNoIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIHJldHVybiB7IG1pbGxpc2F0b3NoaXMsIHBheW1lbnRIYXNoLCBwYXllZU5vZGVLZXksIGRlc2NyaXB0aW9uSGFzaCB9O1xufVxuIl19
|
|
81
|
+
exports.unwrapLightningCoinSpecific = unwrapLightningCoinSpecific;
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0RBQTBDO0FBQzFDLHlEQUEyQztBQUU5QixRQUFBLG9CQUFvQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBVSxDQUFDO0FBR3BFOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsV0FBaUM7SUFDbkUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFGRCxrREFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsT0FBd0I7SUFDM0QsT0FBTyxPQUFPLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ25FLENBQUM7QUFGRCxvREFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQUMsV0FBb0I7SUFDOUQsT0FBTyw0QkFBb0IsQ0FBQyxRQUFRLENBQUMsV0FBbUMsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFGRCxrRUFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsT0FBZ0I7SUFDdEQsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6RyxDQUFDO0FBRkQsMERBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQWdCO0lBQ3BELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sSUFBSSxZQUFZLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdEYsQ0FBQztBQUhELHNEQUdDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBSSxHQUFpQyxFQUFFLGdCQUF3QjtJQUN4RyxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsS0FBSyxRQUFRLEVBQUU7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsZ0JBQWdCLHFCQUFxQixDQUFDLENBQUM7S0FDcEY7SUFDRCxJQUFJLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxPQUFPLElBQUksR0FBRyxFQUFFO1FBQ2xELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztLQUNsQjtJQUNELElBQUksZ0JBQWdCLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxHQUFHLEVBQUU7UUFDcEQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDO0tBQ25CO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFYRCxrRUFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHN0YXRpY3MgZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5leHBvcnQgY29uc3QgbGlnaHRuaW5nTmV0d29ya05hbWUgPSBbJ2JpdGNvaW4nLCAndGVzdG5ldCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlnaHRuaW5nTmV0d29ya05hbWUgPSAodHlwZW9mIGxpZ2h0bmluZ05ldHdvcmtOYW1lKVtudW1iZXJdO1xuXG4vKipcbiAqIEdldCB0aGUgdXR4b2xpYiBuZXR3b3JrIGZvciBhIGxpZ2h0bmluZyBuZXR3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nTmV0d29yayhuZXR3b3JrTmFtZTogTGlnaHRuaW5nTmV0d29ya05hbWUpOiB1dHhvbGliLk5ldHdvcmsge1xuICByZXR1cm4gdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV07XG59XG5cbi8qKlxuICogR2V0IHRoZSBsaWdodG5pbmcgY29pbiBuYW1lIGZvciBhIHV0eG9saWIgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpZ2h0bmluZ0NvaW5OYW1lKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHN0cmluZyB7XG4gIHJldHVybiBuZXR3b3JrID09PSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gPyAnbG5idGMnIDogJ3RsbmJ0Yyc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBuZXR3b3JrIG5hbWUgaXMgYSB2YWxpZCBsaWdodG5pbmcgbmV0d29yayBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lOiB1bmtub3duKTogbmV0d29ya05hbWUgaXMgTGlnaHRuaW5nTmV0d29ya05hbWUge1xuICByZXR1cm4gbGlnaHRuaW5nTmV0d29ya05hbWUuaW5jbHVkZXMobmV0d29ya05hbWUgYXMgTGlnaHRuaW5nTmV0d29ya05hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgbmV0d29yayBpcyBhIHZhbGlkIGxpZ2h0bmluZyBuZXR3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsobmV0d29yazogdW5rbm93bik6IG5ldHdvcmsgaXMgdXR4b2xpYi5OZXR3b3JrIHtcbiAgcmV0dXJuIHV0eG9saWIuaXNWYWxpZE5ldHdvcmsobmV0d29yaykgJiYgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKHV0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yaykpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHV0eG9saWIgbmV0d29yayBuYW1lIGZvciBhIGxpZ2h0bmluZyBjb2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXR4b2xpYk5ldHdvcmtOYW1lKGNvaW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb2luID0gc3RhdGljcy5jb2lucy5nZXQoY29pbk5hbWUpO1xuICByZXR1cm4gY29pbiBpbnN0YW5jZW9mIHN0YXRpY3MuTGlnaHRuaW5nQ29pbiA/IGNvaW4ubmV0d29yay51dHhvbGliTmFtZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGNvaW4gc3BlY2lmaWMgZGF0YSBmb3IgYSBsaWdodG5pbmcgY29pbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcExpZ2h0bmluZ0NvaW5TcGVjaWZpYzxWPihvYmo6IHsgbG5idGM6IFYgfSB8IHsgdGxuYnRjOiBWIH0sIGNvaW5TcGVjaWZpY1BhdGg6IHN0cmluZyk6IFYge1xuICBpZiAoY29pblNwZWNpZmljUGF0aCAhPT0gJ2xuYnRjJyAmJiBjb2luU3BlY2lmaWNQYXRoICE9PSAndGxuYnRjJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjb2luU3BlY2lmaWNQYXRoICR7Y29pblNwZWNpZmljUGF0aH0gZm9yIGxpZ2h0bmluZyBjb2luYCk7XG4gIH1cbiAgaWYgKGNvaW5TcGVjaWZpY1BhdGggPT09ICdsbmJ0YycgJiYgJ2xuYnRjJyBpbiBvYmopIHtcbiAgICByZXR1cm4gb2JqLmxuYnRjO1xuICB9XG4gIGlmIChjb2luU3BlY2lmaWNQYXRoID09PSAndGxuYnRjJyAmJiAndGxuYnRjJyBpbiBvYmopIHtcbiAgICByZXR1cm4gb2JqLnRsbmJ0YztcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbGlnaHRuaW5nIGNvaW4gc3BlY2lmaWMnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare type Signable = boolean | number | string | SignableRecord | SignableArray;
|
|
2
|
+
export interface SignableRecord {
|
|
3
|
+
[key: string]: Signable;
|
|
4
|
+
}
|
|
5
|
+
export interface SignableArray {
|
|
6
|
+
[key: number]: Signable;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Recursively canonicalizes an object by sorting its keys.
|
|
10
|
+
*
|
|
11
|
+
* @param obj - The object to be canonicalized. It can be a boolean, number, string,
|
|
12
|
+
* a record of signable values, or an array of signable values.
|
|
13
|
+
* @returns The canonicalized object with sorted keys.
|
|
14
|
+
* @throws Will throw an error if the object type is invalid.
|
|
15
|
+
*/
|
|
16
|
+
export declare function canonicalizeObject(obj: Signable): Signable;
|
|
17
|
+
//# sourceMappingURL=signableJson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signableJson.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/signableJson.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAmB1D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canonicalizeObject = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Recursively canonicalizes an object by sorting its keys.
|
|
6
|
+
*
|
|
7
|
+
* @param obj - The object to be canonicalized. It can be a boolean, number, string,
|
|
8
|
+
* a record of signable values, or an array of signable values.
|
|
9
|
+
* @returns The canonicalized object with sorted keys.
|
|
10
|
+
* @throws Will throw an error if the object type is invalid.
|
|
11
|
+
*/
|
|
12
|
+
function canonicalizeObject(obj) {
|
|
13
|
+
if (typeof obj === 'boolean' || typeof obj === 'number' || typeof obj === 'string') {
|
|
14
|
+
return obj;
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(obj)) {
|
|
17
|
+
return obj.map(canonicalizeObject);
|
|
18
|
+
}
|
|
19
|
+
if (obj !== null && typeof obj === 'object') {
|
|
20
|
+
return Object.keys(obj)
|
|
21
|
+
.sort()
|
|
22
|
+
.reduce((result, key) => {
|
|
23
|
+
result[key] = canonicalizeObject(obj[key]);
|
|
24
|
+
return result;
|
|
25
|
+
}, {});
|
|
26
|
+
}
|
|
27
|
+
throw new Error('Invalid object type');
|
|
28
|
+
}
|
|
29
|
+
exports.canonicalizeObject = canonicalizeObject;
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFibGVKc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9zaWduYWJsZUpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBVUE7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLEdBQWE7SUFDOUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxTQUFTLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUNsRixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ3BCLElBQUksRUFBRTthQUNOLE1BQU0sQ0FBQyxDQUFDLE1BQWdDLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQixDQUFFLEdBQW1DLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1RSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDVjtJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBbkJELGdEQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNpZ25hYmxlID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB8IFNpZ25hYmxlUmVjb3JkIHwgU2lnbmFibGVBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYWJsZVJlY29yZCB7XG4gIFtrZXk6IHN0cmluZ106IFNpZ25hYmxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hYmxlQXJyYXkge1xuICBba2V5OiBudW1iZXJdOiBTaWduYWJsZTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjYW5vbmljYWxpemVzIGFuIG9iamVjdCBieSBzb3J0aW5nIGl0cyBrZXlzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGJlIGNhbm9uaWNhbGl6ZWQuIEl0IGNhbiBiZSBhIGJvb2xlYW4sIG51bWJlciwgc3RyaW5nLFxuICogICAgICAgICAgICAgIGEgcmVjb3JkIG9mIHNpZ25hYmxlIHZhbHVlcywgb3IgYW4gYXJyYXkgb2Ygc2lnbmFibGUgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGNhbm9uaWNhbGl6ZWQgb2JqZWN0IHdpdGggc29ydGVkIGtleXMuXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIG9iamVjdCB0eXBlIGlzIGludmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5vbmljYWxpemVPYmplY3Qob2JqOiBTaWduYWJsZSk6IFNpZ25hYmxlIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdib29sZWFuJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoY2Fub25pY2FsaXplT2JqZWN0KTtcbiAgfVxuXG4gIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgLnNvcnQoKVxuICAgICAgLnJlZHVjZSgocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBTaWduYWJsZT4sIGtleSkgPT4ge1xuICAgICAgICByZXN1bHRba2V5XSA9IGNhbm9uaWNhbGl6ZU9iamVjdCgob2JqIGFzIHsgW2tleTogc3RyaW5nXTogU2lnbmFibGUgfSlba2V5XSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCB7fSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb2JqZWN0IHR5cGUnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo/utxo-lib';
|
|
2
|
+
import { Signable } from './signableJson';
|
|
3
|
+
/**
|
|
4
|
+
* Verifies a signature for a given message.
|
|
5
|
+
*
|
|
6
|
+
* @param {Signable} message - The message to verify.
|
|
7
|
+
* @param {string} signature - The signature to verify, in hexadecimal format.
|
|
8
|
+
* @param {string} pub - The public key in BIP32 format.
|
|
9
|
+
* @param {utxolib.Network} network - The network to use for verification.
|
|
10
|
+
* @returns {boolean} - Returns true if the signature is valid, false otherwise.
|
|
11
|
+
*/
|
|
12
|
+
export declare function verifyMessageSignature(message: Signable, signature: string, pub: string, network?: utxolib.Network): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a signature for a given message.
|
|
15
|
+
*
|
|
16
|
+
* @param {Signable} message - The message to sign.
|
|
17
|
+
* @param {string} prv - The private key in BIP32 format.
|
|
18
|
+
* @param {utxolib.Network} network - The network to use for signing.
|
|
19
|
+
* @returns {string} - Returns the signature in hexadecimal format.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createMessageSignature(message: Signable, prv: string, network?: utxolib.Network): string;
|
|
22
|
+
//# sourceMappingURL=signature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAsB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG9D;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,OAAkC,GAClD,OAAO,CAKT;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAO,CAAC,OAAkC,GAClD,MAAM,CAIR"}
|