@bitgo-beta/utxo-core 1.8.1-beta.15 → 1.8.1-beta.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bip32utils.d.ts +16 -0
- package/dist/src/bip32utils.d.ts.map +1 -0
- package/dist/src/bip32utils.js +71 -0
- package/dist/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
- package/dist/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/src/descriptor/fromFixedScriptWallet.js +88 -0
- package/dist/src/descriptor/index.d.ts +2 -0
- package/dist/src/descriptor/index.d.ts.map +1 -1
- package/dist/src/descriptor/index.js +3 -1
- package/dist/src/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/src/descriptor/parse/PatternMatcher.js +60 -0
- package/dist/src/descriptor/psbt/createPsbt.d.ts +4 -0
- package/dist/src/descriptor/psbt/createPsbt.d.ts.map +1 -1
- package/dist/src/descriptor/psbt/createPsbt.js +34 -9
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/paygo/attestation.d.ts +11 -0
- package/dist/src/paygo/attestation.d.ts.map +1 -0
- package/dist/src/paygo/attestation.js +58 -0
- package/dist/src/paygo/index.d.ts +3 -0
- package/dist/src/paygo/index.d.ts.map +1 -0
- package/dist/src/paygo/index.js +19 -0
- package/dist/src/paygo/parsePayGoAttestation.d.ts +16 -0
- package/dist/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/src/paygo/parsePayGoAttestation.js +50 -0
- package/dist/src/paygo/psbt/Errors.d.ts +22 -0
- package/dist/src/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/src/paygo/psbt/Errors.js +44 -0
- package/dist/src/paygo/psbt/index.d.ts +2 -0
- package/dist/src/paygo/psbt/index.d.ts.map +1 -0
- package/dist/src/paygo/psbt/index.js +18 -0
- package/dist/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/src/paygo/psbt/payGoAddressProof.js +124 -0
- package/dist/src/testutil/descriptor/descriptors.d.ts +4 -1
- package/dist/src/testutil/descriptor/descriptors.d.ts.map +1 -1
- package/dist/src/testutil/descriptor/descriptors.js +38 -1
- package/dist/src/testutil/descriptor/mock.utils.d.ts +3 -1
- package/dist/src/testutil/descriptor/mock.utils.d.ts.map +1 -1
- package/dist/src/testutil/descriptor/mock.utils.js +2 -1
- package/dist/src/testutil/descriptor/psbt.utils.d.ts.map +1 -1
- package/dist/src/testutil/descriptor/psbt.utils.js +2 -1
- package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
- package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
- package/dist/src/testutil/index.d.ts +2 -0
- package/dist/src/testutil/index.d.ts.map +1 -1
- package/dist/src/testutil/index.js +3 -1
- package/dist/src/testutil/toPlainObject.utils.d.ts.map +1 -1
- package/dist/src/testutil/toPlainObject.utils.js +16 -2
- package/dist/src/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/src/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/src/testutil/trimMessagePrefix.js +60 -0
- package/package.json +6 -5
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BIP32Interface } from '@bitgo-beta/utxo-lib';
|
|
2
|
+
/**
|
|
3
|
+
* bip32-aware wrapper around bitcoin-message package
|
|
4
|
+
* @see {bitcoinMessage.sign}
|
|
5
|
+
*/
|
|
6
|
+
export declare function signMessage(message: string | Buffer, privateKey: BIP32Interface | Buffer, network: {
|
|
7
|
+
messagePrefix: string;
|
|
8
|
+
}): Buffer;
|
|
9
|
+
/**
|
|
10
|
+
* bip32-aware wrapper around bitcoin-message package
|
|
11
|
+
* @see {bitcoinMessage.verify}
|
|
12
|
+
*/
|
|
13
|
+
export declare function verifyMessage(message: string | Buffer, publicKey: BIP32Interface | Buffer, signature: Buffer, network: {
|
|
14
|
+
messagePrefix: string;
|
|
15
|
+
}): boolean;
|
|
16
|
+
//# sourceMappingURL=bip32utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bip32utils.d.ts","sourceRoot":"","sources":["../../src/bip32utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,UAAU,EAAE,cAAc,GAAG,MAAM,EACnC,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjC,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,cAAc,GAAG,MAAM,EAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAcT"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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.signMessage = signMessage;
|
|
37
|
+
exports.verifyMessage = verifyMessage;
|
|
38
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
|
+
const bitcoinMessage = __importStar(require("bitcoinjs-message"));
|
|
40
|
+
/**
|
|
41
|
+
* bip32-aware wrapper around bitcoin-message package
|
|
42
|
+
* @see {bitcoinMessage.sign}
|
|
43
|
+
*/
|
|
44
|
+
function signMessage(message, privateKey, network) {
|
|
45
|
+
if (!Buffer.isBuffer(privateKey)) {
|
|
46
|
+
privateKey = privateKey.privateKey;
|
|
47
|
+
if (!privateKey) {
|
|
48
|
+
throw new Error(`must provide privateKey`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (network === null || typeof network !== 'object' || typeof network.messagePrefix !== 'string') {
|
|
52
|
+
throw new Error(`invalid argument 'network'`);
|
|
53
|
+
}
|
|
54
|
+
const compressed = true;
|
|
55
|
+
return bitcoinMessage.sign(message, privateKey, compressed, network.messagePrefix);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* bip32-aware wrapper around bitcoin-message package
|
|
59
|
+
* @see {bitcoinMessage.verify}
|
|
60
|
+
*/
|
|
61
|
+
function verifyMessage(message, publicKey, signature, network) {
|
|
62
|
+
if (!Buffer.isBuffer(publicKey)) {
|
|
63
|
+
publicKey = publicKey.publicKey;
|
|
64
|
+
}
|
|
65
|
+
if (network === null || typeof network !== 'object' || typeof network.messagePrefix !== 'string') {
|
|
66
|
+
throw new Error(`invalid argument 'network'`);
|
|
67
|
+
}
|
|
68
|
+
const address = utxolib.address.toBase58Check(utxolib.crypto.hash160(publicKey), utxolib.networks.bitcoin.pubKeyHash, utxolib.networks.bitcoin);
|
|
69
|
+
return bitcoinMessage.verify(message, address, signature, network.messagePrefix);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaXAzMnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0Esa0NBZ0JDO0FBTUQsc0NBbUJDO0FBaERELDhEQUFnRDtBQUNoRCxrRUFBb0Q7QUFFcEQ7OztHQUdHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixPQUF3QixFQUN4QixVQUFtQyxFQUNuQyxPQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2pDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBb0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakcsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDeEIsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixPQUF3QixFQUN4QixTQUFrQyxFQUNsQyxTQUFpQixFQUNqQixPQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ2hDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqRyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUMzQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUNuQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDekIsQ0FBQztJQUNGLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgYml0Y29pbk1lc3NhZ2UgZnJvbSAnYml0Y29pbmpzLW1lc3NhZ2UnO1xuaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG4vKipcbiAqIGJpcDMyLWF3YXJlIHdyYXBwZXIgYXJvdW5kIGJpdGNvaW4tbWVzc2FnZSBwYWNrYWdlXG4gKiBAc2VlIHtiaXRjb2luTWVzc2FnZS5zaWdufVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbk1lc3NhZ2UoXG4gIG1lc3NhZ2U6IHN0cmluZyB8IEJ1ZmZlcixcbiAgcHJpdmF0ZUtleTogQklQMzJJbnRlcmZhY2UgfCBCdWZmZXIsXG4gIG5ldHdvcms6IHsgbWVzc2FnZVByZWZpeDogc3RyaW5nIH1cbik6IEJ1ZmZlciB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXZhdGVLZXkpKSB7XG4gICAgcHJpdmF0ZUtleSA9IHByaXZhdGVLZXkucHJpdmF0ZUtleSBhcyBCdWZmZXI7XG4gICAgaWYgKCFwcml2YXRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBwcml2YXRlS2V5YCk7XG4gICAgfVxuICB9XG4gIGlmIChuZXR3b3JrID09PSBudWxsIHx8IHR5cGVvZiBuZXR3b3JrICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV0d29yay5tZXNzYWdlUHJlZml4ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAnbmV0d29yaydgKTtcbiAgfVxuICBjb25zdCBjb21wcmVzc2VkID0gdHJ1ZTtcbiAgcmV0dXJuIGJpdGNvaW5NZXNzYWdlLnNpZ24obWVzc2FnZSwgcHJpdmF0ZUtleSwgY29tcHJlc3NlZCwgbmV0d29yay5tZXNzYWdlUHJlZml4KTtcbn1cblxuLyoqXG4gKiBiaXAzMi1hd2FyZSB3cmFwcGVyIGFyb3VuZCBiaXRjb2luLW1lc3NhZ2UgcGFja2FnZVxuICogQHNlZSB7Yml0Y29pbk1lc3NhZ2UudmVyaWZ5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5TWVzc2FnZShcbiAgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyLFxuICBwdWJsaWNLZXk6IEJJUDMySW50ZXJmYWNlIHwgQnVmZmVyLFxuICBzaWduYXR1cmU6IEJ1ZmZlcixcbiAgbmV0d29yazogeyBtZXNzYWdlUHJlZml4OiBzdHJpbmcgfVxuKTogYm9vbGVhbiB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHB1YmxpY0tleSkpIHtcbiAgICBwdWJsaWNLZXkgPSBwdWJsaWNLZXkucHVibGljS2V5O1xuICB9XG4gIGlmIChuZXR3b3JrID09PSBudWxsIHx8IHR5cGVvZiBuZXR3b3JrICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV0d29yay5tZXNzYWdlUHJlZml4ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAnbmV0d29yaydgKTtcbiAgfVxuXG4gIGNvbnN0IGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MudG9CYXNlNThDaGVjayhcbiAgICB1dHhvbGliLmNyeXB0by5oYXNoMTYwKHB1YmxpY0tleSksXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLnB1YktleUhhc2gsXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luXG4gICk7XG4gIHJldHVybiBiaXRjb2luTWVzc2FnZS52ZXJpZnkobWVzc2FnZSwgYWRkcmVzcywgc2lnbmF0dXJlLCBuZXR3b3JrLm1lc3NhZ2VQcmVmaXgpO1xufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
import { Descriptor } from '@bitgo/wasm-miniscript';
|
|
3
|
+
/**
|
|
4
|
+
* Get a standard output descriptor that corresponds to the proprietary HD wallet setup
|
|
5
|
+
* used in BitGo wallets.
|
|
6
|
+
* Only supports a subset of script types.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getDescriptorForScriptType(rootWalletKeys: utxolib.bitgo.RootWalletKeys, scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh', scope: 'internal' | 'external'): Descriptor;
|
|
9
|
+
/**
|
|
10
|
+
* Get a map of named descriptors for the given root wallet keys.
|
|
11
|
+
* Unsupported script types will have a value of null.
|
|
12
|
+
* Currently supports p2sh, p2shP2wsh, and p2wsh script types.
|
|
13
|
+
* @param rootWalletKeys
|
|
14
|
+
*/
|
|
15
|
+
export declare function getNamedDescriptorsForRootWalletKeys(rootWalletKeys: utxolib.bitgo.RootWalletKeys): Map<string, Descriptor | null>;
|
|
16
|
+
//# sourceMappingURL=fromFixedScriptWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fromFixedScriptWallet.d.ts","sourceRoot":"","sources":["../../../src/descriptor/fromFixedScriptWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAO,MAAM,wBAAwB,CAAC;AAYzD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,EAC5C,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,EAC1C,KAAK,EAAE,UAAU,GAAG,UAAU,GAC7B,UAAU,CAkBZ;AAQD;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,GAC3C,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,CAUhC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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.getDescriptorForScriptType = getDescriptorForScriptType;
|
|
37
|
+
exports.getNamedDescriptorsForRootWalletKeys = getNamedDescriptorsForRootWalletKeys;
|
|
38
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
|
+
const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
|
|
40
|
+
/** Expand a template with the given root wallet keys and chain code */
|
|
41
|
+
function expand(rootWalletKeys, keyIndex, chainCode) {
|
|
42
|
+
if (keyIndex !== 0 && keyIndex !== 1 && keyIndex !== 2) {
|
|
43
|
+
throw new Error('Invalid key index');
|
|
44
|
+
}
|
|
45
|
+
const xpub = rootWalletKeys.triple[keyIndex].neutered().toBase58();
|
|
46
|
+
const prefix = rootWalletKeys.derivationPrefixes[keyIndex];
|
|
47
|
+
return xpub + '/' + prefix + '/' + chainCode + '/*';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get a standard output descriptor that corresponds to the proprietary HD wallet setup
|
|
51
|
+
* used in BitGo wallets.
|
|
52
|
+
* Only supports a subset of script types.
|
|
53
|
+
*/
|
|
54
|
+
function getDescriptorForScriptType(rootWalletKeys, scriptType, scope) {
|
|
55
|
+
const chain = scope === 'external'
|
|
56
|
+
? utxolib.bitgo.getExternalChainCode(scriptType)
|
|
57
|
+
: utxolib.bitgo.getInternalChainCode(scriptType);
|
|
58
|
+
const multi = {
|
|
59
|
+
multi: [2, ...rootWalletKeys.triple.map((_, i) => expand(rootWalletKeys, i, chain))],
|
|
60
|
+
};
|
|
61
|
+
switch (scriptType) {
|
|
62
|
+
case 'p2sh':
|
|
63
|
+
return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode({ sh: multi }), 'derivable');
|
|
64
|
+
case 'p2shP2wsh':
|
|
65
|
+
return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode({ sh: { wsh: multi } }), 'derivable');
|
|
66
|
+
case 'p2wsh':
|
|
67
|
+
return wasm_miniscript_1.Descriptor.fromString(wasm_miniscript_1.ast.formatNode({ wsh: multi }), 'derivable');
|
|
68
|
+
default:
|
|
69
|
+
throw new Error(`Unsupported script type ${scriptType}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function isSupportedScriptType(scriptType) {
|
|
73
|
+
return ['p2sh', 'p2shP2wsh', 'p2wsh'].includes(scriptType);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get a map of named descriptors for the given root wallet keys.
|
|
77
|
+
* Unsupported script types will have a value of null.
|
|
78
|
+
* Currently supports p2sh, p2shP2wsh, and p2wsh script types.
|
|
79
|
+
* @param rootWalletKeys
|
|
80
|
+
*/
|
|
81
|
+
function getNamedDescriptorsForRootWalletKeys(rootWalletKeys) {
|
|
82
|
+
const scopes = ['external', 'internal'];
|
|
83
|
+
return new Map(utxolib.bitgo.outputScripts.scriptTypes2Of3.flatMap((scriptType) => scopes.map((scope) => [
|
|
84
|
+
`${scriptType}/${scope}`,
|
|
85
|
+
isSupportedScriptType(scriptType) ? getDescriptorForScriptType(rootWalletKeys, scriptType, scope) : null,
|
|
86
|
+
])));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUZpeGVkU2NyaXB0V2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvZnJvbUZpeGVkU2NyaXB0V2FsbGV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLGdFQXNCQztBQWNELG9GQVlDO0FBbEVELDhEQUFnRDtBQUNoRCw0REFBeUQ7QUFFekQsdUVBQXVFO0FBQ3ZFLFNBQVMsTUFBTSxDQUFDLGNBQTRDLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQjtJQUMvRixJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQ3hDLGNBQTRDLEVBQzVDLFVBQTBDLEVBQzFDLEtBQThCO0lBRTlCLE1BQU0sS0FBSyxHQUNULEtBQUssS0FBSyxVQUFVO1FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUNoRCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxNQUFNLEtBQUssR0FBdUI7UUFDaEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3JGLENBQUM7SUFDRixRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssTUFBTTtZQUNULE9BQU8sNEJBQVUsQ0FBQyxVQUFVLENBQUMscUJBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMzRSxLQUFLLFdBQVc7WUFDZCxPQUFPLDRCQUFVLENBQUMsVUFBVSxDQUFDLHFCQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRixLQUFLLE9BQU87WUFDVixPQUFPLDRCQUFVLENBQUMsVUFBVSxDQUFDLHFCQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUU7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FDNUIsVUFBc0Q7SUFFdEQsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLG9DQUFvQyxDQUNsRCxjQUE0QztJQUU1QyxNQUFNLE1BQU0sR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQVUsQ0FBQztJQUNqRCxPQUFPLElBQUksR0FBRyxDQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNqRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNwQixHQUFHLFVBQVUsSUFBSSxLQUFLLEVBQUU7UUFDeEIscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7S0FDekcsQ0FBQyxDQUNILENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG4vKiogRXhwYW5kIGEgdGVtcGxhdGUgd2l0aCB0aGUgZ2l2ZW4gcm9vdCB3YWxsZXQga2V5cyBhbmQgY2hhaW4gY29kZSAqL1xuZnVuY3Rpb24gZXhwYW5kKHJvb3RXYWxsZXRLZXlzOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLCBrZXlJbmRleDogbnVtYmVyLCBjaGFpbkNvZGU6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChrZXlJbmRleCAhPT0gMCAmJiBrZXlJbmRleCAhPT0gMSAmJiBrZXlJbmRleCAhPT0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgaW5kZXgnKTtcbiAgfVxuICBjb25zdCB4cHViID0gcm9vdFdhbGxldEtleXMudHJpcGxlW2tleUluZGV4XS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCk7XG4gIGNvbnN0IHByZWZpeCA9IHJvb3RXYWxsZXRLZXlzLmRlcml2YXRpb25QcmVmaXhlc1trZXlJbmRleF07XG4gIHJldHVybiB4cHViICsgJy8nICsgcHJlZml4ICsgJy8nICsgY2hhaW5Db2RlICsgJy8qJztcbn1cblxuLyoqXG4gKiBHZXQgYSBzdGFuZGFyZCBvdXRwdXQgZGVzY3JpcHRvciB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwcm9wcmlldGFyeSBIRCB3YWxsZXQgc2V0dXBcbiAqIHVzZWQgaW4gQml0R28gd2FsbGV0cy5cbiAqIE9ubHkgc3VwcG9ydHMgYSBzdWJzZXQgb2Ygc2NyaXB0IHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZvclNjcmlwdFR5cGUoXG4gIHJvb3RXYWxsZXRLZXlzOiB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzLFxuICBzY3JpcHRUeXBlOiAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCcsXG4gIHNjb3BlOiAnaW50ZXJuYWwnIHwgJ2V4dGVybmFsJ1xuKTogRGVzY3JpcHRvciB7XG4gIGNvbnN0IGNoYWluID1cbiAgICBzY29wZSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgPyB1dHhvbGliLmJpdGdvLmdldEV4dGVybmFsQ2hhaW5Db2RlKHNjcmlwdFR5cGUpXG4gICAgICA6IHV0eG9saWIuYml0Z28uZ2V0SW50ZXJuYWxDaGFpbkNvZGUoc2NyaXB0VHlwZSk7XG4gIGNvbnN0IG11bHRpOiBhc3QuTWluaXNjcmlwdE5vZGUgPSB7XG4gICAgbXVsdGk6IFsyLCAuLi5yb290V2FsbGV0S2V5cy50cmlwbGUubWFwKChfLCBpKSA9PiBleHBhbmQocm9vdFdhbGxldEtleXMsIGksIGNoYWluKSldLFxuICB9O1xuICBzd2l0Y2ggKHNjcmlwdFR5cGUpIHtcbiAgICBjYXNlICdwMnNoJzpcbiAgICAgIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYXN0LmZvcm1hdE5vZGUoeyBzaDogbXVsdGkgfSksICdkZXJpdmFibGUnKTtcbiAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgcmV0dXJuIERlc2NyaXB0b3IuZnJvbVN0cmluZyhhc3QuZm9ybWF0Tm9kZSh7IHNoOiB7IHdzaDogbXVsdGkgfSB9KSwgJ2Rlcml2YWJsZScpO1xuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmcoYXN0LmZvcm1hdE5vZGUoeyB3c2g6IG11bHRpIH0pLCAnZGVyaXZhYmxlJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NyaXB0IHR5cGUgJHtzY3JpcHRUeXBlfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3VwcG9ydGVkU2NyaXB0VHlwZShcbiAgc2NyaXB0VHlwZTogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzXG4pOiBzY3JpcHRUeXBlIGlzICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyB7XG4gIHJldHVybiBbJ3Ayc2gnLCAncDJzaFAyd3NoJywgJ3Ayd3NoJ10uaW5jbHVkZXMoc2NyaXB0VHlwZSk7XG59XG5cbi8qKlxuICogR2V0IGEgbWFwIG9mIG5hbWVkIGRlc2NyaXB0b3JzIGZvciB0aGUgZ2l2ZW4gcm9vdCB3YWxsZXQga2V5cy5cbiAqIFVuc3VwcG9ydGVkIHNjcmlwdCB0eXBlcyB3aWxsIGhhdmUgYSB2YWx1ZSBvZiBudWxsLlxuICogQ3VycmVudGx5IHN1cHBvcnRzIHAyc2gsIHAyc2hQMndzaCwgYW5kIHAyd3NoIHNjcmlwdCB0eXBlcy5cbiAqIEBwYXJhbSByb290V2FsbGV0S2V5c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZWREZXNjcmlwdG9yc0ZvclJvb3RXYWxsZXRLZXlzKFxuICByb290V2FsbGV0S2V5czogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5c1xuKTogTWFwPHN0cmluZywgRGVzY3JpcHRvciB8IG51bGw+IHtcbiAgY29uc3Qgc2NvcGVzID0gWydleHRlcm5hbCcsICdpbnRlcm5hbCddIGFzIGNvbnN0O1xuICByZXR1cm4gbmV3IE1hcChcbiAgICB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuc2NyaXB0VHlwZXMyT2YzLmZsYXRNYXAoKHNjcmlwdFR5cGUpID0+XG4gICAgICBzY29wZXMubWFwKChzY29wZSkgPT4gW1xuICAgICAgICBgJHtzY3JpcHRUeXBlfS8ke3Njb3BlfWAsXG4gICAgICAgIGlzU3VwcG9ydGVkU2NyaXB0VHlwZShzY3JpcHRUeXBlKSA/IGdldERlc2NyaXB0b3JGb3JTY3JpcHRUeXBlKHJvb3RXYWxsZXRLZXlzLCBzY3JpcHRUeXBlLCBzY29wZSkgOiBudWxsLFxuICAgICAgXSlcbiAgICApXG4gICk7XG59XG4iXX0=
|
|
@@ -4,6 +4,8 @@ export * from './DescriptorMap';
|
|
|
4
4
|
export * from './derive';
|
|
5
5
|
export * from './Output';
|
|
6
6
|
export * from './VirtualSize';
|
|
7
|
+
export * from './fromFixedScriptWallet';
|
|
8
|
+
export * from './parse/PatternMatcher';
|
|
7
9
|
/** @deprecated - import from @bitgo-beta/utxo-core directly instead */
|
|
8
10
|
export * from '../Output';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/descriptor/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AAEvC,uEAAuE;AACvE,cAAc,WAAW,CAAC"}
|
|
@@ -20,6 +20,8 @@ __exportStar(require("./DescriptorMap"), exports);
|
|
|
20
20
|
__exportStar(require("./derive"), exports);
|
|
21
21
|
__exportStar(require("./Output"), exports);
|
|
22
22
|
__exportStar(require("./VirtualSize"), exports);
|
|
23
|
+
__exportStar(require("./fromFixedScriptWallet"), exports);
|
|
24
|
+
__exportStar(require("./parse/PatternMatcher"), exports);
|
|
23
25
|
/** @deprecated - import from @bitgo-beta/utxo-core directly instead */
|
|
24
26
|
__exportStar(require("../Output"), exports);
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLDRDQUEwQjtBQUMxQixrREFBZ0M7QUFDaEMsMkNBQXlCO0FBQ3pCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIsMERBQXdDO0FBQ3hDLHlEQUF1QztBQUV2Qyx1RUFBdUU7QUFDdkUsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wc2J0JztcbmV4cG9ydCAqIGZyb20gJy4vYWRkcmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL0Rlc2NyaXB0b3JNYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXJpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9PdXRwdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9WaXJ0dWFsU2l6ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zyb21GaXhlZFNjcmlwdFdhbGxldCc7XG5leHBvcnQgKiBmcm9tICcuL3BhcnNlL1BhdHRlcm5NYXRjaGVyJztcblxuLyoqIEBkZXByZWNhdGVkIC0gaW1wb3J0IGZyb20gQGJpdGdvLWJldGEvdXR4by1jb3JlIGRpcmVjdGx5IGluc3RlYWQgKi9cbmV4cG9ydCAqIGZyb20gJy4uL091dHB1dCc7XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type PatternVar = {
|
|
2
|
+
$var: string;
|
|
3
|
+
};
|
|
4
|
+
export type Pattern = PatternVar | string | number | {
|
|
5
|
+
[key: string]: Pattern | Pattern[];
|
|
6
|
+
} | Pattern[];
|
|
7
|
+
export type ExtractedVars = Record<string, unknown>;
|
|
8
|
+
export declare class PatternMatcher {
|
|
9
|
+
match(node: unknown, pattern: Pattern): ExtractedVars | null;
|
|
10
|
+
private matchNode;
|
|
11
|
+
private isPatternVar;
|
|
12
|
+
private deepEqual;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=PatternMatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternMatcher.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/parse/PatternMatcher.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1C,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,CAAA;CAAE,GAAG,OAAO,EAAE,CAAC;AAExG,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,qBAAa,cAAc;IACzB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI;IAK5D,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;CAgBlB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PatternMatcher = void 0;
|
|
4
|
+
class PatternMatcher {
|
|
5
|
+
match(node, pattern) {
|
|
6
|
+
const vars = {};
|
|
7
|
+
return this.matchNode(node, pattern, vars) ? vars : null;
|
|
8
|
+
}
|
|
9
|
+
matchNode(node, pattern, vars) {
|
|
10
|
+
// Variable placeholder
|
|
11
|
+
if (this.isPatternVar(pattern)) {
|
|
12
|
+
const varName = pattern.$var;
|
|
13
|
+
if (varName in vars) {
|
|
14
|
+
return this.deepEqual(vars[varName], node);
|
|
15
|
+
}
|
|
16
|
+
vars[varName] = node;
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
// Primitive values
|
|
20
|
+
if (typeof node !== typeof pattern)
|
|
21
|
+
return false;
|
|
22
|
+
if (typeof node === 'string' || typeof node === 'number') {
|
|
23
|
+
return node === pattern;
|
|
24
|
+
}
|
|
25
|
+
// Arrays
|
|
26
|
+
if (Array.isArray(node) && Array.isArray(pattern)) {
|
|
27
|
+
return node.length === pattern.length && node.every((item, i) => this.matchNode(item, pattern[i], vars));
|
|
28
|
+
}
|
|
29
|
+
// Objects
|
|
30
|
+
if (typeof node === 'object' && typeof pattern === 'object' && node !== null && pattern !== null) {
|
|
31
|
+
const nodeKeys = Object.keys(node);
|
|
32
|
+
const patternKeys = Object.keys(pattern);
|
|
33
|
+
return (nodeKeys.length === patternKeys.length &&
|
|
34
|
+
nodeKeys.every((key) => patternKeys.includes(key) &&
|
|
35
|
+
this.matchNode(node[key], pattern[key], vars)));
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
isPatternVar(value) {
|
|
40
|
+
return value !== null && typeof value === 'object' && '$var' in value;
|
|
41
|
+
}
|
|
42
|
+
deepEqual(a, b) {
|
|
43
|
+
if (a === b)
|
|
44
|
+
return true;
|
|
45
|
+
if (typeof a !== typeof b)
|
|
46
|
+
return false;
|
|
47
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
48
|
+
return a.length === b.length && a.every((item, i) => this.deepEqual(item, b[i]));
|
|
49
|
+
}
|
|
50
|
+
if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null) {
|
|
51
|
+
const keysA = Object.keys(a);
|
|
52
|
+
const keysB = Object.keys(b);
|
|
53
|
+
return (keysA.length === keysB.length &&
|
|
54
|
+
keysA.every((key) => this.deepEqual(a[key], b[key])));
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.PatternMatcher = PatternMatcher;
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybk1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9wYXJzZS9QYXR0ZXJuTWF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFhLGNBQWM7SUFDekIsS0FBSyxDQUFDLElBQWEsRUFBRSxPQUFnQjtRQUNuQyxNQUFNLElBQUksR0FBa0IsRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRCxDQUFDO0lBRU8sU0FBUyxDQUFDLElBQWEsRUFBRSxPQUFnQixFQUFFLElBQW1CO1FBQ3BFLHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixJQUFJLE9BQU8sSUFBSSxLQUFLLE9BQU8sT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztRQUMxQixDQUFDO1FBRUQsU0FBUztRQUNULElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNHLENBQUM7UUFFRCxVQUFVO1FBQ1YsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pHLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QyxPQUFPLENBQ0wsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDdEMsUUFBUSxDQUFDLEtBQUssQ0FDWixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUUsSUFBZ0MsQ0FBQyxHQUFHLENBQUMsRUFBRyxPQUFtQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUMxRyxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWM7UUFDakMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxTQUFTLENBQUMsQ0FBVSxFQUFFLENBQVU7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtnQkFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUE2QixDQUFDLEdBQUcsQ0FBQyxFQUFHLENBQTZCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMvRyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBbEVELHdDQWtFQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFBhdHRlcm4gbWF0Y2hpbmcgdHlwZXNcbmV4cG9ydCB0eXBlIFBhdHRlcm5WYXIgPSB7ICR2YXI6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgUGF0dGVybiA9IFBhdHRlcm5WYXIgfCBzdHJpbmcgfCBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IFBhdHRlcm4gfCBQYXR0ZXJuW10gfSB8IFBhdHRlcm5bXTtcblxuZXhwb3J0IHR5cGUgRXh0cmFjdGVkVmFycyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgY2xhc3MgUGF0dGVybk1hdGNoZXIge1xuICBtYXRjaChub2RlOiB1bmtub3duLCBwYXR0ZXJuOiBQYXR0ZXJuKTogRXh0cmFjdGVkVmFycyB8IG51bGwge1xuICAgIGNvbnN0IHZhcnM6IEV4dHJhY3RlZFZhcnMgPSB7fTtcbiAgICByZXR1cm4gdGhpcy5tYXRjaE5vZGUobm9kZSwgcGF0dGVybiwgdmFycykgPyB2YXJzIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hOb2RlKG5vZGU6IHVua25vd24sIHBhdHRlcm46IFBhdHRlcm4sIHZhcnM6IEV4dHJhY3RlZFZhcnMpOiBib29sZWFuIHtcbiAgICAvLyBWYXJpYWJsZSBwbGFjZWhvbGRlclxuICAgIGlmICh0aGlzLmlzUGF0dGVyblZhcihwYXR0ZXJuKSkge1xuICAgICAgY29uc3QgdmFyTmFtZSA9IHBhdHRlcm4uJHZhcjtcbiAgICAgIGlmICh2YXJOYW1lIGluIHZhcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVlcEVxdWFsKHZhcnNbdmFyTmFtZV0sIG5vZGUpO1xuICAgICAgfVxuICAgICAgdmFyc1t2YXJOYW1lXSA9IG5vZGU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBQcmltaXRpdmUgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBub2RlICE9PSB0eXBlb2YgcGF0dGVybikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbm9kZSA9PT0gcGF0dGVybjtcbiAgICB9XG5cbiAgICAvLyBBcnJheXNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSAmJiBBcnJheS5pc0FycmF5KHBhdHRlcm4pKSB7XG4gICAgICByZXR1cm4gbm9kZS5sZW5ndGggPT09IHBhdHRlcm4ubGVuZ3RoICYmIG5vZGUuZXZlcnkoKGl0ZW0sIGkpID0+IHRoaXMubWF0Y2hOb2RlKGl0ZW0sIHBhdHRlcm5baV0sIHZhcnMpKTtcbiAgICB9XG5cbiAgICAvLyBPYmplY3RzXG4gICAgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcGF0dGVybiA9PT0gJ29iamVjdCcgJiYgbm9kZSAhPT0gbnVsbCAmJiBwYXR0ZXJuICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlS2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpO1xuICAgICAgY29uc3QgcGF0dGVybktleXMgPSBPYmplY3Qua2V5cyhwYXR0ZXJuKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgbm9kZUtleXMubGVuZ3RoID09PSBwYXR0ZXJuS2V5cy5sZW5ndGggJiZcbiAgICAgICAgbm9kZUtleXMuZXZlcnkoXG4gICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgIHBhdHRlcm5LZXlzLmluY2x1ZGVzKGtleSkgJiZcbiAgICAgICAgICAgIHRoaXMubWF0Y2hOb2RlKChub2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldLCAocGF0dGVybiBhcyBSZWNvcmQ8c3RyaW5nLCBQYXR0ZXJuPilba2V5XSwgdmFycylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzUGF0dGVyblZhcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFBhdHRlcm5WYXIge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICckdmFyJyBpbiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZGVlcEVxdWFsKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeSgoaXRlbSwgaSkgPT4gdGhpcy5kZWVwRXF1YWwoaXRlbSwgYltpXSkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnICYmIGEgIT09IG51bGwgJiYgdHlwZW9mIGIgPT09ICdvYmplY3QnICYmIGIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAga2V5c0EubGVuZ3RoID09PSBrZXlzQi5sZW5ndGggJiZcbiAgICAgICAga2V5c0EuZXZlcnkoKGtleSkgPT4gdGhpcy5kZWVwRXF1YWwoKGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0sIChiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { TapLeafScript } from 'bip174/src/lib/interfaces';
|
|
1
2
|
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
3
|
+
import { Miniscript } from '@bitgo/wasm-miniscript';
|
|
2
4
|
import { DerivedDescriptorWalletOutput, WithOptDescriptor } from '../Output';
|
|
3
5
|
import { Output } from '../../Output';
|
|
4
6
|
/**
|
|
@@ -6,6 +8,7 @@ import { Output } from '../../Output';
|
|
|
6
8
|
* Reference: https://github.com/bitcoin/bitcoin/blob/v25.1/src/rpc/rawtransaction_util.cpp#L49
|
|
7
9
|
* */
|
|
8
10
|
export declare const MAX_BIP125_RBF_SEQUENCE: number;
|
|
11
|
+
export declare function findTapLeafScript(input: TapLeafScript[], script: Buffer | Miniscript): TapLeafScript;
|
|
9
12
|
export type PsbtParams = {
|
|
10
13
|
network: utxolib.Network;
|
|
11
14
|
version?: number;
|
|
@@ -13,6 +16,7 @@ export type PsbtParams = {
|
|
|
13
16
|
sequence?: number;
|
|
14
17
|
};
|
|
15
18
|
export type DerivedDescriptorTransactionInput = DerivedDescriptorWalletOutput & {
|
|
19
|
+
selectTapLeafScript?: Miniscript;
|
|
16
20
|
sequence?: number;
|
|
17
21
|
};
|
|
18
22
|
export declare function createPsbt(params: PsbtParams, inputs: DerivedDescriptorTransactionInput[], outputs: WithOptDescriptor<Output>[]): utxolib.bitgo.UtxoPsbt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAc,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC;;;KAGK;AACL,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAEtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAcpG;AAuCD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,GAAG;IAC9E,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,iCAAiC,EAAE,EAC3C,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,GACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAexB"}
|
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.MAX_BIP125_RBF_SEQUENCE = void 0;
|
|
37
|
+
exports.findTapLeafScript = findTapLeafScript;
|
|
37
38
|
exports.createPsbt = createPsbt;
|
|
38
39
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
40
|
const wrap_1 = require("./wrap");
|
|
@@ -43,18 +44,39 @@ const assertSatisfiable_1 = require("./assertSatisfiable");
|
|
|
43
44
|
* Reference: https://github.com/bitcoin/bitcoin/blob/v25.1/src/rpc/rawtransaction_util.cpp#L49
|
|
44
45
|
* */
|
|
45
46
|
exports.MAX_BIP125_RBF_SEQUENCE = 0xffffffff - 2;
|
|
46
|
-
function
|
|
47
|
-
if (
|
|
48
|
-
|
|
47
|
+
function findTapLeafScript(input, script) {
|
|
48
|
+
if (!Buffer.isBuffer(script)) {
|
|
49
|
+
script = Buffer.from(script.encode());
|
|
50
|
+
}
|
|
51
|
+
const matches = input.filter((leaf) => {
|
|
52
|
+
return leaf.script.equals(script);
|
|
53
|
+
});
|
|
54
|
+
if (matches.length === 0) {
|
|
55
|
+
throw new Error(`No tapLeafScript found for script: ${script.toString('hex')}`);
|
|
56
|
+
}
|
|
57
|
+
if (matches.length > 1) {
|
|
58
|
+
throw new Error(`Multiple tapLeafScripts found for script: ${script.toString('hex')}`);
|
|
59
|
+
}
|
|
60
|
+
return matches[0];
|
|
61
|
+
}
|
|
62
|
+
function updateInputsWithDescriptors(psbt, inputParams) {
|
|
63
|
+
if (psbt.txInputs.length !== inputParams.length) {
|
|
64
|
+
throw new Error(`Input count mismatch (psbt=${psbt.txInputs.length}, inputParams=${inputParams.length})`);
|
|
49
65
|
}
|
|
50
66
|
const wrappedPsbt = (0, wrap_1.toWrappedPsbt)(psbt);
|
|
51
|
-
for (const [inputIndex,
|
|
52
|
-
(0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, descriptor);
|
|
53
|
-
wrappedPsbt.updateInputWithDescriptor(inputIndex, descriptor);
|
|
67
|
+
for (const [inputIndex, v] of inputParams.entries()) {
|
|
68
|
+
(0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, v.descriptor);
|
|
69
|
+
wrappedPsbt.updateInputWithDescriptor(inputIndex, v.descriptor);
|
|
54
70
|
}
|
|
55
71
|
const unwrappedPsbt = (0, wrap_1.toUtxoPsbt)(wrappedPsbt, psbt.network);
|
|
56
72
|
for (const inputIndex in psbt.txInputs) {
|
|
57
|
-
|
|
73
|
+
const preparedInput = unwrappedPsbt.data.inputs[inputIndex];
|
|
74
|
+
const v = inputParams[inputIndex];
|
|
75
|
+
if (v.selectTapLeafScript && preparedInput.tapLeafScript) {
|
|
76
|
+
const selected = findTapLeafScript(preparedInput.tapLeafScript, v.selectTapLeafScript);
|
|
77
|
+
preparedInput.tapLeafScript = [selected];
|
|
78
|
+
}
|
|
79
|
+
psbt.data.inputs[inputIndex] = preparedInput;
|
|
58
80
|
}
|
|
59
81
|
}
|
|
60
82
|
function updateOutputsWithDescriptors(psbt, descriptors) {
|
|
@@ -75,8 +97,11 @@ function createPsbt(params, inputs, outputs) {
|
|
|
75
97
|
psbt.setLocktime(params.locktime ?? 0);
|
|
76
98
|
psbt.addInputs(inputs.map((i) => ({ ...i, sequence: i.sequence ?? params.sequence ?? exports.MAX_BIP125_RBF_SEQUENCE })));
|
|
77
99
|
psbt.addOutputs(outputs);
|
|
78
|
-
updateInputsWithDescriptors(psbt, inputs.map((
|
|
100
|
+
updateInputsWithDescriptors(psbt, inputs.map(({ descriptor, selectTapLeafScript }) => ({
|
|
101
|
+
descriptor,
|
|
102
|
+
selectTapLeafScript,
|
|
103
|
+
})));
|
|
79
104
|
updateOutputsWithDescriptors(psbt, outputs);
|
|
80
105
|
return psbt;
|
|
81
106
|
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsOENBY0M7QUFtREQsZ0NBbUJDO0FBbkdELDhEQUFnRDtBQU1oRCxpQ0FBbUQ7QUFDbkQsMkRBQXdEO0FBRXhEOzs7S0FHSztBQUNRLFFBQUEsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUV0RCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFzQixFQUFFLE1BQTJCO0lBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUNsQyxJQUE0QixFQUM1QixXQUFnRjtJQUVoRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0saUJBQWlCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3BELElBQUEscUNBQWlCLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekQsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN2RixhQUFhLENBQUMsYUFBYSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUMvQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQUMsSUFBNEIsRUFBRSxXQUF3QztJQUMxRyxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsS0FBSyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBY0QsU0FBZ0IsVUFBVSxDQUN4QixNQUFrQixFQUNsQixNQUEyQyxFQUMzQyxPQUFvQztJQUVwQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLCtCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QiwyQkFBMkIsQ0FDekIsSUFBSSxFQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELFVBQVU7UUFDVixtQkFBbUI7S0FDcEIsQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNGLDRCQUE0QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXBMZWFmU2NyaXB0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIE1pbmlzY3JpcHQgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxuaW1wb3J0IHsgRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQsIFdpdGhPcHREZXNjcmlwdG9yIH0gZnJvbSAnLi4vT3V0cHV0JztcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gJy4uLy4uL091dHB1dCc7XG5cbmltcG9ydCB7IHRvVXR4b1BzYnQsIHRvV3JhcHBlZFBzYnQgfSBmcm9tICcuL3dyYXAnO1xuaW1wb3J0IHsgYXNzZXJ0U2F0aXNmaWFibGUgfSBmcm9tICcuL2Fzc2VydFNhdGlzZmlhYmxlJztcblxuLyoqXG4gKiBOb24tRmluYWwgKFJlcGxhY2VhYmxlKVxuICogUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI1LjEvc3JjL3JwYy9yYXd0cmFuc2FjdGlvbl91dGlsLmNwcCNMNDlcbiAqICovXG5leHBvcnQgY29uc3QgTUFYX0JJUDEyNV9SQkZfU0VRVUVOQ0UgPSAweGZmZmZmZmZmIC0gMjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRUYXBMZWFmU2NyaXB0KGlucHV0OiBUYXBMZWFmU2NyaXB0W10sIHNjcmlwdDogQnVmZmVyIHwgTWluaXNjcmlwdCk6IFRhcExlYWZTY3JpcHQge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzY3JpcHQpKSB7XG4gICAgc2NyaXB0ID0gQnVmZmVyLmZyb20oc2NyaXB0LmVuY29kZSgpKTtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gaW5wdXQuZmlsdGVyKChsZWFmKSA9PiB7XG4gICAgcmV0dXJuIGxlYWYuc2NyaXB0LmVxdWFscyhzY3JpcHQpO1xuICB9KTtcbiAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyB0YXBMZWFmU2NyaXB0IGZvdW5kIGZvciBzY3JpcHQ6ICR7c2NyaXB0LnRvU3RyaW5nKCdoZXgnKX1gKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB0YXBMZWFmU2NyaXB0cyBmb3VuZCBmb3Igc2NyaXB0OiAke3NjcmlwdC50b1N0cmluZygnaGV4Jyl9YCk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXNbMF07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0c1dpdGhEZXNjcmlwdG9ycyhcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgaW5wdXRQYXJhbXM6IEFycmF5PHsgZGVzY3JpcHRvcjogRGVzY3JpcHRvcjsgc2VsZWN0VGFwTGVhZlNjcmlwdD86IE1pbmlzY3JpcHQgfT5cbikge1xuICBpZiAocHNidC50eElucHV0cy5sZW5ndGggIT09IGlucHV0UGFyYW1zLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW5wdXQgY291bnQgbWlzbWF0Y2ggKHBzYnQ9JHtwc2J0LnR4SW5wdXRzLmxlbmd0aH0sIGlucHV0UGFyYW1zPSR7aW5wdXRQYXJhbXMubGVuZ3RofSlgKTtcbiAgfVxuICBjb25zdCB3cmFwcGVkUHNidCA9IHRvV3JhcHBlZFBzYnQocHNidCk7XG4gIGZvciAoY29uc3QgW2lucHV0SW5kZXgsIHZdIG9mIGlucHV0UGFyYW1zLmVudHJpZXMoKSkge1xuICAgIGFzc2VydFNhdGlzZmlhYmxlKHBzYnQsIGlucHV0SW5kZXgsIHYuZGVzY3JpcHRvcik7XG4gICAgd3JhcHBlZFBzYnQudXBkYXRlSW5wdXRXaXRoRGVzY3JpcHRvcihpbnB1dEluZGV4LCB2LmRlc2NyaXB0b3IpO1xuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IGlucHV0SW5kZXggaW4gcHNidC50eElucHV0cykge1xuICAgIGNvbnN0IHByZXBhcmVkSW5wdXQgPSB1bndyYXBwZWRQc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdO1xuICAgIGNvbnN0IHYgPSBpbnB1dFBhcmFtc1tpbnB1dEluZGV4XTtcbiAgICBpZiAodi5zZWxlY3RUYXBMZWFmU2NyaXB0ICYmIHByZXBhcmVkSW5wdXQudGFwTGVhZlNjcmlwdCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaW5kVGFwTGVhZlNjcmlwdChwcmVwYXJlZElucHV0LnRhcExlYWZTY3JpcHQsIHYuc2VsZWN0VGFwTGVhZlNjcmlwdCk7XG4gICAgICBwcmVwYXJlZElucHV0LnRhcExlYWZTY3JpcHQgPSBbc2VsZWN0ZWRdO1xuICAgIH1cbiAgICBwc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdID0gcHJlcGFyZWRJbnB1dDtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPdXRwdXRzV2l0aERlc2NyaXB0b3JzKHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsIGRlc2NyaXB0b3JzOiBXaXRoT3B0RGVzY3JpcHRvcjxPdXRwdXQ+W10pIHtcbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICBmb3IgKGNvbnN0IFtvdXRwdXRJbmRleCwgeyBkZXNjcmlwdG9yIH1dIG9mIGRlc2NyaXB0b3JzLmVudHJpZXMoKSkge1xuICAgIGlmIChkZXNjcmlwdG9yKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVPdXRwdXRXaXRoRGVzY3JpcHRvcihvdXRwdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IG91dHB1dEluZGV4IGluIHBzYnQudHhPdXRwdXRzKSB7XG4gICAgcHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBzYnRQYXJhbXMgPSB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0ID0gRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQgJiB7XG4gIHNlbGVjdFRhcExlYWZTY3JpcHQ/OiBNaW5pc2NyaXB0O1xuICBzZXF1ZW5jZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQc2J0KFxuICBwYXJhbXM6IFBzYnRQYXJhbXMsXG4gIGlucHV0czogRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0W10sXG4gIG91dHB1dHM6IFdpdGhPcHREZXNjcmlwdG9yPE91dHB1dD5bXVxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LmNyZWF0ZVBzYnQoeyBuZXR3b3JrOiBwYXJhbXMubmV0d29yayB9KTtcbiAgcHNidC5zZXRWZXJzaW9uKHBhcmFtcy52ZXJzaW9uID8/IDIpO1xuICBwc2J0LnNldExvY2t0aW1lKHBhcmFtcy5sb2NrdGltZSA/PyAwKTtcbiAgcHNidC5hZGRJbnB1dHMoaW5wdXRzLm1hcCgoaSkgPT4gKHsgLi4uaSwgc2VxdWVuY2U6IGkuc2VxdWVuY2UgPz8gcGFyYW1zLnNlcXVlbmNlID8/IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFIH0pKSk7XG4gIHBzYnQuYWRkT3V0cHV0cyhvdXRwdXRzKTtcbiAgdXBkYXRlSW5wdXRzV2l0aERlc2NyaXB0b3JzKFxuICAgIHBzYnQsXG4gICAgaW5wdXRzLm1hcCgoeyBkZXNjcmlwdG9yLCBzZWxlY3RUYXBMZWFmU2NyaXB0IH0pID0+ICh7XG4gICAgICBkZXNjcmlwdG9yLFxuICAgICAgc2VsZWN0VGFwTGVhZlNjcmlwdCxcbiAgICB9KSlcbiAgKTtcbiAgdXBkYXRlT3V0cHV0c1dpdGhEZXNjcmlwdG9ycyhwc2J0LCBvdXRwdXRzKTtcbiAgcmV0dXJuIHBzYnQ7XG59XG4iXX0=
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * as bip65 from './bip65';
|
|
2
2
|
export * as descriptor from './descriptor';
|
|
3
3
|
export * as testutil from './testutil';
|
|
4
|
+
export * as paygo from './paygo';
|
|
5
|
+
export * as bip32utils from './bip32utils';
|
|
4
6
|
export * from './dustThreshold';
|
|
5
7
|
export * from './Output';
|
|
6
8
|
export * from './xOnlyPubkey';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -36,11 +36,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
36
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.testutil = exports.descriptor = exports.bip65 = void 0;
|
|
39
|
+
exports.bip32utils = exports.paygo = exports.testutil = exports.descriptor = exports.bip65 = void 0;
|
|
40
40
|
exports.bip65 = __importStar(require("./bip65"));
|
|
41
41
|
exports.descriptor = __importStar(require("./descriptor"));
|
|
42
42
|
exports.testutil = __importStar(require("./testutil"));
|
|
43
|
+
exports.paygo = __importStar(require("./paygo"));
|
|
44
|
+
exports.bip32utils = __importStar(require("./bip32utils"));
|
|
43
45
|
__exportStar(require("./dustThreshold"), exports);
|
|
44
46
|
__exportStar(require("./Output"), exports);
|
|
45
47
|
__exportStar(require("./xOnlyPubkey"), exports);
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWlDO0FBQ2pDLDJEQUEyQztBQUMzQyx1REFBdUM7QUFDdkMsaURBQWlDO0FBQ2pDLDJEQUEyQztBQUMzQyxrREFBZ0M7QUFDaEMsMkNBQXlCO0FBQ3pCLGdEQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGJpcDY1IGZyb20gJy4vYmlwNjUnO1xuZXhwb3J0ICogYXMgZGVzY3JpcHRvciBmcm9tICcuL2Rlc2NyaXB0b3InO1xuZXhwb3J0ICogYXMgdGVzdHV0aWwgZnJvbSAnLi90ZXN0dXRpbCc7XG5leHBvcnQgKiBhcyBwYXlnbyBmcm9tICcuL3BheWdvJztcbmV4cG9ydCAqIGFzIGJpcDMydXRpbHMgZnJvbSAnLi9iaXAzMnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZHVzdFRocmVzaG9sZCc7XG5leHBvcnQgKiBmcm9tICcuL091dHB1dCc7XG5leHBvcnQgKiBmcm9tICcuL3hPbmx5UHVia2V5JztcbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
export declare const NIL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
3
|
+
/** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
|
|
4
|
+
* given the address and entropy.
|
|
5
|
+
*
|
|
6
|
+
* @param address
|
|
7
|
+
* @param entropy
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare function createPayGoAttestationBuffer(address: string, entropy: Buffer, network: utxolib.Network): Buffer;
|
|
11
|
+
//# sourceMappingURL=attestation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/attestation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,QAAQ,yCAAyC,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM/G"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.NIL_UUID = void 0;
|
|
40
|
+
exports.createPayGoAttestationBuffer = createPayGoAttestationBuffer;
|
|
41
|
+
const assert_1 = __importDefault(require("assert"));
|
|
42
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
43
|
+
exports.NIL_UUID = '00000000-0000-0000-0000-000000000000';
|
|
44
|
+
/** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
|
|
45
|
+
* given the address and entropy.
|
|
46
|
+
*
|
|
47
|
+
* @param address
|
|
48
|
+
* @param entropy
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
function createPayGoAttestationBuffer(address, entropy, network) {
|
|
52
|
+
(0, assert_1.default)(address.length > 0);
|
|
53
|
+
const isValidAddress = utxolib.address.toOutputScript(address, network);
|
|
54
|
+
(0, assert_1.default)(isValidAddress, `Address ${address} is not a valid address.`);
|
|
55
|
+
const addressBuffer = Buffer.from(address);
|
|
56
|
+
return Buffer.concat([entropy, addressBuffer, Buffer.from(exports.NIL_UUID)]);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsb0VBTUM7QUFsQkQsb0RBQTRCO0FBRTVCLDhEQUFnRDtBQUNuQyxRQUFBLFFBQVEsR0FBRyxzQ0FBc0MsQ0FBQztBQUUvRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQXdCO0lBQ3JHLElBQUEsZ0JBQU0sRUFBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxJQUFBLGdCQUFNLEVBQUMsY0FBYyxFQUFFLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5leHBvcnQgY29uc3QgTklMX1VVSUQgPSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJztcblxuLyoqIFRoaXMgZnVuY3Rpb24gcmVjb25zdHJ1Y3RzIHRoZSBwcm9vZiA8RU5UUk9QWT48QUREUkVTUz48VVVJRD5cbiAqIGdpdmVuIHRoZSBhZGRyZXNzIGFuZCBlbnRyb3B5LlxuICpcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKiBAcGFyYW0gZW50cm9weVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXIoYWRkcmVzczogc3RyaW5nLCBlbnRyb3B5OiBCdWZmZXIsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IEJ1ZmZlciB7XG4gIGFzc2VydChhZGRyZXNzLmxlbmd0aCA+IDApO1xuICBjb25zdCBpc1ZhbGlkQWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzLCBuZXR3b3JrKTtcbiAgYXNzZXJ0KGlzVmFsaWRBZGRyZXNzLCBgQWRkcmVzcyAke2FkZHJlc3N9IGlzIG5vdCBhIHZhbGlkIGFkZHJlc3MuYCk7XG4gIGNvbnN0IGFkZHJlc3NCdWZmZXIgPSBCdWZmZXIuZnJvbShhZGRyZXNzKTtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2VudHJvcHksIGFkZHJlc3NCdWZmZXIsIEJ1ZmZlci5mcm9tKE5JTF9VVUlEKV0pO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygo/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./parsePayGoAttestation"), exports);
|
|
18
|
+
__exportStar(require("./psbt"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUF3QztBQUN4Qyx5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BhcnNlUGF5R29BdHRlc3RhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BzYnQnO1xuIl19
|