@bitgo-beta/utxo-lib 8.0.3-beta.31 → 8.0.3-beta.310
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/README.md +19 -16
- package/dist/src/address.js +5 -5
- package/dist/src/addressFormat.js +9 -9
- package/dist/src/bitgo/Musig2.js +19 -19
- package/dist/src/bitgo/PsbtUtil.d.ts +8 -7
- package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
- package/dist/src/bitgo/PsbtUtil.js +18 -3
- package/dist/src/bitgo/Unspent.js +3 -3
- package/dist/src/bitgo/UtxoPsbt.d.ts +19 -4
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoPsbt.js +174 -110
- package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransaction.js +9 -9
- package/dist/src/bitgo/bitcoincash/address.js +6 -6
- package/dist/src/bitgo/bitcoincash/index.js +6 -2
- package/dist/src/bitgo/dash/DashTransaction.js +3 -3
- package/dist/src/bitgo/dash/index.js +6 -2
- package/dist/src/bitgo/index.d.ts +9 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +9 -3
- package/dist/src/bitgo/legacysafe/index.d.ts +15 -0
- package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
- package/dist/src/bitgo/legacysafe/index.js +61 -0
- package/dist/src/bitgo/litecoin/LitecoinTransaction.js +2 -2
- package/dist/src/bitgo/litecoin/index.js +6 -2
- package/dist/src/bitgo/outputScripts.d.ts +1 -0
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +29 -14
- package/dist/src/bitgo/parseInput.js +6 -6
- package/dist/src/bitgo/psbt/fromHalfSigned.js +5 -5
- package/dist/src/bitgo/signature.d.ts +2 -2
- package/dist/src/bitgo/signature.d.ts.map +1 -1
- package/dist/src/bitgo/signature.js +24 -9
- package/dist/src/bitgo/transaction.d.ts +18 -3
- package/dist/src/bitgo/transaction.d.ts.map +1 -1
- package/dist/src/bitgo/transaction.js +18 -16
- package/dist/src/bitgo/transactionAmounts.d.ts +9 -0
- package/dist/src/bitgo/transactionAmounts.d.ts.map +1 -0
- package/dist/src/bitgo/transactionAmounts.js +33 -0
- package/dist/src/bitgo/types.d.ts +7 -0
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/types.js +11 -2
- package/dist/src/bitgo/wallet/Psbt.d.ts +28 -8
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Psbt.js +110 -29
- package/dist/src/bitgo/wallet/Unspent.d.ts +23 -13
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Unspent.js +62 -53
- package/dist/src/bitgo/wallet/WalletOutput.d.ts +17 -1
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +68 -27
- package/dist/src/bitgo/wallet/WalletScripts.js +2 -2
- package/dist/src/bitgo/wallet/WalletUnspentSigner.js +4 -4
- package/dist/src/bitgo/wallet/index.js +6 -2
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts +50 -0
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/PsbtOutputs.js +87 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts +26 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.js +116 -0
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +5 -14
- package/dist/src/bitgo/zcash/ZcashTransaction.js +15 -15
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +4 -4
- package/dist/src/bitgo/zcash/address.js +3 -3
- package/dist/src/bitgo/zcash/hashZip0244.js +3 -3
- package/dist/src/bitgo/zcash/index.js +6 -2
- package/dist/src/index.js +6 -2
- package/dist/src/noble_ecc.d.ts +7 -7
- package/dist/src/noble_ecc.d.ts.map +1 -1
- package/dist/src/noble_ecc.js +4 -4
- package/dist/src/testutil/index.js +6 -2
- package/dist/src/testutil/keys.d.ts +3 -0
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +18 -3
- package/dist/src/testutil/mock.d.ts.map +1 -1
- package/dist/src/testutil/mock.js +19 -17
- package/dist/src/testutil/psbt.d.ts +27 -6
- package/dist/src/testutil/psbt.d.ts.map +1 -1
- package/dist/src/testutil/psbt.js +40 -29
- package/dist/src/testutil/transaction.d.ts +14 -5
- package/dist/src/testutil/transaction.d.ts.map +1 -1
- package/dist/src/testutil/transaction.js +20 -20
- package/package.json +8 -8
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addWalletOutputToPsbt = void 0;
|
|
3
|
+
exports.updateWalletOutputForPsbt = exports.addWalletOutputToPsbt = void 0;
|
|
4
4
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
5
5
|
const chains_1 = require("./chains");
|
|
6
6
|
const outputScripts_1 = require("../outputScripts");
|
|
7
7
|
/**
|
|
8
8
|
* Add a verifiable wallet output to the PSBT. The output and all data
|
|
9
9
|
* needed to verify it from public keys only are added to the PSBT.
|
|
10
|
-
* Typically these are change outputs
|
|
10
|
+
* Typically these are change outputs.
|
|
11
11
|
*
|
|
12
12
|
* @param psbt the PSBT to add change output to
|
|
13
13
|
* @param rootWalletKeys keys that will be able to spend the output
|
|
@@ -19,17 +19,57 @@ const outputScripts_1 = require("../outputScripts");
|
|
|
19
19
|
*/
|
|
20
20
|
function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
|
|
21
21
|
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
22
|
-
const scriptType = chains_1.scriptTypeForChain(chain);
|
|
22
|
+
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
23
23
|
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
24
|
-
const payment = scriptType === 'p2tr' ? outputScripts_1.createPaymentP2tr(walletKeys.publicKeys) : outputScripts_1.createPaymentP2trMusig2(walletKeys.publicKeys);
|
|
24
|
+
const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
|
|
25
|
+
psbt.addOutput({ script: payment.output, value });
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const { scriptPubKey: script } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
29
|
+
psbt.addOutput({ script, value });
|
|
30
|
+
}
|
|
31
|
+
updateWalletOutputForPsbt(psbt, rootWalletKeys, psbt.data.outputs.length - 1, chain, index);
|
|
32
|
+
}
|
|
33
|
+
exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
|
|
34
|
+
/**
|
|
35
|
+
* Update the wallet output with the required information when necessary. If the
|
|
36
|
+
* information is there already, it will skip over it.
|
|
37
|
+
*
|
|
38
|
+
* This function assumes that the output script and value have already been set.
|
|
39
|
+
*
|
|
40
|
+
* @param psbt the PSBT to update change output at
|
|
41
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
42
|
+
* @param outputIndex output index where to update the output
|
|
43
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
44
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
45
|
+
* any valid ChainCode
|
|
46
|
+
* @param index derivation index for the change address
|
|
47
|
+
* @param value value of the change output
|
|
48
|
+
*/
|
|
49
|
+
function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, index) {
|
|
50
|
+
if (psbt.data.outputs.length <= outputIndex) {
|
|
51
|
+
throw new Error(`outputIndex (${outputIndex}) is too large for the number of outputs (${psbt.data.outputs.length})`);
|
|
52
|
+
}
|
|
53
|
+
const outputScript = psbt.getOutputScript(outputIndex);
|
|
54
|
+
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
55
|
+
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
56
|
+
const output = psbt.data.outputs[outputIndex];
|
|
57
|
+
const update = {};
|
|
58
|
+
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
59
|
+
const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
|
|
60
|
+
if (!payment.output || !payment.output.equals(outputScript)) {
|
|
61
|
+
throw new Error(`cannot update a p2tr output where the scripts do not match - Failing.`);
|
|
62
|
+
}
|
|
25
63
|
const allLeafHashes = payment.redeems.map((r) => bitcoinjs_lib_1.taproot.hashTapLeaf(r.output));
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
tapInternalKey
|
|
31
|
-
|
|
32
|
-
|
|
64
|
+
if (!output.tapTree) {
|
|
65
|
+
update.tapTree = payment.tapTree;
|
|
66
|
+
}
|
|
67
|
+
if (!output.tapInternalKey) {
|
|
68
|
+
update.tapInternalKey = payment.internalPubkey;
|
|
69
|
+
}
|
|
70
|
+
if (!output.tapBip32Derivation) {
|
|
71
|
+
update.tapBip32Derivation = [0, 1, 2].map((idx) => {
|
|
72
|
+
const pubkey = (0, outputScripts_1.toXOnlyPublicKey)(walletKeys.triple[idx].publicKey);
|
|
33
73
|
const leafHashes = [];
|
|
34
74
|
payment.redeems.forEach((r, idx) => {
|
|
35
75
|
if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
|
|
@@ -42,28 +82,29 @@ function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
|
|
|
42
82
|
path: walletKeys.paths[idx],
|
|
43
83
|
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
44
84
|
};
|
|
45
|
-
})
|
|
46
|
-
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
47
87
|
}
|
|
48
88
|
else {
|
|
49
|
-
const { scriptPubKey, witnessScript, redeemScript } = outputScripts_1.createOutputScript2of3(walletKeys.publicKeys, scriptType);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
89
|
+
const { scriptPubKey, witnessScript, redeemScript } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
90
|
+
if (!scriptPubKey.equals(outputScript)) {
|
|
91
|
+
throw new Error(`cannot update an output where the scripts do not match - Failing.`);
|
|
92
|
+
}
|
|
93
|
+
if (!output.bip32Derivation) {
|
|
94
|
+
update.bip32Derivation = [0, 1, 2].map((idx) => ({
|
|
54
95
|
pubkey: walletKeys.triple[idx].publicKey,
|
|
55
96
|
path: walletKeys.paths[idx],
|
|
56
97
|
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
57
|
-
}))
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
psbt.updateOutput(outputIndex, { witnessScript });
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
if (!output.witnessScript && witnessScript) {
|
|
101
|
+
update.witnessScript = witnessScript;
|
|
62
102
|
}
|
|
63
|
-
if (redeemScript) {
|
|
64
|
-
|
|
103
|
+
if (!output.redeemScript && redeemScript) {
|
|
104
|
+
update.redeemScript = redeemScript;
|
|
65
105
|
}
|
|
66
106
|
}
|
|
107
|
+
psbt.updateOutput(outputIndex, update);
|
|
67
108
|
}
|
|
68
|
-
exports.
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXdDO0FBR3hDLHFDQUF5RDtBQUN6RCxvREFBd0g7QUFFeEg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLElBQWMsRUFDZCxjQUE4QixFQUM5QixLQUFnQixFQUNoQixLQUFhLEVBQ2IsS0FBYTtJQUViLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsTUFBTSxVQUFVLEdBQUcsMkJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxZQUFZLEVBQUU7UUFDeEQsTUFBTSxPQUFPLEdBQ1gsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUNBQWlCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEgsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU87WUFDdkIsS0FBSztZQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLE1BQU0sR0FBRyxnQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxPQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7d0JBQzlDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3JDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU87b0JBQ0wsVUFBVTtvQkFDVixNQUFNO29CQUNOLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDM0IsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXO2lCQUMxRCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1NBQ0gsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLHNDQUFzQixDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLEtBQUs7WUFDTCxlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUztnQkFDeEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUMzQixpQkFBaUIsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVc7YUFDMUQsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUNsRDtLQUNGO0FBQ0gsQ0FBQztBQXRERCxzREFzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0YXByb290IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBVdHhvUHNidCB9IGZyb20gJy4uL1V0eG9Qc2J0JztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMywgY3JlYXRlUGF5bWVudFAydHIsIGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyLCB0b1hPbmx5UHVibGljS2V5IH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbi8qKlxuICogQWRkIGEgdmVyaWZpYWJsZSB3YWxsZXQgb3V0cHV0IHRvIHRoZSBQU0JULiBUaGUgb3V0cHV0IGFuZCBhbGwgZGF0YVxuICogbmVlZGVkIHRvIHZlcmlmeSBpdCBmcm9tIHB1YmxpYyBrZXlzIG9ubHkgYXJlIGFkZGVkIHRvIHRoZSBQU0JULlxuICogVHlwaWNhbGx5IHRoZXNlIGFyZSBjaGFuZ2Ugb3V0cHV0c1xuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnRcbik6IHZvaWQge1xuICBjb25zdCB3YWxsZXRLZXlzID0gcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBjb25zdCBwYXltZW50ID1cbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IGNyZWF0ZVBheW1lbnRQMnRyKHdhbGxldEtleXMucHVibGljS2V5cykgOiBjcmVhdGVQYXltZW50UDJ0ck11c2lnMih3YWxsZXRLZXlzLnB1YmxpY0tleXMpO1xuICAgIGNvbnN0IGFsbExlYWZIYXNoZXMgPSBwYXltZW50LnJlZGVlbXMhLm1hcCgocikgPT4gdGFwcm9vdC5oYXNoVGFwTGVhZihyLm91dHB1dCEpKTtcblxuICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgIHNjcmlwdDogcGF5bWVudC5vdXRwdXQhLFxuICAgICAgdmFsdWUsXG4gICAgICB0YXBUcmVlOiBwYXltZW50LnRhcFRyZWUsXG4gICAgICB0YXBJbnRlcm5hbEtleTogcGF5bWVudC5pbnRlcm5hbFB1YmtleSxcbiAgICAgIHRhcEJpcDMyRGVyaXZhdGlvbjogWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICAgIGNvbnN0IHB1YmtleSA9IHRvWE9ubHlQdWJsaWNLZXkod2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXkpO1xuICAgICAgICBjb25zdCBsZWFmSGFzaGVzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICBwYXltZW50LnJlZGVlbXMhLmZvckVhY2goKHIsIGlkeCkgPT4ge1xuICAgICAgICAgIGlmIChyLnB1YmtleXMhLmZpbmQoKHBrKSA9PiBway5lcXVhbHMocHVia2V5KSkpIHtcbiAgICAgICAgICAgIGxlYWZIYXNoZXMucHVzaChhbGxMZWFmSGFzaGVzW2lkeF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVhZkhhc2hlcyxcbiAgICAgICAgICBwdWJrZXksXG4gICAgICAgICAgcGF0aDogd2FsbGV0S2V5cy5wYXRoc1tpZHhdLFxuICAgICAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5LCB3aXRuZXNzU2NyaXB0LCByZWRlZW1TY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBwc2J0LmFkZE91dHB1dCh7XG4gICAgICBzY3JpcHQ6IHNjcmlwdFB1YktleSxcbiAgICAgIHZhbHVlLFxuICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbMCwgMSwgMl0ubWFwKChpZHgpID0+ICh7XG4gICAgICAgIHB1YmtleTogd2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfSkpLFxuICAgIH0pO1xuICAgIGNvbnN0IG91dHB1dEluZGV4ID0gcHNidC50eE91dHB1dHMubGVuZ3RoIC0gMTtcbiAgICBpZiAod2l0bmVzc1NjcmlwdCkge1xuICAgICAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHsgd2l0bmVzc1NjcmlwdCB9KTtcbiAgICB9XG4gICAgaWYgKHJlZGVlbVNjcmlwdCkge1xuICAgICAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHsgcmVkZWVtU2NyaXB0IH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
109
|
+
exports.updateWalletOutputForPsbt = updateWalletOutputForPsbt;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXdDO0FBSXhDLHFDQUF5RDtBQUN6RCxvREFBd0g7QUFFeEg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLElBQWMsRUFDZCxjQUE4QixFQUM5QixLQUFnQixFQUNoQixLQUFhLEVBQ2IsS0FBYTtJQUViLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsTUFBTSxVQUFVLEdBQUcsSUFBQSwyQkFBa0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRTtRQUN4RCxNQUFNLE9BQU8sR0FDWCxVQUFVLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLGlDQUFpQixFQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSx1Q0FBdUIsRUFBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDcEQ7U0FBTTtRQUNMLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSxzQ0FBc0IsRUFBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNuQztJQUNELHlCQUF5QixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUYsQ0FBQztBQWxCRCxzREFrQkM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILFNBQWdCLHlCQUF5QixDQUN2QyxJQUFjLEVBQ2QsY0FBOEIsRUFDOUIsV0FBbUIsRUFDbkIsS0FBZ0IsRUFDaEIsS0FBYTtJQUViLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLFdBQVcsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUNiLGdCQUFnQixXQUFXLDZDQUE2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FDcEcsQ0FBQztLQUNIO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV2RCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sVUFBVSxHQUFHLElBQUEsMkJBQWtCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUNwQyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRTtRQUN4RCxNQUFNLE9BQU8sR0FDWCxVQUFVLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLGlDQUFpQixFQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSx1Q0FBdUIsRUFBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMzRCxNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7U0FDMUY7UUFDRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUU7WUFDMUIsTUFBTSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtZQUM5QixNQUFNLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFnQixFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztnQkFDaEMsT0FBTyxDQUFDLE9BQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7b0JBQ2xDLElBQUksQ0FBQyxDQUFDLE9BQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTt3QkFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDckM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztvQkFDTCxVQUFVO29CQUNWLE1BQU07b0JBQ04sSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUMzQixpQkFBaUIsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVc7aUJBQzFELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNKO0tBQ0Y7U0FBTTtRQUNMLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUEsc0NBQXNCLEVBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtZQUMzQixNQUFNLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3hDLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXO2FBQzFELENBQUMsQ0FBQyxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxhQUFhLEVBQUU7WUFDMUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxZQUFZLEVBQUU7WUFDeEMsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDcEM7S0FDRjtJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUF0RUQsOERBc0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGFwcm9vdCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgUHNidE91dHB1dFVwZGF0ZSB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVXR4b1BzYnQgfSBmcm9tICcuLi9VdHhvUHNidCc7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBDaGFpbkNvZGUsIHNjcmlwdFR5cGVGb3JDaGFpbiB9IGZyb20gJy4vY2hhaW5zJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZVBheW1lbnRQMnRyLCBjcmVhdGVQYXltZW50UDJ0ck11c2lnMiwgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG4vKipcbiAqIEFkZCBhIHZlcmlmaWFibGUgd2FsbGV0IG91dHB1dCB0byB0aGUgUFNCVC4gVGhlIG91dHB1dCBhbmQgYWxsIGRhdGFcbiAqIG5lZWRlZCB0byB2ZXJpZnkgaXQgZnJvbSBwdWJsaWMga2V5cyBvbmx5IGFyZSBhZGRlZCB0byB0aGUgUFNCVC5cbiAqIFR5cGljYWxseSB0aGVzZSBhcmUgY2hhbmdlIG91dHB1dHMuXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gYWRkIGNoYW5nZSBvdXRwdXQgdG9cbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIGNoYW5nZSBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdhbGxldE91dHB1dFRvUHNidChcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlcixcbiAgdmFsdWU6IGJpZ2ludFxuKTogdm9pZCB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHBheW1lbnQub3V0cHV0ISwgdmFsdWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBzY3JpcHRQdWJLZXk6IHNjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyh3YWxsZXRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGUpO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0LCB2YWx1ZSB9KTtcbiAgfVxuICB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzLCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggLSAxLCBjaGFpbiwgaW5kZXgpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgd2FsbGV0IG91dHB1dCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB3aGVuIG5lY2Vzc2FyeS4gSWYgdGhlXG4gKiBpbmZvcm1hdGlvbiBpcyB0aGVyZSBhbHJlYWR5LCBpdCB3aWxsIHNraXAgb3ZlciBpdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGUgb3V0cHV0IHNjcmlwdCBhbmQgdmFsdWUgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIHVwZGF0ZSBjaGFuZ2Ugb3V0cHV0IGF0XG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gb3V0cHV0SW5kZXggb3V0cHV0IGluZGV4IHdoZXJlIHRvIHVwZGF0ZSB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgaWYgKHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aCA8PSBvdXRwdXRJbmRleCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBvdXRwdXRJbmRleCAoJHtvdXRwdXRJbmRleH0pIGlzIHRvbyBsYXJnZSBmb3IgdGhlIG51bWJlciBvZiBvdXRwdXRzICgke3BzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aH0pYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBvdXRwdXRTY3JpcHQgPSBwc2J0LmdldE91dHB1dFNjcmlwdChvdXRwdXRJbmRleCk7XG5cbiAgY29uc3Qgd2FsbGV0S2V5cyA9IHJvb3RXYWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KTtcbiAgY29uc3Qgc2NyaXB0VHlwZSA9IHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbik7XG4gIGNvbnN0IG91dHB1dCA9IHBzYnQuZGF0YS5vdXRwdXRzW291dHB1dEluZGV4XTtcbiAgY29uc3QgdXBkYXRlOiBQc2J0T3V0cHV0VXBkYXRlID0ge307XG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJ0cicgfHwgc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgY29uc3QgcGF5bWVudCA9XG4gICAgICBzY3JpcHRUeXBlID09PSAncDJ0cicgPyBjcmVhdGVQYXltZW50UDJ0cih3YWxsZXRLZXlzLnB1YmxpY0tleXMpIDogY3JlYXRlUGF5bWVudFAydHJNdXNpZzIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKTtcbiAgICBpZiAoIXBheW1lbnQub3V0cHV0IHx8ICFwYXltZW50Lm91dHB1dC5lcXVhbHMob3V0cHV0U2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgdXBkYXRlIGEgcDJ0ciBvdXRwdXQgd2hlcmUgdGhlIHNjcmlwdHMgZG8gbm90IG1hdGNoIC0gRmFpbGluZy5gKTtcbiAgICB9XG4gICAgY29uc3QgYWxsTGVhZkhhc2hlcyA9IHBheW1lbnQucmVkZWVtcyEubWFwKChyKSA9PiB0YXByb290Lmhhc2hUYXBMZWFmKHIub3V0cHV0ISkpO1xuXG4gICAgaWYgKCFvdXRwdXQudGFwVHJlZSkge1xuICAgICAgdXBkYXRlLnRhcFRyZWUgPSBwYXltZW50LnRhcFRyZWU7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnRhcEludGVybmFsS2V5KSB7XG4gICAgICB1cGRhdGUudGFwSW50ZXJuYWxLZXkgPSBwYXltZW50LmludGVybmFsUHVia2V5O1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC50YXBCaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIHVwZGF0ZS50YXBCaXAzMkRlcml2YXRpb24gPSBbMCwgMSwgMl0ubWFwKChpZHgpID0+IHtcbiAgICAgICAgY29uc3QgcHVia2V5ID0gdG9YT25seVB1YmxpY0tleSh3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSk7XG4gICAgICAgIGNvbnN0IGxlYWZIYXNoZXM6IEJ1ZmZlcltdID0gW107XG4gICAgICAgIHBheW1lbnQucmVkZWVtcyEuZm9yRWFjaCgociwgaWR4KSA9PiB7XG4gICAgICAgICAgaWYgKHIucHVia2V5cyEuZmluZCgocGspID0+IHBrLmVxdWFscyhwdWJrZXkpKSkge1xuICAgICAgICAgICAgbGVhZkhhc2hlcy5wdXNoKGFsbExlYWZIYXNoZXNbaWR4XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWFmSGFzaGVzLFxuICAgICAgICAgIHB1YmtleSxcbiAgICAgICAgICBwYXRoOiB3YWxsZXRLZXlzLnBhdGhzW2lkeF0sXG4gICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5LCB3aXRuZXNzU2NyaXB0LCByZWRlZW1TY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBpZiAoIXNjcmlwdFB1YktleS5lcXVhbHMob3V0cHV0U2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgdXBkYXRlIGFuIG91dHB1dCB3aGVyZSB0aGUgc2NyaXB0cyBkbyBub3QgbWF0Y2ggLSBGYWlsaW5nLmApO1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIHVwZGF0ZS5iaXAzMkRlcml2YXRpb24gPSBbMCwgMSwgMl0ubWFwKChpZHgpID0+ICh7XG4gICAgICAgIHB1YmtleTogd2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfSkpO1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC53aXRuZXNzU2NyaXB0ICYmIHdpdG5lc3NTY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdDtcbiAgICB9XG4gICAgaWYgKCFvdXRwdXQucmVkZWVtU2NyaXB0ICYmIHJlZGVlbVNjcmlwdCkge1xuICAgICAgdXBkYXRlLnJlZGVlbVNjcmlwdCA9IHJlZGVlbVNjcmlwdDtcbiAgICB9XG4gIH1cbiAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHVwZGF0ZSk7XG59XG4iXX0=
|
|
@@ -5,11 +5,11 @@ const __1 = require("../..");
|
|
|
5
5
|
const __2 = require("..");
|
|
6
6
|
const outputScripts_1 = require("../outputScripts");
|
|
7
7
|
function getWalletOutputScripts(keys, chain, index) {
|
|
8
|
-
return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, outputScripts_1.scriptTypeForChain(chain));
|
|
8
|
+
return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, (0, outputScripts_1.scriptTypeForChain)(chain));
|
|
9
9
|
}
|
|
10
10
|
exports.getWalletOutputScripts = getWalletOutputScripts;
|
|
11
11
|
function getWalletAddress(keys, chain, index, network) {
|
|
12
12
|
return __1.address.fromOutputScript(getWalletOutputScripts(keys, chain, index).scriptPubKey, network);
|
|
13
13
|
}
|
|
14
14
|
exports.getWalletAddress = getWalletAddress;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxJQUFBLGtDQUFrQixFQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUxELHdEQUtDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBb0IsRUFBRSxLQUFnQixFQUFFLEtBQWEsRUFBRSxPQUFnQjtJQUN0RyxPQUFPLFdBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRkQsNENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXR3b3JrLCBhZGRyZXNzIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgQ2hhaW5Db2RlLCBvdXRwdXRTY3JpcHRzIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgUm9vdFdhbGxldEtleXMgfSBmcm9tICcuL1dhbGxldEtleXMnO1xuaW1wb3J0IHsgc2NyaXB0VHlwZUZvckNoYWluLCBTcGVuZGFibGVTY3JpcHQgfSBmcm9tICcuLi9vdXRwdXRTY3JpcHRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdhbGxldE91dHB1dFNjcmlwdHMoa2V5czogUm9vdFdhbGxldEtleXMsIGNoYWluOiBDaGFpbkNvZGUsIGluZGV4OiBudW1iZXIpOiBTcGVuZGFibGVTY3JpcHQge1xuICByZXR1cm4gb3V0cHV0U2NyaXB0cy5jcmVhdGVPdXRwdXRTY3JpcHQyb2YzKFxuICAgIGtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpLnB1YmxpY0tleXMsXG4gICAgc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0QWRkcmVzcyhrZXlzOiBSb290V2FsbGV0S2V5cywgY2hhaW46IENoYWluQ29kZSwgaW5kZXg6IG51bWJlciwgbmV0d29yazogTmV0d29yayk6IHN0cmluZyB7XG4gIHJldHVybiBhZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoZ2V0V2FsbGV0T3V0cHV0U2NyaXB0cyhrZXlzLCBjaGFpbiwgaW5kZXgpLnNjcmlwdFB1YktleSwgbmV0d29yayk7XG59XG4iXX0=
|
|
@@ -9,16 +9,16 @@ class WalletUnspentSigner {
|
|
|
9
9
|
if (Array.isArray(walletKeys)) {
|
|
10
10
|
walletKeys = new WalletKeys_1.RootWalletKeys(walletKeys);
|
|
11
11
|
}
|
|
12
|
-
this.signerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, signer));
|
|
12
|
+
this.signerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, signer));
|
|
13
13
|
if (this.signerIndex === undefined) {
|
|
14
14
|
throw new Error(`signer not part of walletKeys`);
|
|
15
15
|
}
|
|
16
|
-
this.cosignerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, cosigner));
|
|
16
|
+
this.cosignerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, cosigner));
|
|
17
17
|
if (this.cosignerIndex === undefined) {
|
|
18
18
|
throw new Error(`cosigner not part of walletKeys`);
|
|
19
19
|
}
|
|
20
20
|
this.walletKeys = walletKeys;
|
|
21
|
-
if (WalletKeys_1.eqPublicKey(signer, cosigner)) {
|
|
21
|
+
if ((0, WalletKeys_1.eqPublicKey)(signer, cosigner)) {
|
|
22
22
|
throw new Error(`signer must not equal cosigner`);
|
|
23
23
|
}
|
|
24
24
|
if (signer.isNeutered()) {
|
|
@@ -44,4 +44,4 @@ class WalletUnspentSigner {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
exports.WalletUnspentSigner = WalletUnspentSigner;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0VW5zcGVudFNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0VW5zcGVudFNpZ25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBMEY7QUFHMUYsTUFBYSxtQkFBbUI7SUFjOUIsWUFDRSxVQUErQyxFQUN4QyxNQUFzQixFQUN0QixRQUF3QjtRQUR4QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUUvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsVUFBVSxHQUFHLElBQUksMkJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3QztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBZSxDQUFDO1FBRWxDLElBQUksSUFBQSx3QkFBVyxFQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBcENELE1BQU0sQ0FBQyxJQUFJLENBQ1QsVUFBMEIsRUFDMUIsTUFBc0IsRUFDdEIsUUFBd0I7UUFFeEIsT0FBTyxJQUFJLG1CQUFtQixDQUFpQixVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFnQ0Q7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSw4QkFBaUIsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLFlBQVksMkJBQWMsRUFBRTtZQUM3QyxPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDekYsQ0FBQztTQUNIO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUE3REQsa0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdiaXAzMic7XG5cbmltcG9ydCB7IERlcml2ZWRXYWxsZXRLZXlzLCBlcVB1YmxpY0tleSwgUm9vdFdhbGxldEtleXMsIFdhbGxldEtleXMgfSBmcm9tICcuL1dhbGxldEtleXMnO1xuaW1wb3J0IHsgVHJpcGxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0VW5zcGVudFNpZ25lcjxUIGV4dGVuZHMgV2FsbGV0S2V5cz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgd2FsbGV0S2V5czogVDtcblxuICBzdGF0aWMgZnJvbShcbiAgICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgICBzaWduZXI6IEJJUDMySW50ZXJmYWNlLFxuICAgIGNvc2lnbmVyOiBCSVAzMkludGVyZmFjZVxuICApOiBXYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPiB7XG4gICAgcmV0dXJuIG5ldyBXYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPih3YWxsZXRLZXlzLCBzaWduZXIsIGNvc2lnbmVyKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHNpZ25lckluZGV4O1xuICByZWFkb25seSBjb3NpZ25lckluZGV4O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHdhbGxldEtleXM6IFdhbGxldEtleXMgfCBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICAgIHB1YmxpYyBzaWduZXI6IEJJUDMySW50ZXJmYWNlLFxuICAgIHB1YmxpYyBjb3NpZ25lcjogQklQMzJJbnRlcmZhY2VcbiAgKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkod2FsbGV0S2V5cykpIHtcbiAgICAgIHdhbGxldEtleXMgPSBuZXcgUm9vdFdhbGxldEtleXMod2FsbGV0S2V5cyk7XG4gICAgfVxuICAgIHRoaXMuc2lnbmVySW5kZXggPSB3YWxsZXRLZXlzLnRyaXBsZS5maW5kSW5kZXgoKGspID0+IGVxUHVibGljS2V5KGssIHNpZ25lcikpO1xuICAgIGlmICh0aGlzLnNpZ25lckluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG5vdCBwYXJ0IG9mIHdhbGxldEtleXNgKTtcbiAgICB9XG4gICAgdGhpcy5jb3NpZ25lckluZGV4ID0gd2FsbGV0S2V5cy50cmlwbGUuZmluZEluZGV4KChrKSA9PiBlcVB1YmxpY0tleShrLCBjb3NpZ25lcikpO1xuICAgIGlmICh0aGlzLmNvc2lnbmVySW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb3NpZ25lciBub3QgcGFydCBvZiB3YWxsZXRLZXlzYCk7XG4gICAgfVxuXG4gICAgdGhpcy53YWxsZXRLZXlzID0gd2FsbGV0S2V5cyBhcyBUO1xuXG4gICAgaWYgKGVxUHVibGljS2V5KHNpZ25lciwgY29zaWduZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBtdXN0IG5vdCBlcXVhbCBjb3NpZ25lcmApO1xuICAgIH1cbiAgICBpZiAoc2lnbmVyLmlzTmV1dGVyZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbXVzdCBoYXZlIHByaXZhdGUga2V5YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHJldHVybiBXYWxsZXRVbnNwZW50U2lnbmVyIHRoYXQgY29udGFpbnMga2V5cyBmb3IgZ2VuZXJhdGluZyBvdXRwdXQgc2NyaXB0cyBhbmQgc2lnbmF0dXJlcy5cbiAgICovXG4gIGRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW46IG51bWJlciwgaW5kZXg6IG51bWJlcik6IFdhbGxldFVuc3BlbnRTaWduZXI8RGVyaXZlZFdhbGxldEtleXM+IHtcbiAgICBpZiAodGhpcy53YWxsZXRLZXlzIGluc3RhbmNlb2YgRGVyaXZlZFdhbGxldEtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IGRlcml2ZSBhZ2FpbiBmcm9tIERlcml2ZWRXYWxsZXRLZXlzYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2FsbGV0S2V5cyBpbnN0YW5jZW9mIFJvb3RXYWxsZXRLZXlzKSB7XG4gICAgICByZXR1cm4gbmV3IFdhbGxldFVuc3BlbnRTaWduZXIoXG4gICAgICAgIHRoaXMud2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCksXG4gICAgICAgIHRoaXMuc2lnbmVyLmRlcml2ZVBhdGgodGhpcy53YWxsZXRLZXlzLmdldERlcml2YXRpb25QYXRoKHRoaXMuc2lnbmVyLCBjaGFpbiwgaW5kZXgpKSxcbiAgICAgICAgdGhpcy5jb3NpZ25lci5kZXJpdmVQYXRoKHRoaXMud2FsbGV0S2V5cy5nZXREZXJpdmF0aW9uUGF0aCh0aGlzLmNvc2lnbmVyLCBjaGFpbiwgaW5kZXgpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhdGVgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
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);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -17,4 +21,4 @@ __exportStar(require("./WalletOutput"), exports);
|
|
|
17
21
|
__exportStar(require("./WalletUnspentSigner"), exports);
|
|
18
22
|
__exportStar(require("./WalletScripts"), exports);
|
|
19
23
|
__exportStar(require("./WalletKeys"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIseUNBQXVCO0FBQ3ZCLDRDQUEwQjtBQUMxQixpREFBK0I7QUFDL0Isd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoYWlucyc7XG5leHBvcnQgKiBmcm9tICcuL1BzYnQnO1xuZXhwb3J0ICogZnJvbSAnLi9VbnNwZW50JztcbmV4cG9ydCAqIGZyb20gJy4vV2FsbGV0T3V0cHV0JztcbmV4cG9ydCAqIGZyb20gJy4vV2FsbGV0VW5zcGVudFNpZ25lcic7XG5leHBvcnQgKiBmcm9tICcuL1dhbGxldFNjcmlwdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9XYWxsZXRLZXlzJztcbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contains helper methods for determining if a transaction output belongs to a given BitGo wallet
|
|
3
|
+
*/
|
|
4
|
+
import { Triple } from '../../types';
|
|
5
|
+
import { UtxoPsbt } from '../../UtxoPsbt';
|
|
6
|
+
import { BIP32Interface } from 'bip32';
|
|
7
|
+
import { PsbtOutput } from 'bip174/src/lib/interfaces';
|
|
8
|
+
/**
|
|
9
|
+
* Derives the appropriate BIP32 key pair for a given output.
|
|
10
|
+
* It uses either tapBip32Derivation or bip32Derivation paths from the output.
|
|
11
|
+
* @param bip32 - The BIP32Interface object to derive from.
|
|
12
|
+
* @param output - The specific PSBT output to derive for.
|
|
13
|
+
* @returns The derived BIP32 key pair if master fingerprint matches, or undefined.
|
|
14
|
+
*/
|
|
15
|
+
export declare function deriveKeyPairForOutput(bip32: BIP32Interface, output: PsbtOutput): BIP32Interface | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Determines if a specified output in a PSBT is an output of the wallet represented by the given root nodes.
|
|
18
|
+
* @param psbt - The PSBT to check.
|
|
19
|
+
* @param outputIndex - The index of the output to check.
|
|
20
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
21
|
+
* @returns A boolean indicating if the output belongs to the wallet.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isWalletOutput(psbt: UtxoPsbt, outputIndex: number, rootWalletNodes: Triple<BIP32Interface>): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Finds indices of all outputs in a PSBT that belong to the wallet represented by the given root nodes.
|
|
26
|
+
* @param psbt - The PSBT to search through.
|
|
27
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
28
|
+
* @returns An array of indices corresponding to wallet outputs.
|
|
29
|
+
*/
|
|
30
|
+
export declare function findWalletOutputIndices(psbt: UtxoPsbt, rootWalletNodes: Triple<BIP32Interface>): number[];
|
|
31
|
+
/**
|
|
32
|
+
* Calculates the total amount of all wallet outputs in a PSBT for the wallet represented by the given root nodes.
|
|
33
|
+
* @param psbt - The PSBT to calculate for.
|
|
34
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
35
|
+
* @returns The total amount of wallet outputs.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getTotalAmountOfWalletOutputs(psbt: UtxoPsbt, rootWalletNodes: Triple<BIP32Interface>): bigint;
|
|
38
|
+
/**
|
|
39
|
+
* Finds indices of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
|
|
40
|
+
* @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
|
|
41
|
+
* @returns An array of indices of internal outputs.
|
|
42
|
+
*/
|
|
43
|
+
export declare function findInternalOutputIndices(psbt: UtxoPsbt): number[];
|
|
44
|
+
/**
|
|
45
|
+
* Calculates the total amount of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
|
|
46
|
+
* @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
|
|
47
|
+
* @returns The total amount of internal outputs.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getTotalAmountOfInternalOutputs(psbt: UtxoPsbt): bigint;
|
|
50
|
+
//# sourceMappingURL=PsbtOutputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PsbtOutputs.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/wallet/psbt/PsbtOutputs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAiB,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAM5G;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,OAAO,CAapH;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,EAAE,CAEzG;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAI7G;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAGtE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Contains helper methods for determining if a transaction output belongs to a given BitGo wallet
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getTotalAmountOfInternalOutputs = exports.findInternalOutputIndices = exports.getTotalAmountOfWalletOutputs = exports.findWalletOutputIndices = exports.isWalletOutput = exports.deriveKeyPairForOutput = void 0;
|
|
7
|
+
const types_1 = require("../../types");
|
|
8
|
+
const outputScripts_1 = require("../../outputScripts");
|
|
9
|
+
const UtxoPsbt_1 = require("../../UtxoPsbt");
|
|
10
|
+
const utils_1 = require("bip174/src/lib/utils");
|
|
11
|
+
const RootNodes_1 = require("./RootNodes");
|
|
12
|
+
/**
|
|
13
|
+
* Derives the appropriate BIP32 key pair for a given output.
|
|
14
|
+
* It uses either tapBip32Derivation or bip32Derivation paths from the output.
|
|
15
|
+
* @param bip32 - The BIP32Interface object to derive from.
|
|
16
|
+
* @param output - The specific PSBT output to derive for.
|
|
17
|
+
* @returns The derived BIP32 key pair if master fingerprint matches, or undefined.
|
|
18
|
+
*/
|
|
19
|
+
function deriveKeyPairForOutput(bip32, output) {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
return ((_a = output.tapBip32Derivation) === null || _a === void 0 ? void 0 : _a.length)
|
|
22
|
+
? UtxoPsbt_1.UtxoPsbt.deriveKeyPair(bip32, output.tapBip32Derivation, { ignoreY: true })
|
|
23
|
+
: ((_b = output.bip32Derivation) === null || _b === void 0 ? void 0 : _b.length)
|
|
24
|
+
? UtxoPsbt_1.UtxoPsbt.deriveKeyPair(bip32, output.bip32Derivation, { ignoreY: false })
|
|
25
|
+
: undefined;
|
|
26
|
+
}
|
|
27
|
+
exports.deriveKeyPairForOutput = deriveKeyPairForOutput;
|
|
28
|
+
/**
|
|
29
|
+
* Determines if a specified output in a PSBT is an output of the wallet represented by the given root nodes.
|
|
30
|
+
* @param psbt - The PSBT to check.
|
|
31
|
+
* @param outputIndex - The index of the output to check.
|
|
32
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
33
|
+
* @returns A boolean indicating if the output belongs to the wallet.
|
|
34
|
+
*/
|
|
35
|
+
function isWalletOutput(psbt, outputIndex, rootWalletNodes) {
|
|
36
|
+
const output = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
|
|
37
|
+
const pubKeys = rootWalletNodes.map((rootNode) => { var _a; return (_a = deriveKeyPairForOutput(rootNode, output)) === null || _a === void 0 ? void 0 : _a.publicKey; });
|
|
38
|
+
if (!(0, types_1.isBufferArray)(pubKeys)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const outputScript = psbt.getOutputScript(outputIndex);
|
|
42
|
+
return outputScripts_1.scriptTypes2Of3.some((scriptType) => (0, outputScripts_1.createOutputScript2of3)(pubKeys, scriptType).scriptPubKey.equals(outputScript));
|
|
43
|
+
}
|
|
44
|
+
exports.isWalletOutput = isWalletOutput;
|
|
45
|
+
/**
|
|
46
|
+
* Finds indices of all outputs in a PSBT that belong to the wallet represented by the given root nodes.
|
|
47
|
+
* @param psbt - The PSBT to search through.
|
|
48
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
49
|
+
* @returns An array of indices corresponding to wallet outputs.
|
|
50
|
+
*/
|
|
51
|
+
function findWalletOutputIndices(psbt, rootWalletNodes) {
|
|
52
|
+
return psbt.data.outputs.flatMap((_, i) => (isWalletOutput(psbt, i, rootWalletNodes) ? [i] : []));
|
|
53
|
+
}
|
|
54
|
+
exports.findWalletOutputIndices = findWalletOutputIndices;
|
|
55
|
+
/**
|
|
56
|
+
* Calculates the total amount of all wallet outputs in a PSBT for the wallet represented by the given root nodes.
|
|
57
|
+
* @param psbt - The PSBT to calculate for.
|
|
58
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
59
|
+
* @returns The total amount of wallet outputs.
|
|
60
|
+
*/
|
|
61
|
+
function getTotalAmountOfWalletOutputs(psbt, rootWalletNodes) {
|
|
62
|
+
const indices = findWalletOutputIndices(psbt, rootWalletNodes);
|
|
63
|
+
const txOutputs = psbt.txOutputs;
|
|
64
|
+
return indices.reduce((sum, i) => sum + txOutputs[i].value, BigInt(0));
|
|
65
|
+
}
|
|
66
|
+
exports.getTotalAmountOfWalletOutputs = getTotalAmountOfWalletOutputs;
|
|
67
|
+
/**
|
|
68
|
+
* Finds indices of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
|
|
69
|
+
* @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
|
|
70
|
+
* @returns An array of indices of internal outputs.
|
|
71
|
+
*/
|
|
72
|
+
function findInternalOutputIndices(psbt) {
|
|
73
|
+
const rootNodes = (0, RootNodes_1.getSortedRootNodes)(psbt);
|
|
74
|
+
return findWalletOutputIndices(psbt, rootNodes);
|
|
75
|
+
}
|
|
76
|
+
exports.findInternalOutputIndices = findInternalOutputIndices;
|
|
77
|
+
/**
|
|
78
|
+
* Calculates the total amount of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
|
|
79
|
+
* @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
|
|
80
|
+
* @returns The total amount of internal outputs.
|
|
81
|
+
*/
|
|
82
|
+
function getTotalAmountOfInternalOutputs(psbt) {
|
|
83
|
+
const rootNodes = (0, RootNodes_1.getSortedRootNodes)(psbt);
|
|
84
|
+
return getTotalAmountOfWalletOutputs(psbt, rootNodes);
|
|
85
|
+
}
|
|
86
|
+
exports.getTotalAmountOfInternalOutputs = getTotalAmountOfInternalOutputs;
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHNidE91dHB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L3BzYnQvUHNidE91dHB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCx1Q0FBb0Q7QUFDcEQsdURBQThFO0FBQzlFLDZDQUEwQztBQUUxQyxnREFBc0Q7QUFFdEQsMkNBQWlEO0FBRWpEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLEtBQXFCLEVBQUUsTUFBa0I7O0lBQzlFLE9BQU8sQ0FBQSxNQUFBLE1BQU0sQ0FBQyxrQkFBa0IsMENBQUUsTUFBTTtRQUN0QyxDQUFDLENBQUMsbUJBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxlQUFlLDBDQUFFLE1BQU07WUFDaEMsQ0FBQyxDQUFDLG1CQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzNFLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEIsQ0FBQztBQU5ELHdEQU1DO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLElBQWMsRUFBRSxXQUFtQixFQUFFLGVBQXVDO0lBQ3pHLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQWMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUU5RCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUEsc0JBQXNCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQywwQ0FBRSxTQUFTLENBQUEsRUFBQSxDQUFDLENBQUM7SUFFdkcsSUFBSSxDQUFDLElBQUEscUJBQWEsRUFBQyxPQUFPLENBQUMsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxPQUFPLCtCQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDekMsSUFBQSxzQ0FBc0IsRUFBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FDOUUsQ0FBQztBQUNKLENBQUM7QUFiRCx3Q0FhQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsSUFBYyxFQUFFLGVBQXVDO0lBQzdGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDO0FBRkQsMERBRUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLElBQWMsRUFBRSxlQUF1QztJQUNuRyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBSkQsc0VBSUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsSUFBYztJQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFBLDhCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFIRCw4REFHQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQiwrQkFBK0IsQ0FBQyxJQUFjO0lBQzVELE1BQU0sU0FBUyxHQUFHLElBQUEsOEJBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsT0FBTyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUhELDBFQUdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXIgbWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcgaWYgYSB0cmFuc2FjdGlvbiBvdXRwdXQgYmVsb25ncyB0byBhIGdpdmVuIEJpdEdvIHdhbGxldFxuICovXG5cbmltcG9ydCB7IGlzQnVmZmVyQXJyYXksIFRyaXBsZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIHNjcmlwdFR5cGVzMk9mMyB9IGZyb20gJy4uLy4uL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHsgVXR4b1BzYnQgfSBmcm9tICcuLi8uLi9VdHhvUHNidCc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgUHNidE91dHB1dCB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U29ydGVkUm9vdE5vZGVzIH0gZnJvbSAnLi9Sb290Tm9kZXMnO1xuXG4vKipcbiAqIERlcml2ZXMgdGhlIGFwcHJvcHJpYXRlIEJJUDMyIGtleSBwYWlyIGZvciBhIGdpdmVuIG91dHB1dC5cbiAqIEl0IHVzZXMgZWl0aGVyIHRhcEJpcDMyRGVyaXZhdGlvbiBvciBiaXAzMkRlcml2YXRpb24gcGF0aHMgZnJvbSB0aGUgb3V0cHV0LlxuICogQHBhcmFtIGJpcDMyIC0gVGhlIEJJUDMySW50ZXJmYWNlIG9iamVjdCB0byBkZXJpdmUgZnJvbS5cbiAqIEBwYXJhbSBvdXRwdXQgLSBUaGUgc3BlY2lmaWMgUFNCVCBvdXRwdXQgdG8gZGVyaXZlIGZvci5cbiAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIEJJUDMyIGtleSBwYWlyIGlmIG1hc3RlciBmaW5nZXJwcmludCBtYXRjaGVzLCBvciB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVLZXlQYWlyRm9yT3V0cHV0KGJpcDMyOiBCSVAzMkludGVyZmFjZSwgb3V0cHV0OiBQc2J0T3V0cHV0KTogQklQMzJJbnRlcmZhY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbj8ubGVuZ3RoXG4gICAgPyBVdHhvUHNidC5kZXJpdmVLZXlQYWlyKGJpcDMyLCBvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uLCB7IGlnbm9yZVk6IHRydWUgfSlcbiAgICA6IG91dHB1dC5iaXAzMkRlcml2YXRpb24/Lmxlbmd0aFxuICAgID8gVXR4b1BzYnQuZGVyaXZlS2V5UGFpcihiaXAzMiwgb3V0cHV0LmJpcDMyRGVyaXZhdGlvbiwgeyBpZ25vcmVZOiBmYWxzZSB9KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBzcGVjaWZpZWQgb3V0cHV0IGluIGEgUFNCVCBpcyBhbiBvdXRwdXQgb2YgdGhlIHdhbGxldCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gcm9vdCBub2Rlcy5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gY2hlY2suXG4gKiBAcGFyYW0gb3V0cHV0SW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIG91dHB1dCB0byBjaGVjay5cbiAqIEBwYXJhbSByb290V2FsbGV0Tm9kZXMgLSBUaGUgcm9vdCBub2RlcyByZXByZXNlbnRpbmcgdGhlIHdhbGxldC5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBvdXRwdXQgYmVsb25ncyB0byB0aGUgd2FsbGV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXYWxsZXRPdXRwdXQocHNidDogVXR4b1BzYnQsIG91dHB1dEluZGV4OiBudW1iZXIsIHJvb3RXYWxsZXROb2RlczogVHJpcGxlPEJJUDMySW50ZXJmYWNlPik6IGJvb2xlYW4ge1xuICBjb25zdCBvdXRwdXQgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuXG4gIGNvbnN0IHB1YktleXMgPSByb290V2FsbGV0Tm9kZXMubWFwKChyb290Tm9kZSkgPT4gZGVyaXZlS2V5UGFpckZvck91dHB1dChyb290Tm9kZSwgb3V0cHV0KT8ucHVibGljS2V5KTtcblxuICBpZiAoIWlzQnVmZmVyQXJyYXkocHViS2V5cykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvdXRwdXRTY3JpcHQgPSBwc2J0LmdldE91dHB1dFNjcmlwdChvdXRwdXRJbmRleCk7XG4gIHJldHVybiBzY3JpcHRUeXBlczJPZjMuc29tZSgoc2NyaXB0VHlwZSkgPT5cbiAgICBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHB1YktleXMsIHNjcmlwdFR5cGUpLnNjcmlwdFB1YktleS5lcXVhbHMob3V0cHV0U2NyaXB0KVxuICApO1xufVxuXG4vKipcbiAqIEZpbmRzIGluZGljZXMgb2YgYWxsIG91dHB1dHMgaW4gYSBQU0JUIHRoYXQgYmVsb25nIHRvIHRoZSB3YWxsZXQgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHJvb3Qgbm9kZXMuXG4gKiBAcGFyYW0gcHNidCAtIFRoZSBQU0JUIHRvIHNlYXJjaCB0aHJvdWdoLlxuICogQHBhcmFtIHJvb3RXYWxsZXROb2RlcyAtIFRoZSByb290IG5vZGVzIHJlcHJlc2VudGluZyB0aGUgd2FsbGV0LlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcyBjb3JyZXNwb25kaW5nIHRvIHdhbGxldCBvdXRwdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFdhbGxldE91dHB1dEluZGljZXMocHNidDogVXR4b1BzYnQsIHJvb3RXYWxsZXROb2RlczogVHJpcGxlPEJJUDMySW50ZXJmYWNlPik6IG51bWJlcltdIHtcbiAgcmV0dXJuIHBzYnQuZGF0YS5vdXRwdXRzLmZsYXRNYXAoKF8sIGkpID0+IChpc1dhbGxldE91dHB1dChwc2J0LCBpLCByb290V2FsbGV0Tm9kZXMpID8gW2ldIDogW10pKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB0b3RhbCBhbW91bnQgb2YgYWxsIHdhbGxldCBvdXRwdXRzIGluIGEgUFNCVCBmb3IgdGhlIHdhbGxldCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gcm9vdCBub2Rlcy5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gY2FsY3VsYXRlIGZvci5cbiAqIEBwYXJhbSByb290V2FsbGV0Tm9kZXMgLSBUaGUgcm9vdCBub2RlcyByZXByZXNlbnRpbmcgdGhlIHdhbGxldC5cbiAqIEByZXR1cm5zIFRoZSB0b3RhbCBhbW91bnQgb2Ygd2FsbGV0IG91dHB1dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3RhbEFtb3VudE9mV2FsbGV0T3V0cHV0cyhwc2J0OiBVdHhvUHNidCwgcm9vdFdhbGxldE5vZGVzOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogYmlnaW50IHtcbiAgY29uc3QgaW5kaWNlcyA9IGZpbmRXYWxsZXRPdXRwdXRJbmRpY2VzKHBzYnQsIHJvb3RXYWxsZXROb2Rlcyk7XG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICByZXR1cm4gaW5kaWNlcy5yZWR1Y2UoKHN1bSwgaSkgPT4gc3VtICsgdHhPdXRwdXRzW2ldLnZhbHVlLCBCaWdJbnQoMCkpO1xufVxuXG4vKipcbiAqIEZpbmRzIGluZGljZXMgb2YgYWxsIGludGVybmFsIG91dHB1dHMgaW4gYSBQU0JULCBpZGVudGlmaWVkIGFzIG91dHB1dHMgYmVsb25naW5nIHRvIHRoZSB3YWxsZXQncyByb290IG5vZGVzIHdpdGhpbiB0aGUgUFNCVC5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgY29udGFpbmluZyB0aGUgd2FsbGV0J3Mgcm9vdCBub2RlcyBhcyBpbmRpY2F0ZWQgYnkgZ2xvYmFsIFhwdWJzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcyBvZiBpbnRlcm5hbCBvdXRwdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEludGVybmFsT3V0cHV0SW5kaWNlcyhwc2J0OiBVdHhvUHNidCk6IG51bWJlcltdIHtcbiAgY29uc3Qgcm9vdE5vZGVzID0gZ2V0U29ydGVkUm9vdE5vZGVzKHBzYnQpO1xuICByZXR1cm4gZmluZFdhbGxldE91dHB1dEluZGljZXMocHNidCwgcm9vdE5vZGVzKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB0b3RhbCBhbW91bnQgb2YgYWxsIGludGVybmFsIG91dHB1dHMgaW4gYSBQU0JULCBpZGVudGlmaWVkIGFzIG91dHB1dHMgYmVsb25naW5nIHRvIHRoZSB3YWxsZXQncyByb290IG5vZGVzIHdpdGhpbiB0aGUgUFNCVC5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgY29udGFpbmluZyB0aGUgd2FsbGV0J3Mgcm9vdCBub2RlcyBhcyBpbmRpY2F0ZWQgYnkgZ2xvYmFsIFhwdWJzLlxuICogQHJldHVybnMgVGhlIHRvdGFsIGFtb3VudCBvZiBpbnRlcm5hbCBvdXRwdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG90YWxBbW91bnRPZkludGVybmFsT3V0cHV0cyhwc2J0OiBVdHhvUHNidCk6IGJpZ2ludCB7XG4gIGNvbnN0IHJvb3ROb2RlcyA9IGdldFNvcnRlZFJvb3ROb2Rlcyhwc2J0KTtcbiAgcmV0dXJuIGdldFRvdGFsQW1vdW50T2ZXYWxsZXRPdXRwdXRzKHBzYnQsIHJvb3ROb2Rlcyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contains helper methods for getting and sorting root nodes from a PSBT.
|
|
3
|
+
*/
|
|
4
|
+
import { UtxoPsbt } from '../../UtxoPsbt';
|
|
5
|
+
import { Triple } from '../../types';
|
|
6
|
+
import { BIP32Interface } from 'bip32';
|
|
7
|
+
/**
|
|
8
|
+
* Retrieves unsorted root BIP32Interface nodes from a PSBT if available.
|
|
9
|
+
* @param psbt - The PSBT from which to extract the global Xpubs.
|
|
10
|
+
* @returns An array of BIP32Interface objects or undefined if not available.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getUnsortedRootNodes(psbt: UtxoPsbt): Triple<BIP32Interface> | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Sorts given root nodes based on the script compatibility with the PSBT's multi-sig inputs.
|
|
15
|
+
* @param psbt - The PSBT containing multi-sig inputs.
|
|
16
|
+
* @param rootNodes - Array of root nodes to sort.
|
|
17
|
+
* @returns An array of BIP32Interface objects in the order that matches the multi-sig script.
|
|
18
|
+
*/
|
|
19
|
+
export declare function sortRootNodes(psbt: UtxoPsbt, rootNodes: Triple<BIP32Interface>): Triple<BIP32Interface>;
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves sorted root nodes from a PSBT, ensuring they are ordered according to script compatibility.
|
|
22
|
+
* @param psbt - The PSBT to extract and sort root nodes from.
|
|
23
|
+
* @returns An array of sorted BIP32Interface root nodes.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getSortedRootNodes(psbt: UtxoPsbt): Triple<BIP32Interface>;
|
|
26
|
+
//# sourceMappingURL=RootNodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RootNodes.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/wallet/psbt/RootNodes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAY,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAgB,cAAc,EAAE,MAAM,OAAO,CAAC;AASrD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,SAAS,CAMvF;AAkGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAKvG;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAIzE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Contains helper methods for getting and sorting root nodes from a PSBT.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getSortedRootNodes = exports.sortRootNodes = exports.getUnsortedRootNodes = void 0;
|
|
7
|
+
const assert = require("assert");
|
|
8
|
+
const bs58check = require("bs58check");
|
|
9
|
+
const types_1 = require("../../types");
|
|
10
|
+
const bip32_1 = require("bip32");
|
|
11
|
+
const noble_ecc_1 = require("../../../noble_ecc");
|
|
12
|
+
const outputScripts_1 = require("../../outputScripts");
|
|
13
|
+
const transaction_1 = require("../../transaction");
|
|
14
|
+
const Psbt_1 = require("../Psbt");
|
|
15
|
+
/**
|
|
16
|
+
* Retrieves unsorted root BIP32Interface nodes from a PSBT if available.
|
|
17
|
+
* @param psbt - The PSBT from which to extract the global Xpubs.
|
|
18
|
+
* @returns An array of BIP32Interface objects or undefined if not available.
|
|
19
|
+
*/
|
|
20
|
+
function getUnsortedRootNodes(psbt) {
|
|
21
|
+
var _a;
|
|
22
|
+
const bip32s = (_a = psbt.data.globalMap.globalXpub) === null || _a === void 0 ? void 0 : _a.map((xpub) => (0, bip32_1.BIP32Factory)(noble_ecc_1.ecc).fromBase58(bs58check.encode(xpub.extendedPubkey)));
|
|
23
|
+
assert(!bip32s || (0, types_1.isTriple)(bip32s), `Invalid globalXpubs in PSBT. Expected 3 or none. Got ${bip32s === null || bip32s === void 0 ? void 0 : bip32s.length}`);
|
|
24
|
+
return bip32s;
|
|
25
|
+
}
|
|
26
|
+
exports.getUnsortedRootNodes = getUnsortedRootNodes;
|
|
27
|
+
/**
|
|
28
|
+
* Determines if the given public keys' permutation matches a specified script.
|
|
29
|
+
* @param params - Object containing public keys, permutation, script public key, script type, and network.
|
|
30
|
+
* @returns A boolean indicating if the permutation matches the script.
|
|
31
|
+
*/
|
|
32
|
+
function matchesScript({ pubKeys, perm, scriptPubKey, parsedScriptType, network, }) {
|
|
33
|
+
const pubKeysPerm = [pubKeys[perm[0]], pubKeys[perm[1]], pubKeys[perm[2]]];
|
|
34
|
+
const scriptTypes = (0, Psbt_1.toScriptType2Of3s)(parsedScriptType);
|
|
35
|
+
return scriptTypes.some((scriptType) => (0, outputScripts_1.createOutputScript2of3)(pubKeysPerm, scriptType, network).scriptPubKey.equals(scriptPubKey));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Finds the correct order of public keys to match a given script.
|
|
39
|
+
* @param pubKeys - Array of public keys involved in the script.
|
|
40
|
+
* @param scriptPubKey - The script public key to match against.
|
|
41
|
+
* @param parsedScriptType - The parsed script type.
|
|
42
|
+
* @param network - Bitcoin network.
|
|
43
|
+
* @returns The order of public keys that match the script.
|
|
44
|
+
*/
|
|
45
|
+
function findSortOrderOfPubKeys(pubKeys, scriptPubKey, parsedScriptType, network) {
|
|
46
|
+
const permutations = [
|
|
47
|
+
[0, 1, 2],
|
|
48
|
+
[0, 2, 1],
|
|
49
|
+
[1, 0, 2],
|
|
50
|
+
[1, 2, 0],
|
|
51
|
+
[2, 0, 1],
|
|
52
|
+
[2, 1, 0],
|
|
53
|
+
];
|
|
54
|
+
const order = permutations.find((perm) => matchesScript({ pubKeys, perm, scriptPubKey, parsedScriptType, network }));
|
|
55
|
+
assert(order, 'Could not find sort order of multi sig public keys');
|
|
56
|
+
return order;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Extracts multi-sig input data, including script type, script public key, and derivation path, from the first relevant PSBT input.
|
|
60
|
+
* @param psbt - The PSBT to extract data from.
|
|
61
|
+
* @returns An object containing the parsed script type, script public key, and derivation path.
|
|
62
|
+
*/
|
|
63
|
+
function getFirstMultiSigInputData(psbt) {
|
|
64
|
+
function getScriptPubKey(input, prevOutIndex) {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
const scriptPubKey = (_b = (_a = input.witnessUtxo) === null || _a === void 0 ? void 0 : _a.script) !== null && _b !== void 0 ? _b : (input.nonWitnessUtxo
|
|
67
|
+
? (0, transaction_1.createTransactionFromBuffer)(input.nonWitnessUtxo, psbt.network, { amountType: 'bigint' }).outs[prevOutIndex]
|
|
68
|
+
.script
|
|
69
|
+
: undefined);
|
|
70
|
+
assert(scriptPubKey, 'Input scriptPubKey can not be found');
|
|
71
|
+
return scriptPubKey;
|
|
72
|
+
}
|
|
73
|
+
function getDerivationPath(input) {
|
|
74
|
+
var _a;
|
|
75
|
+
const bip32Dv = (_a = input === null || input === void 0 ? void 0 : input.bip32Derivation) !== null && _a !== void 0 ? _a : input === null || input === void 0 ? void 0 : input.tapBip32Derivation;
|
|
76
|
+
assert(bip32Dv === null || bip32Dv === void 0 ? void 0 : bip32Dv.length, 'Input Bip32Derivation can not be found');
|
|
77
|
+
return bip32Dv[0].path;
|
|
78
|
+
}
|
|
79
|
+
const txInputs = psbt.txInputs;
|
|
80
|
+
for (let i = 0; i < psbt.data.inputs.length; i++) {
|
|
81
|
+
const input = psbt.data.inputs[i];
|
|
82
|
+
const parsedScriptType = (0, Psbt_1.getPsbtInputScriptType)(input);
|
|
83
|
+
if (parsedScriptType === 'p2shP2pk') {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const scriptPubKey = getScriptPubKey(input, txInputs[i].index);
|
|
87
|
+
const derivationPath = getDerivationPath(input);
|
|
88
|
+
return { parsedScriptType, scriptPubKey, derivationPath };
|
|
89
|
+
}
|
|
90
|
+
throw new Error('No multi sig input found');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sorts given root nodes based on the script compatibility with the PSBT's multi-sig inputs.
|
|
94
|
+
* @param psbt - The PSBT containing multi-sig inputs.
|
|
95
|
+
* @param rootNodes - Array of root nodes to sort.
|
|
96
|
+
* @returns An array of BIP32Interface objects in the order that matches the multi-sig script.
|
|
97
|
+
*/
|
|
98
|
+
function sortRootNodes(psbt, rootNodes) {
|
|
99
|
+
const { parsedScriptType, scriptPubKey, derivationPath } = getFirstMultiSigInputData(psbt);
|
|
100
|
+
const pubKeys = rootNodes.map((rootNode) => rootNode.derivePath(derivationPath).publicKey);
|
|
101
|
+
const order = findSortOrderOfPubKeys(pubKeys, scriptPubKey, parsedScriptType, psbt.network);
|
|
102
|
+
return order.map((i) => rootNodes[i]);
|
|
103
|
+
}
|
|
104
|
+
exports.sortRootNodes = sortRootNodes;
|
|
105
|
+
/**
|
|
106
|
+
* Retrieves sorted root nodes from a PSBT, ensuring they are ordered according to script compatibility.
|
|
107
|
+
* @param psbt - The PSBT to extract and sort root nodes from.
|
|
108
|
+
* @returns An array of sorted BIP32Interface root nodes.
|
|
109
|
+
*/
|
|
110
|
+
function getSortedRootNodes(psbt) {
|
|
111
|
+
const unsortedRootNodes = getUnsortedRootNodes(psbt);
|
|
112
|
+
assert(unsortedRootNodes, 'Could not find root nodes in PSBT');
|
|
113
|
+
return sortRootNodes(psbt, unsortedRootNodes);
|
|
114
|
+
}
|
|
115
|
+
exports.getSortedRootNodes = getSortedRootNodes;
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm9vdE5vZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9wc2J0L1Jvb3ROb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUVILGlDQUFpQztBQUNqQyx1Q0FBdUM7QUFHdkMsdUNBQStDO0FBQy9DLGlDQUFxRDtBQUNyRCxrREFBbUQ7QUFHbkQsdURBQTZEO0FBRTdELG1EQUFnRTtBQUNoRSxrQ0FBb0U7QUFFcEU7Ozs7R0FJRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLElBQWM7O0lBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSwwQ0FBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUMxRCxJQUFBLG9CQUFZLEVBQUMsZUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDRixNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBQSxnQkFBUSxFQUFDLE1BQU0sQ0FBQyxFQUFFLHdEQUF3RCxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBTkQsb0RBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsRUFDckIsT0FBTyxFQUNQLElBQUksRUFDSixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLE9BQU8sR0FPUjtJQUNDLE1BQU0sV0FBVyxHQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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KlxuICogQ29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIGdldHRpbmcgYW5kIHNvcnRpbmcgcm9vdCBub2RlcyBmcm9tIGEgUFNCVC5cbiAqL1xuXG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIGJzNThjaGVjayBmcm9tICdiczU4Y2hlY2snO1xuXG5pbXBvcnQgeyBVdHhvUHNidCB9IGZyb20gJy4uLy4uL1V0eG9Qc2J0JztcbmltcG9ydCB7IGlzVHJpcGxlLCBUcmlwbGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCSVAzMkZhY3RvcnksIEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnYmlwMzInO1xuaW1wb3J0IHsgZWNjIGFzIGVjY0xpYiB9IGZyb20gJy4uLy4uLy4uL25vYmxlX2VjYyc7XG5pbXBvcnQgeyBQYXJzZWRTY3JpcHRUeXBlMk9mMyB9IGZyb20gJy4uLy4uL3BhcnNlSW5wdXQnO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJy4uLy4uLy4uL25ldHdvcmtzJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMgfSBmcm9tICcuLi8uLi9vdXRwdXRTY3JpcHRzJztcbmltcG9ydCB7IFBzYnRJbnB1dCB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyIH0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgZ2V0UHNidElucHV0U2NyaXB0VHlwZSwgdG9TY3JpcHRUeXBlMk9mM3MgfSBmcm9tICcuLi9Qc2J0JztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdW5zb3J0ZWQgcm9vdCBCSVAzMkludGVyZmFjZSBub2RlcyBmcm9tIGEgUFNCVCBpZiBhdmFpbGFibGUuXG4gKiBAcGFyYW0gcHNidCAtIFRoZSBQU0JUIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgZ2xvYmFsIFhwdWJzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgQklQMzJJbnRlcmZhY2Ugb2JqZWN0cyBvciB1bmRlZmluZWQgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVuc29ydGVkUm9vdE5vZGVzKHBzYnQ6IFV0eG9Qc2J0KTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGJpcDMycyA9IHBzYnQuZGF0YS5nbG9iYWxNYXAuZ2xvYmFsWHB1Yj8ubWFwKCh4cHViKSA9PlxuICAgIEJJUDMyRmFjdG9yeShlY2NMaWIpLmZyb21CYXNlNTgoYnM1OGNoZWNrLmVuY29kZSh4cHViLmV4dGVuZGVkUHVia2V5KSlcbiAgKTtcbiAgYXNzZXJ0KCFiaXAzMnMgfHwgaXNUcmlwbGUoYmlwMzJzKSwgYEludmFsaWQgZ2xvYmFsWHB1YnMgaW4gUFNCVC4gRXhwZWN0ZWQgMyBvciBub25lLiBHb3QgJHtiaXAzMnM/Lmxlbmd0aH1gKTtcbiAgcmV0dXJuIGJpcDMycztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBwdWJsaWMga2V5cycgcGVybXV0YXRpb24gbWF0Y2hlcyBhIHNwZWNpZmllZCBzY3JpcHQuXG4gKiBAcGFyYW0gcGFyYW1zIC0gT2JqZWN0IGNvbnRhaW5pbmcgcHVibGljIGtleXMsIHBlcm11dGF0aW9uLCBzY3JpcHQgcHVibGljIGtleSwgc2NyaXB0IHR5cGUsIGFuZCBuZXR3b3JrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHBlcm11dGF0aW9uIG1hdGNoZXMgdGhlIHNjcmlwdC5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1NjcmlwdCh7XG4gIHB1YktleXMsXG4gIHBlcm0sXG4gIHNjcmlwdFB1YktleSxcbiAgcGFyc2VkU2NyaXB0VHlwZSxcbiAgbmV0d29yayxcbn06IHtcbiAgcHViS2V5czogQnVmZmVyW107XG4gIHBlcm06IFRyaXBsZTxudW1iZXI+O1xuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlcjtcbiAgcGFyc2VkU2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjM7XG4gIG5ldHdvcms6IE5ldHdvcms7XG59KTogYm9vbGVhbiB7XG4gIGNvbnN0IHB1YktleXNQZXJtOiBUcmlwbGU8QnVmZmVyPiA9IFtwdWJLZXlzW3Blcm1bMF1dLCBwdWJLZXlzW3Blcm1bMV1dLCBwdWJLZXlzW3Blcm1bMl1dXTtcbiAgY29uc3Qgc2NyaXB0VHlwZXMgPSB0b1NjcmlwdFR5cGUyT2YzcyhwYXJzZWRTY3JpcHRUeXBlKTtcbiAgcmV0dXJuIHNjcmlwdFR5cGVzLnNvbWUoKHNjcmlwdFR5cGUpID0+XG4gICAgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhwdWJLZXlzUGVybSwgc2NyaXB0VHlwZSwgbmV0d29yaykuc2NyaXB0UHViS2V5LmVxdWFscyhzY3JpcHRQdWJLZXkpXG4gICk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGNvcnJlY3Qgb3JkZXIgb2YgcHVibGljIGtleXMgdG8gbWF0Y2ggYSBnaXZlbiBzY3JpcHQuXG4gKiBAcGFyYW0gcHViS2V5cyAtIEFycmF5IG9mIHB1YmxpYyBrZXlzIGludm9sdmVkIGluIHRoZSBzY3JpcHQuXG4gKiBAcGFyYW0gc2NyaXB0UHViS2V5IC0gVGhlIHNjcmlwdCBwdWJsaWMga2V5IHRvIG1hdGNoIGFnYWluc3QuXG4gKiBAcGFyYW0gcGFyc2VkU2NyaXB0VHlwZSAtIFRoZSBwYXJzZWQgc2NyaXB0IHR5cGUuXG4gKiBAcGFyYW0gbmV0d29yayAtIEJpdGNvaW4gbmV0d29yay5cbiAqIEByZXR1cm5zIFRoZSBvcmRlciBvZiBwdWJsaWMga2V5cyB0aGF0IG1hdGNoIHRoZSBzY3JpcHQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTb3J0T3JkZXJPZlB1YktleXMoXG4gIHB1YktleXM6IFRyaXBsZTxCdWZmZXI+LFxuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlcixcbiAgcGFyc2VkU2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjMsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IFRyaXBsZTxudW1iZXI+IHtcbiAgY29uc3QgcGVybXV0YXRpb25zOiBBcnJheTxUcmlwbGU8bnVtYmVyPj4gPSBbXG4gICAgWzAsIDEsIDJdLFxuICAgIFswLCAyLCAxXSxcbiAgICBbMSwgMCwgMl0sXG4gICAgWzEsIDIsIDBdLFxuICAgIFsyLCAwLCAxXSxcbiAgICBbMiwgMSwgMF0sXG4gIF07XG5cbiAgY29uc3Qgb3JkZXIgPSBwZXJtdXRhdGlvbnMuZmluZCgocGVybSkgPT4gbWF0Y2hlc1NjcmlwdCh7IHB1YktleXMsIHBlcm0sIHNjcmlwdFB1YktleSwgcGFyc2VkU2NyaXB0VHlwZSwgbmV0d29yayB9KSk7XG4gIGFzc2VydChvcmRlciwgJ0NvdWxkIG5vdCBmaW5kIHNvcnQgb3JkZXIgb2YgbXVsdGkgc2lnIHB1YmxpYyBrZXlzJyk7XG4gIHJldHVybiBvcmRlcjtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBtdWx0aS1zaWcgaW5wdXQgZGF0YSwgaW5jbHVkaW5nIHNjcmlwdCB0eXBlLCBzY3JpcHQgcHVibGljIGtleSwgYW5kIGRlcml2YXRpb24gcGF0aCwgZnJvbSB0aGUgZmlyc3QgcmVsZXZhbnQgUFNCVCBpbnB1dC5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gZXh0cmFjdCBkYXRhIGZyb20uXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcGFyc2VkIHNjcmlwdCB0eXBlLCBzY3JpcHQgcHVibGljIGtleSwgYW5kIGRlcml2YXRpb24gcGF0aC5cbiAqL1xuZnVuY3Rpb24gZ2V0Rmlyc3RNdWx0aVNpZ0lucHV0RGF0YShwc2J0OiBVdHhvUHNidCk6IHtcbiAgcGFyc2VkU2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjM7XG4gIHNjcmlwdFB1YktleTogQnVmZmVyO1xuICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nO1xufSB7XG4gIGZ1bmN0aW9uIGdldFNjcmlwdFB1YktleShpbnB1dDogUHNidElucHV0LCBwcmV2T3V0SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHNjcmlwdFB1YktleSA9XG4gICAgICBpbnB1dC53aXRuZXNzVXR4bz8uc2NyaXB0ID8/XG4gICAgICAoaW5wdXQubm9uV2l0bmVzc1V0eG9cbiAgICAgICAgPyBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoaW5wdXQubm9uV2l0bmVzc1V0eG8sIHBzYnQubmV0d29yaywgeyBhbW91bnRUeXBlOiAnYmlnaW50JyB9KS5vdXRzW3ByZXZPdXRJbmRleF1cbiAgICAgICAgICAgIC5zY3JpcHRcbiAgICAgICAgOiB1bmRlZmluZWQpO1xuICAgIGFzc2VydChzY3JpcHRQdWJLZXksICdJbnB1dCBzY3JpcHRQdWJLZXkgY2FuIG5vdCBiZSBmb3VuZCcpO1xuICAgIHJldHVybiBzY3JpcHRQdWJLZXk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREZXJpdmF0aW9uUGF0aChpbnB1dDogUHNidElucHV0KSB7XG4gICAgY29uc3QgYmlwMzJEdiA9IGlucHV0Py5iaXAzMkRlcml2YXRpb24gPz8gaW5wdXQ/LnRhcEJpcDMyRGVyaXZhdGlvbjtcbiAgICBhc3NlcnQoYmlwMzJEdj8ubGVuZ3RoLCAnSW5wdXQgQmlwMzJEZXJpdmF0aW9uIGNhbiBub3QgYmUgZm91bmQnKTtcbiAgICByZXR1cm4gYmlwMzJEdlswXS5wYXRoO1xuICB9XG5cbiAgY29uc3QgdHhJbnB1dHMgPSBwc2J0LnR4SW5wdXRzO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLmlucHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGlucHV0ID0gcHNidC5kYXRhLmlucHV0c1tpXTtcbiAgICBjb25zdCBwYXJzZWRTY3JpcHRUeXBlID0gZ2V0UHNidElucHV0U2NyaXB0VHlwZShpbnB1dCk7XG4gICAgaWYgKHBhcnNlZFNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzY3JpcHRQdWJLZXkgPSBnZXRTY3JpcHRQdWJLZXkoaW5wdXQsIHR4SW5wdXRzW2ldLmluZGV4KTtcbiAgICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9IGdldERlcml2YXRpb25QYXRoKGlucHV0KTtcbiAgICByZXR1cm4geyBwYXJzZWRTY3JpcHRUeXBlLCBzY3JpcHRQdWJLZXksIGRlcml2YXRpb25QYXRoIH07XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIG11bHRpIHNpZyBpbnB1dCBmb3VuZCcpO1xufVxuXG4vKipcbiAqIFNvcnRzIGdpdmVuIHJvb3Qgbm9kZXMgYmFzZWQgb24gdGhlIHNjcmlwdCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFBTQlQncyBtdWx0aS1zaWcgaW5wdXRzLlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCBjb250YWluaW5nIG11bHRpLXNpZyBpbnB1dHMuXG4gKiBAcGFyYW0gcm9vdE5vZGVzIC0gQXJyYXkgb2Ygcm9vdCBub2RlcyB0byBzb3J0LlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgQklQMzJJbnRlcmZhY2Ugb2JqZWN0cyBpbiB0aGUgb3JkZXIgdGhhdCBtYXRjaGVzIHRoZSBtdWx0aS1zaWcgc2NyaXB0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFJvb3ROb2Rlcyhwc2J0OiBVdHhvUHNidCwgcm9vdE5vZGVzOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiB7XG4gIGNvbnN0IHsgcGFyc2VkU2NyaXB0VHlwZSwgc2NyaXB0UHViS2V5LCBkZXJpdmF0aW9uUGF0aCB9ID0gZ2V0Rmlyc3RNdWx0aVNpZ0lucHV0RGF0YShwc2J0KTtcbiAgY29uc3QgcHViS2V5cyA9IHJvb3ROb2Rlcy5tYXAoKHJvb3ROb2RlKSA9PiByb290Tm9kZS5kZXJpdmVQYXRoKGRlcml2YXRpb25QYXRoKS5wdWJsaWNLZXkpIGFzIFRyaXBsZTxCdWZmZXI+O1xuICBjb25zdCBvcmRlciA9IGZpbmRTb3J0T3JkZXJPZlB1YktleXMocHViS2V5cywgc2NyaXB0UHViS2V5LCBwYXJzZWRTY3JpcHRUeXBlLCBwc2J0Lm5ldHdvcmspO1xuICByZXR1cm4gb3JkZXIubWFwKChpKSA9PiByb290Tm9kZXNbaV0pIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHNvcnRlZCByb290IG5vZGVzIGZyb20gYSBQU0JULCBlbnN1cmluZyB0aGV5IGFyZSBvcmRlcmVkIGFjY29yZGluZyB0byBzY3JpcHQgY29tcGF0aWJpbGl0eS5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gZXh0cmFjdCBhbmQgc29ydCByb290IG5vZGVzIGZyb20uXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzb3J0ZWQgQklQMzJJbnRlcmZhY2Ugcm9vdCBub2Rlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRlZFJvb3ROb2Rlcyhwc2J0OiBVdHhvUHNidCk6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4ge1xuICBjb25zdCB1bnNvcnRlZFJvb3ROb2RlcyA9IGdldFVuc29ydGVkUm9vdE5vZGVzKHBzYnQpO1xuICBhc3NlcnQodW5zb3J0ZWRSb290Tm9kZXMsICdDb3VsZCBub3QgZmluZCByb290IG5vZGVzIGluIFBTQlQnKTtcbiAgcmV0dXJuIHNvcnRSb290Tm9kZXMocHNidCwgdW5zb3J0ZWRSb290Tm9kZXMpO1xufVxuIl19
|
|
@@ -27,7 +27,6 @@ export declare class ZcashPsbt extends UtxoPsbt<ZcashTransaction<bigint>> {
|
|
|
27
27
|
setDefaultsForVersion(network: Network, version: number): void;
|
|
28
28
|
signInput(inputIndex: number, keyPair: Signer, sighashTypes?: number[]): this;
|
|
29
29
|
validateSignaturesOfInput(inputIndex: number, validator: ValidateSigFunction, pubkey?: Buffer): boolean;
|
|
30
|
-
private withUnsafeSignNonSegwitTrue;
|
|
31
30
|
private setPropertyCheckSignatures;
|
|
32
31
|
setConsensusBranchId(consensusBranchId: number): void;
|
|
33
32
|
setVersionGroupId(versionGroupId: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZcashPsbt.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashPsbt.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAGL,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAW7D,qBAAa,SAAU,SAAQ,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAIlG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS;IAO7D;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAqCrF;;;;;OAKG;IACH,QAAQ,IAAI,MAAM;IAelB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI;IAOpD,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAsB9D,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAI7E,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"ZcashPsbt.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashPsbt.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAGL,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAmB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAW7D,qBAAa,SAAU,SAAQ,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAIlG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS;IAO7D;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAqCrF;;;;;OAKG;IACH,QAAQ,IAAI,MAAM;IAelB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,IAAI;IAOpD,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAsB9D,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAI7E,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvG,OAAO,CAAC,0BAA0B;IAQlC,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAKrD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAK/C,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAI5C"}
|