utxo-lib 1.0.9 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. package/README.md +19 -16
  2. package/dist/src/address.d.ts.map +1 -1
  3. package/dist/src/address.js +11 -1
  4. package/dist/src/addressFormat.d.ts +1 -1
  5. package/dist/src/addressFormat.d.ts.map +1 -1
  6. package/dist/src/addressFormat.js +1 -1
  7. package/dist/src/bitgo/Musig2.d.ts +115 -17
  8. package/dist/src/bitgo/Musig2.d.ts.map +1 -1
  9. package/dist/src/bitgo/Musig2.js +283 -100
  10. package/dist/src/bitgo/PsbtUtil.d.ts +59 -0
  11. package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -0
  12. package/dist/src/bitgo/PsbtUtil.js +91 -0
  13. package/dist/src/bitgo/UtxoPsbt.d.ts +180 -47
  14. package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
  15. package/dist/src/bitgo/UtxoPsbt.js +651 -107
  16. package/dist/src/bitgo/bitcoincash/address.js +2 -2
  17. package/dist/src/bitgo/index.d.ts +11 -0
  18. package/dist/src/bitgo/index.d.ts.map +1 -1
  19. package/dist/src/bitgo/index.js +6 -2
  20. package/dist/src/bitgo/legacysafe/index.d.ts +15 -0
  21. package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
  22. package/dist/src/bitgo/legacysafe/index.js +61 -0
  23. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +10 -0
  24. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -0
  25. package/dist/src/bitgo/litecoin/LitecoinPsbt.js +17 -0
  26. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +16 -0
  27. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -0
  28. package/dist/src/bitgo/litecoin/LitecoinTransaction.js +46 -0
  29. package/dist/src/bitgo/litecoin/LitecoinTransactionBuilder.d.ts +10 -0
  30. package/dist/src/bitgo/litecoin/LitecoinTransactionBuilder.d.ts.map +1 -0
  31. package/dist/src/bitgo/litecoin/LitecoinTransactionBuilder.js +15 -0
  32. package/dist/src/bitgo/litecoin/index.d.ts +4 -0
  33. package/dist/src/bitgo/litecoin/index.d.ts.map +1 -0
  34. package/dist/src/bitgo/litecoin/index.js +16 -0
  35. package/dist/src/bitgo/outputScripts.d.ts +3 -1
  36. package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
  37. package/dist/src/bitgo/outputScripts.js +18 -10
  38. package/dist/src/bitgo/parseInput.d.ts +49 -20
  39. package/dist/src/bitgo/parseInput.d.ts.map +1 -1
  40. package/dist/src/bitgo/parseInput.js +109 -25
  41. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
  42. package/dist/src/bitgo/psbt/fromHalfSigned.js +9 -6
  43. package/dist/src/bitgo/signature.d.ts +3 -3
  44. package/dist/src/bitgo/signature.d.ts.map +1 -1
  45. package/dist/src/bitgo/signature.js +48 -16
  46. package/dist/src/bitgo/transaction.d.ts +18 -3
  47. package/dist/src/bitgo/transaction.d.ts.map +1 -1
  48. package/dist/src/bitgo/transaction.js +28 -15
  49. package/dist/src/bitgo/types.d.ts +2 -0
  50. package/dist/src/bitgo/types.d.ts.map +1 -1
  51. package/dist/src/bitgo/types.js +1 -1
  52. package/dist/src/bitgo/wallet/Psbt.d.ts +104 -12
  53. package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
  54. package/dist/src/bitgo/wallet/Psbt.js +285 -70
  55. package/dist/src/bitgo/wallet/Unspent.d.ts +28 -0
  56. package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
  57. package/dist/src/bitgo/wallet/Unspent.js +172 -68
  58. package/dist/src/bitgo/wallet/WalletOutput.d.ts +17 -1
  59. package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
  60. package/dist/src/bitgo/wallet/WalletOutput.js +64 -23
  61. package/dist/src/bitgo/wallet/chains.d.ts +2 -2
  62. package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
  63. package/dist/src/bitgo/wallet/chains.js +1 -1
  64. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -1
  65. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
  66. package/dist/src/bitgo/zcash/ZcashPsbt.js +6 -14
  67. package/dist/src/musig.d.ts +0 -1
  68. package/dist/src/musig.d.ts.map +1 -1
  69. package/dist/src/musig.js +15 -29
  70. package/dist/src/networks.d.ts +1 -2
  71. package/dist/src/networks.d.ts.map +1 -1
  72. package/dist/src/networks.js +22 -29
  73. package/dist/src/noble_ecc.d.ts.map +1 -1
  74. package/dist/src/noble_ecc.js +7 -3
  75. package/dist/src/payments/p2tr.d.ts.map +1 -1
  76. package/dist/src/payments/p2tr.js +15 -9
  77. package/dist/src/taproot.d.ts +16 -0
  78. package/dist/src/taproot.d.ts.map +1 -1
  79. package/dist/src/taproot.js +44 -2
  80. package/dist/src/testutil/index.d.ts +2 -0
  81. package/dist/src/testutil/index.d.ts.map +1 -1
  82. package/dist/src/testutil/index.js +3 -1
  83. package/dist/src/testutil/keys.d.ts +3 -0
  84. package/dist/src/testutil/keys.d.ts.map +1 -1
  85. package/dist/src/testutil/keys.js +17 -2
  86. package/dist/src/testutil/mock.d.ts +1 -1
  87. package/dist/src/testutil/mock.d.ts.map +1 -1
  88. package/dist/src/testutil/mock.js +12 -4
  89. package/dist/src/testutil/psbt.d.ts +89 -0
  90. package/dist/src/testutil/psbt.d.ts.map +1 -0
  91. package/dist/src/testutil/psbt.js +150 -0
  92. package/dist/src/testutil/transaction.d.ts +70 -0
  93. package/dist/src/testutil/transaction.d.ts.map +1 -0
  94. package/dist/src/testutil/transaction.js +107 -0
  95. package/package.json +6 -6
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withUnsafeNonSegwit = exports.isPsbt = exports.isPsbtInputFinalized = exports.getPsbtInputSignatureCount = exports.getPsbtInputProprietaryKeyVals = exports.ProprietaryKeySubtype = exports.PSBT_PROPRIETARY_IDENTIFIER = void 0;
4
+ const proprietaryKeyVal_1 = require("bip174/src/lib/proprietaryKeyVal");
5
+ /**
6
+ * bitgo proprietary key identifier
7
+ */
8
+ exports.PSBT_PROPRIETARY_IDENTIFIER = 'BITGO';
9
+ /**
10
+ * subtype for proprietary keys that bitgo uses
11
+ */
12
+ var ProprietaryKeySubtype;
13
+ (function (ProprietaryKeySubtype) {
14
+ ProprietaryKeySubtype[ProprietaryKeySubtype["ZEC_CONSENSUS_BRANCH_ID"] = 0] = "ZEC_CONSENSUS_BRANCH_ID";
15
+ ProprietaryKeySubtype[ProprietaryKeySubtype["MUSIG2_PARTICIPANT_PUB_KEYS"] = 1] = "MUSIG2_PARTICIPANT_PUB_KEYS";
16
+ ProprietaryKeySubtype[ProprietaryKeySubtype["MUSIG2_PUB_NONCE"] = 2] = "MUSIG2_PUB_NONCE";
17
+ ProprietaryKeySubtype[ProprietaryKeySubtype["MUSIG2_PARTIAL_SIG"] = 3] = "MUSIG2_PARTIAL_SIG";
18
+ })(ProprietaryKeySubtype = exports.ProprietaryKeySubtype || (exports.ProprietaryKeySubtype = {}));
19
+ /**
20
+ * Search any data from psbt proprietary key value against keydata.
21
+ * Default identifierEncoding is utf-8 for identifier.
22
+ */
23
+ function getPsbtInputProprietaryKeyVals(input, keySearch) {
24
+ if (!input.unknownKeyVals?.length) {
25
+ return [];
26
+ }
27
+ if (keySearch && keySearch.subtype === undefined && Buffer.isBuffer(keySearch.keydata)) {
28
+ throw new Error('invalid proprietary key search filter combination. subtype is required');
29
+ }
30
+ const keyVals = input.unknownKeyVals.map(({ key, value }, i) => {
31
+ return { key: proprietaryKeyVal_1.decodeProprietaryKey(key), value };
32
+ });
33
+ return keyVals.filter((keyVal) => {
34
+ return (keySearch === undefined ||
35
+ (keySearch.identifier === keyVal.key.identifier &&
36
+ (keySearch.subtype === undefined ||
37
+ (keySearch.subtype === keyVal.key.subtype &&
38
+ (!Buffer.isBuffer(keySearch.keydata) || keySearch.keydata.equals(keyVal.key.keydata))))));
39
+ });
40
+ }
41
+ exports.getPsbtInputProprietaryKeyVals = getPsbtInputProprietaryKeyVals;
42
+ /**
43
+ * @return partialSig/tapScriptSig/MUSIG2_PARTIAL_SIG count iff input is not finalized
44
+ */
45
+ function getPsbtInputSignatureCount(input) {
46
+ if (isPsbtInputFinalized(input)) {
47
+ throw new Error('Input is already finalized');
48
+ }
49
+ return Math.max(Array.isArray(input.partialSig) ? input.partialSig.length : 0, Array.isArray(input.tapScriptSig) ? input.tapScriptSig.length : 0, getPsbtInputProprietaryKeyVals(input, {
50
+ identifier: exports.PSBT_PROPRIETARY_IDENTIFIER,
51
+ subtype: ProprietaryKeySubtype.MUSIG2_PARTIAL_SIG,
52
+ }).length);
53
+ }
54
+ exports.getPsbtInputSignatureCount = getPsbtInputSignatureCount;
55
+ /**
56
+ * @return true iff PSBT input is finalized
57
+ */
58
+ function isPsbtInputFinalized(input) {
59
+ return Buffer.isBuffer(input.finalScriptSig) || Buffer.isBuffer(input.finalScriptWitness);
60
+ }
61
+ exports.isPsbtInputFinalized = isPsbtInputFinalized;
62
+ /**
63
+ * @return true iff data starts with magic PSBT byte sequence
64
+ * @param data byte array or hex string
65
+ * */
66
+ function isPsbt(data) {
67
+ // https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#specification
68
+ // 0x70736274 - ASCII for 'psbt'. 0xff - separator
69
+ if (typeof data === 'string') {
70
+ if (data.length < 10) {
71
+ return false;
72
+ }
73
+ data = Buffer.from(data.slice(0, 10), 'hex');
74
+ }
75
+ return 5 <= data.length && data.readUInt32BE(0) === 0x70736274 && data.readUInt8(4) === 0xff;
76
+ }
77
+ exports.isPsbt = isPsbt;
78
+ /**
79
+ * This function allows signing or validating a psbt with non-segwit inputs those do not contain nonWitnessUtxo.
80
+ */
81
+ function withUnsafeNonSegwit(psbt, fn, unsafe = true) {
82
+ psbt.__CACHE.__UNSAFE_SIGN_NONSEGWIT = unsafe;
83
+ try {
84
+ return fn();
85
+ }
86
+ finally {
87
+ psbt.__CACHE.__UNSAFE_SIGN_NONSEGWIT = false;
88
+ }
89
+ }
90
+ exports.withUnsafeNonSegwit = withUnsafeNonSegwit;
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHNidFV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vUHNidFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQXdGO0FBSXhGOztHQUVHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRyxPQUFPLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0IsdUdBQThCLENBQUE7SUFDOUIsK0dBQWtDLENBQUE7SUFDbEMseUZBQXVCLENBQUE7SUFDdkIsNkZBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBS2hDO0FBdUJEOzs7R0FHRztBQUNILFNBQWdCLDhCQUE4QixDQUM1QyxLQUFnQixFQUNoQixTQUFnQztJQUVoQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUU7UUFDakMsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3RGLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztLQUMzRjtJQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSx3Q0FBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQy9CLE9BQU8sQ0FDTCxTQUFTLEtBQUssU0FBUztZQUN2QixDQUFDLFNBQVMsQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVO2dCQUM3QyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEtBQUssU0FBUztvQkFDOUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTzt3QkFDdkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQXRCRCx3RUFzQkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDBCQUEwQixDQUFDLEtBQWdCO0lBQ3pELElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUNiLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM3RCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakUsOEJBQThCLENBQUMsS0FBSyxFQUFFO1FBQ3BDLFVBQVUsRUFBRSxtQ0FBMkI7UUFDdkMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLGtCQUFrQjtLQUNsRCxDQUFDLENBQUMsTUFBTSxDQUNWLENBQUM7QUFDSixDQUFDO0FBWkQsZ0VBWUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLEtBQWdCO0lBQ25ELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUM1RixDQUFDO0FBRkQsb0RBRUM7QUFFRDs7O0tBR0s7QUFDTCxTQUFnQixNQUFNLENBQUMsSUFBcUI7SUFDMUMsK0VBQStFO0lBQy9FLGtEQUFrRDtJQUNsRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM5QztJQUNELE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7QUFDL0YsQ0FBQztBQVZELHdCQVVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBSSxJQUFVLEVBQUUsRUFBVyxFQUFFLE1BQU0sR0FBRyxJQUFJO0lBQzFFLElBQVksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDO0lBQ3ZELElBQUk7UUFDRixPQUFPLEVBQUUsRUFBRSxDQUFDO0tBQ2I7WUFBUztRQUNQLElBQVksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0tBQ3ZEO0FBQ0gsQ0FBQztBQVBELGtEQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlUHJvcHJpZXRhcnlLZXksIFByb3ByaWV0YXJ5S2V5IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvcHJvcHJpZXRhcnlLZXlWYWwnO1xuaW1wb3J0IHsgUHNidElucHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQc2J0IH0gZnJvbSAnYml0Y29pbmpzLWxpYi9zcmMvcHNidCc7XG5cbi8qKlxuICogYml0Z28gcHJvcHJpZXRhcnkga2V5IGlkZW50aWZpZXJcbiAqL1xuZXhwb3J0IGNvbnN0IFBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUiA9ICdCSVRHTyc7XG5cbi8qKlxuICogc3VidHlwZSBmb3IgcHJvcHJpZXRhcnkga2V5cyB0aGF0IGJpdGdvIHVzZXNcbiAqL1xuZXhwb3J0IGVudW0gUHJvcHJpZXRhcnlLZXlTdWJ0eXBlIHtcbiAgWkVDX0NPTlNFTlNVU19CUkFOQ0hfSUQgPSAweDAwLFxuICBNVVNJRzJfUEFSVElDSVBBTlRfUFVCX0tFWVMgPSAweDAxLFxuICBNVVNJRzJfUFVCX05PTkNFID0gMHgwMixcbiAgTVVTSUcyX1BBUlRJQUxfU0lHID0gMHgwMyxcbn1cblxuLyoqXG4gKiBQc2J0IHByb3ByaWV0YXJ5IGtleWRhdGEgb2JqZWN0LlxuICogPGNvbXBhY3Qgc2l6ZSB1aW50IGlkZW50aWZpZXIgbGVuZ3RoPiA8Ynl0ZXMgaWRlbnRpZmllcj4gPGNvbXBhY3Qgc2l6ZSB1aW50IHN1YnR5cGU+IDxieXRlcyBzdWJrZXlkYXRhPlxuICogPT4gPGJ5dGVzIHZhbHVlZGF0YT5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wcmlldGFyeUtleVZhbHVlIHtcbiAga2V5OiBQcm9wcmlldGFyeUtleTtcbiAgdmFsdWU6IEJ1ZmZlcjtcbn1cblxuLyoqXG4gKiBQc2J0IHByb3ByaWV0YXJ5IGtleWRhdGEgb2JqZWN0IHNlYXJjaCBmaWVsZHMuXG4gKiA8Y29tcGFjdCBzaXplIHVpbnQgaWRlbnRpZmllciBsZW5ndGg+IDxieXRlcyBpZGVudGlmaWVyPiA8Y29tcGFjdCBzaXplIHVpbnQgc3VidHlwZT4gPGJ5dGVzIHN1YmtleWRhdGE+XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHJpZXRhcnlLZXlTZWFyY2gge1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN1YnR5cGU/OiBudW1iZXI7XG4gIGtleWRhdGE/OiBCdWZmZXI7XG4gIGlkZW50aWZpZXJFbmNvZGluZz86IEJ1ZmZlckVuY29kaW5nO1xufVxuXG4vKipcbiAqIFNlYXJjaCBhbnkgZGF0YSBmcm9tIHBzYnQgcHJvcHJpZXRhcnkga2V5IHZhbHVlIGFnYWluc3Qga2V5ZGF0YS5cbiAqIERlZmF1bHQgaWRlbnRpZmllckVuY29kaW5nIGlzIHV0Zi04IGZvciBpZGVudGlmaWVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidElucHV0UHJvcHJpZXRhcnlLZXlWYWxzKFxuICBpbnB1dDogUHNidElucHV0LFxuICBrZXlTZWFyY2g/OiBQcm9wcmlldGFyeUtleVNlYXJjaFxuKTogUHJvcHJpZXRhcnlLZXlWYWx1ZVtdIHtcbiAgaWYgKCFpbnB1dC51bmtub3duS2V5VmFscz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChrZXlTZWFyY2ggJiYga2V5U2VhcmNoLnN1YnR5cGUgPT09IHVuZGVmaW5lZCAmJiBCdWZmZXIuaXNCdWZmZXIoa2V5U2VhcmNoLmtleWRhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHByb3ByaWV0YXJ5IGtleSBzZWFyY2ggZmlsdGVyIGNvbWJpbmF0aW9uLiBzdWJ0eXBlIGlzIHJlcXVpcmVkJyk7XG4gIH1cbiAgY29uc3Qga2V5VmFscyA9IGlucHV0LnVua25vd25LZXlWYWxzLm1hcCgoeyBrZXksIHZhbHVlIH0sIGkpID0+IHtcbiAgICByZXR1cm4geyBrZXk6IGRlY29kZVByb3ByaWV0YXJ5S2V5KGtleSksIHZhbHVlIH07XG4gIH0pO1xuICByZXR1cm4ga2V5VmFscy5maWx0ZXIoKGtleVZhbCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBrZXlTZWFyY2ggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgKGtleVNlYXJjaC5pZGVudGlmaWVyID09PSBrZXlWYWwua2V5LmlkZW50aWZpZXIgJiZcbiAgICAgICAgKGtleVNlYXJjaC5zdWJ0eXBlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoa2V5U2VhcmNoLnN1YnR5cGUgPT09IGtleVZhbC5rZXkuc3VidHlwZSAmJlxuICAgICAgICAgICAgKCFCdWZmZXIuaXNCdWZmZXIoa2V5U2VhcmNoLmtleWRhdGEpIHx8IGtleVNlYXJjaC5rZXlkYXRhLmVxdWFscyhrZXlWYWwua2V5LmtleWRhdGEpKSkpKVxuICAgICk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEByZXR1cm4gcGFydGlhbFNpZy90YXBTY3JpcHRTaWcvTVVTSUcyX1BBUlRJQUxfU0lHIGNvdW50IGlmZiBpbnB1dCBpcyBub3QgZmluYWxpemVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0SW5wdXRTaWduYXR1cmVDb3VudChpbnB1dDogUHNidElucHV0KTogbnVtYmVyIHtcbiAgaWYgKGlzUHNidElucHV0RmluYWxpemVkKGlucHV0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgaXMgYWxyZWFkeSBmaW5hbGl6ZWQnKTtcbiAgfVxuICByZXR1cm4gTWF0aC5tYXgoXG4gICAgQXJyYXkuaXNBcnJheShpbnB1dC5wYXJ0aWFsU2lnKSA/IGlucHV0LnBhcnRpYWxTaWcubGVuZ3RoIDogMCxcbiAgICBBcnJheS5pc0FycmF5KGlucHV0LnRhcFNjcmlwdFNpZykgPyBpbnB1dC50YXBTY3JpcHRTaWcubGVuZ3RoIDogMCxcbiAgICBnZXRQc2J0SW5wdXRQcm9wcmlldGFyeUtleVZhbHMoaW5wdXQsIHtcbiAgICAgIGlkZW50aWZpZXI6IFBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICAgIHN1YnR5cGU6IFByb3ByaWV0YXJ5S2V5U3VidHlwZS5NVVNJRzJfUEFSVElBTF9TSUcsXG4gICAgfSkubGVuZ3RoXG4gICk7XG59XG5cbi8qKlxuICogQHJldHVybiB0cnVlIGlmZiBQU0JUIGlucHV0IGlzIGZpbmFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQc2J0SW5wdXRGaW5hbGl6ZWQoaW5wdXQ6IFBzYnRJbnB1dCk6IGJvb2xlYW4ge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKGlucHV0LmZpbmFsU2NyaXB0U2lnKSB8fCBCdWZmZXIuaXNCdWZmZXIoaW5wdXQuZmluYWxTY3JpcHRXaXRuZXNzKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHRydWUgaWZmIGRhdGEgc3RhcnRzIHdpdGggbWFnaWMgUFNCVCBieXRlIHNlcXVlbmNlXG4gKiBAcGFyYW0gZGF0YSBieXRlIGFycmF5IG9yIGhleCBzdHJpbmdcbiAqICovXG5leHBvcnQgZnVuY3Rpb24gaXNQc2J0KGRhdGE6IEJ1ZmZlciB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMTc0Lm1lZGlhd2lraSNzcGVjaWZpY2F0aW9uXG4gIC8vIDB4NzA3MzYyNzQgLSBBU0NJSSBmb3IgJ3BzYnQnLiAweGZmIC0gc2VwYXJhdG9yXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPCAxMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YS5zbGljZSgwLCAxMCksICdoZXgnKTtcbiAgfVxuICByZXR1cm4gNSA8PSBkYXRhLmxlbmd0aCAmJiBkYXRhLnJlYWRVSW50MzJCRSgwKSA9PT0gMHg3MDczNjI3NCAmJiBkYXRhLnJlYWRVSW50OCg0KSA9PT0gMHhmZjtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyBzaWduaW5nIG9yIHZhbGlkYXRpbmcgYSBwc2J0IHdpdGggbm9uLXNlZ3dpdCBpbnB1dHMgdGhvc2UgZG8gbm90IGNvbnRhaW4gbm9uV2l0bmVzc1V0eG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVW5zYWZlTm9uU2Vnd2l0PFQ+KHBzYnQ6IFBzYnQsIGZuOiAoKSA9PiBULCB1bnNhZmUgPSB0cnVlKTogVCB7XG4gIChwc2J0IGFzIGFueSkuX19DQUNIRS5fX1VOU0FGRV9TSUdOX05PTlNFR1dJVCA9IHVuc2FmZTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAocHNidCBhcyBhbnkpLl9fQ0FDSEUuX19VTlNBRkVfU0lHTl9OT05TRUdXSVQgPSBmYWxzZTtcbiAgfVxufVxuIl19
@@ -1,14 +1,20 @@
1
1
  /// <reference types="node" />
2
2
  import { Psbt as PsbtBase } from 'bip174';
3
+ import { Bip32Derivation, PsbtInput } from 'bip174/src/lib/interfaces';
4
+ import { BIP32Interface } from 'bip32';
3
5
  import { HDSigner, Psbt, TxOutput, Network } from '..';
4
6
  import { UtxoTransaction } from './UtxoTransaction';
5
- import { ProprietaryKey } from 'bip174/src/lib/proprietaryKeyVal';
6
- export declare const PSBT_PROPRIETARY_IDENTIFIER = "BITGO";
7
- export declare enum ProprietaryKeySubtype {
8
- ZEC_CONSENSUS_BRANCH_ID = 0,
9
- MUSIG2_PARTICIPANT_PUB_KEYS = 1,
10
- MUSIG2_PUB_NONCE = 2
11
- }
7
+ import { Triple } from './types';
8
+ import { ProprietaryKeySearch, ProprietaryKeyValue } from './PsbtUtil';
9
+ declare type SignatureParams = {
10
+ /** When true, and add the second (last) nonce and signature for a taproot key
11
+ * path spend deterministically. Throws an error if done for the first nonce/signature
12
+ * of a taproot keypath spend. Ignore for all other input types.
13
+ */
14
+ deterministic: boolean;
15
+ /** Allowed sighash types */
16
+ sighashTypes: number[];
17
+ };
12
18
  export interface HDTaprootSigner extends HDSigner {
13
19
  /**
14
20
  * The path string must match /^m(\/\d+'?)+$/
@@ -21,10 +27,28 @@ export interface HDTaprootSigner extends HDSigner {
21
27
  */
22
28
  signSchnorr(hash: Buffer): Buffer;
23
29
  }
30
+ /**
31
+ * HD signer object for taproot p2tr musig2 key path sign
32
+ */
33
+ export interface HDTaprootMusig2Signer extends HDSigner {
34
+ /**
35
+ * Musig2 requires signer's 32-bytes private key to be passed to it.
36
+ */
37
+ privateKey: Buffer;
38
+ /**
39
+ * The path string must match /^m(\/\d+'?)+$/
40
+ * ex. m/44'/0'/0'/1/23 levels with ' must be hard derivations
41
+ */
42
+ derivePath(path: string): HDTaprootMusig2Signer;
43
+ }
24
44
  export interface SchnorrSigner {
25
45
  publicKey: Buffer;
26
46
  signSchnorr(hash: Buffer): Buffer;
27
47
  }
48
+ export interface Musig2Signer {
49
+ publicKey: Buffer;
50
+ privateKey: Buffer;
51
+ }
28
52
  export interface TaprootSigner {
29
53
  leafHashes: Buffer[];
30
54
  signer: SchnorrSigner;
@@ -34,40 +58,33 @@ export interface PsbtOpts {
34
58
  maximumFeeRate?: number;
35
59
  bip32PathsAbsolute?: boolean;
36
60
  }
37
- /**
38
- * Psbt proprietary keydata object.
39
- * <compact size uint identifier length> <bytes identifier> <compact size uint subtype> <bytes subkeydata>
40
- * => <bytes valuedata>
41
- */
42
- export interface ProprietaryKeyValueData {
43
- key: ProprietaryKey;
44
- value: Buffer;
45
- }
46
- /**
47
- * Psbt proprietary keydata object search fields.
48
- * <compact size uint identifier length> <bytes identifier> <compact size uint subtype> <bytes subkeydata>
49
- */
50
- export interface ProprietaryKeySearch {
51
- identifier: string;
52
- subtype: number;
53
- keydata?: Buffer;
54
- identifierEncoding?: BufferEncoding;
55
- }
56
61
  export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransaction<bigint>> extends Psbt {
62
+ private nonceStore;
57
63
  protected static transactionFromBuffer(buffer: Buffer, network: Network): UtxoTransaction<bigint>;
58
64
  static createPsbt(opts: PsbtOpts, data?: PsbtBase): UtxoPsbt;
59
65
  static fromBuffer(buffer: Buffer, opts: PsbtOpts): UtxoPsbt;
60
66
  static fromHex(data: string, opts: PsbtOpts): UtxoPsbt;
61
- get network(): Network;
62
- toHex(): string;
63
67
  /**
64
- * @return true iff PSBT input is finalized
68
+ * @param parent - Parent key. Matched with `bip32Derivations` using `fingerprint` property.
69
+ * @param bip32Derivations - possible derivations for input or output
70
+ * @param ignoreY - when true, ignore the y coordinate when matching public keys
71
+ * @return derived bip32 node if matching derivation is found, undefined if none is found
72
+ * @throws Error if more than one match is found
65
73
  */
66
- isInputFinalized(inputIndex: number): boolean;
74
+ static deriveKeyPair(parent: BIP32Interface, bip32Derivations: Bip32Derivation[], { ignoreY }: {
75
+ ignoreY: boolean;
76
+ }): BIP32Interface | undefined;
77
+ static deriveKeyPairForInput(bip32: BIP32Interface, input: PsbtInput): Buffer | undefined;
78
+ get network(): Network;
79
+ toHex(): string;
67
80
  /**
68
- * @return partialSig/tapScriptSig count iff input is not finalized
81
+ * It is expensive to attempt to compute every output address using psbt.txOutputs[outputIndex]
82
+ * to then just get the script. Here, we are doing the same thing as what txOutputs() does in
83
+ * bitcoinjs-lib, but without iterating over each output.
84
+ * @param outputIndex
85
+ * @returns output script at the given index
69
86
  */
70
- getSignatureCount(inputIndex: number): number;
87
+ getOutputScript(outputIndex: number): Buffer;
71
88
  getNonWitnessPreviousTxids(): string[];
72
89
  addNonWitnessUtxos(txBufs: Record<string, Buffer>): this;
73
90
  static fromTransaction(transaction: UtxoTransaction<bigint>, prevOutputs: TxOutput<bigint>[]): UtxoPsbt;
@@ -75,11 +92,31 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
75
92
  protected static newTransaction(network: Network): UtxoTransaction<bigint>;
76
93
  protected get tx(): Tx;
77
94
  protected checkForSignatures(propName?: string): void;
95
+ /**
96
+ * @returns true if the input at inputIndex is a taproot key path.
97
+ * Checks for presence of minimum required key path input fields and absence of any script path only input fields.
98
+ */
99
+ isTaprootKeyPathInput(inputIndex: number): boolean;
100
+ /**
101
+ * @returns true if the input at inputIndex is a taproot script path.
102
+ * Checks for presence of minimum required script path input fields and absence of any key path only input fields.
103
+ */
104
+ isTaprootScriptPathInput(inputIndex: number): boolean;
105
+ /**
106
+ * @returns true if the input at inputIndex is a taproot
107
+ */
108
+ isTaprootInput(inputIndex: number): boolean;
109
+ private isMultisigTaprootScript;
78
110
  /**
79
111
  * Mostly copied from bitcoinjs-lib/ts_src/psbt.ts
80
112
  */
81
113
  finalizeAllInputs(): this;
82
114
  finalizeTaprootInput(inputIndex: number): this;
115
+ /**
116
+ * Finalizes a taproot musig2 input by aggregating all partial sigs.
117
+ * IMPORTANT: Always call validate* function before finalizing.
118
+ */
119
+ finalizeTaprootMusig2Input(inputIndex: number): this;
83
120
  finalizeTapInputWithSingleLeafScriptAndSignature(inputIndex: number): this;
84
121
  /**
85
122
  * Mostly copied from bitcoinjs-lib/ts_src/psbt.ts
@@ -89,44 +126,140 @@ export declare class UtxoPsbt<Tx extends UtxoTransaction<bigint> = UtxoTransacti
89
126
  * validator.
90
127
  */
91
128
  validateSignaturesOfAllInputs(): boolean;
129
+ /**
130
+ * @returns true iff any matching valid signature is found for a derived pub key from given HD key pair.
131
+ */
132
+ validateSignaturesOfInputHD(inputIndex: number, hdKeyPair: BIP32Interface): boolean;
133
+ /**
134
+ * @returns true iff any valid signature(s) are found from bip32 data of PSBT or for given pub key.
135
+ */
136
+ validateSignaturesOfInputCommon(inputIndex: number, pubkey?: Buffer): boolean;
137
+ private getMusig2SessionKey;
138
+ /**
139
+ * @returns true for following cases.
140
+ * If valid musig2 partial signatures exists for both 2 keys, it will also verify aggregated sig
141
+ * for aggregated tweaked key (output key), otherwise only verifies partial sig.
142
+ * If pubkey is passed in input, it will check sig only for that pubkey,
143
+ * if no sig exits for such key, throws error.
144
+ * For invalid state of input data, it will throw errors.
145
+ */
146
+ validateTaprootMusig2SignaturesOfInput(inputIndex: number, pubkey?: Buffer): boolean;
92
147
  validateTaprootSignaturesOfInput(inputIndex: number, pubkey?: Buffer): boolean;
93
148
  /**
149
+ * @param inputIndex
150
+ * @param rootNodes optional input root bip32 nodes to verify with. If it is not provided, globalXpub will be used.
94
151
  * @return array of boolean values. True when corresponding index in `publicKeys` has signed the transaction.
95
152
  * If no signature in the tx or no public key matching signature, the validation is considered as false.
96
153
  */
97
- getSignatureValidationArray(inputIndex: number): boolean[];
154
+ getSignatureValidationArray(inputIndex: number, { rootNodes }?: {
155
+ rootNodes?: Triple<BIP32Interface>;
156
+ }): Triple<boolean>;
98
157
  /**
99
158
  * Mostly copied from bitcoinjs-lib/ts_src/psbt.ts
100
159
  */
101
- signAllInputsHD(hdKeyPair: HDTaprootSigner, sighashTypes?: number[]): this;
160
+ signAllInputsHD(hdKeyPair: HDTaprootSigner | HDTaprootMusig2Signer, params?: number[] | Partial<SignatureParams>): this;
102
161
  /**
103
162
  * Mostly copied from bitcoinjs-lib/ts_src/psbt.ts:signInputHD
104
163
  */
105
- signTaprootInputHD(inputIndex: number, hdKeyPair: HDTaprootSigner, sighashTypes?: number[]): this;
164
+ signTaprootInputHD(inputIndex: number, hdKeyPair: HDTaprootSigner | HDTaprootMusig2Signer, { sighashTypes, deterministic }?: {
165
+ sighashTypes?: number[] | undefined;
166
+ deterministic?: boolean | undefined;
167
+ }): this;
168
+ signInputHD(inputIndex: number, hdKeyPair: HDTaprootSigner | HDTaprootMusig2Signer, params?: number[] | Partial<SignatureParams>): this;
169
+ private getMusig2Participants;
170
+ private getMusig2Nonces;
171
+ /**
172
+ * Signs p2tr musig2 key path input with 2 aggregated keys.
173
+ *
174
+ * Note: Only can sign deterministically as the cosigner
175
+ * @param inputIndex
176
+ * @param signer - XY public key and private key are required
177
+ * @param sighashTypes
178
+ * @param deterministic If true, sign the musig input deterministically
179
+ */
180
+ signTaprootMusig2Input(inputIndex: number, signer: Musig2Signer, { sighashTypes, deterministic }?: {
181
+ sighashTypes?: number[] | undefined;
182
+ deterministic?: boolean | undefined;
183
+ }): this;
106
184
  signTaprootInput(inputIndex: number, signer: SchnorrSigner, leafHashes: Buffer[], sighashTypes?: number[]): this;
185
+ private getTaprootOutputScript;
107
186
  private getTaprootHashForSig;
108
187
  /**
109
- * @retuns true iff the input is taproot.
188
+ * Adds proprietary key value pair to PSBT input.
189
+ * Default identifierEncoding is utf-8 for identifier.
110
190
  */
111
- isTaprootInput(inputIndex: number): boolean;
191
+ addProprietaryKeyValToInput(inputIndex: number, keyValueData: ProprietaryKeyValue): this;
112
192
  /**
113
- * @returns hash and hashType for taproot input at inputIndex
114
- * @throws error if input at inputIndex is not a taproot input
193
+ * Adds or updates (if exists) proprietary key value pair to PSBT input.
194
+ * Default identifierEncoding is utf-8 for identifier.
115
195
  */
116
- getTaprootHashForSigChecked(inputIndex: number, sighashTypes?: number[], leafHash?: Buffer): {
117
- hash: Buffer;
118
- sighashType: number;
119
- };
196
+ addOrUpdateProprietaryKeyValToInput(inputIndex: number, keyValueData: ProprietaryKeyValue): this;
120
197
  /**
121
- * Adds proprietary key value pair to PSBT input.
198
+ * To search any data from proprietary key value against keydata.
122
199
  * Default identifierEncoding is utf-8 for identifier.
123
200
  */
124
- addProprietaryKeyValToInput(inputIndex: number, keyValueData: ProprietaryKeyValueData): this;
201
+ getProprietaryKeyVals(inputIndex: number, keySearch?: ProprietaryKeySearch): ProprietaryKeyValue[];
125
202
  /**
126
- * To search any data from proprietary key value againts keydata.
203
+ * To delete any data from proprietary key value.
127
204
  * Default identifierEncoding is utf-8 for identifier.
128
205
  */
129
- getProprietaryKeyVals(inputIndex: number, keySearch?: ProprietaryKeySearch): ProprietaryKeyValueData[];
206
+ deleteProprietaryKeyVals(inputIndex: number, keysToDelete?: ProprietaryKeySearch): this;
207
+ private createMusig2NonceForInput;
208
+ private setMusig2NoncesInner;
209
+ /**
210
+ * Generates and sets MuSig2 nonce to taproot key path input at inputIndex.
211
+ * If input is not a taproot key path, no action.
212
+ *
213
+ * @param inputIndex input index
214
+ * @param keyPair derived key pair
215
+ * @param sessionId Optional extra entropy. If provided it must either be a counter unique to this secret key,
216
+ * (converted to an array of 32 bytes), or 32 uniformly random bytes.
217
+ * @param deterministic If true, set the cosigner nonce deterministically
218
+ */
219
+ setInputMusig2Nonce(inputIndex: number, derivedKeyPair: BIP32Interface, params?: {
220
+ sessionId?: Buffer;
221
+ deterministic?: boolean;
222
+ }): this;
223
+ /**
224
+ * Generates and sets MuSig2 nonce to taproot key path input at inputIndex.
225
+ * If input is not a taproot key path, no action.
226
+ *
227
+ * @param inputIndex input index
228
+ * @param keyPair HD root key pair
229
+ * @param sessionId Optional extra entropy. If provided it must either be a counter unique to this secret key,
230
+ * (converted to an array of 32 bytes), or 32 uniformly random bytes.
231
+ * @param deterministic If true, set the cosigner nonce deterministically
232
+ */
233
+ setInputMusig2NonceHD(inputIndex: number, keyPair: BIP32Interface, params?: {
234
+ sessionId?: Buffer;
235
+ deterministic?: boolean;
236
+ }): this;
237
+ /**
238
+ * Generates and sets MuSig2 nonce to all taproot key path inputs. Other inputs will be skipped.
239
+ *
240
+ * @param inputIndex input index
241
+ * @param keyPair derived key pair
242
+ * @param sessionId Optional extra entropy. If provided it must either be a counter unique to this secret key,
243
+ * (converted to an array of 32 bytes), or 32 uniformly random bytes.
244
+ */
245
+ setAllInputsMusig2Nonce(keyPair: BIP32Interface, params?: {
246
+ sessionId?: Buffer;
247
+ deterministic?: boolean;
248
+ }): this;
249
+ /**
250
+ * Generates and sets MuSig2 nonce to all taproot key path inputs. Other inputs will be skipped.
251
+ *
252
+ * @param inputIndex input index
253
+ * @param keyPair HD root key pair
254
+ * @param sessionId Optional extra entropy. If provided it must either be a counter unique to this secret key,
255
+ * (converted to an array of 32 bytes), or 32 uniformly random bytes.
256
+ */
257
+ setAllInputsMusig2NonceHD(keyPair: BIP32Interface, params?: {
258
+ sessionId?: Buffer;
259
+ deterministic?: boolean;
260
+ }): this;
130
261
  clone(): this;
262
+ extractTransaction(disableFeeCheck?: boolean): UtxoTransaction<bigint>;
131
263
  }
264
+ export {};
132
265
  //# sourceMappingURL=UtxoPsbt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UtxoPsbt.d.ts","sourceRoot":"","sources":["../../../src/bitgo/UtxoPsbt.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAK1C,OAAO,EAEL,QAAQ,EACR,IAAI,EAGJ,QAAQ,EACR,OAAO,EAGR,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD,OAAO,EAA8C,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAE9G,eAAO,MAAM,2BAA2B,UAAU,CAAC;AAEnD,oBAAY,qBAAqB;IAC/B,uBAAuB,IAAO;IAC9B,2BAA2B,IAAO;IAClC,gBAAgB,IAAO;CACxB;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IAC1C;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,cAAc,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,cAAc,CAAC;CACrC;AAKD,qBAAa,QAAQ,CAAC,EAAE,SAAS,eAAe,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAE,SAAQ,IAAI;IAC9F,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;IAIjG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAO5D,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAa3D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAItD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAK7C;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAW7C,0BAA0B,IAAI,MAAM,EAAE;IActC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAiBxD,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ;IAsBvG,aAAa,IAAI,eAAe,CAAC,MAAM,CAAC;IAIxC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;IAI1E,SAAS,KAAK,EAAE,IAAI,EAAE,CAErB;IAED,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQrD;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA6B9C,gDAAgD,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAuB1E;;;;;;OAMG;IACH,6BAA6B,IAAI,OAAO;IAUxC,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAmC9E;;;OAGG;IACH,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,EAAE;IA2B1D;;OAEG;IACH,eAAe,CACb,SAAS,EAAE,eAAe,EAC1B,YAAY,GAAE,MAAM,EAA2D,GAC9E,IAAI;IAwBP;;OAEG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,eAAe,EAC1B,YAAY,GAAE,MAAM,EAA2D,GAC9E,IAAI;IA6BP,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,GAAE,MAAM,EAA2D,GAC9E,IAAI;IAsCP,OAAO,CAAC,oBAAoB;IAkD5B;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAmB3C;;;OAGG;IACH,2BAA2B,CACzB,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAM,EAA2D,EAC/E,QAAQ,CAAC,EAAE,MAAM,GAChB;QACD,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB;IAOD;;;OAGG;IACH,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,uBAAuB,GAAG,IAAI;IAO5F;;;OAGG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,oBAAoB,GAAG,uBAAuB,EAAE;IAkBtG,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"UtxoPsbt.d.ts","sourceRoot":"","sources":["../../../src/bitgo/UtxoPsbt.ts"],"names":[],"mappings":"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"}