@bitgo-beta/utxo-lib 8.0.3-beta.6 → 8.0.3-beta.600
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.d.ts +0 -1
- package/dist/src/address.d.ts.map +1 -1
- package/dist/src/address.js +10 -10
- package/dist/src/addressFormat.d.ts +1 -2
- package/dist/src/addressFormat.d.ts.map +1 -1
- package/dist/src/addressFormat.js +21 -26
- package/dist/src/bitgo/Musig2.d.ts +5 -11
- package/dist/src/bitgo/Musig2.d.ts.map +1 -1
- package/dist/src/bitgo/Musig2.js +63 -88
- package/dist/src/bitgo/PsbtUtil.d.ts +70 -0
- package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -0
- package/dist/src/bitgo/PsbtUtil.js +133 -0
- package/dist/src/bitgo/Unspent.d.ts +2 -3
- package/dist/src/bitgo/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/Unspent.js +14 -15
- package/dist/src/bitgo/UtxoPsbt.d.ts +26 -40
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoPsbt.js +200 -169
- package/dist/src/bitgo/UtxoTransaction.d.ts +0 -1
- package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransaction.js +11 -11
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.js +1 -1
- package/dist/src/bitgo/bitcoincash/address.d.ts +0 -1
- package/dist/src/bitgo/bitcoincash/address.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoincash/address.js +11 -12
- package/dist/src/bitgo/bitcoincash/index.js +6 -2
- package/dist/src/bitgo/dash/DashPsbt.d.ts +0 -1
- package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -1
- package/dist/src/bitgo/dash/DashTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransaction.js +3 -3
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.js +1 -1
- package/dist/src/bitgo/dash/index.js +6 -2
- package/dist/src/bitgo/index.d.ts +10 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +10 -3
- package/dist/src/bitgo/keyutil.d.ts +9 -1
- package/dist/src/bitgo/keyutil.d.ts.map +1 -1
- package/dist/src/bitgo/keyutil.js +25 -4
- package/dist/src/bitgo/legacysafe/index.d.ts +14 -0
- package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
- package/dist/src/bitgo/legacysafe/index.js +60 -0
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +0 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +1 -2
- package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinTransaction.js +2 -2
- package/dist/src/bitgo/litecoin/index.js +6 -2
- package/dist/src/bitgo/nonStandardHalfSigned.js +2 -3
- package/dist/src/bitgo/outputScripts.d.ts +7 -7
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +46 -31
- package/dist/src/bitgo/parseInput.d.ts +11 -8
- package/dist/src/bitgo/parseInput.d.ts.map +1 -1
- package/dist/src/bitgo/parseInput.js +30 -15
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.js +7 -8
- package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -1
- package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +1 -1
- package/dist/src/bitgo/psbt/scriptTypes.js +5 -6
- package/dist/src/bitgo/signature.d.ts +4 -5
- package/dist/src/bitgo/signature.d.ts.map +1 -1
- package/dist/src/bitgo/signature.js +32 -18
- package/dist/src/bitgo/tnumber.js +2 -3
- package/dist/src/bitgo/transaction.d.ts +31 -4
- package/dist/src/bitgo/transaction.d.ts.map +1 -1
- package/dist/src/bitgo/transaction.js +55 -27
- 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 +32 -0
- package/dist/src/bitgo/types.d.ts +8 -2
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/types.js +12 -4
- package/dist/src/bitgo/wallet/Psbt.d.ts +90 -27
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Psbt.js +244 -103
- package/dist/src/bitgo/wallet/Unspent.d.ts +43 -10
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/Unspent.js +173 -79
- package/dist/src/bitgo/wallet/WalletKeys.d.ts +1 -2
- package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletKeys.js +3 -3
- 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 +67 -27
- package/dist/src/bitgo/wallet/WalletScripts.js +4 -5
- package/dist/src/bitgo/wallet/WalletUnspentSigner.js +7 -7
- package/dist/src/bitgo/wallet/chains.d.ts +2 -2
- package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/chains.js +10 -10
- package/dist/src/bitgo/wallet/index.d.ts +2 -0
- package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/index.js +8 -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 +86 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts +32 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/psbt/RootNodes.js +125 -0
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +1 -2
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashBufferutils.js +15 -15
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -2
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +11 -17
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +3 -2
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashTransaction.js +30 -20
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +6 -4
- package/dist/src/bitgo/zcash/address.d.ts +0 -1
- package/dist/src/bitgo/zcash/address.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/address.js +7 -8
- package/dist/src/bitgo/zcash/hashZip0244.d.ts +1 -2
- package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/hashZip0244.js +9 -10
- package/dist/src/bitgo/zcash/index.js +6 -2
- package/dist/src/classify.d.ts +0 -1
- package/dist/src/classify.d.ts.map +1 -1
- package/dist/src/classify.js +5 -5
- package/dist/src/index.js +6 -2
- package/dist/src/networks.d.ts +2 -2
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +67 -21
- 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/payments/p2tr.js +3 -4
- package/dist/src/payments/p2tr_ns.js +2 -3
- package/dist/src/taproot.d.ts +1 -2
- package/dist/src/taproot.d.ts.map +1 -1
- package/dist/src/taproot.js +19 -19
- package/dist/src/templates/multisig/input.d.ts +0 -1
- package/dist/src/templates/multisig/input.d.ts.map +1 -1
- package/dist/src/templates/multisig/input.js +2 -3
- package/dist/src/templates/multisig/output.d.ts +0 -1
- package/dist/src/templates/multisig/output.d.ts.map +1 -1
- package/dist/src/templates/multisig/output.js +2 -3
- package/dist/src/templates/nulldata.d.ts +0 -1
- package/dist/src/templates/nulldata.d.ts.map +1 -1
- package/dist/src/templates/nulldata.js +3 -3
- package/dist/src/templates/pubkey/input.d.ts +0 -1
- package/dist/src/templates/pubkey/input.d.ts.map +1 -1
- package/dist/src/templates/pubkey/input.js +2 -3
- package/dist/src/templates/pubkey/output.d.ts +0 -1
- package/dist/src/templates/pubkey/output.d.ts.map +1 -1
- package/dist/src/templates/pubkey/output.js +2 -3
- package/dist/src/templates/pubkeyhash/input.d.ts +0 -1
- package/dist/src/templates/pubkeyhash/input.d.ts.map +1 -1
- package/dist/src/templates/pubkeyhash/input.js +2 -3
- package/dist/src/templates/pubkeyhash/output.d.ts +0 -1
- package/dist/src/templates/pubkeyhash/output.d.ts.map +1 -1
- package/dist/src/templates/pubkeyhash/output.js +2 -3
- package/dist/src/templates/scripthash/input.d.ts +0 -1
- package/dist/src/templates/scripthash/input.d.ts.map +1 -1
- package/dist/src/templates/scripthash/input.js +2 -3
- package/dist/src/templates/scripthash/output.d.ts +0 -1
- package/dist/src/templates/scripthash/output.d.ts.map +1 -1
- package/dist/src/templates/scripthash/output.js +2 -3
- package/dist/src/templates/taproot/input.d.ts +0 -1
- package/dist/src/templates/taproot/input.d.ts.map +1 -1
- package/dist/src/templates/taproot/input.js +2 -3
- package/dist/src/templates/taproot/output.d.ts +0 -1
- package/dist/src/templates/taproot/output.d.ts.map +1 -1
- package/dist/src/templates/taproot/output.js +2 -3
- package/dist/src/templates/taprootnofn/input.d.ts +0 -1
- package/dist/src/templates/taprootnofn/input.d.ts.map +1 -1
- package/dist/src/templates/taprootnofn/input.js +2 -3
- package/dist/src/templates/taprootnofn/output.d.ts +0 -1
- package/dist/src/templates/taprootnofn/output.d.ts.map +1 -1
- package/dist/src/templates/taprootnofn/output.js +2 -3
- package/dist/src/templates/witnesscommitment/output.d.ts +0 -1
- package/dist/src/templates/witnesscommitment/output.d.ts.map +1 -1
- package/dist/src/templates/witnesscommitment/output.js +4 -5
- package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -1
- package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +1 -1
- package/dist/src/templates/witnesspubkeyhash/input.js +2 -3
- package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -1
- package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +1 -1
- package/dist/src/templates/witnesspubkeyhash/output.js +2 -3
- package/dist/src/templates/witnessscripthash/input.d.ts +0 -1
- package/dist/src/templates/witnessscripthash/input.d.ts.map +1 -1
- package/dist/src/templates/witnessscripthash/input.js +2 -3
- package/dist/src/templates/witnessscripthash/output.d.ts +0 -1
- package/dist/src/templates/witnessscripthash/output.d.ts.map +1 -1
- package/dist/src/templates/witnessscripthash/output.js +2 -3
- package/dist/src/testutil/index.d.ts +1 -0
- package/dist/src/testutil/index.d.ts.map +1 -1
- package/dist/src/testutil/index.js +7 -2
- package/dist/src/testutil/keys.d.ts +4 -1
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +22 -8
- package/dist/src/testutil/mock.d.ts +2 -3
- package/dist/src/testutil/mock.d.ts.map +1 -1
- package/dist/src/testutil/mock.js +31 -23
- package/dist/src/testutil/psbt.d.ts +40 -16
- package/dist/src/testutil/psbt.d.ts.map +1 -1
- package/dist/src/testutil/psbt.js +54 -39
- package/dist/src/testutil/transaction.d.ts +18 -7
- package/dist/src/testutil/transaction.d.ts.map +1 -1
- package/dist/src/testutil/transaction.js +33 -26
- package/dist/src/transaction_builder.d.ts +0 -1
- package/dist/src/transaction_builder.d.ts.map +1 -1
- package/dist/src/transaction_builder.js +12 -17
- package/package.json +8 -8
|
@@ -0,0 +1,86 @@
|
|
|
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.deriveKeyPairForOutput = deriveKeyPairForOutput;
|
|
7
|
+
exports.isWalletOutput = isWalletOutput;
|
|
8
|
+
exports.findWalletOutputIndices = findWalletOutputIndices;
|
|
9
|
+
exports.getTotalAmountOfWalletOutputs = getTotalAmountOfWalletOutputs;
|
|
10
|
+
exports.findInternalOutputIndices = findInternalOutputIndices;
|
|
11
|
+
exports.getTotalAmountOfInternalOutputs = getTotalAmountOfInternalOutputs;
|
|
12
|
+
const types_1 = require("../../types");
|
|
13
|
+
const outputScripts_1 = require("../../outputScripts");
|
|
14
|
+
const UtxoPsbt_1 = require("../../UtxoPsbt");
|
|
15
|
+
const utils_1 = require("bip174/src/lib/utils");
|
|
16
|
+
const RootNodes_1 = require("./RootNodes");
|
|
17
|
+
/**
|
|
18
|
+
* Derives the appropriate BIP32 key pair for a given output.
|
|
19
|
+
* It uses either tapBip32Derivation or bip32Derivation paths from the output.
|
|
20
|
+
* @param bip32 - The BIP32Interface object to derive from.
|
|
21
|
+
* @param output - The specific PSBT output to derive for.
|
|
22
|
+
* @returns The derived BIP32 key pair if master fingerprint matches, or undefined.
|
|
23
|
+
*/
|
|
24
|
+
function deriveKeyPairForOutput(bip32, output) {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
return ((_a = output.tapBip32Derivation) === null || _a === void 0 ? void 0 : _a.length)
|
|
27
|
+
? UtxoPsbt_1.UtxoPsbt.deriveKeyPair(bip32, output.tapBip32Derivation, { ignoreY: true })
|
|
28
|
+
: ((_b = output.bip32Derivation) === null || _b === void 0 ? void 0 : _b.length)
|
|
29
|
+
? UtxoPsbt_1.UtxoPsbt.deriveKeyPair(bip32, output.bip32Derivation, { ignoreY: false })
|
|
30
|
+
: undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Determines if a specified output in a PSBT is an output of the wallet represented by the given root nodes.
|
|
34
|
+
* @param psbt - The PSBT to check.
|
|
35
|
+
* @param outputIndex - The index of the output to check.
|
|
36
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
37
|
+
* @returns A boolean indicating if the output belongs to the wallet.
|
|
38
|
+
*/
|
|
39
|
+
function isWalletOutput(psbt, outputIndex, rootWalletNodes) {
|
|
40
|
+
const output = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
|
|
41
|
+
const pubKeys = rootWalletNodes.map((rootNode) => { var _a; return (_a = deriveKeyPairForOutput(rootNode, output)) === null || _a === void 0 ? void 0 : _a.publicKey; });
|
|
42
|
+
if (!(0, types_1.isBufferArray)(pubKeys)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const outputScript = psbt.getOutputScript(outputIndex);
|
|
46
|
+
return outputScripts_1.scriptTypes2Of3.some((scriptType) => (0, outputScripts_1.createOutputScript2of3)(pubKeys, scriptType).scriptPubKey.equals(outputScript));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Finds indices of all outputs in a PSBT that belong to the wallet represented by the given root nodes.
|
|
50
|
+
* @param psbt - The PSBT to search through.
|
|
51
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
52
|
+
* @returns An array of indices corresponding to wallet outputs.
|
|
53
|
+
*/
|
|
54
|
+
function findWalletOutputIndices(psbt, rootWalletNodes) {
|
|
55
|
+
return psbt.data.outputs.flatMap((_, i) => (isWalletOutput(psbt, i, rootWalletNodes) ? [i] : []));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Calculates the total amount of all wallet outputs in a PSBT for the wallet represented by the given root nodes.
|
|
59
|
+
* @param psbt - The PSBT to calculate for.
|
|
60
|
+
* @param rootWalletNodes - The root nodes representing the wallet.
|
|
61
|
+
* @returns The total amount of wallet outputs.
|
|
62
|
+
*/
|
|
63
|
+
function getTotalAmountOfWalletOutputs(psbt, rootWalletNodes) {
|
|
64
|
+
const indices = findWalletOutputIndices(psbt, rootWalletNodes);
|
|
65
|
+
const txOutputs = psbt.txOutputs;
|
|
66
|
+
return indices.reduce((sum, i) => sum + txOutputs[i].value, BigInt(0));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Finds indices of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
|
|
70
|
+
* @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
|
|
71
|
+
* @returns An array of indices of internal outputs.
|
|
72
|
+
*/
|
|
73
|
+
function findInternalOutputIndices(psbt) {
|
|
74
|
+
const rootNodes = (0, RootNodes_1.getSortedRootNodes)(psbt);
|
|
75
|
+
return findWalletOutputIndices(psbt, rootNodes);
|
|
76
|
+
}
|
|
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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHNidE91dHB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L3BzYnQvUHNidE91dHB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOztBQWlCSCx3REFNQztBQVNELHdDQWFDO0FBUUQsMERBRUM7QUFRRCxzRUFJQztBQU9ELDhEQUdDO0FBT0QsMEVBR0M7QUFyRkQsdUNBQW9EO0FBQ3BELHVEQUE4RTtBQUM5RSw2Q0FBMEM7QUFFMUMsZ0RBQXNEO0FBRXRELDJDQUFpRDtBQUVqRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFxQixFQUFFLE1BQWtCOztJQUM5RSxPQUFPLENBQUEsTUFBQSxNQUFNLENBQUMsa0JBQWtCLDBDQUFFLE1BQU07UUFDdEMsQ0FBQyxDQUFDLG1CQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUEsTUFBQSxNQUFNLENBQUMsZUFBZSwwQ0FBRSxNQUFNO1lBQ2hDLENBQUMsQ0FBQyxtQkFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUMzRSxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsSUFBYyxFQUFFLFdBQW1CLEVBQUUsZUFBdUM7SUFDekcsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQkFBYyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRTlELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLDBDQUFFLFNBQVMsQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUV2RyxJQUFJLENBQUMsSUFBQSxxQkFBYSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxPQUFPLCtCQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDekMsSUFBQSxzQ0FBc0IsRUFBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FDOUUsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLElBQWMsRUFBRSxlQUF1QztJQUM3RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsSUFBYyxFQUFFLGVBQXVDO0lBQ25HLE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsSUFBYztJQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFBLDhCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsSUFBYztJQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFBLDhCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sNkJBQTZCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBkZXRlcm1pbmluZyBpZiBhIHRyYW5zYWN0aW9uIG91dHB1dCBiZWxvbmdzIHRvIGEgZ2l2ZW4gQml0R28gd2FsbGV0XG4gKi9cblxuaW1wb3J0IHsgaXNCdWZmZXJBcnJheSwgVHJpcGxlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMywgc2NyaXB0VHlwZXMyT2YzIH0gZnJvbSAnLi4vLi4vb3V0cHV0U2NyaXB0cyc7XG5pbXBvcnQgeyBVdHhvUHNidCB9IGZyb20gJy4uLy4uL1V0eG9Qc2J0JztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnYmlwMzInO1xuaW1wb3J0IHsgY2hlY2tGb3JPdXRwdXQgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBQc2J0T3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRTb3J0ZWRSb290Tm9kZXMgfSBmcm9tICcuL1Jvb3ROb2Rlcyc7XG5cbi8qKlxuICogRGVyaXZlcyB0aGUgYXBwcm9wcmlhdGUgQklQMzIga2V5IHBhaXIgZm9yIGEgZ2l2ZW4gb3V0cHV0LlxuICogSXQgdXNlcyBlaXRoZXIgdGFwQmlwMzJEZXJpdmF0aW9uIG9yIGJpcDMyRGVyaXZhdGlvbiBwYXRocyBmcm9tIHRoZSBvdXRwdXQuXG4gKiBAcGFyYW0gYmlwMzIgLSBUaGUgQklQMzJJbnRlcmZhY2Ugb2JqZWN0IHRvIGRlcml2ZSBmcm9tLlxuICogQHBhcmFtIG91dHB1dCAtIFRoZSBzcGVjaWZpYyBQU0JUIG91dHB1dCB0byBkZXJpdmUgZm9yLlxuICogQHJldHVybnMgVGhlIGRlcml2ZWQgQklQMzIga2V5IHBhaXIgaWYgbWFzdGVyIGZpbmdlcnByaW50IG1hdGNoZXMsIG9yIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUtleVBhaXJGb3JPdXRwdXQoYmlwMzI6IEJJUDMySW50ZXJmYWNlLCBvdXRwdXQ6IFBzYnRPdXRwdXQpOiBCSVAzMkludGVyZmFjZSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uPy5sZW5ndGhcbiAgICA/IFV0eG9Qc2J0LmRlcml2ZUtleVBhaXIoYmlwMzIsIG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24sIHsgaWdub3JlWTogdHJ1ZSB9KVxuICAgIDogb3V0cHV0LmJpcDMyRGVyaXZhdGlvbj8ubGVuZ3RoXG4gICAgPyBVdHhvUHNidC5kZXJpdmVLZXlQYWlyKGJpcDMyLCBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLCB7IGlnbm9yZVk6IGZhbHNlIH0pXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHNwZWNpZmllZCBvdXRwdXQgaW4gYSBQU0JUIGlzIGFuIG91dHB1dCBvZiB0aGUgd2FsbGV0IHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiByb290IG5vZGVzLlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCB0byBjaGVjay5cbiAqIEBwYXJhbSBvdXRwdXRJbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgb3V0cHV0IHRvIGNoZWNrLlxuICogQHBhcmFtIHJvb3RXYWxsZXROb2RlcyAtIFRoZSByb290IG5vZGVzIHJlcHJlc2VudGluZyB0aGUgd2FsbGV0LlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIG91dHB1dCBiZWxvbmdzIHRvIHRoZSB3YWxsZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1dhbGxldE91dHB1dChwc2J0OiBVdHhvUHNidCwgb3V0cHV0SW5kZXg6IG51bWJlciwgcm9vdFdhbGxldE5vZGVzOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogYm9vbGVhbiB7XG4gIGNvbnN0IG91dHB1dCA9IGNoZWNrRm9yT3V0cHV0KHBzYnQuZGF0YS5vdXRwdXRzLCBvdXRwdXRJbmRleCk7XG5cbiAgY29uc3QgcHViS2V5cyA9IHJvb3RXYWxsZXROb2Rlcy5tYXAoKHJvb3ROb2RlKSA9PiBkZXJpdmVLZXlQYWlyRm9yT3V0cHV0KHJvb3ROb2RlLCBvdXRwdXQpPy5wdWJsaWNLZXkpO1xuXG4gIGlmICghaXNCdWZmZXJBcnJheShwdWJLZXlzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dFNjcmlwdCA9IHBzYnQuZ2V0T3V0cHV0U2NyaXB0KG91dHB1dEluZGV4KTtcbiAgcmV0dXJuIHNjcmlwdFR5cGVzMk9mMy5zb21lKChzY3JpcHRUeXBlKSA9PlxuICAgIGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMocHViS2V5cywgc2NyaXB0VHlwZSkuc2NyaXB0UHViS2V5LmVxdWFscyhvdXRwdXRTY3JpcHQpXG4gICk7XG59XG5cbi8qKlxuICogRmluZHMgaW5kaWNlcyBvZiBhbGwgb3V0cHV0cyBpbiBhIFBTQlQgdGhhdCBiZWxvbmcgdG8gdGhlIHdhbGxldCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gcm9vdCBub2Rlcy5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gc2VhcmNoIHRocm91Z2guXG4gKiBAcGFyYW0gcm9vdFdhbGxldE5vZGVzIC0gVGhlIHJvb3Qgbm9kZXMgcmVwcmVzZW50aW5nIHRoZSB3YWxsZXQuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpbmRpY2VzIGNvcnJlc3BvbmRpbmcgdG8gd2FsbGV0IG91dHB1dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kV2FsbGV0T3V0cHV0SW5kaWNlcyhwc2J0OiBVdHhvUHNidCwgcm9vdFdhbGxldE5vZGVzOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogbnVtYmVyW10ge1xuICByZXR1cm4gcHNidC5kYXRhLm91dHB1dHMuZmxhdE1hcCgoXywgaSkgPT4gKGlzV2FsbGV0T3V0cHV0KHBzYnQsIGksIHJvb3RXYWxsZXROb2RlcykgPyBbaV0gOiBbXSkpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIGFtb3VudCBvZiBhbGwgd2FsbGV0IG91dHB1dHMgaW4gYSBQU0JUIGZvciB0aGUgd2FsbGV0IHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiByb290IG5vZGVzLlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCB0byBjYWxjdWxhdGUgZm9yLlxuICogQHBhcmFtIHJvb3RXYWxsZXROb2RlcyAtIFRoZSByb290IG5vZGVzIHJlcHJlc2VudGluZyB0aGUgd2FsbGV0LlxuICogQHJldHVybnMgVGhlIHRvdGFsIGFtb3VudCBvZiB3YWxsZXQgb3V0cHV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvdGFsQW1vdW50T2ZXYWxsZXRPdXRwdXRzKHBzYnQ6IFV0eG9Qc2J0LCByb290V2FsbGV0Tm9kZXM6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4pOiBiaWdpbnQge1xuICBjb25zdCBpbmRpY2VzID0gZmluZFdhbGxldE91dHB1dEluZGljZXMocHNidCwgcm9vdFdhbGxldE5vZGVzKTtcbiAgY29uc3QgdHhPdXRwdXRzID0gcHNidC50eE91dHB1dHM7XG4gIHJldHVybiBpbmRpY2VzLnJlZHVjZSgoc3VtLCBpKSA9PiBzdW0gKyB0eE91dHB1dHNbaV0udmFsdWUsIEJpZ0ludCgwKSk7XG59XG5cbi8qKlxuICogRmluZHMgaW5kaWNlcyBvZiBhbGwgaW50ZXJuYWwgb3V0cHV0cyBpbiBhIFBTQlQsIGlkZW50aWZpZWQgYXMgb3V0cHV0cyBiZWxvbmdpbmcgdG8gdGhlIHdhbGxldCdzIHJvb3Qgbm9kZXMgd2l0aGluIHRoZSBQU0JULlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCBjb250YWluaW5nIHRoZSB3YWxsZXQncyByb290IG5vZGVzIGFzIGluZGljYXRlZCBieSBnbG9iYWwgWHB1YnMuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBpbmRpY2VzIG9mIGludGVybmFsIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kSW50ZXJuYWxPdXRwdXRJbmRpY2VzKHBzYnQ6IFV0eG9Qc2J0KTogbnVtYmVyW10ge1xuICBjb25zdCByb290Tm9kZXMgPSBnZXRTb3J0ZWRSb290Tm9kZXMocHNidCk7XG4gIHJldHVybiBmaW5kV2FsbGV0T3V0cHV0SW5kaWNlcyhwc2J0LCByb290Tm9kZXMpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIGFtb3VudCBvZiBhbGwgaW50ZXJuYWwgb3V0cHV0cyBpbiBhIFBTQlQsIGlkZW50aWZpZWQgYXMgb3V0cHV0cyBiZWxvbmdpbmcgdG8gdGhlIHdhbGxldCdzIHJvb3Qgbm9kZXMgd2l0aGluIHRoZSBQU0JULlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCBjb250YWluaW5nIHRoZSB3YWxsZXQncyByb290IG5vZGVzIGFzIGluZGljYXRlZCBieSBnbG9iYWwgWHB1YnMuXG4gKiBAcmV0dXJucyBUaGUgdG90YWwgYW1vdW50IG9mIGludGVybmFsIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3RhbEFtb3VudE9mSW50ZXJuYWxPdXRwdXRzKHBzYnQ6IFV0eG9Qc2J0KTogYmlnaW50IHtcbiAgY29uc3Qgcm9vdE5vZGVzID0gZ2V0U29ydGVkUm9vdE5vZGVzKHBzYnQpO1xuICByZXR1cm4gZ2V0VG90YWxBbW91bnRPZldhbGxldE91dHB1dHMocHNidCwgcm9vdE5vZGVzKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
* Error thrown when no multi-sig input is found in a PSBT.
|
|
9
|
+
* */
|
|
10
|
+
export declare class ErrorNoMultiSigInputFound extends Error {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves unsorted root BIP32Interface nodes from a PSBT if available.
|
|
15
|
+
* @param psbt - The PSBT from which to extract the global Xpubs.
|
|
16
|
+
* @returns An array of BIP32Interface objects or undefined if not available.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getUnsortedRootNodes(psbt: UtxoPsbt): Triple<BIP32Interface> | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Sorts given root nodes based on the script compatibility with the PSBT's multi-sig inputs.
|
|
21
|
+
* @param psbt - The PSBT containing multi-sig inputs.
|
|
22
|
+
* @param rootNodes - Array of root nodes to sort.
|
|
23
|
+
* @returns An array of BIP32Interface objects in the order that matches the multi-sig script.
|
|
24
|
+
*/
|
|
25
|
+
export declare function sortRootNodes(psbt: UtxoPsbt, rootNodes: Triple<BIP32Interface>): Triple<BIP32Interface>;
|
|
26
|
+
/**
|
|
27
|
+
* Retrieves sorted root nodes from a PSBT, ensuring they are ordered according to script compatibility.
|
|
28
|
+
* @param psbt - The PSBT to extract and sort root nodes from.
|
|
29
|
+
* @returns An array of sorted BIP32Interface root nodes.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getSortedRootNodes(psbt: UtxoPsbt): Triple<BIP32Interface>;
|
|
32
|
+
//# 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;;KAEK;AACL,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAG5B;AAED;;;;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,125 @@
|
|
|
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.ErrorNoMultiSigInputFound = void 0;
|
|
7
|
+
exports.getUnsortedRootNodes = getUnsortedRootNodes;
|
|
8
|
+
exports.sortRootNodes = sortRootNodes;
|
|
9
|
+
exports.getSortedRootNodes = getSortedRootNodes;
|
|
10
|
+
const assert = require("assert");
|
|
11
|
+
const bs58check = require("bs58check");
|
|
12
|
+
const types_1 = require("../../types");
|
|
13
|
+
const bip32_1 = require("bip32");
|
|
14
|
+
const noble_ecc_1 = require("../../../noble_ecc");
|
|
15
|
+
const outputScripts_1 = require("../../outputScripts");
|
|
16
|
+
const transaction_1 = require("../../transaction");
|
|
17
|
+
const Psbt_1 = require("../Psbt");
|
|
18
|
+
/**
|
|
19
|
+
* Error thrown when no multi-sig input is found in a PSBT.
|
|
20
|
+
* */
|
|
21
|
+
class ErrorNoMultiSigInputFound extends Error {
|
|
22
|
+
constructor(message) {
|
|
23
|
+
super(message);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.ErrorNoMultiSigInputFound = ErrorNoMultiSigInputFound;
|
|
27
|
+
/**
|
|
28
|
+
* Retrieves unsorted root BIP32Interface nodes from a PSBT if available.
|
|
29
|
+
* @param psbt - The PSBT from which to extract the global Xpubs.
|
|
30
|
+
* @returns An array of BIP32Interface objects or undefined if not available.
|
|
31
|
+
*/
|
|
32
|
+
function getUnsortedRootNodes(psbt) {
|
|
33
|
+
var _a;
|
|
34
|
+
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)));
|
|
35
|
+
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}`);
|
|
36
|
+
return bip32s;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Determines if the given public keys' permutation matches a specified script.
|
|
40
|
+
* @param params - Object containing public keys, permutation, script public key, script type, and network.
|
|
41
|
+
* @returns A boolean indicating if the permutation matches the script.
|
|
42
|
+
*/
|
|
43
|
+
function matchesScript({ pubKeys, perm, scriptPubKey, parsedScriptType, network, }) {
|
|
44
|
+
const pubKeysPerm = [pubKeys[perm[0]], pubKeys[perm[1]], pubKeys[perm[2]]];
|
|
45
|
+
const scriptTypes = (0, Psbt_1.toScriptType2Of3s)(parsedScriptType);
|
|
46
|
+
return scriptTypes.some((scriptType) => (0, outputScripts_1.createOutputScript2of3)(pubKeysPerm, scriptType, network).scriptPubKey.equals(scriptPubKey));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Finds the correct order of public keys to match a given script.
|
|
50
|
+
* @param pubKeys - Array of public keys involved in the script.
|
|
51
|
+
* @param scriptPubKey - The script public key to match against.
|
|
52
|
+
* @param parsedScriptType - The parsed script type.
|
|
53
|
+
* @param network - Bitcoin network.
|
|
54
|
+
* @returns The order of public keys that match the script.
|
|
55
|
+
*/
|
|
56
|
+
function findSortOrderOfPubKeys(pubKeys, scriptPubKey, parsedScriptType, network) {
|
|
57
|
+
const permutations = [
|
|
58
|
+
[0, 1, 2],
|
|
59
|
+
[0, 2, 1],
|
|
60
|
+
[1, 0, 2],
|
|
61
|
+
[1, 2, 0],
|
|
62
|
+
[2, 0, 1],
|
|
63
|
+
[2, 1, 0],
|
|
64
|
+
];
|
|
65
|
+
const order = permutations.find((perm) => matchesScript({ pubKeys, perm, scriptPubKey, parsedScriptType, network }));
|
|
66
|
+
assert(order, 'Could not find sort order of multi sig public keys');
|
|
67
|
+
return order;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extracts multi-sig input data, including script type, script public key, and derivation path, from the first relevant PSBT input.
|
|
71
|
+
* @param psbt - The PSBT to extract data from.
|
|
72
|
+
* @returns An object containing the parsed script type, script public key, and derivation path.
|
|
73
|
+
*/
|
|
74
|
+
function getFirstMultiSigInputData(psbt) {
|
|
75
|
+
function getScriptPubKey(input, prevOutIndex) {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
const scriptPubKey = (_b = (_a = input.witnessUtxo) === null || _a === void 0 ? void 0 : _a.script) !== null && _b !== void 0 ? _b : (input.nonWitnessUtxo
|
|
78
|
+
? (0, transaction_1.createTransactionFromBuffer)(input.nonWitnessUtxo, psbt.network, { amountType: 'bigint' }).outs[prevOutIndex]
|
|
79
|
+
.script
|
|
80
|
+
: undefined);
|
|
81
|
+
assert(scriptPubKey, 'Input scriptPubKey can not be found');
|
|
82
|
+
return scriptPubKey;
|
|
83
|
+
}
|
|
84
|
+
function getDerivationPath(input) {
|
|
85
|
+
var _a;
|
|
86
|
+
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;
|
|
87
|
+
assert(bip32Dv === null || bip32Dv === void 0 ? void 0 : bip32Dv.length, 'Input Bip32Derivation can not be found');
|
|
88
|
+
return bip32Dv[0].path;
|
|
89
|
+
}
|
|
90
|
+
const txInputs = psbt.txInputs;
|
|
91
|
+
for (let i = 0; i < psbt.data.inputs.length; i++) {
|
|
92
|
+
const input = psbt.data.inputs[i];
|
|
93
|
+
const parsedScriptType = (0, Psbt_1.getPsbtInputScriptType)(input);
|
|
94
|
+
if (parsedScriptType === 'p2shP2pk') {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const scriptPubKey = getScriptPubKey(input, txInputs[i].index);
|
|
98
|
+
const derivationPath = getDerivationPath(input);
|
|
99
|
+
return { parsedScriptType, scriptPubKey, derivationPath };
|
|
100
|
+
}
|
|
101
|
+
throw new ErrorNoMultiSigInputFound('No multi sig input found');
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Sorts given root nodes based on the script compatibility with the PSBT's multi-sig inputs.
|
|
105
|
+
* @param psbt - The PSBT containing multi-sig inputs.
|
|
106
|
+
* @param rootNodes - Array of root nodes to sort.
|
|
107
|
+
* @returns An array of BIP32Interface objects in the order that matches the multi-sig script.
|
|
108
|
+
*/
|
|
109
|
+
function sortRootNodes(psbt, rootNodes) {
|
|
110
|
+
const { parsedScriptType, scriptPubKey, derivationPath } = getFirstMultiSigInputData(psbt);
|
|
111
|
+
const pubKeys = rootNodes.map((rootNode) => rootNode.derivePath(derivationPath).publicKey);
|
|
112
|
+
const order = findSortOrderOfPubKeys(pubKeys, scriptPubKey, parsedScriptType, psbt.network);
|
|
113
|
+
return order.map((i) => rootNodes[i]);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Retrieves sorted root nodes from a PSBT, ensuring they are ordered according to script compatibility.
|
|
117
|
+
* @param psbt - The PSBT to extract and sort root nodes from.
|
|
118
|
+
* @returns An array of sorted BIP32Interface root nodes.
|
|
119
|
+
*/
|
|
120
|
+
function getSortedRootNodes(psbt) {
|
|
121
|
+
const unsortedRootNodes = getUnsortedRootNodes(psbt);
|
|
122
|
+
assert(unsortedRootNodes, 'Could not find root nodes in PSBT');
|
|
123
|
+
return sortRootNodes(psbt, unsortedRootNodes);
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm9vdE5vZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9wc2J0L1Jvb3ROb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQThCSCxvREFNQztBQXdHRCxzQ0FLQztBQU9ELGdEQUlDO0FBMUpELGlDQUFpQztBQUNqQyx1Q0FBdUM7QUFHdkMsdUNBQStDO0FBQy9DLGlDQUFxRDtBQUNyRCxrREFBbUQ7QUFHbkQsdURBQTZEO0FBRTdELG1EQUFnRTtBQUNoRSxrQ0FBb0U7QUFFcEU7O0tBRUs7QUFDTCxNQUFhLHlCQUEwQixTQUFRLEtBQUs7SUFDbEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCw4REFJQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxJQUFjOztJQUNqRCxNQUFNLE1BQU0sR0FBRyxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsMENBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDMUQsSUFBQSxvQkFBWSxFQUFDLGVBQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0YsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUEsZ0JBQVEsRUFBQyxNQUFNLENBQUMsRUFBRSx3REFBd0QsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUcsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGFBQWEsQ0FBQyxFQUNyQixPQUFPLEVBQ1AsSUFBSSxFQUNKLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsT0FBTyxHQU9SO0lBQ0MsTUFBTSxX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LENBQUMsQ0FBQztJQUNyRCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztJQUMvRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXIgbWV0aG9kcyBmb3IgZ2V0dGluZyBhbmQgc29ydGluZyByb290IG5vZGVzIGZyb20gYSBQU0JULlxuICovXG5cbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgYnM1OGNoZWNrIGZyb20gJ2JzNThjaGVjayc7XG5cbmltcG9ydCB7IFV0eG9Qc2J0IH0gZnJvbSAnLi4vLi4vVXR4b1BzYnQnO1xuaW1wb3J0IHsgaXNUcmlwbGUsIFRyaXBsZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJJUDMyRmFjdG9yeSwgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBlY2MgYXMgZWNjTGliIH0gZnJvbSAnLi4vLi4vLi4vbm9ibGVfZWNjJztcbmltcG9ydCB7IFBhcnNlZFNjcmlwdFR5cGUyT2YzIH0gZnJvbSAnLi4vLi4vcGFyc2VJbnB1dCc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnLi4vLi4vLi4vbmV0d29ya3MnO1xuaW1wb3J0IHsgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyB9IGZyb20gJy4uLy4uL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHsgUHNidElucHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIgfSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBnZXRQc2J0SW5wdXRTY3JpcHRUeXBlLCB0b1NjcmlwdFR5cGUyT2YzcyB9IGZyb20gJy4uL1BzYnQnO1xuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIG5vIG11bHRpLXNpZyBpbnB1dCBpcyBmb3VuZCBpbiBhIFBTQlQuXG4gKiAqL1xuZXhwb3J0IGNsYXNzIEVycm9yTm9NdWx0aVNpZ0lucHV0Rm91bmQgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHVuc29ydGVkIHJvb3QgQklQMzJJbnRlcmZhY2Ugbm9kZXMgZnJvbSBhIFBTQlQgaWYgYXZhaWxhYmxlLlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGdsb2JhbCBYcHVicy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIEJJUDMySW50ZXJmYWNlIG9iamVjdHMgb3IgdW5kZWZpbmVkIGlmIG5vdCBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbnNvcnRlZFJvb3ROb2Rlcyhwc2J0OiBVdHhvUHNidCk6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4gfCB1bmRlZmluZWQge1xuICBjb25zdCBiaXAzMnMgPSBwc2J0LmRhdGEuZ2xvYmFsTWFwLmdsb2JhbFhwdWI/Lm1hcCgoeHB1YikgPT5cbiAgICBCSVAzMkZhY3RvcnkoZWNjTGliKS5mcm9tQmFzZTU4KGJzNThjaGVjay5lbmNvZGUoeHB1Yi5leHRlbmRlZFB1YmtleSkpXG4gICk7XG4gIGFzc2VydCghYmlwMzJzIHx8IGlzVHJpcGxlKGJpcDMycyksIGBJbnZhbGlkIGdsb2JhbFhwdWJzIGluIFBTQlQuIEV4cGVjdGVkIDMgb3Igbm9uZS4gR290ICR7YmlwMzJzPy5sZW5ndGh9YCk7XG4gIHJldHVybiBiaXAzMnM7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gcHVibGljIGtleXMnIHBlcm11dGF0aW9uIG1hdGNoZXMgYSBzcGVjaWZpZWQgc2NyaXB0LlxuICogQHBhcmFtIHBhcmFtcyAtIE9iamVjdCBjb250YWluaW5nIHB1YmxpYyBrZXlzLCBwZXJtdXRhdGlvbiwgc2NyaXB0IHB1YmxpYyBrZXksIHNjcmlwdCB0eXBlLCBhbmQgbmV0d29yay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBwZXJtdXRhdGlvbiBtYXRjaGVzIHRoZSBzY3JpcHQuXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTY3JpcHQoe1xuICBwdWJLZXlzLFxuICBwZXJtLFxuICBzY3JpcHRQdWJLZXksXG4gIHBhcnNlZFNjcmlwdFR5cGUsXG4gIG5ldHdvcmssXG59OiB7XG4gIHB1YktleXM6IEJ1ZmZlcltdO1xuICBwZXJtOiBUcmlwbGU8bnVtYmVyPjtcbiAgc2NyaXB0UHViS2V5OiBCdWZmZXI7XG4gIHBhcnNlZFNjcmlwdFR5cGU6IFBhcnNlZFNjcmlwdFR5cGUyT2YzO1xuICBuZXR3b3JrOiBOZXR3b3JrO1xufSk6IGJvb2xlYW4ge1xuICBjb25zdCBwdWJLZXlzUGVybTogVHJpcGxlPEJ1ZmZlcj4gPSBbcHViS2V5c1twZXJtWzBdXSwgcHViS2V5c1twZXJtWzFdXSwgcHViS2V5c1twZXJtWzJdXV07XG4gIGNvbnN0IHNjcmlwdFR5cGVzID0gdG9TY3JpcHRUeXBlMk9mM3MocGFyc2VkU2NyaXB0VHlwZSk7XG4gIHJldHVybiBzY3JpcHRUeXBlcy5zb21lKChzY3JpcHRUeXBlKSA9PlxuICAgIGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMocHViS2V5c1Blcm0sIHNjcmlwdFR5cGUsIG5ldHdvcmspLnNjcmlwdFB1YktleS5lcXVhbHMoc2NyaXB0UHViS2V5KVxuICApO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBjb3JyZWN0IG9yZGVyIG9mIHB1YmxpYyBrZXlzIHRvIG1hdGNoIGEgZ2l2ZW4gc2NyaXB0LlxuICogQHBhcmFtIHB1YktleXMgLSBBcnJheSBvZiBwdWJsaWMga2V5cyBpbnZvbHZlZCBpbiB0aGUgc2NyaXB0LlxuICogQHBhcmFtIHNjcmlwdFB1YktleSAtIFRoZSBzY3JpcHQgcHVibGljIGtleSB0byBtYXRjaCBhZ2FpbnN0LlxuICogQHBhcmFtIHBhcnNlZFNjcmlwdFR5cGUgLSBUaGUgcGFyc2VkIHNjcmlwdCB0eXBlLlxuICogQHBhcmFtIG5ldHdvcmsgLSBCaXRjb2luIG5ldHdvcmsuXG4gKiBAcmV0dXJucyBUaGUgb3JkZXIgb2YgcHVibGljIGtleXMgdGhhdCBtYXRjaCB0aGUgc2NyaXB0LlxuICovXG5mdW5jdGlvbiBmaW5kU29ydE9yZGVyT2ZQdWJLZXlzKFxuICBwdWJLZXlzOiBUcmlwbGU8QnVmZmVyPixcbiAgc2NyaXB0UHViS2V5OiBCdWZmZXIsXG4gIHBhcnNlZFNjcmlwdFR5cGU6IFBhcnNlZFNjcmlwdFR5cGUyT2YzLFxuICBuZXR3b3JrOiBOZXR3b3JrXG4pOiBUcmlwbGU8bnVtYmVyPiB7XG4gIGNvbnN0IHBlcm11dGF0aW9uczogQXJyYXk8VHJpcGxlPG51bWJlcj4+ID0gW1xuICAgIFswLCAxLCAyXSxcbiAgICBbMCwgMiwgMV0sXG4gICAgWzEsIDAsIDJdLFxuICAgIFsxLCAyLCAwXSxcbiAgICBbMiwgMCwgMV0sXG4gICAgWzIsIDEsIDBdLFxuICBdO1xuXG4gIGNvbnN0IG9yZGVyID0gcGVybXV0YXRpb25zLmZpbmQoKHBlcm0pID0+IG1hdGNoZXNTY3JpcHQoeyBwdWJLZXlzLCBwZXJtLCBzY3JpcHRQdWJLZXksIHBhcnNlZFNjcmlwdFR5cGUsIG5ldHdvcmsgfSkpO1xuICBhc3NlcnQob3JkZXIsICdDb3VsZCBub3QgZmluZCBzb3J0IG9yZGVyIG9mIG11bHRpIHNpZyBwdWJsaWMga2V5cycpO1xuICByZXR1cm4gb3JkZXI7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgbXVsdGktc2lnIGlucHV0IGRhdGEsIGluY2x1ZGluZyBzY3JpcHQgdHlwZSwgc2NyaXB0IHB1YmxpYyBrZXksIGFuZCBkZXJpdmF0aW9uIHBhdGgsIGZyb20gdGhlIGZpcnN0IHJlbGV2YW50IFBTQlQgaW5wdXQuXG4gKiBAcGFyYW0gcHNidCAtIFRoZSBQU0JUIHRvIGV4dHJhY3QgZGF0YSBmcm9tLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBzY3JpcHQgdHlwZSwgc2NyaXB0IHB1YmxpYyBrZXksIGFuZCBkZXJpdmF0aW9uIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGdldEZpcnN0TXVsdGlTaWdJbnB1dERhdGEocHNidDogVXR4b1BzYnQpOiB7XG4gIHBhcnNlZFNjcmlwdFR5cGU6IFBhcnNlZFNjcmlwdFR5cGUyT2YzO1xuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlcjtcbiAgZGVyaXZhdGlvblBhdGg6IHN0cmluZztcbn0ge1xuICBmdW5jdGlvbiBnZXRTY3JpcHRQdWJLZXkoaW5wdXQ6IFBzYnRJbnB1dCwgcHJldk91dEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzY3JpcHRQdWJLZXkgPVxuICAgICAgaW5wdXQud2l0bmVzc1V0eG8/LnNjcmlwdCA/P1xuICAgICAgKGlucHV0Lm5vbldpdG5lc3NVdHhvXG4gICAgICAgID8gY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKGlucHV0Lm5vbldpdG5lc3NVdHhvLCBwc2J0Lm5ldHdvcmssIHsgYW1vdW50VHlwZTogJ2JpZ2ludCcgfSkub3V0c1twcmV2T3V0SW5kZXhdXG4gICAgICAgICAgICAuc2NyaXB0XG4gICAgICAgIDogdW5kZWZpbmVkKTtcbiAgICBhc3NlcnQoc2NyaXB0UHViS2V5LCAnSW5wdXQgc2NyaXB0UHViS2V5IGNhbiBub3QgYmUgZm91bmQnKTtcbiAgICByZXR1cm4gc2NyaXB0UHViS2V5O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGVyaXZhdGlvblBhdGgoaW5wdXQ6IFBzYnRJbnB1dCkge1xuICAgIGNvbnN0IGJpcDMyRHYgPSBpbnB1dD8uYmlwMzJEZXJpdmF0aW9uID8/IGlucHV0Py50YXBCaXAzMkRlcml2YXRpb247XG4gICAgYXNzZXJ0KGJpcDMyRHY/Lmxlbmd0aCwgJ0lucHV0IEJpcDMyRGVyaXZhdGlvbiBjYW4gbm90IGJlIGZvdW5kJyk7XG4gICAgcmV0dXJuIGJpcDMyRHZbMF0ucGF0aDtcbiAgfVxuXG4gIGNvbnN0IHR4SW5wdXRzID0gcHNidC50eElucHV0cztcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBzYnQuZGF0YS5pbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBpbnB1dCA9IHBzYnQuZGF0YS5pbnB1dHNbaV07XG4gICAgY29uc3QgcGFyc2VkU2NyaXB0VHlwZSA9IGdldFBzYnRJbnB1dFNjcmlwdFR5cGUoaW5wdXQpO1xuICAgIGlmIChwYXJzZWRTY3JpcHRUeXBlID09PSAncDJzaFAycGsnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qgc2NyaXB0UHViS2V5ID0gZ2V0U2NyaXB0UHViS2V5KGlucHV0LCB0eElucHV0c1tpXS5pbmRleCk7XG4gICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSBnZXREZXJpdmF0aW9uUGF0aChpbnB1dCk7XG4gICAgcmV0dXJuIHsgcGFyc2VkU2NyaXB0VHlwZSwgc2NyaXB0UHViS2V5LCBkZXJpdmF0aW9uUGF0aCB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yTm9NdWx0aVNpZ0lucHV0Rm91bmQoJ05vIG11bHRpIHNpZyBpbnB1dCBmb3VuZCcpO1xufVxuXG4vKipcbiAqIFNvcnRzIGdpdmVuIHJvb3Qgbm9kZXMgYmFzZWQgb24gdGhlIHNjcmlwdCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFBTQlQncyBtdWx0aS1zaWcgaW5wdXRzLlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCBjb250YWluaW5nIG11bHRpLXNpZyBpbnB1dHMuXG4gKiBAcGFyYW0gcm9vdE5vZGVzIC0gQXJyYXkgb2Ygcm9vdCBub2RlcyB0byBzb3J0LlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgQklQMzJJbnRlcmZhY2Ugb2JqZWN0cyBpbiB0aGUgb3JkZXIgdGhhdCBtYXRjaGVzIHRoZSBtdWx0aS1zaWcgc2NyaXB0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydFJvb3ROb2Rlcyhwc2J0OiBVdHhvUHNidCwgcm9vdE5vZGVzOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiB7XG4gIGNvbnN0IHsgcGFyc2VkU2NyaXB0VHlwZSwgc2NyaXB0UHViS2V5LCBkZXJpdmF0aW9uUGF0aCB9ID0gZ2V0Rmlyc3RNdWx0aVNpZ0lucHV0RGF0YShwc2J0KTtcbiAgY29uc3QgcHViS2V5cyA9IHJvb3ROb2Rlcy5tYXAoKHJvb3ROb2RlKSA9PiByb290Tm9kZS5kZXJpdmVQYXRoKGRlcml2YXRpb25QYXRoKS5wdWJsaWNLZXkpIGFzIFRyaXBsZTxCdWZmZXI+O1xuICBjb25zdCBvcmRlciA9IGZpbmRTb3J0T3JkZXJPZlB1YktleXMocHViS2V5cywgc2NyaXB0UHViS2V5LCBwYXJzZWRTY3JpcHRUeXBlLCBwc2J0Lm5ldHdvcmspO1xuICByZXR1cm4gb3JkZXIubWFwKChpKSA9PiByb290Tm9kZXNbaV0pIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHNvcnRlZCByb290IG5vZGVzIGZyb20gYSBQU0JULCBlbnN1cmluZyB0aGV5IGFyZSBvcmRlcmVkIGFjY29yZGluZyB0byBzY3JpcHQgY29tcGF0aWJpbGl0eS5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gZXh0cmFjdCBhbmQgc29ydCByb290IG5vZGVzIGZyb20uXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzb3J0ZWQgQklQMzJJbnRlcmZhY2Ugcm9vdCBub2Rlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRlZFJvb3ROb2Rlcyhwc2J0OiBVdHhvUHNidCk6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4ge1xuICBjb25zdCB1bnNvcnRlZFJvb3ROb2RlcyA9IGdldFVuc29ydGVkUm9vdE5vZGVzKHBzYnQpO1xuICBhc3NlcnQodW5zb3J0ZWRSb290Tm9kZXMsICdDb3VsZCBub3QgZmluZCByb290IG5vZGVzIGluIFBTQlQnKTtcbiAgcmV0dXJuIHNvcnRSb290Tm9kZXMocHNidCwgdW5zb3J0ZWRSb290Tm9kZXMpO1xufVxuIl19
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
/**
|
|
3
2
|
* Transaction (de)serialization helpers.
|
|
4
3
|
* Only supports full transparent transactions without shielded inputs or outputs.
|
|
@@ -9,7 +8,7 @@
|
|
|
9
8
|
import { TxInput, TxOutput } from 'bitcoinjs-lib';
|
|
10
9
|
import { BufferReader, BufferWriter } from 'bitcoinjs-lib/src/bufferutils';
|
|
11
10
|
import { ZcashTransaction } from './ZcashTransaction';
|
|
12
|
-
export declare const VALUE_INT64_ZERO: Buffer
|
|
11
|
+
export declare const VALUE_INT64_ZERO: Buffer<ArrayBuffer>;
|
|
13
12
|
export declare function readInputs(bufferReader: BufferReader): TxInput[];
|
|
14
13
|
export declare function readOutputs<TNumber extends number | bigint>(bufferReader: BufferReader, amountType?: 'number' | 'bigint'): TxOutput<TNumber>[];
|
|
15
14
|
export declare function readEmptyVector(bufferReader: BufferReader): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZcashBufferutils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashBufferutils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ZcashBufferutils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashBufferutils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAA+B,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,eAAO,MAAM,gBAAgB,qBAAyC,CAAC;AAEvE,wBAAgB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,EAAE,CAahE;AAED,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACzD,YAAY,EAAE,YAAY,EAC1B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAUrB;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAKhE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAOvE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIxE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIvE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIzE;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,IAAI,CAyBN;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,IAAI,CAaN;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAQ5E;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,GACxB,IAAI,CAWN;AAED,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACxD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC5B,IAAI,CAoBN;AAED,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACxD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC5B,IAAI,CAYN"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.VALUE_INT64_ZERO = void 0;
|
|
4
|
+
exports.readInputs = readInputs;
|
|
5
|
+
exports.readOutputs = readOutputs;
|
|
6
|
+
exports.readEmptyVector = readEmptyVector;
|
|
7
|
+
exports.readEmptyOrchardBundle = readEmptyOrchardBundle;
|
|
8
|
+
exports.writeEmptyOrchardBundle = writeEmptyOrchardBundle;
|
|
9
|
+
exports.readEmptySaplingBundle = readEmptySaplingBundle;
|
|
10
|
+
exports.writeEmptySamplingBundle = writeEmptySamplingBundle;
|
|
11
|
+
exports.fromBufferV4 = fromBufferV4;
|
|
12
|
+
exports.fromBufferV5 = fromBufferV5;
|
|
13
|
+
exports.writeInputs = writeInputs;
|
|
14
|
+
exports.writeOutputs = writeOutputs;
|
|
15
|
+
exports.toBufferV4 = toBufferV4;
|
|
16
|
+
exports.toBufferV5 = toBufferV5;
|
|
4
17
|
const ZcashTransaction_1 = require("./ZcashTransaction");
|
|
5
18
|
exports.VALUE_INT64_ZERO = Buffer.from('0000000000000000', 'hex');
|
|
6
19
|
function readInputs(bufferReader) {
|
|
@@ -17,7 +30,6 @@ function readInputs(bufferReader) {
|
|
|
17
30
|
}
|
|
18
31
|
return ins;
|
|
19
32
|
}
|
|
20
|
-
exports.readInputs = readInputs;
|
|
21
33
|
function readOutputs(bufferReader, amountType = 'number') {
|
|
22
34
|
const voutLen = bufferReader.readVarInt();
|
|
23
35
|
const outs = [];
|
|
@@ -29,14 +41,12 @@ function readOutputs(bufferReader, amountType = 'number') {
|
|
|
29
41
|
}
|
|
30
42
|
return outs;
|
|
31
43
|
}
|
|
32
|
-
exports.readOutputs = readOutputs;
|
|
33
44
|
function readEmptyVector(bufferReader) {
|
|
34
45
|
const n = bufferReader.readVarInt();
|
|
35
46
|
if (n !== 0) {
|
|
36
47
|
throw new ZcashTransaction_1.UnsupportedTransactionError(`expected empty vector`);
|
|
37
48
|
}
|
|
38
49
|
}
|
|
39
|
-
exports.readEmptyVector = readEmptyVector;
|
|
40
50
|
function readEmptyOrchardBundle(bufferReader) {
|
|
41
51
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/orchard.h#L66
|
|
42
52
|
// https://github.com/zcash/librustzcash/blob/edcde252de221d4851f1e5145306c2caf95453bc/zcash_primitives/src/transaction/components/orchard.rs#L36
|
|
@@ -45,25 +55,21 @@ function readEmptyOrchardBundle(bufferReader) {
|
|
|
45
55
|
throw new ZcashTransaction_1.UnsupportedTransactionError(`expected byte 0x00`);
|
|
46
56
|
}
|
|
47
57
|
}
|
|
48
|
-
exports.readEmptyOrchardBundle = readEmptyOrchardBundle;
|
|
49
58
|
function writeEmptyOrchardBundle(bufferWriter) {
|
|
50
59
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/orchard.h#L66
|
|
51
60
|
// https://github.com/zcash/librustzcash/blob/edcde252de221d4851f1e5145306c2caf95453bc/zcash_primitives/src/transaction/components/orchard.rs#L201
|
|
52
61
|
bufferWriter.writeUInt8(0);
|
|
53
62
|
}
|
|
54
|
-
exports.writeEmptyOrchardBundle = writeEmptyOrchardBundle;
|
|
55
63
|
function readEmptySaplingBundle(bufferReader) {
|
|
56
64
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L283
|
|
57
65
|
readEmptyVector(bufferReader) /* vSpendsSapling */;
|
|
58
66
|
readEmptyVector(bufferReader) /* vOutputsSapling */;
|
|
59
67
|
}
|
|
60
|
-
exports.readEmptySaplingBundle = readEmptySaplingBundle;
|
|
61
68
|
function writeEmptySamplingBundle(bufferWriter) {
|
|
62
69
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L283
|
|
63
70
|
bufferWriter.writeVarInt(0) /* vSpendsSapling */;
|
|
64
71
|
bufferWriter.writeVarInt(0) /* vOutputsSapling */;
|
|
65
72
|
}
|
|
66
|
-
exports.writeEmptySamplingBundle = writeEmptySamplingBundle;
|
|
67
73
|
function fromBufferV4(bufferReader, tx, amountType = 'number') {
|
|
68
74
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L855-L857
|
|
69
75
|
tx.ins = readInputs(bufferReader);
|
|
@@ -86,7 +92,6 @@ function fromBufferV4(bufferReader, tx, amountType = 'number') {
|
|
|
86
92
|
readEmptyVector(bufferReader) /* vJoinSplit */;
|
|
87
93
|
}
|
|
88
94
|
}
|
|
89
|
-
exports.fromBufferV4 = fromBufferV4;
|
|
90
95
|
function fromBufferV5(bufferReader, tx, amountType = 'number') {
|
|
91
96
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L815
|
|
92
97
|
tx.consensusBranchId = bufferReader.readUInt32();
|
|
@@ -99,7 +104,6 @@ function fromBufferV5(bufferReader, tx, amountType = 'number') {
|
|
|
99
104
|
readEmptySaplingBundle(bufferReader);
|
|
100
105
|
readEmptyOrchardBundle(bufferReader);
|
|
101
106
|
}
|
|
102
|
-
exports.fromBufferV5 = fromBufferV5;
|
|
103
107
|
function writeInputs(bufferWriter, ins) {
|
|
104
108
|
bufferWriter.writeVarInt(ins.length);
|
|
105
109
|
ins.forEach(function (txIn) {
|
|
@@ -109,7 +113,6 @@ function writeInputs(bufferWriter, ins) {
|
|
|
109
113
|
bufferWriter.writeUInt32(txIn.sequence);
|
|
110
114
|
});
|
|
111
115
|
}
|
|
112
|
-
exports.writeInputs = writeInputs;
|
|
113
116
|
function writeOutputs(bufferWriter, outs) {
|
|
114
117
|
bufferWriter.writeVarInt(outs.length);
|
|
115
118
|
outs.forEach(function (txOut) {
|
|
@@ -122,7 +125,6 @@ function writeOutputs(bufferWriter, outs) {
|
|
|
122
125
|
bufferWriter.writeVarSlice(txOut.script);
|
|
123
126
|
});
|
|
124
127
|
}
|
|
125
|
-
exports.writeOutputs = writeOutputs;
|
|
126
128
|
function toBufferV4(bufferWriter, tx) {
|
|
127
129
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L1083
|
|
128
130
|
writeInputs(bufferWriter, tx.ins);
|
|
@@ -140,7 +142,6 @@ function toBufferV4(bufferWriter, tx) {
|
|
|
140
142
|
bufferWriter.writeVarInt(0); // joinsSplits length
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
|
-
exports.toBufferV4 = toBufferV4;
|
|
144
145
|
function toBufferV5(bufferWriter, tx) {
|
|
145
146
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L825-L826
|
|
146
147
|
bufferWriter.writeUInt32(tx.consensusBranchId);
|
|
@@ -153,5 +154,4 @@ function toBufferV5(bufferWriter, tx) {
|
|
|
153
154
|
// https://github.com/zcash/zcash/blob/v4.5.1/src/primitives/transaction.h#L1081
|
|
154
155
|
writeEmptyOrchardBundle(bufferWriter);
|
|
155
156
|
}
|
|
156
|
-
exports.toBufferV5 = toBufferV5;
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hCdWZmZXJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaEJ1ZmZlcnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLHlEQUFtRjtBQUV0RSxRQUFBLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdkUsU0FBZ0IsVUFBVSxDQUFDLFlBQTBCO0lBQ25ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYyxFQUFFLENBQUM7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUMvQixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsSUFBSSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2hDLEtBQUssRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxZQUFZLENBQUMsWUFBWSxFQUFFO1lBQ25DLFFBQVEsRUFBRSxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQyxDQUFDO0tBQ0o7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFiRCxnQ0FhQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsWUFBMEIsRUFDMUIsYUFBa0MsUUFBUTtJQUUxQyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUMsTUFBTSxJQUFJLEdBQXdCLEVBQUUsQ0FBQztJQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixLQUFLLEVBQUUs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QUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBVSxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTdDLGdGQUFnRjtJQUNoRix3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxnRkFBZ0Y7SUFDaEYsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQWZELGdDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2FjdGlvbiAoZGUpc2VyaWFsaXphdGlvbiBoZWxwZXJzLlxuICogT25seSBzdXBwb3J0cyBmdWxsIHRyYW5zcGFyZW50IHRyYW5zYWN0aW9ucyB3aXRob3V0IHNoaWVsZGVkIGlucHV0cyBvciBvdXRwdXRzLlxuICpcbiAqIFJlZmVyZW5jZXM6XG4gKiAtIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w3NzFcbiAqL1xuaW1wb3J0IHsgVHhJbnB1dCwgVHhPdXRwdXQgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IEJ1ZmZlclJlYWRlciwgQnVmZmVyV3JpdGVyIH0gZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvYnVmZmVydXRpbHMnO1xuXG5pbXBvcnQgeyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IsIFpjYXNoVHJhbnNhY3Rpb24gfSBmcm9tICcuL1pjYXNoVHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgVkFMVUVfSU5UNjRfWkVSTyA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwJywgJ2hleCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZElucHV0cyhidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcik6IFR4SW5wdXRbXSB7XG4gIGNvbnN0IHZpbkxlbiA9IGJ1ZmZlclJlYWRlci5yZWFkVmFySW50KCk7XG4gIGNvbnN0IGluczogVHhJbnB1dFtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmluTGVuOyArK2kpIHtcbiAgICBpbnMucHVzaCh7XG4gICAgICBoYXNoOiBidWZmZXJSZWFkZXIucmVhZFNsaWNlKDMyKSxcbiAgICAgIGluZGV4OiBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpLFxuICAgICAgc2NyaXB0OiBidWZmZXJSZWFkZXIucmVhZFZhclNsaWNlKCksXG4gICAgICBzZXF1ZW5jZTogYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKSxcbiAgICAgIHdpdG5lc3M6IFtdLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT3V0cHV0czxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIsXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogVHhPdXRwdXQ8VE51bWJlcj5bXSB7XG4gIGNvbnN0IHZvdXRMZW4gPSBidWZmZXJSZWFkZXIucmVhZFZhckludCgpO1xuICBjb25zdCBvdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdm91dExlbjsgKytpKSB7XG4gICAgb3V0cy5wdXNoKHtcbiAgICAgIHZhbHVlOiAoYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcgPyBidWZmZXJSZWFkZXIucmVhZFVJbnQ2NEJpZ0ludCgpIDogYnVmZmVyUmVhZGVyLnJlYWRVSW50NjQoKSkgYXMgVE51bWJlcixcbiAgICAgIHNjcmlwdDogYnVmZmVyUmVhZGVyLnJlYWRWYXJTbGljZSgpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBvdXRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIGNvbnN0IG4gPSBidWZmZXJSZWFkZXIucmVhZFZhckludCgpO1xuICBpZiAobiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IoYGV4cGVjdGVkIGVtcHR5IHZlY3RvcmApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy9vcmNoYXJkLmgjTDY2XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC9saWJydXN0emNhc2gvYmxvYi9lZGNkZTI1MmRlMjIxZDQ4NTFmMWU1MTQ1MzA2YzJjYWY5NTQ1M2JjL3pjYXNoX3ByaW1pdGl2ZXMvc3JjL3RyYW5zYWN0aW9uL2NvbXBvbmVudHMvb3JjaGFyZC5ycyNMMzZcbiAgY29uc3QgdiA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDgoKTtcbiAgaWYgKHYgIT09IDB4MDApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yKGBleHBlY3RlZCBieXRlIDB4MDBgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyV3JpdGVyOiBCdWZmZXJXcml0ZXIpOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL29yY2hhcmQuaCNMNjZcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL2xpYnJ1c3R6Y2FzaC9ibG9iL2VkY2RlMjUyZGUyMjFkNDg1MWYxZTUxNDUzMDZjMmNhZjk1NDUzYmMvemNhc2hfcHJpbWl0aXZlcy9zcmMvdHJhbnNhY3Rpb24vY29tcG9uZW50cy9vcmNoYXJkLnJzI0wyMDFcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDgoMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wyODNcbiAgcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcikgLyogdlNwZW5kc1NhcGxpbmcgKi87XG4gIHJlYWRFbXB0eVZlY3RvcihidWZmZXJSZWFkZXIpIC8qIHZPdXRwdXRzU2FwbGluZyAqLztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRW1wdHlTYW1wbGluZ0J1bmRsZShidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMMjgzXG4gIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKSAvKiB2U3BlbmRzU2FwbGluZyAqLztcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApIC8qIHZPdXRwdXRzU2FwbGluZyAqLztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21CdWZmZXJWNDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIsXG4gIHR4OiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBhbW91bnRUeXBlOiAnbnVtYmVyJyB8ICdiaWdpbnQnID0gJ251bWJlcidcbik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODU1LUw4NTdcbiAgdHguaW5zID0gcmVhZElucHV0cyhidWZmZXJSZWFkZXIpO1xuICB0eC5vdXRzID0gcmVhZE91dHB1dHM8VE51bWJlcj4oYnVmZmVyUmVhZGVyLCBhbW91bnRUeXBlKTtcbiAgdHgubG9ja3RpbWUgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuXG4gIGlmICh0eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICB0eC5leHBpcnlIZWlnaHQgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuICB9XG5cbiAgaWYgKHR4LmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgIGNvbnN0IHZhbHVlQmFsYW5jZSA9IGJ1ZmZlclJlYWRlci5yZWFkU2xpY2UoOCk7XG4gICAgaWYgKCF2YWx1ZUJhbGFuY2UuZXF1YWxzKFZBTFVFX0lOVDY0X1pFUk8pKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkVHJhbnNhY3Rpb25FcnJvcihgdmFsdWVCYWxhbmNlIG11c3QgYmUgemVyb2ApO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4NjNcbiAgICByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcik7XG4gIH1cblxuICBpZiAodHguc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODY5XG4gICAgcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcikgLyogdkpvaW5TcGxpdCAqLztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUJ1ZmZlclY1PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcixcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MTVcbiAgdHguY29uc2Vuc3VzQnJhbmNoSWQgPSBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpO1xuICB0eC5sb2NrdGltZSA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gIHR4LmV4cGlyeUhlaWdodCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgyOFxuICB0eC5pbnMgPSByZWFkSW5wdXRzKGJ1ZmZlclJlYWRlcik7XG4gIHR4Lm91dHMgPSByZWFkT3V0cHV0czxUTnVtYmVyPihidWZmZXJSZWFkZXIsIGFtb3VudFR5cGUpO1xuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MzVcbiAgcmVhZEVtcHR5U2FwbGluZ0J1bmRsZShidWZmZXJSZWFkZXIpO1xuICByZWFkRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlclJlYWRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUlucHV0cyhidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlciwgaW5zOiBUeElucHV0W10pOiB2b2lkIHtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KGlucy5sZW5ndGgpO1xuICBpbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKHR4SW4uaGFzaCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4SW4uaW5kZXgpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKHR4SW4uc2NyaXB0KTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5zZXF1ZW5jZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPdXRwdXRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcixcbiAgb3V0czogVHhPdXRwdXQ8VE51bWJlcj5bXVxuKTogdm9pZCB7XG4gIGJ1ZmZlcldyaXRlci53cml0ZVZhckludChvdXRzLmxlbmd0aCk7XG4gIG91dHMuZm9yRWFjaChmdW5jdGlvbiAodHhPdXQpIHtcbiAgICBpZiAoKHR4T3V0IGFzIGFueSkudmFsdWVCdWZmZXIpIHtcbiAgICAgIGJ1ZmZlcldyaXRlci53cml0ZVNsaWNlKCh0eE91dCBhcyBhbnkpLnZhbHVlQnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDY0KHR4T3V0LnZhbHVlKTtcbiAgICB9XG5cbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJTbGljZSh0eE91dC5zY3JpcHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnVmZmVyVjQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyLFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPlxuKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wxMDgzXG4gIHdyaXRlSW5wdXRzKGJ1ZmZlcldyaXRlciwgdHguaW5zKTtcbiAgd3JpdGVPdXRwdXRzPFROdW1iZXI+KGJ1ZmZlcldyaXRlciwgdHgub3V0cyk7XG5cbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmxvY2t0aW1lKTtcblxuICBpZiAodHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmV4cGlyeUhlaWdodCk7XG4gIH1cblxuICBpZiAodHguaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoVkFMVUVfSU5UNjRfWkVSTyk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApOyAvLyB2U2hpZWxkZWRTcGVuZExlbmd0aFxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKTsgLy8gdlNoaWVsZGVkT3V0cHV0TGVuZ3RoXG4gIH1cblxuICBpZiAodHguc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoMCk7IC8vIGpvaW5zU3BsaXRzIGxlbmd0aFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0J1ZmZlclY1PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcixcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj5cbik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODI1LUw4MjZcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmNvbnNlbnN1c0JyYW5jaElkKTtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmxvY2t0aW1lKTtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVUludDMyKHR4LmV4cGlyeUhlaWdodCk7XG4gIHdyaXRlSW5wdXRzKGJ1ZmZlcldyaXRlciwgdHguaW5zKTtcbiAgd3JpdGVPdXRwdXRzPFROdW1iZXI+KGJ1ZmZlcldyaXRlciwgdHgub3V0cyk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDEwNjNcbiAgd3JpdGVFbXB0eVNhbXBsaW5nQnVuZGxlKGJ1ZmZlcldyaXRlcik7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wxMDgxXG4gIHdyaXRlRW1wdHlPcmNoYXJkQnVuZGxlKGJ1ZmZlcldyaXRlcik7XG59XG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmNhc2hCdWZmZXJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby96Y2FzaC9aY2FzaEJ1ZmZlcnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWNBLGdDQWFDO0FBRUQsa0NBYUM7QUFFRCwwQ0FLQztBQUVELHdEQU9DO0FBRUQsMERBSUM7QUFFRCx3REFJQztBQUVELDREQUlDO0FBRUQsb0NBNkJDO0FBRUQsb0NBaUJDO0FBRUQsa0NBUUM7QUFFRCxvQ0FjQztBQUVELGdDQXVCQztBQUVELGdDQWVDO0FBeExELHlEQUFtRjtBQUV0RSxRQUFBLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdkUsU0FBZ0IsVUFBVSxDQUFDLFlBQTBCO0lBQ25ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYyxFQUFFLENBQUM7SUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDaEMsTUFBTSxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUU7WUFDbkMsUUFBUSxFQUFFLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDbkMsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUN6QixZQUEwQixFQUMxQixhQUFrQyxRQUFRO0lBRTFDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FB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LENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO0lBQ3BELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUN4QixZQUEwQixFQUMxQixFQUE2QjtJQUU3QixvRkFBb0Y7SUFDcEYsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxZQUFZLENBQVUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU3QyxnRkFBZ0Y7SUFDaEYsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsZ0ZBQWdGO0lBQ2hGLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRyYW5zYWN0aW9uIChkZSlzZXJpYWxpemF0aW9uIGhlbHBlcnMuXG4gKiBPbmx5IHN1cHBvcnRzIGZ1bGwgdHJhbnNwYXJlbnQgdHJhbnNhY3Rpb25zIHdpdGhvdXQgc2hpZWxkZWQgaW5wdXRzIG9yIG91dHB1dHMuXG4gKlxuICogUmVmZXJlbmNlczpcbiAqIC0gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDc3MVxuICovXG5pbXBvcnQgeyBUeElucHV0LCBUeE91dHB1dCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgQnVmZmVyUmVhZGVyLCBCdWZmZXJXcml0ZXIgfSBmcm9tICdiaXRjb2luanMtbGliL3NyYy9idWZmZXJ1dGlscyc7XG5cbmltcG9ydCB7IFVuc3VwcG9ydGVkVHJhbnNhY3Rpb25FcnJvciwgWmNhc2hUcmFuc2FjdGlvbiB9IGZyb20gJy4vWmNhc2hUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxVRV9JTlQ2NF9aRVJPID0gQnVmZmVyLmZyb20oJzAwMDAwMDAwMDAwMDAwMDAnLCAnaGV4Jyk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkSW5wdXRzKGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogVHhJbnB1dFtdIHtcbiAgY29uc3QgdmluTGVuID0gYnVmZmVyUmVhZGVyLnJlYWRWYXJJbnQoKTtcbiAgY29uc3QgaW5zOiBUeElucHV0W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aW5MZW47ICsraSkge1xuICAgIGlucy5wdXNoKHtcbiAgICAgIGhhc2g6IGJ1ZmZlclJlYWRlci5yZWFkU2xpY2UoMzIpLFxuICAgICAgaW5kZXg6IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCksXG4gICAgICBzY3JpcHQ6IGJ1ZmZlclJlYWRlci5yZWFkVmFyU2xpY2UoKSxcbiAgICAgIHNlcXVlbmNlOiBidWZmZXJSZWFkZXIucmVhZFVJbnQzMigpLFxuICAgICAgd2l0bmVzczogW10sXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPdXRwdXRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcixcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiBUeE91dHB1dDxUTnVtYmVyPltdIHtcbiAgY29uc3Qgdm91dExlbiA9IGJ1ZmZlclJlYWRlci5yZWFkVmFySW50KCk7XG4gIGNvbnN0IG91dHM6IFR4T3V0cHV0PFROdW1iZXI+W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2b3V0TGVuOyArK2kpIHtcbiAgICBvdXRzLnB1c2goe1xuICAgICAgdmFsdWU6IChhbW91bnRUeXBlID09PSAnYmlnaW50JyA/IGJ1ZmZlclJlYWRlci5yZWFkVUludDY0QmlnSW50KCkgOiBidWZmZXJSZWFkZXIucmVhZFVJbnQ2NCgpKSBhcyBUTnVtYmVyLFxuICAgICAgc2NyaXB0OiBidWZmZXJSZWFkZXIucmVhZFZhclNsaWNlKCksXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRW1wdHlWZWN0b3IoYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIpOiB2b2lkIHtcbiAgY29uc3QgbiA9IGJ1ZmZlclJlYWRlci5yZWFkVmFySW50KCk7XG4gIGlmIChuICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkVHJhbnNhY3Rpb25FcnJvcihgZXhwZWN0ZWQgZW1wdHkgdmVjdG9yYCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIpOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL29yY2hhcmQuaCNMNjZcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL2xpYnJ1c3R6Y2FzaC9ibG9iL2VkY2RlMjUyZGUyMjFkNDg1MWYxZTUxNDUzMDZjMmNhZjk1NDUzYmMvemNhc2hfcHJpbWl0aXZlcy9zcmMvdHJhbnNhY3Rpb24vY29tcG9uZW50cy9vcmNoYXJkLnJzI0wzNlxuICBjb25zdCB2ID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50OCgpO1xuICBpZiAodiAhPT0gMHgwMCkge1xuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZFRyYW5zYWN0aW9uRXJyb3IoYGV4cGVjdGVkIGJ5dGUgMHgwMGApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUVtcHR5T3JjaGFyZEJ1bmRsZShidWZmZXJXcml0ZXI6IEJ1ZmZlcldyaXRlcik6IHZvaWQge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvb3JjaGFyZC5oI0w2NlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvbGlicnVzdHpjYXNoL2Jsb2IvZWRjZGUyNTJkZTIyMWQ0ODUxZjFlNTE0NTMwNmMyY2FmOTU0NTNiYy96Y2FzaF9wcmltaXRpdmVzL3NyYy90cmFuc2FjdGlvbi9jb21wb25lbnRzL29yY2hhcmQucnMjTDIwMVxuICBidWZmZXJXcml0ZXIud3JpdGVVSW50OCgwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRFbXB0eVNhcGxpbmdCdW5kbGUoYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIpOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDI4M1xuICByZWFkRW1wdHlWZWN0b3IoYnVmZmVyUmVhZGVyKSAvKiB2U3BlbmRzU2FwbGluZyAqLztcbiAgcmVhZEVtcHR5VmVjdG9yKGJ1ZmZlclJlYWRlcikgLyogdk91dHB1dHNTYXBsaW5nICovO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVFbXB0eVNhbXBsaW5nQnVuZGxlKGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wyODNcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApIC8qIHZTcGVuZHNTYXBsaW5nICovO1xuICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoMCkgLyogdk91dHB1dHNTYXBsaW5nICovO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUJ1ZmZlclY0PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBidWZmZXJSZWFkZXI6IEJ1ZmZlclJlYWRlcixcbiAgdHg6IFpjYXNoVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIGFtb3VudFR5cGU6ICdudW1iZXInIHwgJ2JpZ2ludCcgPSAnbnVtYmVyJ1xuKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4NTUtTDg1N1xuICB0eC5pbnMgPSByZWFkSW5wdXRzKGJ1ZmZlclJlYWRlcik7XG4gIHR4Lm91dHMgPSByZWFkT3V0cHV0czxUTnVtYmVyPihidWZmZXJSZWFkZXIsIGFtb3VudFR5cGUpO1xuICB0eC5sb2NrdGltZSA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG5cbiAgaWYgKHR4LmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgIHR4LmV4cGlyeUhlaWdodCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gIH1cblxuICBpZiAodHguaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgY29uc3QgdmFsdWVCYWxhbmNlID0gYnVmZmVyUmVhZGVyLnJlYWRTbGljZSg4KTtcbiAgICBpZiAoIXZhbHVlQmFsYW5jZS5lcXVhbHMoVkFMVUVfSU5UNjRfWkVSTykpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yKGB2YWx1ZUJhbGFuY2UgbXVzdCBiZSB6ZXJvYCk7XG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDg2M1xuICAgIHJlYWRFbXB0eVNhcGxpbmdCdW5kbGUoYnVmZmVyUmVhZGVyKTtcbiAgfVxuXG4gIGlmICh0eC5zdXBwb3J0c0pvaW5TcGxpdHMoKSkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4NjlcbiAgICByZWFkRW1wdHlWZWN0b3IoYnVmZmVyUmVhZGVyKSAvKiB2Sm9pblNwbGl0ICovO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tQnVmZmVyVjU8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyLFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgYW1vdW50VHlwZTogJ251bWJlcicgfCAnYmlnaW50JyA9ICdudW1iZXInXG4pOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgxNVxuICB0eC5jb25zZW5zdXNCcmFuY2hJZCA9IGJ1ZmZlclJlYWRlci5yZWFkVUludDMyKCk7XG4gIHR4LmxvY2t0aW1lID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcbiAgdHguZXhwaXJ5SGVpZ2h0ID0gYnVmZmVyUmVhZGVyLnJlYWRVSW50MzIoKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMODI4XG4gIHR4LmlucyA9IHJlYWRJbnB1dHMoYnVmZmVyUmVhZGVyKTtcbiAgdHgub3V0cyA9IHJlYWRPdXRwdXRzPFROdW1iZXI+KGJ1ZmZlclJlYWRlciwgYW1vdW50VHlwZSk7XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDgzNVxuICByZWFkRW1wdHlTYXBsaW5nQnVuZGxlKGJ1ZmZlclJlYWRlcik7XG4gIHJlYWRFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyUmVhZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSW5wdXRzKGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyLCBpbnM6IFR4SW5wdXRbXSk6IHZvaWQge1xuICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoaW5zLmxlbmd0aCk7XG4gIGlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UodHhJbi5oYXNoKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHhJbi5pbmRleCk7XG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFyU2xpY2UodHhJbi5zY3JpcHQpO1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVVJbnQzMih0eEluLnNlcXVlbmNlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU91dHB1dHM8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyLFxuICBvdXRzOiBUeE91dHB1dDxUTnVtYmVyPltdXG4pOiB2b2lkIHtcbiAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KG91dHMubGVuZ3RoKTtcbiAgb3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0eE91dCkge1xuICAgIGlmICgodHhPdXQgYXMgYW55KS52YWx1ZUJ1ZmZlcikge1xuICAgICAgYnVmZmVyV3JpdGVyLndyaXRlU2xpY2UoKHR4T3V0IGFzIGFueSkudmFsdWVCdWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50NjQodHhPdXQudmFsdWUpO1xuICAgIH1cblxuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhclNsaWNlKHR4T3V0LnNjcmlwdCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9CdWZmZXJWNDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgYnVmZmVyV3JpdGVyOiBCdWZmZXJXcml0ZXIsXG4gIHR4OiBaY2FzaFRyYW5zYWN0aW9uPFROdW1iZXI+XG4pOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDEwODNcbiAgd3JpdGVJbnB1dHMoYnVmZmVyV3JpdGVyLCB0eC5pbnMpO1xuICB3cml0ZU91dHB1dHM8VE51bWJlcj4oYnVmZmVyV3JpdGVyLCB0eC5vdXRzKTtcblxuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHgubG9ja3RpbWUpO1xuXG4gIGlmICh0eC5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHguZXhwaXJ5SGVpZ2h0KTtcbiAgfVxuXG4gIGlmICh0eC5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVTbGljZShWQUxVRV9JTlQ2NF9aRVJPKTtcbiAgICBidWZmZXJXcml0ZXIud3JpdGVWYXJJbnQoMCk7IC8vIHZTaGllbGRlZFNwZW5kTGVuZ3RoXG4gICAgYnVmZmVyV3JpdGVyLndyaXRlVmFySW50KDApOyAvLyB2U2hpZWxkZWRPdXRwdXRMZW5ndGhcbiAgfVxuXG4gIGlmICh0eC5zdXBwb3J0c0pvaW5TcGxpdHMoKSkge1xuICAgIGJ1ZmZlcldyaXRlci53cml0ZVZhckludCgwKTsgLy8gam9pbnNTcGxpdHMgbGVuZ3RoXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQnVmZmVyVjU8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIGJ1ZmZlcldyaXRlcjogQnVmZmVyV3JpdGVyLFxuICB0eDogWmNhc2hUcmFuc2FjdGlvbjxUTnVtYmVyPlxuKTogdm9pZCB7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y0LjUuMS9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0w4MjUtTDgyNlxuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHguY29uc2Vuc3VzQnJhbmNoSWQpO1xuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHgubG9ja3RpbWUpO1xuICBidWZmZXJXcml0ZXIud3JpdGVVSW50MzIodHguZXhwaXJ5SGVpZ2h0KTtcbiAgd3JpdGVJbnB1dHMoYnVmZmVyV3JpdGVyLCB0eC5pbnMpO1xuICB3cml0ZU91dHB1dHM8VE51bWJlcj4oYnVmZmVyV3JpdGVyLCB0eC5vdXRzKTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi92NC41LjEvc3JjL3ByaW1pdGl2ZXMvdHJhbnNhY3Rpb24uaCNMMTA2M1xuICB3cml0ZUVtcHR5U2FtcGxpbmdCdW5kbGUoYnVmZmVyV3JpdGVyKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjQuNS4xL3NyYy9wcmltaXRpdmVzL3RyYW5zYWN0aW9uLmgjTDEwODFcbiAgd3JpdGVFbXB0eU9yY2hhcmRCdW5kbGUoYnVmZmVyV3JpdGVyKTtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { PsbtOpts, UtxoPsbt } from '../UtxoPsbt';
|
|
3
2
|
import { ZcashTransaction } from './ZcashTransaction';
|
|
4
3
|
import { Network, Signer } from '../../';
|
|
@@ -27,7 +26,6 @@ export declare class ZcashPsbt extends UtxoPsbt<ZcashTransaction<bigint>> {
|
|
|
27
26
|
setDefaultsForVersion(network: Network, version: number): void;
|
|
28
27
|
signInput(inputIndex: number, keyPair: Signer, sighashTypes?: number[]): this;
|
|
29
28
|
validateSignaturesOfInput(inputIndex: number, validator: ValidateSigFunction, pubkey?: Buffer): boolean;
|
|
30
|
-
private withUnsafeSignNonSegwitTrue;
|
|
31
29
|
private setPropertyCheckSignatures;
|
|
32
30
|
setConsensusBranchId(consensusBranchId: number): void;
|
|
33
31
|
setVersionGroupId(versionGroupId: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZcashPsbt.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashPsbt.ts"],"names":[],"mappings":"
|
|
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;IAwB9D,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"}
|