@bitgo-beta/utxo-lib 8.0.3-beta.9 → 8.0.3-beta.900
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 +132 -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 +221 -206
- 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 +12 -12
- 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 +1 -1
- package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/dash/DashPsbt.js +4 -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 +1 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/litecoin/LitecoinPsbt.js +4 -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 +8 -8
- package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
- package/dist/src/bitgo/outputScripts.js +56 -39
- package/dist/src/bitgo/parseInput.d.ts +7 -8
- package/dist/src/bitgo/parseInput.d.ts.map +1 -1
- package/dist/src/bitgo/parseInput.js +15 -16
- 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 +7 -8
- 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 +246 -108
- package/dist/src/bitgo/wallet/ScriptId.d.ts +14 -0
- package/dist/src/bitgo/wallet/ScriptId.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/ScriptId.js +28 -0
- 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 +174 -81
- 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 +70 -2
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +179 -43
- 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 +3 -0
- package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/index.js +9 -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 +85 -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 +123 -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 +1 -2
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +15 -19
- 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 +31 -21
- 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 +5 -5
- package/dist/src/payments/p2tr.js +13 -18
- package/dist/src/payments/p2tr_ns.js +3 -5
- package/dist/src/taproot.d.ts +1 -2
- package/dist/src/taproot.d.ts.map +1 -1
- package/dist/src/taproot.js +21 -22
- 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 +6 -3
- package/dist/src/testutil/keys.d.ts.map +1 -1
- package/dist/src/testutil/keys.js +24 -10
- 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 +13 -18
- package/package.json +10 -12
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RootWalletKeys = exports.DerivedWalletKeys = exports.WalletKeys =
|
|
3
|
+
exports.RootWalletKeys = exports.DerivedWalletKeys = exports.WalletKeys = void 0;
|
|
4
|
+
exports.eqPublicKey = eqPublicKey;
|
|
4
5
|
function eqPublicKey(a, b) {
|
|
5
6
|
return a.publicKey.equals(b.publicKey);
|
|
6
7
|
}
|
|
7
|
-
exports.eqPublicKey = eqPublicKey;
|
|
8
8
|
/**
|
|
9
9
|
* Base class for RootWalletKeys and DerivedWalletKeys.
|
|
10
10
|
* Keys can be either public keys or private keys.
|
|
@@ -101,4 +101,4 @@ class RootWalletKeys extends WalletKeys {
|
|
|
101
101
|
}
|
|
102
102
|
exports.RootWalletKeys = RootWalletKeys;
|
|
103
103
|
RootWalletKeys.defaultPrefix = '0/0';
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0S2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0S2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQkEsa0NBRUM7QUFGRCxTQUFnQixXQUFXLENBQUMsQ0FBaUIsRUFBRSxDQUFpQjtJQUM5RCxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxVQUFVO0lBR3JCOztPQUVHO0lBQ0gsWUFBNEIsTUFBOEI7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QixJQUFJLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBbUIsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUE3QkQsZ0NBNkJDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsVUFBVTtJQUMvQzs7O09BR0c7SUFDSCxZQUFtQixNQUFzQixFQUFTLEtBQXFCO1FBQ3JFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQTJCLENBQUMsQ0FBQztRQURwRSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBRXZFLENBQUM7Q0FDRjtBQVJELDhDQVFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxVQUFVO0lBRzVDOzs7O09BSUc7SUFDSCxZQUNFLE1BQThCLEVBQ2QscUJBQXFDO1FBQ25ELGNBQWMsQ0FBQyxhQUFhO1FBQzVCLGNBQWMsQ0FBQyxhQUFhO1FBQzVCLGNBQWMsQ0FBQyxhQUFhO0tBQzdCO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBTkUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUlqQztRQUlELGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxHQUFtQixFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUNqRCxPQUFPLElBQUksaUJBQWlCLENBQzFCLElBQUksRUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQW1CLENBQ2xGLENBQUM7SUFDSixDQUFDOztBQXBESCx3Q0FxREM7QUFwRGlCLDRCQUFhLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGFzc2VzIGZvciBkZXJpdmluZyBrZXkgdHJpcGxlcyBmb3Igd2FsbGV0IGFkZHJlc3Nlcy5cbiAqXG4gKiBCeSBkZWZhdWx0LCBCaXRHbyB3YWxsZXRzIGNvbnNpc3Qgb2YgYSB0cmlwbGUgb2YgYmlwMzIgZXh0ZW5kIGtleXBhaXJzLlxuICogRXZlcnkgd2FsbGV0IGFkZHJlc3MgY2FuIGJlIGlkZW50aWZpZWQgYnkgXyhjaGFpbjogbnVtYmVyLCBpbmRleDogbnVtYmVyKV8uXG4gKiBUaGUga2V5IHNldCBmb3IgYSBwYXJ0aWN1bGFyIGFkZHJlc3MgY2FuIGJlIG9idGFpbmVkIGJ5IGRlcml2aW5nIHdpdGggdGhlIHBhdGhcbiAqIGAwLzAvJHtjaGFpbn0vJHtpbmRleH1gLiAoSW4gcmFyZSBjYXNlcyB0aGUgcHJlZml4IDAvMCBjYW4gYmUgZGlmZmVyZW50KVxuICpcbiAqIFNpbmNlIHdlIG5ldmVyIHVzZSBvdGhlciBkZXJpdmF0aW9ucyBmb3IgdXR4byBhZGRyZXNzIHNjcmlwdHMsIHRoZSBjbGFzc2VzIGRlZmluZWQgaGVyZSBvbmx5XG4gKiBhbGxvdyBleGFjdGx5IG9uZSBsZXZlbCBvZiBkZXJpdmF0aW9uLlxuICovXG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcblxuaW1wb3J0IHsgVHJpcGxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBLZXlOYW1lID0gJ3VzZXInIHwgJ2JhY2t1cCcgfCAnYml0Z28nO1xuXG5leHBvcnQgZnVuY3Rpb24gZXFQdWJsaWNLZXkoYTogQklQMzJJbnRlcmZhY2UsIGI6IEJJUDMySW50ZXJmYWNlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLnB1YmxpY0tleS5lcXVhbHMoYi5wdWJsaWNLZXkpO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFJvb3RXYWxsZXRLZXlzIGFuZCBEZXJpdmVkV2FsbGV0S2V5cy5cbiAqIEtleXMgY2FuIGJlIGVpdGhlciBwdWJsaWMga2V5cyBvciBwcml2YXRlIGtleXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBXYWxsZXRLZXlzIHtcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY0tleXM6IFRyaXBsZTxCdWZmZXI+O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdHJpcGxlIC0gYmlwMzIga2V5IHRyaXBsZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHRyaXBsZTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPikge1xuICAgIHRyaXBsZS5mb3JFYWNoKChhLCBpKSA9PiB7XG4gICAgICB0cmlwbGUuZm9yRWFjaCgoYiwgaikgPT4ge1xuICAgICAgICBpZiAoZXFQdWJsaWNLZXkoYSwgYikgJiYgaSAhPT0gaikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2FsbGV0IGtleXMgbXVzdCBiZSBkaXN0aW5jdGApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMucHVibGljS2V5cyA9IHRoaXMudHJpcGxlLm1hcCgoaykgPT4gay5wdWJsaWNLZXkpIGFzIFRyaXBsZTxCdWZmZXI+O1xuICB9XG5cbiAgZ2V0IHVzZXIoKTogQklQMzJJbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzLnRyaXBsZVswXTtcbiAgfVxuXG4gIGdldCBiYWNrdXAoKTogQklQMzJJbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzLnRyaXBsZVsxXTtcbiAgfVxuXG4gIGdldCBiaXRnbygpOiBCSVAzMkludGVyZmFjZSB7XG4gICAgcmV0dXJuIHRoaXMudHJpcGxlWzJdO1xuICB9XG59XG5cbi8qKlxuICogU2V0IG9mIFdhbGxldEtleXMgZGVyaXZlZCBmcm9tIFJvb3RXYWxsZXRLZXlzLiBTdWl0YWJsZSBmb3Igc2lnbmluZyB0cmFuc2FjdGlvbiBpbnB1dHMuXG4gKiBDb250YWlucyByZWZlcmVuY2UgdG8gdGhlIFJvb3RXYWxsZXRLZXlzIHRoaXMgd2FzIGRlcml2ZWQgZnJvbSBhcyB3ZWxsIGFzIHRoZSBwYXRocyB1c2VkXG4gKiBmb3IgZGVyaXZhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIERlcml2ZWRXYWxsZXRLZXlzIGV4dGVuZHMgV2FsbGV0S2V5cyB7XG4gIC8qKlxuICAgKiBAcGFyYW0gcGFyZW50IC0gd2FsbGV0IGtleXMgdG8gZGVyaXZlIGZyb21cbiAgICogQHBhcmFtIHBhdGhzIC0gcGF0aHMgdG8gZGVyaXZlIHdpdGhcbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJlbnQ6IFJvb3RXYWxsZXRLZXlzLCBwdWJsaWMgcGF0aHM6IFRyaXBsZTxzdHJpbmc+KSB7XG4gICAgc3VwZXIocGFyZW50LnRyaXBsZS5tYXAoKGssIGkpID0+IGsuZGVyaXZlUGF0aChwYXRoc1tpXSkpIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT4pO1xuICB9XG59XG5cbi8qKlxuICogU2V0IG9mIHJvb3Qgd2FsbGV0IGtleXMsIHR5cGljYWxseSBpbnN0YW50aWF0ZWQgdXNpbmcgdGhlIHdhbGxldCB4cHViIHRyaXBsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvb3RXYWxsZXRLZXlzIGV4dGVuZHMgV2FsbGV0S2V5cyB7XG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0UHJlZml4ID0gJzAvMCc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB0cmlwbGUgLSBiaXAzMiBrZXkgdHJpcGxlXG4gICAqIEBwYXJhbSBkZXJpdmF0aW9uUHJlZml4ZXMgLSBDZXJ0YWluIHYxIHdhbGxldHMgb3IgdGhlaXIgbWlncmF0ZWQgdjIgY291bnRlcnBhcnRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gaGF2ZSBhIG5vbnN0YW5kYXJkIHByZWZpeC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRyaXBsZTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVyaXZhdGlvblByZWZpeGVzOiBUcmlwbGU8c3RyaW5nPiA9IFtcbiAgICAgIFJvb3RXYWxsZXRLZXlzLmRlZmF1bHRQcmVmaXgsXG4gICAgICBSb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuICAgICAgUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbiAgICBdXG4gICkge1xuICAgIHN1cGVyKHRyaXBsZSk7XG5cbiAgICBkZXJpdmF0aW9uUHJlZml4ZXMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgaWYgKHAuc3RhcnRzV2l0aCgnLycpIHx8IHAuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRlcml2YXRpb24gcHJlZml4IG11c3Qgbm90IHN0YXJ0IG9yIGVuZCB3aXRoIGEgc2xhc2hgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHJldHVybiBmdWxsIGRlcml2YXRpb24gcGF0aCBmb3Iga2V5LCBpbmNsdWRpbmcga2V5LXNwZWNpZmljIHByZWZpeFxuICAgKi9cbiAgZ2V0RGVyaXZhdGlvblBhdGgoa2V5OiBCSVAzMkludGVyZmFjZSwgY2hhaW46IG51bWJlciwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmRlcml2YXRpb25QcmVmaXhlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyBkZXJpdmF0aW9uIHByZWZpeGVzYCk7XG4gICAgfVxuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZGVyaXZhdGlvblByZWZpeGVzLmZpbmQoKHByZWZpeCwgaSkgPT4gZXFQdWJsaWNLZXkoa2V5LCB0aGlzLnRyaXBsZVtpXSkpO1xuICAgIGlmIChwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBrZXkgbm90IGluIHdhbGxldEtleXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3ByZWZpeH0vJHtjaGFpbn0vJHtpbmRleH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHJldHVybiB3YWxsZXRLZXlzIGZvciBhIHBhcnRpY3VsYXIgYWRkcmVzcyBpZGVudGlmaWVkIGJ5IChjaGFpbiwgaW5kZXgpXG4gICAqL1xuICBkZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluOiBudW1iZXIsIGluZGV4OiBudW1iZXIpOiBEZXJpdmVkV2FsbGV0S2V5cyB7XG4gICAgcmV0dXJuIG5ldyBEZXJpdmVkV2FsbGV0S2V5cyhcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLnRyaXBsZS5tYXAoKGspID0+IHRoaXMuZ2V0RGVyaXZhdGlvblBhdGgoaywgY2hhaW4sIGluZGV4KSkgYXMgVHJpcGxlPHN0cmluZz5cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,62 @@
|
|
|
1
|
+
import { Payment } from 'bitcoinjs-lib';
|
|
2
|
+
import { PsbtOutput, PsbtOutputUpdate } from 'bip174/src/lib/interfaces';
|
|
1
3
|
import { UtxoPsbt } from '../UtxoPsbt';
|
|
2
|
-
import { RootWalletKeys } from './WalletKeys';
|
|
4
|
+
import { RootWalletKeys, DerivedWalletKeys } from './WalletKeys';
|
|
3
5
|
import { ChainCode } from './chains';
|
|
6
|
+
import { ScriptId } from './ScriptId';
|
|
7
|
+
/**
|
|
8
|
+
* Get the BIP32 derivation data for a PSBT output.
|
|
9
|
+
*
|
|
10
|
+
* @param rootWalletKeys root wallet keys used for master fingerprints
|
|
11
|
+
* @param walletKeys derived wallet keys for the specific chain and index
|
|
12
|
+
* @param scriptType the script type to determine whether to use regular or taproot derivation
|
|
13
|
+
* @param payment optional payment object for taproot scripts to calculate leaf hashes
|
|
14
|
+
* @returns Object containing BIP32 derivation data
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPsbtBip32DerivationOutputUpdate(rootWalletKeys: RootWalletKeys, walletKeys: DerivedWalletKeys, scriptType: string, payment?: Payment): PsbtOutputUpdate;
|
|
17
|
+
/**
|
|
18
|
+
* Get the PSBT output update object from a PSBT output and output script.
|
|
19
|
+
*
|
|
20
|
+
* @param output the PSBT output to get update for
|
|
21
|
+
* @param outputScript the output script
|
|
22
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
23
|
+
* @param chain chain code to use for deriving scripts (and to determine script type)
|
|
24
|
+
* @param index derivation index for the change address
|
|
25
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPsbtOutputUpdateFromPsbtOutput(output: PsbtOutput, outputScript: Buffer, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number): PsbtOutputUpdate;
|
|
28
|
+
/**
|
|
29
|
+
* Get the PSBT output update object with the required information.
|
|
30
|
+
*
|
|
31
|
+
* @param psbt the PSBT to get output update for
|
|
32
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
33
|
+
* @param outputIndex output index where to update the output
|
|
34
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
35
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
36
|
+
* any valid ChainCode
|
|
37
|
+
* @param index derivation index for the change address
|
|
38
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
39
|
+
*/
|
|
40
|
+
export declare function getPsbtOutputUpdate(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, outputIndex: number, chain: ChainCode, index: number): PsbtOutputUpdate;
|
|
41
|
+
/**
|
|
42
|
+
* Update the wallet output with the required information when necessary. If the
|
|
43
|
+
* information is there already, it will skip over it.
|
|
44
|
+
*
|
|
45
|
+
* This function assumes that the output script and value have already been set.
|
|
46
|
+
*
|
|
47
|
+
* @param psbt the PSBT to update change output at
|
|
48
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
49
|
+
* @param outputIndex output index where to update the output
|
|
50
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
51
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
52
|
+
* any valid ChainCode
|
|
53
|
+
* @param index derivation index for the change address
|
|
54
|
+
*/
|
|
55
|
+
export declare function updateWalletOutputForPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, outputIndex: number, chain: ChainCode, index: number): void;
|
|
4
56
|
/**
|
|
5
57
|
* Add a verifiable wallet output to the PSBT. The output and all data
|
|
6
58
|
* needed to verify it from public keys only are added to the PSBT.
|
|
7
|
-
* Typically these are change outputs
|
|
59
|
+
* Typically these are change outputs.
|
|
8
60
|
*
|
|
9
61
|
* @param psbt the PSBT to add change output to
|
|
10
62
|
* @param rootWalletKeys keys that will be able to spend the output
|
|
@@ -15,4 +67,20 @@ import { ChainCode } from './chains';
|
|
|
15
67
|
* @param value value of the change output
|
|
16
68
|
*/
|
|
17
69
|
export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint): void;
|
|
70
|
+
/**
|
|
71
|
+
* Get the script id from the output.
|
|
72
|
+
* The output can have either bip32Derivation or tapBip32Derivation, but not both.
|
|
73
|
+
* @param output
|
|
74
|
+
* @throws Error if neither or both bip32Derivation and tapBip32Derivation are present
|
|
75
|
+
* @throws Error if the output is empty
|
|
76
|
+
* @throws Error if we cannot fold the script ids into a single script id
|
|
77
|
+
*/
|
|
78
|
+
export declare function getScriptIdFromOutput(output: {
|
|
79
|
+
bip32Derivation?: {
|
|
80
|
+
path: string;
|
|
81
|
+
}[];
|
|
82
|
+
tapBip32Derivation?: {
|
|
83
|
+
path: string;
|
|
84
|
+
}[];
|
|
85
|
+
}): ScriptId;
|
|
18
86
|
//# sourceMappingURL=WalletOutput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAuB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,gBAAgB,CAqClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAWlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,IAAI,CAYN;AAqBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzC,GAAG,QAAQ,CAWX"}
|
|
@@ -1,13 +1,147 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getPsbtBip32DerivationOutputUpdate = getPsbtBip32DerivationOutputUpdate;
|
|
4
|
+
exports.getPsbtOutputUpdateFromPsbtOutput = getPsbtOutputUpdateFromPsbtOutput;
|
|
5
|
+
exports.getPsbtOutputUpdate = getPsbtOutputUpdate;
|
|
6
|
+
exports.updateWalletOutputForPsbt = updateWalletOutputForPsbt;
|
|
7
|
+
exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
|
|
8
|
+
exports.getScriptIdFromOutput = getScriptIdFromOutput;
|
|
9
|
+
const assert = require("assert");
|
|
4
10
|
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
5
11
|
const chains_1 = require("./chains");
|
|
12
|
+
const ScriptId_1 = require("./ScriptId");
|
|
6
13
|
const outputScripts_1 = require("../outputScripts");
|
|
14
|
+
/**
|
|
15
|
+
* Get the BIP32 derivation data for a PSBT output.
|
|
16
|
+
*
|
|
17
|
+
* @param rootWalletKeys root wallet keys used for master fingerprints
|
|
18
|
+
* @param walletKeys derived wallet keys for the specific chain and index
|
|
19
|
+
* @param scriptType the script type to determine whether to use regular or taproot derivation
|
|
20
|
+
* @param payment optional payment object for taproot scripts to calculate leaf hashes
|
|
21
|
+
* @returns Object containing BIP32 derivation data
|
|
22
|
+
*/
|
|
23
|
+
function getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType, payment) {
|
|
24
|
+
const update = {};
|
|
25
|
+
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
26
|
+
if (!payment || !payment.redeems) {
|
|
27
|
+
throw new Error('Payment object with redeems is required for taproot derivation');
|
|
28
|
+
}
|
|
29
|
+
const allLeafHashes = payment.redeems.map((r) => bitcoinjs_lib_1.taproot.hashTapLeaf(r.output));
|
|
30
|
+
update.tapBip32Derivation = [0, 1, 2].map((idx) => {
|
|
31
|
+
const pubkey = (0, outputScripts_1.toXOnlyPublicKey)(walletKeys.triple[idx].publicKey);
|
|
32
|
+
const leafHashes = [];
|
|
33
|
+
assert(payment.redeems);
|
|
34
|
+
payment.redeems.forEach((r, redeemIdx) => {
|
|
35
|
+
if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
|
|
36
|
+
leafHashes.push(allLeafHashes[redeemIdx]);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
leafHashes,
|
|
41
|
+
pubkey,
|
|
42
|
+
path: walletKeys.paths[idx],
|
|
43
|
+
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
update.bip32Derivation = [0, 1, 2].map((idx) => ({
|
|
49
|
+
pubkey: walletKeys.triple[idx].publicKey,
|
|
50
|
+
path: walletKeys.paths[idx],
|
|
51
|
+
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
return update;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the PSBT output update object from a PSBT output and output script.
|
|
58
|
+
*
|
|
59
|
+
* @param output the PSBT output to get update for
|
|
60
|
+
* @param outputScript the output script
|
|
61
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
62
|
+
* @param chain chain code to use for deriving scripts (and to determine script type)
|
|
63
|
+
* @param index derivation index for the change address
|
|
64
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
65
|
+
*/
|
|
66
|
+
function getPsbtOutputUpdateFromPsbtOutput(output, outputScript, rootWalletKeys, chain, index) {
|
|
67
|
+
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
68
|
+
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
69
|
+
const update = {};
|
|
70
|
+
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
71
|
+
const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
|
|
72
|
+
if (!payment.output || !payment.output.equals(outputScript)) {
|
|
73
|
+
throw new Error(`cannot update a p2tr output where the scripts do not match - Failing.`);
|
|
74
|
+
}
|
|
75
|
+
if (!output.tapTree) {
|
|
76
|
+
update.tapTree = payment.tapTree;
|
|
77
|
+
}
|
|
78
|
+
if (!output.tapInternalKey) {
|
|
79
|
+
update.tapInternalKey = payment.internalPubkey;
|
|
80
|
+
}
|
|
81
|
+
if (!output.tapBip32Derivation) {
|
|
82
|
+
const derivationUpdate = getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType, payment);
|
|
83
|
+
update.tapBip32Derivation = derivationUpdate.tapBip32Derivation;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const { scriptPubKey, witnessScript, redeemScript } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
88
|
+
if (!scriptPubKey.equals(outputScript)) {
|
|
89
|
+
throw new Error(`cannot update an output where the scripts do not match - Failing.`);
|
|
90
|
+
}
|
|
91
|
+
if (!output.bip32Derivation) {
|
|
92
|
+
const derivationUpdate = getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType);
|
|
93
|
+
update.bip32Derivation = derivationUpdate.bip32Derivation;
|
|
94
|
+
}
|
|
95
|
+
if (!output.witnessScript && witnessScript) {
|
|
96
|
+
update.witnessScript = witnessScript;
|
|
97
|
+
}
|
|
98
|
+
if (!output.redeemScript && redeemScript) {
|
|
99
|
+
update.redeemScript = redeemScript;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return update;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the PSBT output update object with the required information.
|
|
106
|
+
*
|
|
107
|
+
* @param psbt the PSBT to get output update for
|
|
108
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
109
|
+
* @param outputIndex output index where to update the output
|
|
110
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
111
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
112
|
+
* any valid ChainCode
|
|
113
|
+
* @param index derivation index for the change address
|
|
114
|
+
* @returns PsbtOutputUpdate object with the required information
|
|
115
|
+
*/
|
|
116
|
+
function getPsbtOutputUpdate(psbt, rootWalletKeys, outputIndex, chain, index) {
|
|
117
|
+
if (psbt.data.outputs.length <= outputIndex) {
|
|
118
|
+
throw new Error(`outputIndex (${outputIndex}) is too large for the number of outputs (${psbt.data.outputs.length})`);
|
|
119
|
+
}
|
|
120
|
+
const outputScript = psbt.getOutputScript(outputIndex);
|
|
121
|
+
const output = psbt.data.outputs[outputIndex];
|
|
122
|
+
return getPsbtOutputUpdateFromPsbtOutput(output, outputScript, rootWalletKeys, chain, index);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Update the wallet output with the required information when necessary. If the
|
|
126
|
+
* information is there already, it will skip over it.
|
|
127
|
+
*
|
|
128
|
+
* This function assumes that the output script and value have already been set.
|
|
129
|
+
*
|
|
130
|
+
* @param psbt the PSBT to update change output at
|
|
131
|
+
* @param rootWalletKeys keys that will be able to spend the output
|
|
132
|
+
* @param outputIndex output index where to update the output
|
|
133
|
+
* @param chain chain code to use for deriving scripts (and to determine script
|
|
134
|
+
* type) chain is an API parameter in the BitGo API, and may be
|
|
135
|
+
* any valid ChainCode
|
|
136
|
+
* @param index derivation index for the change address
|
|
137
|
+
*/
|
|
138
|
+
function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, index) {
|
|
139
|
+
psbt.updateOutput(outputIndex, getPsbtOutputUpdate(psbt, rootWalletKeys, outputIndex, chain, index));
|
|
140
|
+
}
|
|
7
141
|
/**
|
|
8
142
|
* Add a verifiable wallet output to the PSBT. The output and all data
|
|
9
143
|
* needed to verify it from public keys only are added to the PSBT.
|
|
10
|
-
* Typically these are change outputs
|
|
144
|
+
* Typically these are change outputs.
|
|
11
145
|
*
|
|
12
146
|
* @param psbt the PSBT to add change output to
|
|
13
147
|
* @param rootWalletKeys keys that will be able to spend the output
|
|
@@ -19,51 +153,53 @@ const outputScripts_1 = require("../outputScripts");
|
|
|
19
153
|
*/
|
|
20
154
|
function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
|
|
21
155
|
const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
|
|
22
|
-
const scriptType = chains_1.scriptTypeForChain(chain);
|
|
156
|
+
const scriptType = (0, chains_1.scriptTypeForChain)(chain);
|
|
23
157
|
if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
|
|
24
|
-
const payment = scriptType === 'p2tr' ? outputScripts_1.createPaymentP2tr(walletKeys.publicKeys) : outputScripts_1.createPaymentP2trMusig2(walletKeys.publicKeys);
|
|
25
|
-
|
|
26
|
-
psbt.addOutput({
|
|
27
|
-
script: payment.output,
|
|
28
|
-
value,
|
|
29
|
-
tapTree: payment.tapTree,
|
|
30
|
-
tapInternalKey: payment.internalPubkey,
|
|
31
|
-
tapBip32Derivation: [0, 1, 2].map((idx) => {
|
|
32
|
-
const pubkey = outputScripts_1.toXOnlyPublicKey(walletKeys.triple[idx].publicKey);
|
|
33
|
-
const leafHashes = [];
|
|
34
|
-
payment.redeems.forEach((r, idx) => {
|
|
35
|
-
if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
|
|
36
|
-
leafHashes.push(allLeafHashes[idx]);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return {
|
|
40
|
-
leafHashes,
|
|
41
|
-
pubkey,
|
|
42
|
-
path: walletKeys.paths[idx],
|
|
43
|
-
masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
|
|
44
|
-
};
|
|
45
|
-
}),
|
|
46
|
-
});
|
|
158
|
+
const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
|
|
159
|
+
psbt.addOutput({ script: payment.output, value });
|
|
47
160
|
}
|
|
48
161
|
else {
|
|
49
|
-
const { scriptPubKey
|
|
50
|
-
psbt.addOutput({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
162
|
+
const { scriptPubKey: script } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
|
|
163
|
+
psbt.addOutput({ script, value });
|
|
164
|
+
}
|
|
165
|
+
updateWalletOutputForPsbt(psbt, rootWalletKeys, psbt.data.outputs.length - 1, chain, index);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Fold the script ids into a single script id, if they are all the same.
|
|
169
|
+
* @param scriptIds
|
|
170
|
+
*/
|
|
171
|
+
function foldScriptIds(scriptIds) {
|
|
172
|
+
if (scriptIds.length === 0) {
|
|
173
|
+
throw new Error('cannot fold empty script ids');
|
|
174
|
+
}
|
|
175
|
+
scriptIds.forEach((scriptId, i) => {
|
|
176
|
+
if (scriptId.chain !== scriptIds[0].chain) {
|
|
177
|
+
throw new Error(`chain mismatch: ${scriptId.chain} != ${scriptIds[0].chain}`);
|
|
62
178
|
}
|
|
63
|
-
if (
|
|
64
|
-
|
|
179
|
+
if (scriptId.index !== scriptIds[0].index) {
|
|
180
|
+
throw new Error(`index mismatch: ${scriptId.index} != ${scriptIds[0].index}`);
|
|
65
181
|
}
|
|
182
|
+
});
|
|
183
|
+
return scriptIds[0];
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get the script id from the output.
|
|
187
|
+
* The output can have either bip32Derivation or tapBip32Derivation, but not both.
|
|
188
|
+
* @param output
|
|
189
|
+
* @throws Error if neither or both bip32Derivation and tapBip32Derivation are present
|
|
190
|
+
* @throws Error if the output is empty
|
|
191
|
+
* @throws Error if we cannot fold the script ids into a single script id
|
|
192
|
+
*/
|
|
193
|
+
function getScriptIdFromOutput(output) {
|
|
194
|
+
if (output.bip32Derivation && output.tapBip32Derivation) {
|
|
195
|
+
throw new Error('cannot get script id from output with both bip32Derivation and tapBip32Derivation');
|
|
196
|
+
}
|
|
197
|
+
if (output.bip32Derivation) {
|
|
198
|
+
return foldScriptIds(output.bip32Derivation.map((d) => (0, ScriptId_1.getScriptIdFromPath)(d.path)));
|
|
66
199
|
}
|
|
200
|
+
if (output.tapBip32Derivation) {
|
|
201
|
+
return foldScriptIds(output.tapBip32Derivation.map((d) => (0, ScriptId_1.getScriptIdFromPath)(d.path)));
|
|
202
|
+
}
|
|
203
|
+
throw new Error('cannot get script id from output without bip32Derivation or tapBip32Derivation');
|
|
67
204
|
}
|
|
68
|
-
exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXdDO0FBR3hDLHFDQUF5RDtBQUN6RCxvREFBd0g7QUFFeEg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLElBQWMsRUFDZCxjQUE4QixFQUM5QixLQUFnQixFQUNoQixLQUFhLEVBQ2IsS0FBYTtJQUViLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsTUFBTSxVQUFVLEdBQUcsMkJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxZQUFZLEVBQUU7UUFDeEQsTUFBTSxPQUFPLEdBQ1gsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUNBQWlCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEgsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU87WUFDdkIsS0FBSztZQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7WUFDdEMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLE1BQU0sR0FBRyxnQ0FBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sQ0FBQyxPQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNsQyxJQUFJLENBQUMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7d0JBQzlDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3JDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU87b0JBQ0wsVUFBVTtvQkFDVixNQUFNO29CQUNOLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDM0IsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXO2lCQUMxRCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1NBQ0gsQ0FBQyxDQUFDO0tBQ0o7U0FBTTtRQUNMLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLHNDQUFzQixDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLEtBQUs7WUFDTCxlQUFlLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUztnQkFDeEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUMzQixpQkFBaUIsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVc7YUFDMUQsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztTQUNsRDtLQUNGO0FBQ0gsQ0FBQztBQXRERCxzREFzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0YXByb290IH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgeyBVdHhvUHNidCB9IGZyb20gJy4uL1V0eG9Qc2J0JztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMywgY3JlYXRlUGF5bWVudFAydHIsIGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyLCB0b1hPbmx5UHVibGljS2V5IH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbi8qKlxuICogQWRkIGEgdmVyaWZpYWJsZSB3YWxsZXQgb3V0cHV0IHRvIHRoZSBQU0JULiBUaGUgb3V0cHV0IGFuZCBhbGwgZGF0YVxuICogbmVlZGVkIHRvIHZlcmlmeSBpdCBmcm9tIHB1YmxpYyBrZXlzIG9ubHkgYXJlIGFkZGVkIHRvIHRoZSBQU0JULlxuICogVHlwaWNhbGx5IHRoZXNlIGFyZSBjaGFuZ2Ugb3V0cHV0c1xuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnRcbik6IHZvaWQge1xuICBjb25zdCB3YWxsZXRLZXlzID0gcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBjb25zdCBwYXltZW50ID1cbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IGNyZWF0ZVBheW1lbnRQMnRyKHdhbGxldEtleXMucHVibGljS2V5cykgOiBjcmVhdGVQYXltZW50UDJ0ck11c2lnMih3YWxsZXRLZXlzLnB1YmxpY0tleXMpO1xuICAgIGNvbnN0IGFsbExlYWZIYXNoZXMgPSBwYXltZW50LnJlZGVlbXMhLm1hcCgocikgPT4gdGFwcm9vdC5oYXNoVGFwTGVhZihyLm91dHB1dCEpKTtcblxuICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgIHNjcmlwdDogcGF5bWVudC5vdXRwdXQhLFxuICAgICAgdmFsdWUsXG4gICAgICB0YXBUcmVlOiBwYXltZW50LnRhcFRyZWUsXG4gICAgICB0YXBJbnRlcm5hbEtleTogcGF5bWVudC5pbnRlcm5hbFB1YmtleSxcbiAgICAgIHRhcEJpcDMyRGVyaXZhdGlvbjogWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICAgIGNvbnN0IHB1YmtleSA9IHRvWE9ubHlQdWJsaWNLZXkod2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXkpO1xuICAgICAgICBjb25zdCBsZWFmSGFzaGVzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICBwYXltZW50LnJlZGVlbXMhLmZvckVhY2goKHIsIGlkeCkgPT4ge1xuICAgICAgICAgIGlmIChyLnB1YmtleXMhLmZpbmQoKHBrKSA9PiBway5lcXVhbHMocHVia2V5KSkpIHtcbiAgICAgICAgICAgIGxlYWZIYXNoZXMucHVzaChhbGxMZWFmSGFzaGVzW2lkeF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVhZkhhc2hlcyxcbiAgICAgICAgICBwdWJrZXksXG4gICAgICAgICAgcGF0aDogd2FsbGV0S2V5cy5wYXRoc1tpZHhdLFxuICAgICAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5LCB3aXRuZXNzU2NyaXB0LCByZWRlZW1TY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBwc2J0LmFkZE91dHB1dCh7XG4gICAgICBzY3JpcHQ6IHNjcmlwdFB1YktleSxcbiAgICAgIHZhbHVlLFxuICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbMCwgMSwgMl0ubWFwKChpZHgpID0+ICh7XG4gICAgICAgIHB1YmtleTogd2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfSkpLFxuICAgIH0pO1xuICAgIGNvbnN0IG91dHB1dEluZGV4ID0gcHNidC50eE91dHB1dHMubGVuZ3RoIC0gMTtcbiAgICBpZiAod2l0bmVzc1NjcmlwdCkge1xuICAgICAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHsgd2l0bmVzc1NjcmlwdCB9KTtcbiAgICB9XG4gICAgaWYgKHJlZGVlbVNjcmlwdCkge1xuICAgICAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHsgcmVkZWVtU2NyaXB0IH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsZ0ZBMENDO0FBWUQsOEVBaURDO0FBY0Qsa0RBaUJDO0FBZ0JELDhEQVFDO0FBZUQsc0RBa0JDO0FBNkJELHNEQWNDO0FBN1BELGlDQUFpQztBQUVqQyxpREFBaUQ7QUFJakQscUNBQXlEO0FBQ3pELHlDQUEyRDtBQUMzRCxvREFBd0g7QUFFeEg7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsVUFBa0IsRUFDbEIsT0FBaUI7SUFFakIsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUVwQyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFnQixFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFD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SUFDSCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLE1BR3JDO0lBQ0MsSUFBSSxNQUFNLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUZBQW1GLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsOEJBQW1CLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDhCQUFtQixFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFBheW1lbnQsIHRhcHJvb3QgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IFBzYnRPdXRwdXQsIFBzYnRPdXRwdXRVcGRhdGUgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFV0eG9Qc2J0IH0gZnJvbSAnLi4vVXR4b1BzYnQnO1xuaW1wb3J0IHsgUm9vdFdhbGxldEtleXMsIERlcml2ZWRXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgZ2V0U2NyaXB0SWRGcm9tUGF0aCwgU2NyaXB0SWQgfSBmcm9tICcuL1NjcmlwdElkJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZVBheW1lbnRQMnRyLCBjcmVhdGVQYXltZW50UDJ0ck11c2lnMiwgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQklQMzIgZGVyaXZhdGlvbiBkYXRhIGZvciBhIFBTQlQgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyByb290IHdhbGxldCBrZXlzIHVzZWQgZm9yIG1hc3RlciBmaW5nZXJwcmludHNcbiAqIEBwYXJhbSB3YWxsZXRLZXlzIGRlcml2ZWQgd2FsbGV0IGtleXMgZm9yIHRoZSBzcGVjaWZpYyBjaGFpbiBhbmQgaW5kZXhcbiAqIEBwYXJhbSBzY3JpcHRUeXBlIHRoZSBzY3JpcHQgdHlwZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byB1c2UgcmVndWxhciBvciB0YXByb290IGRlcml2YXRpb25cbiAqIEBwYXJhbSBwYXltZW50IG9wdGlvbmFsIHBheW1lbnQgb2JqZWN0IGZvciB0YXByb290IHNjcmlwdHMgdG8gY2FsY3VsYXRlIGxlYWYgaGFzaGVzXG4gKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBCSVAzMiBkZXJpdmF0aW9uIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUoXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgd2FsbGV0S2V5czogRGVyaXZlZFdhbGxldEtleXMsXG4gIHNjcmlwdFR5cGU6IHN0cmluZyxcbiAgcGF5bWVudD86IFBheW1lbnRcbik6IFBzYnRPdXRwdXRVcGRhdGUge1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGlmICghcGF5bWVudCB8fCAhcGF5bWVudC5yZWRlZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheW1lbnQgb2JqZWN0IHdpdGggcmVkZWVtcyBpcyByZXF1aXJlZCBmb3IgdGFwcm9vdCBkZXJpdmF0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsTGVhZkhhc2hlcyA9IHBheW1lbnQucmVkZWVtcy5tYXAoKHIpID0+IHRhcHJvb3QuaGFzaFRhcExlYWYoci5vdXRwdXQhKSk7XG5cbiAgICB1cGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICBjb25zdCBwdWJrZXkgPSB0b1hPbmx5UHVibGljS2V5KHdhbGxldEtleXMudHJpcGxlW2lkeF0ucHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGxlYWZIYXNoZXM6IEJ1ZmZlcltdID0gW107XG5cbiAgICAgIGFzc2VydChwYXltZW50LnJlZGVlbXMpO1xuICAgICAgcGF5bWVudC5yZWRlZW1zLmZvckVhY2goKHI6IGFueSwgcmVkZWVtSWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHIucHVia2V5cyEuZmluZCgocGs6IEJ1ZmZlcikgPT4gcGsuZXF1YWxzKHB1YmtleSkpKSB7XG4gICAgICAgICAgbGVhZkhhc2hlcy5wdXNoKGFsbExlYWZIYXNoZXNbcmVkZWVtSWR4XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWFmSGFzaGVzLFxuICAgICAgICBwdWJrZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGUuYmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiAoe1xuICAgICAgcHVia2V5OiB3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSxcbiAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCBmcm9tIGEgUFNCVCBvdXRwdXQgYW5kIG91dHB1dCBzY3JpcHQuXG4gKlxuICogQHBhcmFtIG91dHB1dCB0aGUgUFNCVCBvdXRwdXQgdG8gZ2V0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSBvdXRwdXRTY3JpcHQgdGhlIG91dHB1dCBzY3JpcHRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHQgdHlwZSlcbiAqIEBwYXJhbSBpbmRleCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgY2hhbmdlIGFkZHJlc3NcbiAqIEByZXR1cm5zIFBzYnRPdXRwdXRVcGRhdGUgb2JqZWN0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0T3V0cHV0VXBkYXRlRnJvbVBzYnRPdXRwdXQoXG4gIG91dHB1dDogUHNidE91dHB1dCxcbiAgb3V0cHV0U2NyaXB0OiBCdWZmZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgaWYgKCFwYXltZW50Lm91dHB1dCB8fCAhcGF5bWVudC5vdXRwdXQuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhIHAydHIgb3V0cHV0IHdoZXJlIHRoZSBzY3JpcHRzIGRvIG5vdCBtYXRjaCAtIEZhaWxpbmcuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXQudGFwVHJlZSkge1xuICAgICAgdXBkYXRlLnRhcFRyZWUgPSBwYXltZW50LnRhcFRyZWU7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnRhcEludGVybmFsS2V5KSB7XG4gICAgICB1cGRhdGUudGFwSW50ZXJuYWxLZXkgPSBwYXltZW50LmludGVybmFsUHVia2V5O1xuICAgIH1cblxuICAgIGlmICghb3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgICAgY29uc3QgZGVyaXZhdGlvblVwZGF0ZSA9IGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUocm9vdFdhbGxldEtleXMsIHdhbGxldEtleXMsIHNjcmlwdFR5cGUsIHBheW1lbnQpO1xuICAgICAgdXBkYXRlLnRhcEJpcDMyRGVyaXZhdGlvbiA9IGRlcml2YXRpb25VcGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IHNjcmlwdFB1YktleSwgd2l0bmVzc1NjcmlwdCwgcmVkZWVtU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHdhbGxldEtleXMucHVibGljS2V5cywgc2NyaXB0VHlwZSk7XG4gICAgaWYgKCFzY3JpcHRQdWJLZXkuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhbiBvdXRwdXQgd2hlcmUgdGhlIHNjcmlwdHMgZG8gbm90IG1hdGNoIC0gRmFpbGluZy5gKTtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25VcGRhdGUgPSBnZXRQc2J0QmlwMzJEZXJpdmF0aW9uT3V0cHV0VXBkYXRlKHJvb3RXYWxsZXRLZXlzLCB3YWxsZXRLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICAgIHVwZGF0ZS5iaXAzMkRlcml2YXRpb24gPSBkZXJpdmF0aW9uVXBkYXRlLmJpcDMyRGVyaXZhdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC53aXRuZXNzU2NyaXB0ICYmIHdpdG5lc3NTY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdDtcbiAgICB9XG4gICAgaWYgKCFvdXRwdXQucmVkZWVtU2NyaXB0ICYmIHJlZGVlbVNjcmlwdCkge1xuICAgICAgdXBkYXRlLnJlZGVlbVNjcmlwdCA9IHJlZGVlbVNjcmlwdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHNidCB0aGUgUFNCVCB0byBnZXQgb3V0cHV0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcmV0dXJucyBQc2J0T3V0cHV0VXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidE91dHB1dFVwZGF0ZShcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGlmIChwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggPD0gb3V0cHV0SW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgb3V0cHV0SW5kZXggKCR7b3V0cHV0SW5kZXh9KSBpcyB0b28gbGFyZ2UgZm9yIHRoZSBudW1iZXIgb2Ygb3V0cHV0cyAoJHtwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGh9KWBcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgb3V0cHV0U2NyaXB0ID0gcHNidC5nZXRPdXRwdXRTY3JpcHQob3V0cHV0SW5kZXgpO1xuICBjb25zdCBvdXRwdXQgPSBwc2J0LmRhdGEub3V0cHV0c1tvdXRwdXRJbmRleF07XG5cbiAgcmV0dXJuIGdldFBzYnRPdXRwdXRVcGRhdGVGcm9tUHNidE91dHB1dChvdXRwdXQsIG91dHB1dFNjcmlwdCwgcm9vdFdhbGxldEtleXMsIGNoYWluLCBpbmRleCk7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSB3YWxsZXQgb3V0cHV0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHdoZW4gbmVjZXNzYXJ5LiBJZiB0aGVcbiAqIGluZm9ybWF0aW9uIGlzIHRoZXJlIGFscmVhZHksIGl0IHdpbGwgc2tpcCBvdmVyIGl0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBvdXRwdXQgc2NyaXB0IGFuZCB2YWx1ZSBoYXZlIGFscmVhZHkgYmVlbiBzZXQuXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gdXBkYXRlIGNoYW5nZSBvdXRwdXQgYXRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIGdldFBzYnRPdXRwdXRVcGRhdGUocHNidCwgcm9vdFdhbGxldEtleXMsIG91dHB1dEluZGV4LCBjaGFpbiwgaW5kZXgpKTtcbn1cblxuLyoqXG4gKiBBZGQgYSB2ZXJpZmlhYmxlIHdhbGxldCBvdXRwdXQgdG8gdGhlIFBTQlQuIFRoZSBvdXRwdXQgYW5kIGFsbCBkYXRhXG4gKiBuZWVkZWQgdG8gdmVyaWZ5IGl0IGZyb20gcHVibGljIGtleXMgb25seSBhcmUgYWRkZWQgdG8gdGhlIFBTQlQuXG4gKiBUeXBpY2FsbHkgdGhlc2UgYXJlIGNoYW5nZSBvdXRwdXRzLlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnRcbik6IHZvaWQge1xuICBjb25zdCB3YWxsZXRLZXlzID0gcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBjb25zdCBwYXltZW50ID1cbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IGNyZWF0ZVBheW1lbnRQMnRyKHdhbGxldEtleXMucHVibGljS2V5cykgOiBjcmVhdGVQYXltZW50UDJ0ck11c2lnMih3YWxsZXRLZXlzLnB1YmxpY0tleXMpO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiBwYXltZW50Lm91dHB1dCEsIHZhbHVlIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5OiBzY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdCwgdmFsdWUgfSk7XG4gIH1cbiAgdXBkYXRlV2FsbGV0T3V0cHV0Rm9yUHNidChwc2J0LCByb290V2FsbGV0S2V5cywgcHNidC5kYXRhLm91dHB1dHMubGVuZ3RoIC0gMSwgY2hhaW4sIGluZGV4KTtcbn1cblxuLyoqXG4gKiBGb2xkIHRoZSBzY3JpcHQgaWRzIGludG8gYSBzaW5nbGUgc2NyaXB0IGlkLCBpZiB0aGV5IGFyZSBhbGwgdGhlIHNhbWUuXG4gKiBAcGFyYW0gc2NyaXB0SWRzXG4gKi9cbmZ1bmN0aW9uIGZvbGRTY3JpcHRJZHMoc2NyaXB0SWRzOiBTY3JpcHRJZFtdKTogU2NyaXB0SWQge1xuICBpZiAoc2NyaXB0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZvbGQgZW1wdHkgc2NyaXB0IGlkcycpO1xuICB9XG4gIHNjcmlwdElkcy5mb3JFYWNoKChzY3JpcHRJZCwgaSkgPT4ge1xuICAgIGlmIChzY3JpcHRJZC5jaGFpbiAhPT0gc2NyaXB0SWRzWzBdLmNoYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNoYWluIG1pc21hdGNoOiAke3NjcmlwdElkLmNoYWlufSAhPSAke3NjcmlwdElkc1swXS5jaGFpbn1gKTtcbiAgICB9XG4gICAgaWYgKHNjcmlwdElkLmluZGV4ICE9PSBzY3JpcHRJZHNbMF0uaW5kZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW5kZXggbWlzbWF0Y2g6ICR7c2NyaXB0SWQuaW5kZXh9ICE9ICR7c2NyaXB0SWRzWzBdLmluZGV4fWApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzY3JpcHRJZHNbMF07XG59XG5cbi8qKlxuICogR2V0IHRoZSBzY3JpcHQgaWQgZnJvbSB0aGUgb3V0cHV0LlxuICogVGhlIG91dHB1dCBjYW4gaGF2ZSBlaXRoZXIgYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbiwgYnV0IG5vdCBib3RoLlxuICogQHBhcmFtIG91dHB1dFxuICogQHRocm93cyBFcnJvciBpZiBuZWl0aGVyIG9yIGJvdGggYmlwMzJEZXJpdmF0aW9uIGFuZCB0YXBCaXAzMkRlcml2YXRpb24gYXJlIHByZXNlbnRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIG91dHB1dCBpcyBlbXB0eVxuICogQHRocm93cyBFcnJvciBpZiB3ZSBjYW5ub3QgZm9sZCB0aGUgc2NyaXB0IGlkcyBpbnRvIGEgc2luZ2xlIHNjcmlwdCBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0SWRGcm9tT3V0cHV0KG91dHB1dDoge1xuICBiaXAzMkRlcml2YXRpb24/OiB7IHBhdGg6IHN0cmluZyB9W107XG4gIHRhcEJpcDMyRGVyaXZhdGlvbj86IHsgcGF0aDogc3RyaW5nIH1bXTtcbn0pOiBTY3JpcHRJZCB7XG4gIGlmIChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uICYmIG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBnZXQgc2NyaXB0IGlkIGZyb20gb3V0cHV0IHdpdGggYm90aCBiaXAzMkRlcml2YXRpb24gYW5kIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xuICB9XG4gIGlmIChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgcmV0dXJuIGZvbGRTY3JpcHRJZHMob3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5tYXAoKGQpID0+IGdldFNjcmlwdElkRnJvbVBhdGgoZC5wYXRoKSkpO1xuICB9XG4gIGlmIChvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgcmV0dXJuIGZvbGRTY3JpcHRJZHMob3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbi5tYXAoKGQpID0+IGdldFNjcmlwdElkRnJvbVBhdGgoZC5wYXRoKSkpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignY2Fubm90IGdldCBzY3JpcHQgaWQgZnJvbSBvdXRwdXQgd2l0aG91dCBiaXAzMkRlcml2YXRpb24gb3IgdGFwQmlwMzJEZXJpdmF0aW9uJyk7XG59XG4iXX0=
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getWalletOutputScripts = getWalletOutputScripts;
|
|
4
|
+
exports.getWalletAddress = getWalletAddress;
|
|
4
5
|
const __1 = require("../..");
|
|
5
6
|
const __2 = require("..");
|
|
6
7
|
const outputScripts_1 = require("../outputScripts");
|
|
7
8
|
function getWalletOutputScripts(keys, chain, index) {
|
|
8
|
-
return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, outputScripts_1.scriptTypeForChain(chain));
|
|
9
|
+
return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, (0, outputScripts_1.scriptTypeForChain)(chain));
|
|
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
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxrQ0FBa0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFMRCx3REFLQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0I7SUFDdEcsT0FBTyxXQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQUZELDRDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV0d29yaywgYWRkcmVzcyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENoYWluQ29kZSwgb3V0cHV0U2NyaXB0cyB9IGZyb20gJy4uJztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IHNjcmlwdFR5cGVGb3JDaGFpbiwgU3BlbmRhYmxlU2NyaXB0IH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXYWxsZXRPdXRwdXRTY3JpcHRzKGtleXM6IFJvb3RXYWxsZXRLZXlzLCBjaGFpbjogQ2hhaW5Db2RlLCBpbmRleDogbnVtYmVyKTogU3BlbmRhYmxlU2NyaXB0IHtcbiAgcmV0dXJuIG91dHB1dFNjcmlwdHMuY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhcbiAgICBrZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KS5wdWJsaWNLZXlzLFxuICAgIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbilcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdhbGxldEFkZHJlc3Moa2V5czogUm9vdFdhbGxldEtleXMsIGNoYWluOiBDaGFpbkNvZGUsIGluZGV4OiBudW1iZXIsIG5ldHdvcms6IE5ldHdvcmspOiBzdHJpbmcge1xuICByZXR1cm4gYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGdldFdhbGxldE91dHB1dFNjcmlwdHMoa2V5cywgY2hhaW4sIGluZGV4KS5zY3JpcHRQdWJLZXksIG5ldHdvcmspO1xufVxuIl19
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLHdEQUtDO0FBRUQsNENBRUM7QUFkRCw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxJQUFBLGtDQUFrQixFQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0I7SUFDdEcsT0FBTyxXQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmssIGFkZHJlc3MgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBDaGFpbkNvZGUsIG91dHB1dFNjcmlwdHMgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBzY3JpcHRUeXBlRm9yQ2hhaW4sIFNwZW5kYWJsZVNjcmlwdCB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0T3V0cHV0U2NyaXB0cyhrZXlzOiBSb290V2FsbGV0S2V5cywgY2hhaW46IENoYWluQ29kZSwgaW5kZXg6IG51bWJlcik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIHJldHVybiBvdXRwdXRTY3JpcHRzLmNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoXG4gICAga2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCkucHVibGljS2V5cyxcbiAgICBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXYWxsZXRBZGRyZXNzKGtleXM6IFJvb3RXYWxsZXRLZXlzLCBjaGFpbjogQ2hhaW5Db2RlLCBpbmRleDogbnVtYmVyLCBuZXR3b3JrOiBOZXR3b3JrKTogc3RyaW5nIHtcbiAgcmV0dXJuIGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChnZXRXYWxsZXRPdXRwdXRTY3JpcHRzKGtleXMsIGNoYWluLCBpbmRleCkuc2NyaXB0UHViS2V5LCBuZXR3b3JrKTtcbn1cbiJdfQ==
|
|
@@ -3,31 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WalletUnspentSigner = void 0;
|
|
4
4
|
const WalletKeys_1 = require("./WalletKeys");
|
|
5
5
|
class WalletUnspentSigner {
|
|
6
|
+
static from(walletKeys, signer, cosigner) {
|
|
7
|
+
return new WalletUnspentSigner(walletKeys, signer, cosigner);
|
|
8
|
+
}
|
|
6
9
|
constructor(walletKeys, signer, cosigner) {
|
|
7
10
|
this.signer = signer;
|
|
8
11
|
this.cosigner = cosigner;
|
|
9
12
|
if (Array.isArray(walletKeys)) {
|
|
10
13
|
walletKeys = new WalletKeys_1.RootWalletKeys(walletKeys);
|
|
11
14
|
}
|
|
12
|
-
this.signerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, signer));
|
|
15
|
+
this.signerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, signer));
|
|
13
16
|
if (this.signerIndex === undefined) {
|
|
14
17
|
throw new Error(`signer not part of walletKeys`);
|
|
15
18
|
}
|
|
16
|
-
this.cosignerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, cosigner));
|
|
19
|
+
this.cosignerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, cosigner));
|
|
17
20
|
if (this.cosignerIndex === undefined) {
|
|
18
21
|
throw new Error(`cosigner not part of walletKeys`);
|
|
19
22
|
}
|
|
20
23
|
this.walletKeys = walletKeys;
|
|
21
|
-
if (WalletKeys_1.eqPublicKey(signer, cosigner)) {
|
|
24
|
+
if ((0, WalletKeys_1.eqPublicKey)(signer, cosigner)) {
|
|
22
25
|
throw new Error(`signer must not equal cosigner`);
|
|
23
26
|
}
|
|
24
27
|
if (signer.isNeutered()) {
|
|
25
28
|
throw new Error(`signer must have private key`);
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
|
-
static from(walletKeys, signer, cosigner) {
|
|
29
|
-
return new WalletUnspentSigner(walletKeys, signer, cosigner);
|
|
30
|
-
}
|
|
31
31
|
/**
|
|
32
32
|
* @param chain
|
|
33
33
|
* @param index
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0VW5zcGVudFNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0VW5zcGVudFNpZ25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBMEY7QUFHMUYsTUFBYSxtQkFBbUI7SUFHOUIsTUFBTSxDQUFDLElBQUksQ0FDVCxVQUEwQixFQUMxQixNQUFzQixFQUN0QixRQUF3QjtRQUV4QixPQUFPLElBQUksbUJBQW1CLENBQWlCLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUtELFlBQ0UsVUFBK0MsRUFDeEMsTUFBc0IsRUFDdEIsUUFBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFFL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsVUFBVSxHQUFHLElBQUksMkJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBVyxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQWUsQ0FBQztRQUVsQyxJQUFJLElBQUEsd0JBQVcsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSw4QkFBaUIsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLDJCQUFjLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDekYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQTdERCxrREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcblxuaW1wb3J0IHsgRGVyaXZlZFdhbGxldEtleXMsIGVxUHVibGljS2V5LCBSb290V2FsbGV0S2V5cywgV2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRVbnNwZW50U2lnbmVyPFQgZXh0ZW5kcyBXYWxsZXRLZXlzPiB7XG4gIHB1YmxpYyByZWFkb25seSB3YWxsZXRLZXlzOiBUO1xuXG4gIHN0YXRpYyBmcm9tKFxuICAgIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICAgIHNpZ25lcjogQklQMzJJbnRlcmZhY2UsXG4gICAgY29zaWduZXI6IEJJUDMySW50ZXJmYWNlXG4gICk6IFdhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+IHtcbiAgICByZXR1cm4gbmV3IFdhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+KHdhbGxldEtleXMsIHNpZ25lciwgY29zaWduZXIpO1xuICB9XG5cbiAgcmVhZG9ubHkgc2lnbmVySW5kZXg7XG4gIHJlYWRvbmx5IGNvc2lnbmVySW5kZXg7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgd2FsbGV0S2V5czogV2FsbGV0S2V5cyB8IFRyaXBsZTxCSVAzMkludGVyZmFjZT4sXG4gICAgcHVibGljIHNpZ25lcjogQklQMzJJbnRlcmZhY2UsXG4gICAgcHVibGljIGNvc2lnbmVyOiBCSVAzMkludGVyZmFjZVxuICApIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh3YWxsZXRLZXlzKSkge1xuICAgICAgd2FsbGV0S2V5cyA9IG5ldyBSb290V2FsbGV0S2V5cyh3YWxsZXRLZXlzKTtcbiAgICB9XG4gICAgdGhpcy5zaWduZXJJbmRleCA9IHdhbGxldEtleXMudHJpcGxlLmZpbmRJbmRleCgoaykgPT4gZXFQdWJsaWNLZXkoaywgc2lnbmVyKSk7XG4gICAgaWYgKHRoaXMuc2lnbmVySW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbm90IHBhcnQgb2Ygd2FsbGV0S2V5c2ApO1xuICAgIH1cbiAgICB0aGlzLmNvc2lnbmVySW5kZXggPSB3YWxsZXRLZXlzLnRyaXBsZS5maW5kSW5kZXgoKGspID0+IGVxUHVibGljS2V5KGssIGNvc2lnbmVyKSk7XG4gICAgaWYgKHRoaXMuY29zaWduZXJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvc2lnbmVyIG5vdCBwYXJ0IG9mIHdhbGxldEtleXNgKTtcbiAgICB9XG5cbiAgICB0aGlzLndhbGxldEtleXMgPSB3YWxsZXRLZXlzIGFzIFQ7XG5cbiAgICBpZiAoZXFQdWJsaWNLZXkoc2lnbmVyLCBjb3NpZ25lcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG11c3Qgbm90IGVxdWFsIGNvc2lnbmVyYCk7XG4gICAgfVxuICAgIGlmIChzaWduZXIuaXNOZXV0ZXJlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBtdXN0IGhhdmUgcHJpdmF0ZSBrZXlgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcmV0dXJuIFdhbGxldFVuc3BlbnRTaWduZXIgdGhhdCBjb250YWlucyBrZXlzIGZvciBnZW5lcmF0aW5nIG91dHB1dCBzY3JpcHRzIGFuZCBzaWduYXR1cmVzLlxuICAgKi9cbiAgZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbjogbnVtYmVyLCBpbmRleDogbnVtYmVyKTogV2FsbGV0VW5zcGVudFNpZ25lcjxEZXJpdmVkV2FsbGV0S2V5cz4ge1xuICAgIGlmICh0aGlzLndhbGxldEtleXMgaW5zdGFuY2VvZiBEZXJpdmVkV2FsbGV0S2V5cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgZGVyaXZlIGFnYWluIGZyb20gRGVyaXZlZFdhbGxldEtleXNgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53YWxsZXRLZXlzIGluc3RhbmNlb2YgUm9vdFdhbGxldEtleXMpIHtcbiAgICAgIHJldHVybiBuZXcgV2FsbGV0VW5zcGVudFNpZ25lcihcbiAgICAgICAgdGhpcy53YWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KSxcbiAgICAgICAgdGhpcy5zaWduZXIuZGVyaXZlUGF0aCh0aGlzLndhbGxldEtleXMuZ2V0RGVyaXZhdGlvblBhdGgodGhpcy5zaWduZXIsIGNoYWluLCBpbmRleCkpLFxuICAgICAgICB0aGlzLmNvc2lnbmVyLmRlcml2ZVBhdGgodGhpcy53YWxsZXRLZXlzLmdldERlcml2YXRpb25QYXRoKHRoaXMuY29zaWduZXIsIGNoYWluLCBpbmRleCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzdGF0ZWApO1xuICB9XG59XG4iXX0=
|
|
@@ -19,13 +19,13 @@ export declare const chainCodesP2wsh: readonly [20, 21];
|
|
|
19
19
|
export declare const chainCodesP2tr: readonly [30, 31];
|
|
20
20
|
export declare const chainCodesP2trMusig2: readonly [40, 41];
|
|
21
21
|
export declare const chainCodes: (0 | 1 | 31 | 30 | 10 | 11 | 20 | 21 | 40 | 41)[];
|
|
22
|
-
export
|
|
22
|
+
export type ChainCode = (typeof chainCodes)[number];
|
|
23
23
|
export declare function isChainCode(n: unknown): n is ChainCode;
|
|
24
24
|
/**
|
|
25
25
|
* A script type maps to two ChainCodes:
|
|
26
26
|
* External addresses are intended for deposits, internal addresses are intended for change outputs.
|
|
27
27
|
*/
|
|
28
|
-
export
|
|
28
|
+
export type ChainCodePair = Readonly<[external: ChainCode, internal: ChainCode]>;
|
|
29
29
|
/**
|
|
30
30
|
* @return ChainCodePair for input
|
|
31
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,iBAAkB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,mBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAoB,CAAC;AAChD,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,mDAMtB,CAAC;AACF,
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,iBAAkB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,mBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAoB,CAAC;AAChD,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,mDAMtB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAEtD;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAcjF;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAiBxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAOnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAQ9C"}
|