@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.
Files changed (74) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/src/bitgo/environments.d.ts +1 -0
  3. package/dist/src/bitgo/environments.d.ts.map +1 -1
  4. package/dist/src/bitgo/environments.js +3 -1
  5. package/dist/src/bitgo/index.d.ts +1 -0
  6. package/dist/src/bitgo/index.d.ts.map +1 -1
  7. package/dist/src/bitgo/index.js +2 -1
  8. package/dist/src/bitgo/lightning/custodial/iLightning.d.ts.map +1 -0
  9. package/dist/src/bitgo/lightning/custodial/iLightning.js +110 -0
  10. package/dist/src/bitgo/lightning/custodial/index.d.ts +5 -0
  11. package/dist/src/bitgo/lightning/custodial/index.d.ts.map +1 -0
  12. package/dist/src/bitgo/lightning/custodial/index.js +21 -0
  13. package/dist/src/bitgo/lightning/{lightning.d.ts → custodial/lightning.d.ts} +2 -2
  14. package/dist/src/bitgo/lightning/custodial/lightning.d.ts.map +1 -0
  15. package/dist/src/bitgo/lightning/custodial/lightning.js +111 -0
  16. package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts +46 -0
  17. package/dist/src/bitgo/lightning/custodial/lightningUtils.d.ts.map +1 -0
  18. package/dist/src/bitgo/lightning/custodial/lightningUtils.js +137 -0
  19. package/dist/src/bitgo/lightning/custodial/lnurlCodec.d.ts.map +1 -0
  20. package/dist/src/bitgo/lightning/custodial/lnurlCodec.js +28 -0
  21. package/dist/src/bitgo/lightning/index.d.ts +2 -3
  22. package/dist/src/bitgo/lightning/index.d.ts.map +1 -1
  23. package/dist/src/bitgo/lightning/index.js +3 -4
  24. package/dist/src/bitgo/lightning/lightningUtils.d.ts +23 -37
  25. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -1
  26. package/dist/src/bitgo/lightning/lightningUtils.js +41 -96
  27. package/dist/src/bitgo/lightning/signableJson.d.ts +17 -0
  28. package/dist/src/bitgo/lightning/signableJson.d.ts.map +1 -0
  29. package/dist/src/bitgo/lightning/signableJson.js +30 -0
  30. package/dist/src/bitgo/lightning/signature.d.ts +22 -0
  31. package/dist/src/bitgo/lightning/signature.d.ts.map +1 -0
  32. package/dist/src/bitgo/lightning/signature.js +60 -0
  33. package/dist/src/bitgo/staking/iStakingWallet.d.ts +6 -0
  34. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  35. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  36. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +1 -1
  37. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -1
  38. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +71 -58
  39. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  40. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +9 -2
  41. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +40 -0
  42. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  43. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +92 -8
  44. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +0 -1
  45. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/tss/ecdsa/index.js +1 -2
  47. package/dist/src/bitgo/wallet/iWallet.d.ts +1 -1
  48. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  49. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  50. package/dist/src/bitgo/wallet/wallet.d.ts +1 -1
  51. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  52. package/dist/src/bitgo/wallet/wallet.js +3 -3
  53. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts +2 -0
  54. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts.map +1 -0
  55. package/dist/test/unit/bitgo/lightning/lightningUtils.js +62 -0
  56. package/dist/test/unit/bitgo/lightning/signableJson.d.ts +2 -0
  57. package/dist/test/unit/bitgo/lightning/signableJson.d.ts.map +1 -0
  58. package/dist/test/unit/bitgo/lightning/signableJson.js +52 -0
  59. package/dist/test/unit/bitgo/lightning/signature.d.ts +2 -0
  60. package/dist/test/unit/bitgo/lightning/signature.d.ts.map +1 -0
  61. package/dist/test/unit/bitgo/lightning/signature.js +81 -0
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +6 -6
  64. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  65. package/dist/src/bitgo/lightning/iLightning.js +0 -110
  66. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  67. package/dist/src/bitgo/lightning/lightning.js +0 -111
  68. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  69. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  70. package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.d.ts +0 -164
  71. package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.d.ts.map +0 -1
  72. package/dist/src/bitgo/utils/tss/ecdsa/SMC/types.js +0 -22
  73. /package/dist/src/bitgo/lightning/{iLightning.d.ts → custodial/iLightning.d.ts} +0 -0
  74. /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,5 +1,4 @@
1
- export * from './iLightning';
2
- export * from './lightning';
3
- export * from './lnurlCodec';
1
+ export * from './signableJson';
2
+ export * from './signature';
4
3
  export * from './lightningUtils';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,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("./iLightning"), exports);
18
- __exportStar(require("./lightning"), exports);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkI7QUFDN0IsOENBQTRCO0FBQzVCLCtDQUE2QjtBQUM3QixtREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2lMaWdodG5pbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWdodG5pbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9sbnVybENvZGVjJztcbmV4cG9ydCAqIGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBK0I7QUFDL0IsOENBQTRCO0FBQzVCLG1EQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2lnbmFibGVKc29uJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbmF0dXJlJztcbmV4cG9ydCAqIGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuIl19
@@ -1,46 +1,32 @@
1
- import { DecodedLnurlPayRequest, LnurlPayParams } from './iLightning';
2
- export declare type ParsedLightningInvoice = {
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
- * Decodes an LNURL-pay request and makes an HTTP request to the decoded url
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 decodeLnurlPay(lnurl: string): Promise<DecodedLnurlPayRequest>;
7
+ export declare function getLightningNetwork(networkName: LightningNetworkName): utxolib.Network;
25
8
  /**
26
- * Fetches a lightning invoice from an LNURL-pay callback server for a specified
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 fetchLnurlPayInvoice(params: LnurlPayParams): Promise<string>;
11
+ export declare function getLightningCoinName(network: utxolib.Network): string;
33
12
  /**
34
- * @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
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 validateLnurlInvoice(invoice: ParsedLightningInvoice, millisatAmount: string, metadata: string): void;
15
+ export declare function isValidLightningNetworkName(networkName: unknown): networkName is LightningNetworkName;
40
16
  /**
41
- * @param {unknown} invoiceStr - a lightning invoice
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 parseLightningInvoice(invoiceStr: unknown): ParsedLightningInvoice;
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":"AAGA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAoB,MAAM,cAAc,CAAC;AAIxF,oBAAY,sBAAsB,GAAG;IACnC;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYnF;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CASlF;AAoBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUpH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,sBAAsB,CA8BjF"}
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.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");
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
- * 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.
31
+ * Get the utxolib network for a lightning network.
41
32
  */
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
- };
33
+ function getLightningNetwork(networkName) {
34
+ return utxolib.networks[networkName];
53
35
  }
54
- exports.decodeLnurlPay = decodeLnurlPay;
36
+ exports.getLightningNetwork = getLightningNetwork;
55
37
  /**
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
38
+ * Get the lightning coin name for a utxolib network.
61
39
  */
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;
40
+ function getLightningCoinName(network) {
41
+ return network === utxolib.networks.bitcoin ? 'lnbtc' : 'tlnbtc';
70
42
  }
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;
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
- * @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
52
+ * Checks if the network is a valid lightning network.
93
53
  */
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
- }
54
+ function isValidLightningNetwork(network) {
55
+ return utxolib.isValidNetwork(network) && isValidLightningNetworkName(utxolib.getNetworkName(network));
103
56
  }
104
- exports.validateLnurlInvoice = validateLnurlInvoice;
57
+ exports.isValidLightningNetwork = isValidLightningNetwork;
105
58
  /**
106
- * @param {unknown} invoiceStr - a lightning invoice
107
- * @return {ParsedLightningInvoice}
108
- * @throws error for invalid lightning invoice
59
+ * Returns the utxolib network name for a lightning coin.
109
60
  */
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');
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 (millisatoshis === undefined) {
128
- throw new Error('invoice millisatoshis amount is invalid');
73
+ if (coinSpecificPath === 'lnbtc' && 'lnbtc' in obj) {
74
+ return obj.lnbtc;
129
75
  }
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');
76
+ if (coinSpecificPath === 'tlnbtc' && 'tlnbtc' in obj) {
77
+ return obj.tlnbtc;
133
78
  }
134
- return { millisatoshis, paymentHash, payeeNodeKey, descriptionHash };
79
+ throw new Error('invalid lightning coin specific');
135
80
  }
136
- exports.parseLightningInvoice = parseLightningInvoice;
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"}