@bitgo-beta/sdk-core 8.2.1-beta.715 → 8.2.1-beta.716

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 (48) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/src/bitgo/index.d.ts +0 -1
  3. package/dist/src/bitgo/index.d.ts.map +1 -1
  4. package/dist/src/bitgo/index.js +1 -2
  5. package/dist/src/bitgo/wallet/iWallet.d.ts +0 -2
  6. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  7. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  8. package/dist/src/bitgo/wallet/wallet.d.ts +0 -5
  9. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  10. package/dist/src/bitgo/wallet/wallet.js +1 -12
  11. package/dist/tsconfig.tsbuildinfo +1 -1
  12. package/package.json +8 -10
  13. package/dist/src/bitgo/lightning/codecs.d.ts +0 -320
  14. package/dist/src/bitgo/lightning/codecs.d.ts.map +0 -1
  15. package/dist/src/bitgo/lightning/codecs.js +0 -211
  16. package/dist/src/bitgo/lightning/index.d.ts +0 -6
  17. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  18. package/dist/src/bitgo/lightning/index.js +0 -22
  19. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -59
  20. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  21. package/dist/src/bitgo/lightning/lightningUtils.js +0 -224
  22. package/dist/src/bitgo/lightning/lightningWallet.d.ts +0 -18
  23. package/dist/src/bitgo/lightning/lightningWallet.d.ts.map +0 -1
  24. package/dist/src/bitgo/lightning/lightningWallet.js +0 -65
  25. package/dist/src/bitgo/lightning/signableJson.d.ts +0 -17
  26. package/dist/src/bitgo/lightning/signableJson.d.ts.map +0 -1
  27. package/dist/src/bitgo/lightning/signableJson.js +0 -29
  28. package/dist/src/bitgo/lightning/signature.d.ts +0 -22
  29. package/dist/src/bitgo/lightning/signature.d.ts.map +0 -1
  30. package/dist/src/bitgo/lightning/signature.js +0 -69
  31. package/dist/src/bitgo/wallet/lightning.d.ts +0 -20
  32. package/dist/src/bitgo/wallet/lightning.d.ts.map +0 -1
  33. package/dist/src/bitgo/wallet/lightning.js +0 -16
  34. package/dist/test/unit/bitgo/lightning/codecs.d.ts +0 -2
  35. package/dist/test/unit/bitgo/lightning/codecs.d.ts.map +0 -1
  36. package/dist/test/unit/bitgo/lightning/codecs.js +0 -147
  37. package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.d.ts +0 -4
  38. package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.d.ts.map +0 -1
  39. package/dist/test/unit/bitgo/lightning/createWatchOnlyFixture.js +0 -1562
  40. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts +0 -2
  41. package/dist/test/unit/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  42. package/dist/test/unit/bitgo/lightning/lightningUtils.js +0 -104
  43. package/dist/test/unit/bitgo/lightning/signableJson.d.ts +0 -2
  44. package/dist/test/unit/bitgo/lightning/signableJson.d.ts.map +0 -1
  45. package/dist/test/unit/bitgo/lightning/signableJson.js +0 -52
  46. package/dist/test/unit/bitgo/lightning/signature.d.ts +0 -2
  47. package/dist/test/unit/bitgo/lightning/signature.d.ts.map +0 -1
  48. package/dist/test/unit/bitgo/lightning/signature.js +0 -91
@@ -1,59 +0,0 @@
1
- import * as statics from '@bitgo-beta/statics';
2
- import * as utxolib from '@bitgo-beta/utxo-lib';
3
- import { WatchOnly } from './codecs';
4
- export declare const signerMacaroonPermissions: {
5
- entity: string;
6
- action: string;
7
- }[];
8
- export declare const lightningNetworkName: readonly ["bitcoin", "testnet"];
9
- export type LightningNetworkName = (typeof lightningNetworkName)[number];
10
- /**
11
- * Checks if the coin name is a lightning coin name.
12
- */
13
- export declare function isLightningCoinName(coinName: unknown): coinName is 'lnbtc' | 'tlnbtc';
14
- /**
15
- * Get the utxolib network for a lightning network.
16
- */
17
- export declare function getLightningNetwork(networkName: LightningNetworkName): utxolib.Network;
18
- /**
19
- * Get the lightning coin name for a utxolib network.
20
- */
21
- export declare function getLightningCoinName(network: utxolib.Network): string;
22
- /**
23
- * Checks if the network name is a valid lightning network name.
24
- */
25
- export declare function isValidLightningNetworkName(networkName: unknown): networkName is LightningNetworkName;
26
- /**
27
- * Checks if the network is a valid lightning network.
28
- */
29
- export declare function isValidLightningNetwork(network: unknown): network is utxolib.Network;
30
- /**
31
- * Returns the statics network data for a lightning coin.
32
- */
33
- export declare function getStaticsLightningNetwork(coinName: string): statics.LightningNetwork;
34
- /**
35
- * Returns the utxolib network for a lightning coin.
36
- */
37
- export declare function getUtxolibNetwork(coinName: string): utxolib.Network;
38
- /**
39
- * Returns coin specific data for a lightning coin.
40
- */
41
- export declare function unwrapLightningCoinSpecific<V>(obj: {
42
- lnbtc: V;
43
- } | {
44
- tlnbtc: V;
45
- }, coinSpecificPath: string): V;
46
- /**
47
- * Adds an IP caveat to a macaroon and returns the modified macaroon as a Base64 string.
48
- */
49
- export declare function addIPCaveatToMacaroon(macaroonBase64: string, ip: string): string;
50
- /**
51
- * Creates a watch-only wallet init data from the provided signer root key and network.
52
- */
53
- export declare function createWatchOnly(signerRootKey: string, network: utxolib.Network): WatchOnly;
54
- /**
55
- * Derives the shared Elliptic Curve Diffie-Hellman (ECDH) secret between the user's auth extended private key
56
- * and the Lightning service's public key for secure communication.
57
- */
58
- export declare function deriveLightningServiceSharedSecret(coinName: 'lnbtc' | 'tlnbtc', userAuthXprv: string): Buffer;
59
- //# sourceMappingURL=lightningUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAoB,MAAM,UAAU,CAAC;AAIvD,eAAO,MAAM,yBAAyB;;;GAiBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,iCAAkC,CAAC;AACpE,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,OAAO,GAAG,QAAQ,CAErF;AAED;;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,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CASrF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAMnE;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;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIhF;AAwED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAS1F;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAI7G"}
@@ -1,224 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.lightningNetworkName = exports.signerMacaroonPermissions = void 0;
37
- exports.isLightningCoinName = isLightningCoinName;
38
- exports.getLightningNetwork = getLightningNetwork;
39
- exports.getLightningCoinName = getLightningCoinName;
40
- exports.isValidLightningNetworkName = isValidLightningNetworkName;
41
- exports.isValidLightningNetwork = isValidLightningNetwork;
42
- exports.getStaticsLightningNetwork = getStaticsLightningNetwork;
43
- exports.getUtxolibNetwork = getUtxolibNetwork;
44
- exports.unwrapLightningCoinSpecific = unwrapLightningCoinSpecific;
45
- exports.addIPCaveatToMacaroon = addIPCaveatToMacaroon;
46
- exports.createWatchOnly = createWatchOnly;
47
- exports.deriveLightningServiceSharedSecret = deriveLightningServiceSharedSecret;
48
- const statics = __importStar(require("@bitgo-beta/statics"));
49
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
50
- const macaroon_1 = require("macaroon");
51
- const bs58check = __importStar(require("bs58check"));
52
- const ecdh_1 = require("../ecdh");
53
- // https://github.com/lightningnetwork/lnd/blob/master/docs/remote-signing.md#the-signer-node
54
- exports.signerMacaroonPermissions = [
55
- {
56
- entity: 'message',
57
- action: 'write',
58
- },
59
- {
60
- entity: 'signer',
61
- action: 'generate',
62
- },
63
- {
64
- entity: 'address',
65
- action: 'read',
66
- },
67
- {
68
- entity: 'onchain',
69
- action: 'write',
70
- },
71
- ];
72
- exports.lightningNetworkName = ['bitcoin', 'testnet'];
73
- /**
74
- * Checks if the coin name is a lightning coin name.
75
- */
76
- function isLightningCoinName(coinName) {
77
- return coinName === 'lnbtc' || coinName === 'tlnbtc';
78
- }
79
- /**
80
- * Get the utxolib network for a lightning network.
81
- */
82
- function getLightningNetwork(networkName) {
83
- return utxolib.networks[networkName];
84
- }
85
- /**
86
- * Get the lightning coin name for a utxolib network.
87
- */
88
- function getLightningCoinName(network) {
89
- return network === utxolib.networks.bitcoin ? 'lnbtc' : 'tlnbtc';
90
- }
91
- /**
92
- * Checks if the network name is a valid lightning network name.
93
- */
94
- function isValidLightningNetworkName(networkName) {
95
- return exports.lightningNetworkName.includes(networkName);
96
- }
97
- /**
98
- * Checks if the network is a valid lightning network.
99
- */
100
- function isValidLightningNetwork(network) {
101
- return utxolib.isValidNetwork(network) && isValidLightningNetworkName(utxolib.getNetworkName(network));
102
- }
103
- /**
104
- * Returns the statics network data for a lightning coin.
105
- */
106
- function getStaticsLightningNetwork(coinName) {
107
- if (!isLightningCoinName(coinName)) {
108
- throw new Error(`${coinName} is not a lightning coin`);
109
- }
110
- const coin = statics.coins.get(coinName);
111
- if (!(coin instanceof statics.LightningCoin)) {
112
- throw new Error('coin is not a lightning coin');
113
- }
114
- return coin.network;
115
- }
116
- /**
117
- * Returns the utxolib network for a lightning coin.
118
- */
119
- function getUtxolibNetwork(coinName) {
120
- const networkName = getStaticsLightningNetwork(coinName).utxolibName;
121
- if (!isValidLightningNetworkName(networkName)) {
122
- throw new Error('invalid lightning network');
123
- }
124
- return getLightningNetwork(networkName);
125
- }
126
- /**
127
- * Returns coin specific data for a lightning coin.
128
- */
129
- function unwrapLightningCoinSpecific(obj, coinSpecificPath) {
130
- if (coinSpecificPath !== 'lnbtc' && coinSpecificPath !== 'tlnbtc') {
131
- throw new Error(`invalid coinSpecificPath ${coinSpecificPath} for lightning coin`);
132
- }
133
- if (coinSpecificPath === 'lnbtc' && 'lnbtc' in obj) {
134
- return obj.lnbtc;
135
- }
136
- if (coinSpecificPath === 'tlnbtc' && 'tlnbtc' in obj) {
137
- return obj.tlnbtc;
138
- }
139
- throw new Error('invalid lightning coin specific');
140
- }
141
- /**
142
- * Adds an IP caveat to a macaroon and returns the modified macaroon as a Base64 string.
143
- */
144
- function addIPCaveatToMacaroon(macaroonBase64, ip) {
145
- const macaroon = (0, macaroon_1.importMacaroon)(macaroonBase64);
146
- macaroon.addFirstPartyCaveat(`ipaddr ${ip}`);
147
- return (0, macaroon_1.bytesToBase64)(macaroon.exportBinary());
148
- }
149
- const PURPOSE_WRAPPED_P2WKH = 49;
150
- const PURPOSE_P2WKH = 84;
151
- const PURPOSE_P2TR = 86;
152
- const PURPOSE_ALL_OTHERS = 1017;
153
- /**
154
- * Converts an extended public key (xpub) to the appropriate prefix (ypub, vpub, etc.) based on its purpose and network.
155
- */
156
- function convertXpubPrefix(xpub, purpose, isMainnet) {
157
- if (purpose === PURPOSE_P2TR || purpose === PURPOSE_ALL_OTHERS) {
158
- return xpub;
159
- }
160
- const data = bs58check.decode(xpub);
161
- let versionBytes;
162
- switch (purpose) {
163
- case PURPOSE_WRAPPED_P2WKH:
164
- versionBytes = isMainnet ? Buffer.from([0x04, 0x9d, 0x7c, 0xb2]) : Buffer.from([0x04, 0x4a, 0x52, 0x62]); // ypub/upub for p2sh-p2wpkh
165
- break;
166
- case PURPOSE_P2WKH:
167
- versionBytes = isMainnet ? Buffer.from([0x04, 0xb2, 0x47, 0x46]) : Buffer.from([0x04, 0x5f, 0x1c, 0xf6]); // zpub/vpub for p2wpkh
168
- break;
169
- default:
170
- throw new Error('Unsupported purpose');
171
- }
172
- versionBytes.copy(data, 0, 0, 4);
173
- return bs58check.encode(data);
174
- }
175
- /**
176
- * Derives watch-only accounts from the master HD node for the given purposes and network.
177
- */
178
- function deriveWatchOnlyAccounts(masterHDNode, isMainnet) {
179
- // https://github.com/lightningnetwork/lnd/blob/master/docs/remote-signing.md#required-accounts
180
- if (masterHDNode.isNeutered()) {
181
- throw new Error('masterHDNode must not be neutered');
182
- }
183
- const purposes = [PURPOSE_WRAPPED_P2WKH, PURPOSE_P2WKH, PURPOSE_P2TR, PURPOSE_ALL_OTHERS];
184
- return purposes.flatMap((purpose) => {
185
- const maxAccount = purpose === PURPOSE_ALL_OTHERS ? 255 : 0;
186
- const coinType = purpose !== PURPOSE_ALL_OTHERS || isMainnet ? 0 : 1;
187
- return Array.from({ length: maxAccount + 1 }, (_, account) => {
188
- const path = `m/${purpose}'/${coinType}'/${account}'`;
189
- const derivedNode = masterHDNode.derivePath(path);
190
- // Ensure the node is neutered (i.e., converted to public key only)
191
- const neuteredNode = derivedNode.neutered();
192
- const xpub = convertXpubPrefix(neuteredNode.toBase58(), purpose, isMainnet);
193
- return {
194
- purpose,
195
- coin_type: coinType,
196
- account,
197
- xpub,
198
- };
199
- });
200
- });
201
- }
202
- /**
203
- * Creates a watch-only wallet init data from the provided signer root key and network.
204
- */
205
- function createWatchOnly(signerRootKey, network) {
206
- const masterHDNode = utxolib.bip32.fromBase58(signerRootKey, network);
207
- const getCurrentUnixTimestamp = () => {
208
- return Math.floor(Date.now() / 1000);
209
- };
210
- const master_key_birthday_timestamp = getCurrentUnixTimestamp().toString();
211
- const master_key_fingerprint = masterHDNode.fingerprint.toString('hex');
212
- const accounts = deriveWatchOnlyAccounts(masterHDNode, utxolib.isMainnet(network));
213
- return { master_key_birthday_timestamp, master_key_fingerprint, accounts };
214
- }
215
- /**
216
- * Derives the shared Elliptic Curve Diffie-Hellman (ECDH) secret between the user's auth extended private key
217
- * and the Lightning service's public key for secure communication.
218
- */
219
- function deriveLightningServiceSharedSecret(coinName, userAuthXprv) {
220
- const publicKey = Buffer.from(getStaticsLightningNetwork(coinName).lightningServicePubKey, 'hex');
221
- const userAuthHdNode = utxolib.bip32.fromBase58(userAuthXprv);
222
- return (0, ecdh_1.getSharedSecret)(userAuthHdNode, publicKey);
223
- }
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQSxrREFFQztBQUtELGtEQUVDO0FBS0Qsb0RBRUM7QUFLRCxrRUFFQztBQUtELDBEQUVDO0FBS0QsZ0VBU0M7QUFLRCw4Q0FNQztBQUtELGtFQVdDO0FBS0Qsc0RBSUM7QUEyRUQsMENBU0M7QUFNRCxnRkFJQztBQS9NRCw2REFBK0M7QUFDL0MsOERBQWdEO0FBQ2hELHVDQUF5RDtBQUN6RCxxREFBdUM7QUFFdkMsa0NBQTBDO0FBRTFDLDZGQUE2RjtBQUNoRixRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDO1FBQ0UsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLE9BQU87S0FDaEI7SUFDRDtRQUNFLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxVQUFVO0tBQ25CO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsT0FBTztLQUNoQjtDQUNGLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBVSxDQUFDO0FBR3BFOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsUUFBaUI7SUFDbkQsT0FBTyxRQUFRLEtBQUssT0FBTyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUM7QUFDdkQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsV0FBaUM7SUFDbkUsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFv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Q0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLGFBQXFCLEVBQUUsT0FBd0I7SUFDN0UsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxFQUFFO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0lBQ0YsTUFBTSw2QkFBNkIsR0FBRyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNFLE1BQU0sc0JBQXNCLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDN0UsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLFFBQTRCLEVBQUUsWUFBb0I7SUFDbkcsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxPQUFPLElBQUEsc0JBQWUsRUFBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHN0YXRpY3MgZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGltcG9ydE1hY2Fyb29uLCBieXRlc1RvQmFzZTY0IH0gZnJvbSAnbWFjYXJvb24nO1xuaW1wb3J0ICogYXMgYnM1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5pbXBvcnQgeyBXYXRjaE9ubHksIFdhdGNoT25seUFjY291bnQgfSBmcm9tICcuL2NvZGVjcyc7XG5pbXBvcnQgeyBnZXRTaGFyZWRTZWNyZXQgfSBmcm9tICcuLi9lY2RoJztcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2xpZ2h0bmluZ25ldHdvcmsvbG5kL2Jsb2IvbWFzdGVyL2RvY3MvcmVtb3RlLXNpZ25pbmcubWQjdGhlLXNpZ25lci1ub2RlXG5leHBvcnQgY29uc3Qgc2lnbmVyTWFjYXJvb25QZXJtaXNzaW9ucyA9IFtcbiAge1xuICAgIGVudGl0eTogJ21lc3NhZ2UnLFxuICAgIGFjdGlvbjogJ3dyaXRlJyxcbiAgfSxcbiAge1xuICAgIGVudGl0eTogJ3NpZ25lcicsXG4gICAgYWN0aW9uOiAnZ2VuZXJhdGUnLFxuICB9LFxuICB7XG4gICAgZW50aXR5OiAnYWRkcmVzcycsXG4gICAgYWN0aW9uOiAncmVhZCcsXG4gIH0sXG4gIHtcbiAgICBlbnRpdHk6ICdvbmNoYWluJyxcbiAgICBhY3Rpb246ICd3cml0ZScsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgbGlnaHRuaW5nTmV0d29ya05hbWUgPSBbJ2JpdGNvaW4nLCAndGVzdG5ldCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlnaHRuaW5nTmV0d29ya05hbWUgPSAodHlwZW9mIGxpZ2h0bmluZ05ldHdvcmtOYW1lKVtudW1iZXJdO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY29pbiBuYW1lIGlzIGEgbGlnaHRuaW5nIGNvaW4gbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGlnaHRuaW5nQ29pbk5hbWUoY29pbk5hbWU6IHVua25vd24pOiBjb2luTmFtZSBpcyAnbG5idGMnIHwgJ3RsbmJ0Yycge1xuICByZXR1cm4gY29pbk5hbWUgPT09ICdsbmJ0YycgfHwgY29pbk5hbWUgPT09ICd0bG5idGMnO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdXR4b2xpYiBuZXR3b3JrIGZvciBhIGxpZ2h0bmluZyBuZXR3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nTmV0d29yayhuZXR3b3JrTmFtZTogTGlnaHRuaW5nTmV0d29ya05hbWUpOiB1dHhvbGliLk5ldHdvcmsge1xuICByZXR1cm4gdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV07XG59XG5cbi8qKlxuICogR2V0IHRoZSBsaWdodG5pbmcgY29pbiBuYW1lIGZvciBhIHV0eG9saWIgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpZ2h0bmluZ0NvaW5OYW1lKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHN0cmluZyB7XG4gIHJldHVybiBuZXR3b3JrID09PSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gPyAnbG5idGMnIDogJ3RsbmJ0Yyc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBuZXR3b3JrIG5hbWUgaXMgYSB2YWxpZCBsaWdodG5pbmcgbmV0d29yayBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lOiB1bmtub3duKTogbmV0d29ya05hbWUgaXMgTGlnaHRuaW5nTmV0d29ya05hbWUge1xuICByZXR1cm4gbGlnaHRuaW5nTmV0d29ya05hbWUuaW5jbHVkZXMobmV0d29ya05hbWUgYXMgTGlnaHRuaW5nTmV0d29ya05hbWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgbmV0d29yayBpcyBhIHZhbGlkIGxpZ2h0bmluZyBuZXR3b3JrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsobmV0d29yazogdW5rbm93bik6IG5ldHdvcmsgaXMgdXR4b2xpYi5OZXR3b3JrIHtcbiAgcmV0dXJuIHV0eG9saWIuaXNWYWxpZE5ldHdvcmsobmV0d29yaykgJiYgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKHV0eG9saWIuZ2V0TmV0d29ya05hbWUobmV0d29yaykpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0YXRpY3MgbmV0d29yayBkYXRhIGZvciBhIGxpZ2h0bmluZyBjb2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoY29pbk5hbWU6IHN0cmluZyk6IHN0YXRpY3MuTGlnaHRuaW5nTmV0d29yayB7XG4gIGlmICghaXNMaWdodG5pbmdDb2luTmFtZShjb2luTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7Y29pbk5hbWV9IGlzIG5vdCBhIGxpZ2h0bmluZyBjb2luYCk7XG4gIH1cbiAgY29uc3QgY29pbiA9IHN0YXRpY3MuY29pbnMuZ2V0KGNvaW5OYW1lKTtcbiAgaWYgKCEoY29pbiBpbnN0YW5jZW9mIHN0YXRpY3MuTGlnaHRuaW5nQ29pbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvaW4gaXMgbm90IGEgbGlnaHRuaW5nIGNvaW4nKTtcbiAgfVxuICByZXR1cm4gY29pbi5uZXR3b3JrO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHV0eG9saWIgbmV0d29yayBmb3IgYSBsaWdodG5pbmcgY29pbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFV0eG9saWJOZXR3b3JrKGNvaW5OYW1lOiBzdHJpbmcpOiB1dHhvbGliLk5ldHdvcmsge1xuICBjb25zdCBuZXR3b3JrTmFtZSA9IGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKGNvaW5OYW1lKS51dHhvbGliTmFtZTtcbiAgaWYgKCFpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGxpZ2h0bmluZyBuZXR3b3JrJyk7XG4gIH1cbiAgcmV0dXJuIGdldExpZ2h0bmluZ05ldHdvcmsobmV0d29ya05hbWUpO1xufVxuXG4vKipcbiAqIFJldHVybnMgY29pbiBzcGVjaWZpYyBkYXRhIGZvciBhIGxpZ2h0bmluZyBjb2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwTGlnaHRuaW5nQ29pblNwZWNpZmljPFY+KG9iajogeyBsbmJ0YzogViB9IHwgeyB0bG5idGM6IFYgfSwgY29pblNwZWNpZmljUGF0aDogc3RyaW5nKTogViB7XG4gIGlmIChjb2luU3BlY2lmaWNQYXRoICE9PSAnbG5idGMnICYmIGNvaW5TcGVjaWZpY1BhdGggIT09ICd0bG5idGMnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNvaW5TcGVjaWZpY1BhdGggJHtjb2luU3BlY2lmaWNQYXRofSBmb3IgbGlnaHRuaW5nIGNvaW5gKTtcbiAgfVxuICBpZiAoY29pblNwZWNpZmljUGF0aCA9PT0gJ2xuYnRjJyAmJiAnbG5idGMnIGluIG9iaikge1xuICAgIHJldHVybiBvYmoubG5idGM7XG4gIH1cbiAgaWYgKGNvaW5TcGVjaWZpY1BhdGggPT09ICd0bG5idGMnICYmICd0bG5idGMnIGluIG9iaikge1xuICAgIHJldHVybiBvYmoudGxuYnRjO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBsaWdodG5pbmcgY29pbiBzcGVjaWZpYycpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gSVAgY2F2ZWF0IHRvIGEgbWFjYXJvb24gYW5kIHJldHVybnMgdGhlIG1vZGlmaWVkIG1hY2Fyb29uIGFzIGEgQmFzZTY0IHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZElQQ2F2ZWF0VG9NYWNhcm9vbihtYWNhcm9vbkJhc2U2NDogc3RyaW5nLCBpcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWFjYXJvb24gPSBpbXBvcnRNYWNhcm9vbihtYWNhcm9vbkJhc2U2NCk7XG4gIG1hY2Fyb29uLmFkZEZpcnN0UGFydHlDYXZlYXQoYGlwYWRkciAke2lwfWApO1xuICByZXR1cm4gYnl0ZXNUb0Jhc2U2NChtYWNhcm9vbi5leHBvcnRCaW5hcnkoKSk7XG59XG5cbmNvbnN0IFBVUlBPU0VfV1JBUFBFRF9QMldLSCA9IDQ5O1xuY29uc3QgUFVSUE9TRV9QMldLSCA9IDg0O1xuY29uc3QgUFVSUE9TRV9QMlRSID0gODY7XG5jb25zdCBQVVJQT1NFX0FMTF9PVEhFUlMgPSAxMDE3O1xuXG50eXBlIEV4dGVuZGVkS2V5UHVycG9zZSA9XG4gIHwgdHlwZW9mIFBVUlBPU0VfV1JBUFBFRF9QMldLSFxuICB8IHR5cGVvZiBQVVJQT1NFX1AyV0tIXG4gIHwgdHlwZW9mIFBVUlBPU0VfUDJUUlxuICB8IHR5cGVvZiBQVVJQT1NFX0FMTF9PVEhFUlM7XG5cbi8qKlxuICogQ29udmVydHMgYW4gZXh0ZW5kZWQgcHVibGljIGtleSAoeHB1YikgdG8gdGhlIGFwcHJvcHJpYXRlIHByZWZpeCAoeXB1YiwgdnB1YiwgZXRjLikgYmFzZWQgb24gaXRzIHB1cnBvc2UgYW5kIG5ldHdvcmsuXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRYcHViUHJlZml4KHhwdWI6IHN0cmluZywgcHVycG9zZTogRXh0ZW5kZWRLZXlQdXJwb3NlLCBpc01haW5uZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAocHVycG9zZSA9PT0gUFVSUE9TRV9QMlRSIHx8IHB1cnBvc2UgPT09IFBVUlBPU0VfQUxMX09USEVSUykge1xuICAgIHJldHVybiB4cHViO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBiczU4Y2hlY2suZGVjb2RlKHhwdWIpO1xuXG4gIGxldCB2ZXJzaW9uQnl0ZXM6IEJ1ZmZlcjtcblxuICBzd2l0Y2ggKHB1cnBvc2UpIHtcbiAgICBjYXNlIFBVUlBPU0VfV1JBUFBFRF9QMldLSDpcbiAgICAgIHZlcnNpb25CeXRlcyA9IGlzTWFpbm5ldCA/IEJ1ZmZlci5mcm9tKFsweDA0LCAweDlkLCAweDdjLCAweGIyXSkgOiBCdWZmZXIuZnJvbShbMHgwNCwgMHg0YSwgMHg1MiwgMHg2Ml0pOyAvLyB5cHViL3VwdWIgZm9yIHAyc2gtcDJ3cGtoXG4gICAgICBicmVhaztcbiAgICBjYXNlIFBVUlBPU0VfUDJXS0g6XG4gICAgICB2ZXJzaW9uQnl0ZXMgPSBpc01haW5uZXQgPyBCdWZmZXIuZnJvbShbMHgwNCwgMHhiMiwgMHg0NywgMHg0Nl0pIDogQnVmZmVyLmZyb20oWzB4MDQsIDB4NWYsIDB4MWMsIDB4ZjZdKTsgLy8genB1Yi92cHViIGZvciBwMndwa2hcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHB1cnBvc2UnKTtcbiAgfVxuXG4gIHZlcnNpb25CeXRlcy5jb3B5KGRhdGEsIDAsIDAsIDQpO1xuICByZXR1cm4gYnM1OGNoZWNrLmVuY29kZShkYXRhKTtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIHdhdGNoLW9ubHkgYWNjb3VudHMgZnJvbSB0aGUgbWFzdGVyIEhEIG5vZGUgZm9yIHRoZSBnaXZlbiBwdXJwb3NlcyBhbmQgbmV0d29yay5cbiAqL1xuZnVuY3Rpb24gZGVyaXZlV2F0Y2hPbmx5QWNjb3VudHMobWFzdGVySEROb2RlOiB1dHhvbGliLkJJUDMySW50ZXJmYWNlLCBpc01haW5uZXQ6IGJvb2xlYW4pOiBXYXRjaE9ubHlBY2NvdW50W10ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGlnaHRuaW5nbmV0d29yay9sbmQvYmxvYi9tYXN0ZXIvZG9jcy9yZW1vdGUtc2lnbmluZy5tZCNyZXF1aXJlZC1hY2NvdW50c1xuICBpZiAobWFzdGVySEROb2RlLmlzTmV1dGVyZWQoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWFzdGVySEROb2RlIG11c3Qgbm90IGJlIG5ldXRlcmVkJyk7XG4gIH1cblxuICBjb25zdCBwdXJwb3NlcyA9IFtQVVJQT1NFX1dSQVBQRURfUDJXS0gsIFBVUlBPU0VfUDJXS0gsIFBVUlBPU0VfUDJUUiwgUFVSUE9TRV9BTExfT1RIRVJTXSBhcyBjb25zdDtcblxuICByZXR1cm4gcHVycG9zZXMuZmxhdE1hcCgocHVycG9zZSkgPT4ge1xuICAgIGNvbnN0IG1heEFjY291bnQgPSBwdXJwb3NlID09PSBQVVJQT1NFX0FMTF9PVEhFUlMgPyAyNTUgOiAwO1xuICAgIGNvbnN0IGNvaW5UeXBlID0gcHVycG9zZSAhPT0gUFVSUE9TRV9BTExfT1RIRVJTIHx8IGlzTWFpbm5ldCA/IDAgOiAxO1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IG1heEFjY291bnQgKyAxIH0sIChfLCBhY2NvdW50KSA9PiB7XG4gICAgICBjb25zdCBwYXRoID0gYG0vJHtwdXJwb3NlfScvJHtjb2luVHlwZX0nLyR7YWNjb3VudH0nYDtcbiAgICAgIGNvbnN0IGRlcml2ZWROb2RlID0gbWFzdGVySEROb2RlLmRlcml2ZVBhdGgocGF0aCk7XG5cbiAgICAgIC8vIEVuc3VyZSB0aGUgbm9kZSBpcyBuZXV0ZXJlZCAoaS5lLiwgY29udmVydGVkIHRvIHB1YmxpYyBrZXkgb25seSlcbiAgICAgIGNvbnN0IG5ldXRlcmVkTm9kZSA9IGRlcml2ZWROb2RlLm5ldXRlcmVkKCk7XG4gICAgICBjb25zdCB4cHViID0gY29udmVydFhwdWJQcmVmaXgobmV1dGVyZWROb2RlLnRvQmFzZTU4KCksIHB1cnBvc2UsIGlzTWFpbm5ldCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHB1cnBvc2UsXG4gICAgICAgIGNvaW5fdHlwZTogY29pblR5cGUsXG4gICAgICAgIGFjY291bnQsXG4gICAgICAgIHhwdWIsXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgd2F0Y2gtb25seSB3YWxsZXQgaW5pdCBkYXRhIGZyb20gdGhlIHByb3ZpZGVkIHNpZ25lciByb290IGtleSBhbmQgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdhdGNoT25seShzaWduZXJSb290S2V5OiBzdHJpbmcsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFdhdGNoT25seSB7XG4gIGNvbnN0IG1hc3RlckhETm9kZSA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChzaWduZXJSb290S2V5LCBuZXR3b3JrKTtcbiAgY29uc3QgZ2V0Q3VycmVudFVuaXhUaW1lc3RhbXAgPSAoKSA9PiB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICB9O1xuICBjb25zdCBtYXN0ZXJfa2V5X2JpcnRoZGF5X3RpbWVzdGFtcCA9IGdldEN1cnJlbnRVbml4VGltZXN0YW1wKCkudG9TdHJpbmcoKTtcbiAgY29uc3QgbWFzdGVyX2tleV9maW5nZXJwcmludCA9IG1hc3RlckhETm9kZS5maW5nZXJwcmludC50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IGFjY291bnRzID0gZGVyaXZlV2F0Y2hPbmx5QWNjb3VudHMobWFzdGVySEROb2RlLCB1dHhvbGliLmlzTWFpbm5ldChuZXR3b3JrKSk7XG4gIHJldHVybiB7IG1hc3Rlcl9rZXlfYmlydGhkYXlfdGltZXN0YW1wLCBtYXN0ZXJfa2V5X2ZpbmdlcnByaW50LCBhY2NvdW50cyB9O1xufVxuXG4vKipcbiAqIERlcml2ZXMgdGhlIHNoYXJlZCBFbGxpcHRpYyBDdXJ2ZSBEaWZmaWUtSGVsbG1hbiAoRUNESCkgc2VjcmV0IGJldHdlZW4gdGhlIHVzZXIncyBhdXRoIGV4dGVuZGVkIHByaXZhdGUga2V5XG4gKiBhbmQgdGhlIExpZ2h0bmluZyBzZXJ2aWNlJ3MgcHVibGljIGtleSBmb3Igc2VjdXJlIGNvbW11bmljYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0KGNvaW5OYW1lOiAnbG5idGMnIHwgJ3RsbmJ0YycsIHVzZXJBdXRoWHBydjogc3RyaW5nKTogQnVmZmVyIHtcbiAgY29uc3QgcHVibGljS2V5ID0gQnVmZmVyLmZyb20oZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsoY29pbk5hbWUpLmxpZ2h0bmluZ1NlcnZpY2VQdWJLZXksICdoZXgnKTtcbiAgY29uc3QgdXNlckF1dGhIZE5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodXNlckF1dGhYcHJ2KTtcbiAgcmV0dXJuIGdldFNoYXJlZFNlY3JldCh1c2VyQXV0aEhkTm9kZSwgcHVibGljS2V5KTtcbn1cbiJdfQ==
@@ -1,18 +0,0 @@
1
- import { Wallet } from '../wallet';
2
- import { LightningAuthKeychain, LightningKeychain, UpdateLightningWallet } from './codecs';
3
- /**
4
- * Get the lightning keychain for the given wallet.
5
- */
6
- export declare function getLightningKeychain(wallet: Wallet): Promise<LightningKeychain>;
7
- /**
8
- * Get the lightning auth keychains for the given wallet.
9
- */
10
- export declare function getLightningAuthKeychains(wallet: Wallet): Promise<{
11
- userAuthKey: LightningAuthKeychain;
12
- nodeAuthKey: LightningAuthKeychain;
13
- }>;
14
- /**
15
- * Update the lightning wallet with the given data.
16
- */
17
- export declare function updateLightningWallet(wallet: Wallet, data: UpdateLightningWallet): Promise<unknown>;
18
- //# sourceMappingURL=lightningWallet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lightningWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAI3F;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAcrF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,WAAW,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,qBAAqB,CAAA;CAAE,CAAC,CA2BrF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMzG"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLightningKeychain = getLightningKeychain;
4
- exports.getLightningAuthKeychains = getLightningAuthKeychains;
5
- exports.updateLightningWallet = updateLightningWallet;
6
- const codecs_1 = require("./codecs");
7
- const utils_1 = require("../utils");
8
- const lightningUtils_1 = require("./lightningUtils");
9
- /**
10
- * Get the lightning keychain for the given wallet.
11
- */
12
- async function getLightningKeychain(wallet) {
13
- const coin = wallet.baseCoin;
14
- if (coin.getFamily() !== 'lnbtc') {
15
- throw new Error(`Invalid coin to get lightning Keychain: ${coin.getFamily()}`);
16
- }
17
- const keyIds = wallet.keyIds();
18
- if (keyIds.length !== 1) {
19
- throw new Error(`Invalid number of key in lightning wallet: ${keyIds.length}`);
20
- }
21
- const keychain = await coin.keychains().get({ id: keyIds[0] });
22
- return (0, utils_1.decodeOrElse)(codecs_1.LightningKeychain.name, codecs_1.LightningKeychain, keychain, (_) => {
23
- // DON'T throw errors from decodeOrElse. It could leak sensitive information.
24
- throw new Error(`Invalid user key`);
25
- });
26
- }
27
- /**
28
- * Get the lightning auth keychains for the given wallet.
29
- */
30
- async function getLightningAuthKeychains(wallet) {
31
- const coin = wallet.baseCoin;
32
- if (coin.getFamily() !== 'lnbtc') {
33
- throw new Error(`Invalid coin to get lightning auth keychains: ${coin.getFamily()}`);
34
- }
35
- const authKeyIds = wallet.coinSpecific()?.keys;
36
- if (authKeyIds?.length !== 2) {
37
- throw new Error(`Invalid number of auth keys in lightning wallet: ${authKeyIds?.length}`);
38
- }
39
- const keychains = await Promise.all(authKeyIds.map((id) => coin.keychains().get({ id })));
40
- const authKeychains = keychains.map((keychain) => {
41
- return (0, utils_1.decodeOrElse)(codecs_1.LightningAuthKeychain.name, codecs_1.LightningAuthKeychain, keychain, (_) => {
42
- // DON'T throw errors from decodeOrElse. It could leak sensitive information.
43
- throw new Error(`Invalid lightning auth key: ${keychain?.id}`);
44
- });
45
- });
46
- const [userAuthKey, nodeAuthKey] = ['userAuth', 'nodeAuth'].map((purpose) => {
47
- const keychain = authKeychains.find((k) => (0, lightningUtils_1.unwrapLightningCoinSpecific)(k.coinSpecific, coin.getChain()).purpose === purpose);
48
- if (!keychain) {
49
- throw new Error(`Missing ${purpose} key`);
50
- }
51
- return keychain;
52
- });
53
- return { userAuthKey, nodeAuthKey };
54
- }
55
- /**
56
- * Update the lightning wallet with the given data.
57
- */
58
- async function updateLightningWallet(wallet, data) {
59
- const coin = wallet.baseCoin;
60
- if (coin.getFamily() !== 'lnbtc') {
61
- throw new Error(`Invalid coin to update lightning wallet: ${coin.getFamily()}`);
62
- }
63
- return await wallet.bitgo.put(wallet.url()).send(data).result();
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxvREFjQztBQUtELDhEQTZCQztBQUtELHNEQU1DO0FBbEVELHFDQUEyRjtBQUMzRixvQ0FBd0M7QUFDeEMscURBQStEO0FBRS9EOztHQUVHO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BQWM7SUFDdkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRCxPQUFPLElBQUEsb0JBQVksRUFBQywwQkFBaUIsQ0FBQyxJQUFJLEVBQUUsMEJBQWlCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDN0UsNkVBQTZFO1FBQzdFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsTUFBYztJQUVkLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQztJQUMvQyxJQUFJLFVBQVUsRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQy9DLE9BQU8sSUFBQSxvQkFBWSxFQUFDLDhCQUFxQixDQUFDLElBQUksRUFBRSw4QkFBcUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyRiw2RUFBNkU7WUFDN0UsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FDakMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsNENBQTJCLEVBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUN4RixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLE9BQU8sTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUscUJBQXFCLENBQUMsTUFBYyxFQUFFLElBQTJCO0lBQ3JGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsT0FBTyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IExpZ2h0bmluZ0F1dGhLZXljaGFpbiwgTGlnaHRuaW5nS2V5Y2hhaW4sIFVwZGF0ZUxpZ2h0bmluZ1dhbGxldCB9IGZyb20gJy4vY29kZWNzJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHVud3JhcExpZ2h0bmluZ0NvaW5TcGVjaWZpYyB9IGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuXG4vKipcbiAqIEdldCB0aGUgbGlnaHRuaW5nIGtleWNoYWluIGZvciB0aGUgZ2l2ZW4gd2FsbGV0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nS2V5Y2hhaW4od2FsbGV0OiBXYWxsZXQpOiBQcm9taXNlPExpZ2h0bmluZ0tleWNoYWluPiB7XG4gIGNvbnN0IGNvaW4gPSB3YWxsZXQuYmFzZUNvaW47XG4gIGlmIChjb2luLmdldEZhbWlseSgpICE9PSAnbG5idGMnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNvaW4gdG8gZ2V0IGxpZ2h0bmluZyBLZXljaGFpbjogJHtjb2luLmdldEZhbWlseSgpfWApO1xuICB9XG4gIGNvbnN0IGtleUlkcyA9IHdhbGxldC5rZXlJZHMoKTtcbiAgaWYgKGtleUlkcy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbnVtYmVyIG9mIGtleSBpbiBsaWdodG5pbmcgd2FsbGV0OiAke2tleUlkcy5sZW5ndGh9YCk7XG4gIH1cbiAgY29uc3Qga2V5Y2hhaW4gPSBhd2FpdCBjb2luLmtleWNoYWlucygpLmdldCh7IGlkOiBrZXlJZHNbMF0gfSk7XG4gIHJldHVybiBkZWNvZGVPckVsc2UoTGlnaHRuaW5nS2V5Y2hhaW4ubmFtZSwgTGlnaHRuaW5nS2V5Y2hhaW4sIGtleWNoYWluLCAoXykgPT4ge1xuICAgIC8vIERPTidUIHRocm93IGVycm9ycyBmcm9tIGRlY29kZU9yRWxzZS4gSXQgY291bGQgbGVhayBzZW5zaXRpdmUgaW5mb3JtYXRpb24uXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVzZXIga2V5YCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbGlnaHRuaW5nIGF1dGgga2V5Y2hhaW5zIGZvciB0aGUgZ2l2ZW4gd2FsbGV0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGlnaHRuaW5nQXV0aEtleWNoYWlucyhcbiAgd2FsbGV0OiBXYWxsZXRcbik6IFByb21pc2U8eyB1c2VyQXV0aEtleTogTGlnaHRuaW5nQXV0aEtleWNoYWluOyBub2RlQXV0aEtleTogTGlnaHRuaW5nQXV0aEtleWNoYWluIH0+IHtcbiAgY29uc3QgY29pbiA9IHdhbGxldC5iYXNlQ29pbjtcbiAgaWYgKGNvaW4uZ2V0RmFtaWx5KCkgIT09ICdsbmJ0YycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY29pbiB0byBnZXQgbGlnaHRuaW5nIGF1dGgga2V5Y2hhaW5zOiAke2NvaW4uZ2V0RmFtaWx5KCl9YCk7XG4gIH1cbiAgY29uc3QgYXV0aEtleUlkcyA9IHdhbGxldC5jb2luU3BlY2lmaWMoKT8ua2V5cztcbiAgaWYgKGF1dGhLZXlJZHM/Lmxlbmd0aCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBudW1iZXIgb2YgYXV0aCBrZXlzIGluIGxpZ2h0bmluZyB3YWxsZXQ6ICR7YXV0aEtleUlkcz8ubGVuZ3RofWApO1xuICB9XG4gIGNvbnN0IGtleWNoYWlucyA9IGF3YWl0IFByb21pc2UuYWxsKGF1dGhLZXlJZHMubWFwKChpZCkgPT4gY29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZCB9KSkpO1xuICBjb25zdCBhdXRoS2V5Y2hhaW5zID0ga2V5Y2hhaW5zLm1hcCgoa2V5Y2hhaW4pID0+IHtcbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKExpZ2h0bmluZ0F1dGhLZXljaGFpbi5uYW1lLCBMaWdodG5pbmdBdXRoS2V5Y2hhaW4sIGtleWNoYWluLCAoXykgPT4ge1xuICAgICAgLy8gRE9OJ1QgdGhyb3cgZXJyb3JzIGZyb20gZGVjb2RlT3JFbHNlLiBJdCBjb3VsZCBsZWFrIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsaWdodG5pbmcgYXV0aCBrZXk6ICR7a2V5Y2hhaW4/LmlkfWApO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgW3VzZXJBdXRoS2V5LCBub2RlQXV0aEtleV0gPSAoWyd1c2VyQXV0aCcsICdub2RlQXV0aCddIGFzIGNvbnN0KS5tYXAoKHB1cnBvc2UpID0+IHtcbiAgICBjb25zdCBrZXljaGFpbiA9IGF1dGhLZXljaGFpbnMuZmluZChcbiAgICAgIChrKSA9PiB1bndyYXBMaWdodG5pbmdDb2luU3BlY2lmaWMoay5jb2luU3BlY2lmaWMsIGNvaW4uZ2V0Q2hhaW4oKSkucHVycG9zZSA9PT0gcHVycG9zZVxuICAgICk7XG4gICAgaWYgKCFrZXljaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nICR7cHVycG9zZX0ga2V5YCk7XG4gICAgfVxuICAgIHJldHVybiBrZXljaGFpbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgdXNlckF1dGhLZXksIG5vZGVBdXRoS2V5IH07XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSBsaWdodG5pbmcgd2FsbGV0IHdpdGggdGhlIGdpdmVuIGRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVMaWdodG5pbmdXYWxsZXQod2FsbGV0OiBXYWxsZXQsIGRhdGE6IFVwZGF0ZUxpZ2h0bmluZ1dhbGxldCk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCBjb2luID0gd2FsbGV0LmJhc2VDb2luO1xuICBpZiAoY29pbi5nZXRGYW1pbHkoKSAhPT0gJ2xuYnRjJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb2luIHRvIHVwZGF0ZSBsaWdodG5pbmcgd2FsbGV0OiAke2NvaW4uZ2V0RmFtaWx5KCl9YCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHdhbGxldC5iaXRnby5wdXQod2FsbGV0LnVybCgpKS5zZW5kKGRhdGEpLnJlc3VsdCgpO1xufVxuIl19
@@ -1,17 +0,0 @@
1
- export 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
@@ -1 +0,0 @@
1
- {"version":3,"file":"signableJson.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/signableJson.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,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"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canonicalizeObject = canonicalizeObject;
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFibGVKc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9zaWduYWJsZUpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsZ0RBbUJDO0FBM0JEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFhO0lBQzlDLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuRixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDcEIsSUFBSSxFQUFFO2FBQ04sTUFBTSxDQUFDLENBQUMsTUFBZ0MsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUUsR0FBbUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVFLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNpZ25hYmxlID0gYm9vbGVhbiB8IG51bWJlciB8IHN0cmluZyB8IFNpZ25hYmxlUmVjb3JkIHwgU2lnbmFibGVBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBTaWduYWJsZVJlY29yZCB7XG4gIFtrZXk6IHN0cmluZ106IFNpZ25hYmxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hYmxlQXJyYXkge1xuICBba2V5OiBudW1iZXJdOiBTaWduYWJsZTtcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjYW5vbmljYWxpemVzIGFuIG9iamVjdCBieSBzb3J0aW5nIGl0cyBrZXlzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGJlIGNhbm9uaWNhbGl6ZWQuIEl0IGNhbiBiZSBhIGJvb2xlYW4sIG51bWJlciwgc3RyaW5nLFxuICogICAgICAgICAgICAgIGEgcmVjb3JkIG9mIHNpZ25hYmxlIHZhbHVlcywgb3IgYW4gYXJyYXkgb2Ygc2lnbmFibGUgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGNhbm9uaWNhbGl6ZWQgb2JqZWN0IHdpdGggc29ydGVkIGtleXMuXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIG9iamVjdCB0eXBlIGlzIGludmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5vbmljYWxpemVPYmplY3Qob2JqOiBTaWduYWJsZSk6IFNpZ25hYmxlIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdib29sZWFuJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5tYXAoY2Fub25pY2FsaXplT2JqZWN0KTtcbiAgfVxuXG4gIGlmIChvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgLnNvcnQoKVxuICAgICAgLnJlZHVjZSgocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBTaWduYWJsZT4sIGtleSkgPT4ge1xuICAgICAgICByZXN1bHRba2V5XSA9IGNhbm9uaWNhbGl6ZU9iamVjdCgob2JqIGFzIHsgW2tleTogc3RyaW5nXTogU2lnbmFibGUgfSlba2V5XSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCB7fSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgb2JqZWN0IHR5cGUnKTtcbn1cbiJdfQ==
@@ -1,22 +0,0 @@
1
- import * as utxolib from '@bitgo-beta/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
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/signature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,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"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.verifyMessageSignature = verifyMessageSignature;
37
- exports.createMessageSignature = createMessageSignature;
38
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
- const signableJson_1 = require("./signableJson");
40
- const bip32util_1 = require("../bip32util");
41
- /**
42
- * Verifies a signature for a given message.
43
- *
44
- * @param {Signable} message - The message to verify.
45
- * @param {string} signature - The signature to verify, in hexadecimal format.
46
- * @param {string} pub - The public key in BIP32 format.
47
- * @param {utxolib.Network} network - The network to use for verification.
48
- * @returns {boolean} - Returns true if the signature is valid, false otherwise.
49
- */
50
- function verifyMessageSignature(message, signature, pub, network = utxolib.networks.bitcoin) {
51
- const messageString = JSON.stringify((0, signableJson_1.canonicalizeObject)(message));
52
- const pubKey = utxolib.bip32.fromBase58(pub, network).publicKey;
53
- const signatureBuffer = Buffer.from(signature, 'hex');
54
- return (0, bip32util_1.verifyMessage)(messageString, pubKey, signatureBuffer, network);
55
- }
56
- /**
57
- * Creates a signature for a given message.
58
- *
59
- * @param {Signable} message - The message to sign.
60
- * @param {string} prv - The private key in BIP32 format.
61
- * @param {utxolib.Network} network - The network to use for signing.
62
- * @returns {string} - Returns the signature in hexadecimal format.
63
- */
64
- function createMessageSignature(message, prv, network = utxolib.networks.bitcoin) {
65
- const requestString = JSON.stringify((0, signableJson_1.canonicalizeObject)(message));
66
- const prvKey = utxolib.bip32.fromBase58(prv, network);
67
- return (0, bip32util_1.signMessage)(requestString, prvKey, network).toString('hex');
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9zaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSx3REFVQztBQVVELHdEQVFDO0FBekNELDhEQUFnRDtBQUNoRCxpREFBOEQ7QUFDOUQsNENBQTBEO0FBRTFEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLE9BQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLEdBQVcsRUFDWCxVQUEyQixPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87SUFFbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLGlDQUFrQixFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoRSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxPQUFPLElBQUEseUJBQWEsRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxPQUFpQixFQUNqQixHQUFXLEVBQ1gsVUFBMkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO0lBRW5ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBQSxpQ0FBa0IsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxPQUFPLElBQUEsdUJBQVcsRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBjYW5vbmljYWxpemVPYmplY3QsIFNpZ25hYmxlIH0gZnJvbSAnLi9zaWduYWJsZUpzb24nO1xuaW1wb3J0IHsgc2lnbk1lc3NhZ2UsIHZlcmlmeU1lc3NhZ2UgfSBmcm9tICcuLi9iaXAzMnV0aWwnO1xuXG4vKipcbiAqIFZlcmlmaWVzIGEgc2lnbmF0dXJlIGZvciBhIGdpdmVuIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtTaWduYWJsZX0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIHZlcmlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgLSBUaGUgc2lnbmF0dXJlIHRvIHZlcmlmeSwgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LlxuICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIFRoZSBwdWJsaWMga2V5IGluIEJJUDMyIGZvcm1hdC5cbiAqIEBwYXJhbSB7dXR4b2xpYi5OZXR3b3JrfSBuZXR3b3JrIC0gVGhlIG5ldHdvcmsgdG8gdXNlIGZvciB2ZXJpZmljYXRpb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5TWVzc2FnZVNpZ25hdHVyZShcbiAgbWVzc2FnZTogU2lnbmFibGUsXG4gIHNpZ25hdHVyZTogc3RyaW5nLFxuICBwdWI6IHN0cmluZyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrID0gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luXG4pOiBib29sZWFuIHtcbiAgY29uc3QgbWVzc2FnZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNhbm9uaWNhbGl6ZU9iamVjdChtZXNzYWdlKSk7XG4gIGNvbnN0IHB1YktleSA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChwdWIsIG5ldHdvcmspLnB1YmxpY0tleTtcbiAgY29uc3Qgc2lnbmF0dXJlQnVmZmVyID0gQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4Jyk7XG4gIHJldHVybiB2ZXJpZnlNZXNzYWdlKG1lc3NhZ2VTdHJpbmcsIHB1YktleSwgc2lnbmF0dXJlQnVmZmVyLCBuZXR3b3JrKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc2lnbmF0dXJlIGZvciBhIGdpdmVuIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtTaWduYWJsZX0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIHNpZ24uXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gVGhlIHByaXZhdGUga2V5IGluIEJJUDMyIGZvcm1hdC5cbiAqIEBwYXJhbSB7dXR4b2xpYi5OZXR3b3JrfSBuZXR3b3JrIC0gVGhlIG5ldHdvcmsgdG8gdXNlIGZvciBzaWduaW5nLlxuICogQHJldHVybnMge3N0cmluZ30gLSBSZXR1cm5zIHRoZSBzaWduYXR1cmUgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVzc2FnZVNpZ25hdHVyZShcbiAgbWVzc2FnZTogU2lnbmFibGUsXG4gIHBydjogc3RyaW5nLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5cbik6IHN0cmluZyB7XG4gIGNvbnN0IHJlcXVlc3RTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjYW5vbmljYWxpemVPYmplY3QobWVzc2FnZSkpO1xuICBjb25zdCBwcnZLZXkgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgocHJ2LCBuZXR3b3JrKTtcbiAgcmV0dXJuIHNpZ25NZXNzYWdlKHJlcXVlc3RTdHJpbmcsIHBydktleSwgbmV0d29yaykudG9TdHJpbmcoJ2hleCcpO1xufVxuIl19
@@ -1,20 +0,0 @@
1
- import { IWallet } from './iWallet';
2
- export interface ILightningWallet {
3
- /**
4
- * Creates a lightning invoice
5
- * @param params Invoice parameters (to be defined)
6
- */
7
- createInvoice(params: unknown): Promise<unknown>;
8
- /**
9
- * Pay a lightning invoice
10
- * @param params Payment parameters (to be defined)
11
- */
12
- payInvoice(params: unknown): Promise<unknown>;
13
- }
14
- export declare class SelfCustodialLightningWallet implements ILightningWallet {
15
- wallet: IWallet;
16
- constructor(wallet: IWallet);
17
- createInvoice(params: unknown): Promise<unknown>;
18
- payInvoice(params: unknown): Promise<unknown>;
19
- }
20
- //# sourceMappingURL=lightning.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lightning.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/lightning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C;AAED,qBAAa,4BAA6B,YAAW,gBAAgB;IAC5D,MAAM,EAAE,OAAO,CAAC;gBAEX,MAAM,EAAE,OAAO;IAIrB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAGpD"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SelfCustodialLightningWallet = void 0;
4
- class SelfCustodialLightningWallet {
5
- constructor(wallet) {
6
- this.wallet = wallet;
7
- }
8
- async createInvoice(params) {
9
- throw new Error('Method not implemented.');
10
- }
11
- async payInvoice(params) {
12
- throw new Error('Method not implemented.');
13
- }
14
- }
15
- exports.SelfCustodialLightningWallet = SelfCustodialLightningWallet;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9saWdodG5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0JBLE1BQWEsNEJBQTRCO0lBR3ZDLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFlO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFlO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFkRCxvRUFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuL2lXYWxsZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaWdodG5pbmdXYWxsZXQge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGxpZ2h0bmluZyBpbnZvaWNlXG4gICAqIEBwYXJhbSBwYXJhbXMgSW52b2ljZSBwYXJhbWV0ZXJzICh0byBiZSBkZWZpbmVkKVxuICAgKi9cbiAgY3JlYXRlSW52b2ljZShwYXJhbXM6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBQYXkgYSBsaWdodG5pbmcgaW52b2ljZVxuICAgKiBAcGFyYW0gcGFyYW1zIFBheW1lbnQgcGFyYW1ldGVycyAodG8gYmUgZGVmaW5lZClcbiAgICovXG4gIHBheUludm9pY2UocGFyYW1zOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGNsYXNzIFNlbGZDdXN0b2RpYWxMaWdodG5pbmdXYWxsZXQgaW1wbGVtZW50cyBJTGlnaHRuaW5nV2FsbGV0IHtcbiAgcHVibGljIHdhbGxldDogSVdhbGxldDtcblxuICBjb25zdHJ1Y3Rvcih3YWxsZXQ6IElXYWxsZXQpIHtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUludm9pY2UocGFyYW1zOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgYXN5bmMgcGF5SW52b2ljZShwYXJhbXM6IHVua25vd24pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=codecs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/lightning/codecs.ts"],"names":[],"mappings":""}