@bitgo/utxo-bin 2.11.0 → 2.13.0

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.
Files changed (55) hide show
  1. package/README.md +9 -1
  2. package/dist/bin/index.js +9 -2
  3. package/dist/src/InputParser.d.ts +44 -0
  4. package/dist/src/InputParser.d.ts.map +1 -0
  5. package/dist/src/InputParser.js +239 -0
  6. package/dist/src/OutputParser.d.ts +24 -0
  7. package/dist/src/OutputParser.d.ts.map +1 -0
  8. package/dist/src/OutputParser.js +52 -0
  9. package/dist/src/Parser.d.ts +7 -1
  10. package/dist/src/Parser.d.ts.map +1 -1
  11. package/dist/src/Parser.js +26 -2
  12. package/dist/src/ParserTx.d.ts +28 -0
  13. package/dist/src/ParserTx.d.ts.map +1 -0
  14. package/dist/src/ParserTx.js +94 -0
  15. package/dist/src/ScriptParser.d.ts +21 -0
  16. package/dist/src/ScriptParser.d.ts.map +1 -0
  17. package/dist/src/ScriptParser.js +77 -0
  18. package/dist/src/TxParser.d.ts +9 -6
  19. package/dist/src/TxParser.d.ts.map +1 -1
  20. package/dist/src/TxParser.js +21 -23
  21. package/dist/src/commands.d.ts +34 -2
  22. package/dist/src/commands.d.ts.map +1 -1
  23. package/dist/src/commands.js +102 -19
  24. package/dist/src/fetch.d.ts +4 -3
  25. package/dist/src/fetch.d.ts.map +1 -1
  26. package/dist/src/fetch.js +14 -3
  27. package/dist/src/format.d.ts +1 -1
  28. package/dist/src/format.d.ts.map +1 -1
  29. package/dist/src/format.js +14 -7
  30. package/dist/src/generateAddress.d.ts +11 -0
  31. package/dist/src/generateAddress.d.ts.map +1 -0
  32. package/dist/src/generateAddress.js +29 -0
  33. package/dist/src/parseString.d.ts +5 -0
  34. package/dist/src/parseString.d.ts.map +1 -0
  35. package/dist/src/parseString.js +29 -0
  36. package/dist/src/parseUnknown.d.ts +5 -0
  37. package/dist/src/parseUnknown.d.ts.map +1 -0
  38. package/dist/src/parseUnknown.js +50 -0
  39. package/dist/test/fixtures.d.ts +24 -0
  40. package/dist/test/fixtures.d.ts.map +1 -0
  41. package/dist/test/fixtures.js +95 -0
  42. package/dist/test/parseAddress.d.ts +10 -0
  43. package/dist/test/parseAddress.d.ts.map +1 -0
  44. package/dist/test/parseAddress.js +87 -0
  45. package/dist/test/parseScript.d.ts +2 -0
  46. package/dist/test/parseScript.d.ts.map +1 -0
  47. package/dist/test/parseScript.js +38 -0
  48. package/dist/test/parseTransaction.d.ts +2 -0
  49. package/dist/test/parseTransaction.d.ts.map +1 -0
  50. package/dist/test/parseTransaction.js +66 -0
  51. package/dist/test/stringToBuffer.d.ts +2 -0
  52. package/dist/test/stringToBuffer.d.ts.map +1 -0
  53. package/dist/test/stringToBuffer.js +16 -0
  54. package/dist/tsconfig.tsbuildinfo +1 -5401
  55. package/package.json +7 -7
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getParserTxInputProperties = exports.getParserTxProperties = exports.getPrevOut = void 0;
4
+ const utxolib = require("@bitgo/utxo-lib");
5
+ function getPrevOut(prevOutput, prevOutpoint, network) {
6
+ if (prevOutput.witnessUtxo) {
7
+ return prevOutput.witnessUtxo;
8
+ }
9
+ const outputIndex = typeof prevOutpoint === 'number' ? prevOutpoint : utxolib.bitgo.getOutputIdForInput(prevOutpoint).vout;
10
+ if (prevOutput.nonWitnessUtxo) {
11
+ const tx = utxolib.bitgo.createTransactionFromBuffer(prevOutput.nonWitnessUtxo, network, { amountType: 'bigint' });
12
+ return tx.outs[outputIndex];
13
+ }
14
+ return undefined;
15
+ }
16
+ exports.getPrevOut = getPrevOut;
17
+ function getOutputSum(outputs) {
18
+ return outputs.reduce((sum, o) => sum + o.value, BigInt(0));
19
+ }
20
+ function getParserTxProperties(tx, prevOutputs) {
21
+ if (tx instanceof utxolib.bitgo.UtxoTransaction) {
22
+ let complete = true;
23
+ try {
24
+ const txb = utxolib.bitgo.createTransactionBuilderFromTransaction(tx);
25
+ txb.build();
26
+ }
27
+ catch (e) {
28
+ complete = false;
29
+ }
30
+ return {
31
+ format: complete ? 'network' : 'legacy',
32
+ complete,
33
+ id: tx.getId(),
34
+ weight: tx.weight(),
35
+ inputs: tx.ins,
36
+ outputs: tx.outs,
37
+ outputSum: getOutputSum(tx.outs),
38
+ inputSum: prevOutputs ? getOutputSum(prevOutputs) : undefined,
39
+ hasWitnesses: tx.hasWitnesses(),
40
+ };
41
+ }
42
+ if (tx instanceof utxolib.bitgo.UtxoPsbt) {
43
+ let signedTx;
44
+ let complete = true;
45
+ try {
46
+ const clone = tx.clone();
47
+ clone.finalizeAllInputs();
48
+ signedTx = clone.extractTransaction();
49
+ }
50
+ catch (e) {
51
+ complete = false;
52
+ // ignore
53
+ }
54
+ const unsignedTx = tx.getUnsignedTx();
55
+ return {
56
+ format: 'psbt',
57
+ complete,
58
+ id: (signedTx !== null && signedTx !== void 0 ? signedTx : unsignedTx).getId(),
59
+ weight: (signedTx !== null && signedTx !== void 0 ? signedTx : unsignedTx).weight(),
60
+ inputs: tx.txInputs,
61
+ outputs: tx.txOutputs,
62
+ outputSum: getOutputSum(tx.txOutputs),
63
+ inputSum: tx.data.inputs
64
+ .map((input, i) => { var _a; return (_a = getPrevOut(input, tx.txInputs[i], tx.network)) === null || _a === void 0 ? void 0 : _a.value; })
65
+ .reduce((sum, v) => sum === undefined || v === undefined ? undefined : sum + v, BigInt(0)),
66
+ hasWitnesses: tx.data.inputs.some((i) => i.witnessUtxo !== undefined),
67
+ };
68
+ }
69
+ throw new Error('unknown transaction type');
70
+ }
71
+ exports.getParserTxProperties = getParserTxProperties;
72
+ function getParserTxInputProperties(input, prevOut) {
73
+ const outputId = utxolib.bitgo.getOutputIdForInput(input);
74
+ if ('sequence' in input && 'script' in input && 'witness' in input) {
75
+ // full-signed or legacy case
76
+ return {
77
+ ...outputId,
78
+ sequence: input.sequence,
79
+ script: input.script,
80
+ witness: input.witness,
81
+ };
82
+ }
83
+ if (!prevOut) {
84
+ throw new Error('missing prevOut');
85
+ }
86
+ return {
87
+ ...outputId,
88
+ sequence: input.sequence,
89
+ script: prevOut.redeemScript,
90
+ witness: prevOut.witnessScript ? [prevOut.witnessScript] : [],
91
+ };
92
+ }
93
+ exports.getParserTxInputProperties = getParserTxInputProperties;
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyc2VyVHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUGFyc2VyVHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQTJDO0FBUTNDLFNBQWdCLFVBQVUsQ0FDeEIsVUFBbUMsRUFDbkMsWUFBMEMsRUFDMUMsT0FBd0I7SUFPeEIsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFO1FBQzFCLE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQztLQUMvQjtJQUNELE1BQU0sV0FBVyxHQUNmLE9BQU8sWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RyxJQUFJLFVBQVUsQ0FBQyxjQUFjLEVBQUU7UUFDN0IsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25ILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3QjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFwQkQsZ0NBb0JDO0FBRUQsU0FBUyxZQUFZLENBQUMsT0FBNEI7SUFDaEQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUNuQyxFQUFZLEVBQ1osV0FBbUQ7SUFZbkQsSUFBSSxFQUFFLFlBQVksT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7UUFDL0MsSUFBSSxRQUFRLEdBQUcsSUFB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RUFDcEIsT0FBaUM7SUFRakMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxJQUFJLFVBQVUsSUFBSSxLQUFLLElBQUksUUFBUSxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFO1FBQ2xFLDZCQUE2QjtRQUM3QixPQUFPO1lBQ0wsR0FBRyxRQUFRO1lBQ1gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQztLQUNIO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQUNwQztJQUNELE9BQU87UUFDTCxHQUFHLFFBQVE7UUFDWCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1FBQzVCLE9BQU8sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtLQUM5RCxDQUFDO0FBQ0osQ0FBQztBQTlCRCxnRUE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmV4cG9ydCB0eXBlIFBhcnNlclR4ID0gdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248YmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG5leHBvcnQgdHlwZSBQYXJzZXJUeElucHV0ID1cbiAgfCB1dHhvbGliLlR4SW5wdXQgLyogdHhpbnB1dCBoYXMgdGhlIFR4T3V0UG9pbnQgYW5kIGFsc28gc2NyaXB0IGFuZCB3aXRuZXNzIGRhdGEgKi9cbiAgfCB1dHhvbGliLlBzYnRUeElucHV0IC8qIHRoaXMgaXMgYmFzaWNhbGx5IGVxdWl2YWxlbnQgdG8gVHhPdXRQb2ludCBvbmx5ICovO1xuZXhwb3J0IHR5cGUgUGFyc2VyVHhPdXRwdXQgPSB1dHhvbGliLlR4T3V0cHV0PGJpZ2ludD4gfCB1dHhvbGliLlBzYnRUeE91dHB1dDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByZXZPdXQoXG4gIHByZXZPdXRwdXQ6IHV0eG9saWIuYml0Z28uUHNidElucHV0LFxuICBwcmV2T3V0cG9pbnQ6IHV0eG9saWIuUHNidFR4SW5wdXQgfCBudW1iZXIsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTpcbiAgfCB7XG4gICAgICB2YWx1ZTogYmlnaW50O1xuICAgICAgc2NyaXB0OiBCdWZmZXI7XG4gICAgfVxuICB8IHVuZGVmaW5lZCB7XG4gIGlmIChwcmV2T3V0cHV0LndpdG5lc3NVdHhvKSB7XG4gICAgcmV0dXJuIHByZXZPdXRwdXQud2l0bmVzc1V0eG87XG4gIH1cbiAgY29uc3Qgb3V0cHV0SW5kZXggPVxuICAgIHR5cGVvZiBwcmV2T3V0cG9pbnQgPT09ICdudW1iZXInID8gcHJldk91dHBvaW50IDogdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KHByZXZPdXRwb2ludCkudm91dDtcbiAgaWYgKHByZXZPdXRwdXQubm9uV2l0bmVzc1V0eG8pIHtcbiAgICBjb25zdCB0eCA9IHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyKHByZXZPdXRwdXQubm9uV2l0bmVzc1V0eG8sIG5ldHdvcmssIHsgYW1vdW50VHlwZTogJ2JpZ2ludCcgfSk7XG4gICAgcmV0dXJuIHR4Lm91dHNbb3V0cHV0SW5kZXhdO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldE91dHB1dFN1bShvdXRwdXRzOiB7IHZhbHVlOiBiaWdpbnQgfVtdKTogYmlnaW50IHtcbiAgcmV0dXJuIG91dHB1dHMucmVkdWNlKChzdW0sIG8pID0+IHN1bSArIG8udmFsdWUsIEJpZ0ludCgwKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJzZXJUeFByb3BlcnRpZXMoXG4gIHR4OiBQYXJzZXJUeCxcbiAgcHJldk91dHB1dHM6IHV0eG9saWIuVHhPdXRwdXQ8YmlnaW50PltdIHwgdW5kZWZpbmVkXG4pOiB7XG4gIGZvcm1hdDogJ25ldHdvcmsnIHwgJ2xlZ2FjeScgfCAncHNidCc7XG4gIGNvbXBsZXRlOiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xuICB3ZWlnaHQ6IG51bWJlcjtcbiAgaW5wdXRzOiBQYXJzZXJUeElucHV0W107XG4gIG91dHB1dHM6IFBhcnNlclR4T3V0cHV0W107XG4gIG91dHB1dFN1bTogYmlnaW50O1xuICBpbnB1dFN1bTogYmlnaW50IHwgdW5kZWZpbmVkO1xuICBoYXNXaXRuZXNzZXM6IGJvb2xlYW47XG59IHtcbiAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICBsZXQgY29tcGxldGUgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eGIgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uQnVpbGRlckZyb21UcmFuc2FjdGlvbih0eCk7XG4gICAgICB0eGIuYnVpbGQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb21wbGV0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZm9ybWF0OiBjb21wbGV0ZSA/ICduZXR3b3JrJyA6ICdsZWdhY3knLFxuICAgICAgY29tcGxldGUsXG4gICAgICBpZDogdHguZ2V0SWQoKSxcbiAgICAgIHdlaWdodDogdHgud2VpZ2h0KCksXG4gICAgICBpbnB1dHM6IHR4LmlucyxcbiAgICAgIG91dHB1dHM6IHR4Lm91dHMsXG4gICAgICBvdXRwdXRTdW06IGdldE91dHB1dFN1bSh0eC5vdXRzKSxcbiAgICAgIGlucHV0U3VtOiBwcmV2T3V0cHV0cyA/IGdldE91dHB1dFN1bShwcmV2T3V0cHV0cykgOiB1bmRlZmluZWQsXG4gICAgICBoYXNXaXRuZXNzZXM6IHR4Lmhhc1dpdG5lc3NlcygpLFxuICAgIH07XG4gIH1cblxuICBpZiAodHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KSB7XG4gICAgbGV0IHNpZ25lZFR4O1xuICAgIGxldCBjb21wbGV0ZSA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNsb25lID0gdHguY2xvbmUoKTtcbiAgICAgIGNsb25lLmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gICAgICBzaWduZWRUeCA9IGNsb25lLmV4dHJhY3RUcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbXBsZXRlID0gZmFsc2U7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gdHguZ2V0VW5zaWduZWRUeCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1hdDogJ3BzYnQnLFxuICAgICAgY29tcGxldGUsXG4gICAgICBpZDogKHNpZ25lZFR4ID8/IHVuc2lnbmVkVHgpLmdldElkKCksXG4gICAgICB3ZWlnaHQ6IChzaWduZWRUeCA/PyB1bnNpZ25lZFR4KS53ZWlnaHQoKSxcbiAgICAgIGlucHV0czogdHgudHhJbnB1dHMsXG4gICAgICBvdXRwdXRzOiB0eC50eE91dHB1dHMsXG4gICAgICBvdXRwdXRTdW06IGdldE91dHB1dFN1bSh0eC50eE91dHB1dHMpLFxuICAgICAgaW5wdXRTdW06IHR4LmRhdGEuaW5wdXRzXG4gICAgICAgIC5tYXAoKGlucHV0LCBpKSA9PiBnZXRQcmV2T3V0KGlucHV0LCB0eC50eElucHV0c1tpXSwgdHgubmV0d29yayk/LnZhbHVlKVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChzdW06IGJpZ2ludCB8IHVuZGVmaW5lZCwgdjogYmlnaW50IHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgICAgc3VtID09PSB1bmRlZmluZWQgfHwgdiA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc3VtICsgdixcbiAgICAgICAgICBCaWdJbnQoMClcbiAgICAgICAgKSxcbiAgICAgIGhhc1dpdG5lc3NlczogdHguZGF0YS5pbnB1dHMuc29tZSgoaSkgPT4gaS53aXRuZXNzVXR4byAhPT0gdW5kZWZpbmVkKSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHRyYW5zYWN0aW9uIHR5cGUnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJzZXJUeElucHV0UHJvcGVydGllcyhcbiAgaW5wdXQ6IFBhcnNlclR4SW5wdXQsXG4gIHByZXZPdXQ/OiB1dHhvbGliLmJpdGdvLlBzYnRJbnB1dFxuKToge1xuICB0eGlkOiBzdHJpbmc7XG4gIHZvdXQ6IG51bWJlcjtcbiAgc2VxdWVuY2U/OiBudW1iZXI7XG4gIHNjcmlwdD86IEJ1ZmZlcjtcbiAgd2l0bmVzcz86IEJ1ZmZlcltdO1xufSB7XG4gIGNvbnN0IG91dHB1dElkID0gdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KGlucHV0KTtcbiAgaWYgKCdzZXF1ZW5jZScgaW4gaW5wdXQgJiYgJ3NjcmlwdCcgaW4gaW5wdXQgJiYgJ3dpdG5lc3MnIGluIGlucHV0KSB7XG4gICAgLy8gZnVsbC1zaWduZWQgb3IgbGVnYWN5IGNhc2VcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3V0cHV0SWQsXG4gICAgICBzZXF1ZW5jZTogaW5wdXQuc2VxdWVuY2UsXG4gICAgICBzY3JpcHQ6IGlucHV0LnNjcmlwdCxcbiAgICAgIHdpdG5lc3M6IGlucHV0LndpdG5lc3MsXG4gICAgfTtcbiAgfVxuXG4gIGlmICghcHJldk91dCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwcmV2T3V0Jyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5vdXRwdXRJZCxcbiAgICBzZXF1ZW5jZTogaW5wdXQuc2VxdWVuY2UsXG4gICAgc2NyaXB0OiBwcmV2T3V0LnJlZGVlbVNjcmlwdCxcbiAgICB3aXRuZXNzOiBwcmV2T3V0LndpdG5lc3NTY3JpcHQgPyBbcHJldk91dC53aXRuZXNzU2NyaXB0XSA6IFtdLFxuICB9O1xufVxuIl19
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ import { Parser, ParserNode } from './Parser';
3
+ import * as utxolib from '@bitgo/utxo-lib';
4
+ export declare class ScriptParser extends Parser {
5
+ network?: utxolib.Network;
6
+ constructor({ network }?: {
7
+ network?: utxolib.Network;
8
+ });
9
+ static toASM(script: Buffer, { insertNewlines }?: {
10
+ insertNewlines?: boolean | undefined;
11
+ }): string | undefined;
12
+ static classify(script: Buffer | undefined, witness: Buffer[] | undefined): {
13
+ input: string | undefined;
14
+ output: string | undefined;
15
+ witness: string | undefined;
16
+ };
17
+ parsePayment(payment: utxolib.Payment): ParserNode;
18
+ parseBufferAsPayment(script: Buffer): ParserNode[];
19
+ parse(script: Buffer): ParserNode;
20
+ }
21
+ //# sourceMappingURL=ScriptParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScriptParser.d.ts","sourceRoot":"","sources":["../../src/ScriptParser.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAqB3C,qBAAa,YAAa,SAAQ,MAAM;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;gBACd,EAAE,OAAO,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAA;KAAO;IAK3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,cAAqB,EAAE;;KAAK,GAAG,MAAM,GAAG,SAAS;IAahF,MAAM,CAAC,QAAQ,CACb,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAC5B;QACD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAQD,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,UAAU;IAMlD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAUlD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;CAclC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScriptParser = void 0;
4
+ const Parser_1 = require("./Parser");
5
+ const utxolib = require("@bitgo/utxo-lib");
6
+ const parseUnknown_1 = require("./parseUnknown");
7
+ const paymentTypes = ['p2sh', 'p2pkh', 'p2wpkh', 'p2wsh', 'p2ms'];
8
+ function parsePaymentWithType(script, type, network) {
9
+ switch (type) {
10
+ case 'p2sh':
11
+ return utxolib.payments.p2sh({ redeem: { output: script }, network });
12
+ case 'p2pkh':
13
+ return utxolib.payments.p2pkh({ output: script, network });
14
+ case 'p2wpkh':
15
+ return utxolib.payments.p2wpkh({ output: script, network });
16
+ case 'p2wsh':
17
+ return utxolib.payments.p2wsh({ output: script, network });
18
+ case 'p2ms':
19
+ return utxolib.payments.p2ms({ output: script, network });
20
+ }
21
+ }
22
+ class ScriptParser extends Parser_1.Parser {
23
+ constructor({ network } = {}) {
24
+ super();
25
+ this.network = network;
26
+ }
27
+ static toASM(script, { insertNewlines = true } = {}) {
28
+ let parsed;
29
+ try {
30
+ parsed = utxolib.script.toASM(script);
31
+ }
32
+ catch (e) {
33
+ return 'error';
34
+ }
35
+ if (parsed) {
36
+ return insertNewlines ? ['', ...parsed.split(' ')].join('\n') : parsed;
37
+ }
38
+ }
39
+ static classify(script, witness) {
40
+ return {
41
+ input: script ? utxolib.classify.input(script, /* allowIncomplete */ true) : undefined,
42
+ output: script ? utxolib.classify.output(script) : undefined,
43
+ witness: witness ? utxolib.classify.witness(witness) : undefined,
44
+ };
45
+ }
46
+ parsePayment(payment) {
47
+ return parseUnknown_1.parseUnknown(this, `payment: ${payment.name}`, payment, {
48
+ omit: ['network', 'name'],
49
+ });
50
+ }
51
+ parseBufferAsPayment(script) {
52
+ return paymentTypes.flatMap((type) => {
53
+ try {
54
+ return [this.parsePayment(parsePaymentWithType(script, type, this.network))];
55
+ }
56
+ catch (e) {
57
+ return [];
58
+ }
59
+ });
60
+ }
61
+ parse(script) {
62
+ const classification = ScriptParser.classify(script, undefined);
63
+ const decompiled = utxolib.script.decompile(script);
64
+ return this.node('script', `length ${script.length} bytes`, [
65
+ this.node('classification', undefined, [
66
+ this.node('input', classification.input),
67
+ this.node('output', classification.output),
68
+ this.node('witness', classification.witness),
69
+ ]),
70
+ this.node('asm', ScriptParser.toASM(script)),
71
+ this.node('decompiled', undefined, decompiled ? decompiled.map((v, i) => this.node(i, v)) : undefined),
72
+ ...this.parseBufferAsPayment(script),
73
+ ]);
74
+ }
75
+ }
76
+ exports.ScriptParser = ScriptParser;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NyaXB0UGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjcmlwdFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBOEM7QUFDOUMsMkNBQTJDO0FBQzNDLGlEQUE4QztBQUU5QyxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQVUsQ0FBQztBQUczRSxTQUFTLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxJQUFpQixFQUFFLE9BQXlCO0lBQ3hGLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5RCxLQUFLLE9BQU87WUFDVixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdELEtBQUssTUFBTTtZQUNULE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDN0Q7QUFDSCxDQUFDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUV0QyxZQUFZLEVBQUUsT0FBTyxLQUFv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SUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN0RyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7U0FDckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakVELG9DQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlciwgUGFyc2VyTm9kZSB9IGZyb20gJy4vUGFyc2VyJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IHBhcnNlVW5rbm93biB9IGZyb20gJy4vcGFyc2VVbmtub3duJztcblxuY29uc3QgcGF5bWVudFR5cGVzID0gWydwMnNoJywgJ3AycGtoJywgJ3Ayd3BraCcsICdwMndzaCcsICdwMm1zJ10gYXMgY29uc3Q7XG50eXBlIFBheW1lbnRUeXBlID0gKHR5cGVvZiBwYXltZW50VHlwZXMpW251bWJlcl07XG5cbmZ1bmN0aW9uIHBhcnNlUGF5bWVudFdpdGhUeXBlKHNjcmlwdDogQnVmZmVyLCB0eXBlOiBQYXltZW50VHlwZSwgbmV0d29yaz86IHV0eG9saWIuTmV0d29yayk6IHV0eG9saWIuUGF5bWVudCB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgcmV0dXJuIHV0eG9saWIucGF5bWVudHMucDJzaCh7IHJlZGVlbTogeyBvdXRwdXQ6IHNjcmlwdCB9LCBuZXR3b3JrIH0pO1xuICAgIGNhc2UgJ3AycGtoJzpcbiAgICAgIHJldHVybiB1dHhvbGliLnBheW1lbnRzLnAycGtoKHsgb3V0cHV0OiBzY3JpcHQsIG5ldHdvcmsgfSk7XG4gICAgY2FzZSAncDJ3cGtoJzpcbiAgICAgIHJldHVybiB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7IG91dHB1dDogc2NyaXB0LCBuZXR3b3JrIH0pO1xuICAgIGNhc2UgJ3Ayd3NoJzpcbiAgICAgIHJldHVybiB1dHhvbGliLnBheW1lbnRzLnAyd3NoKHsgb3V0cHV0OiBzY3JpcHQsIG5ldHdvcmsgfSk7XG4gICAgY2FzZSAncDJtcyc6XG4gICAgICByZXR1cm4gdXR4b2xpYi5wYXltZW50cy5wMm1zKHsgb3V0cHV0OiBzY3JpcHQsIG5ldHdvcmsgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNjcmlwdFBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIG5ldHdvcms/OiB1dHhvbGliLk5ldHdvcms7XG4gIGNvbnN0cnVjdG9yKHsgbmV0d29yayB9OiB7IG5ldHdvcms/OiB1dHhvbGliLk5ldHdvcmsgfSA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5ldHdvcmsgPSBuZXR3b3JrO1xuICB9XG5cbiAgc3RhdGljIHRvQVNNKHNjcmlwdDogQnVmZmVyLCB7IGluc2VydE5ld2xpbmVzID0gdHJ1ZSB9ID0ge30pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxldCBwYXJzZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZCA9IHV0eG9saWIuc2NyaXB0LnRvQVNNKHNjcmlwdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgcmV0dXJuIGluc2VydE5ld2xpbmVzID8gWycnLCAuLi5wYXJzZWQuc3BsaXQoJyAnKV0uam9pbignXFxuJykgOiBwYXJzZWQ7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNsYXNzaWZ5KFxuICAgIHNjcmlwdDogQnVmZmVyIHwgdW5kZWZpbmVkLFxuICAgIHdpdG5lc3M6IEJ1ZmZlcltdIHwgdW5kZWZpbmVkXG4gICk6IHtcbiAgICBpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIG91dHB1dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHdpdG5lc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0OiBzY3JpcHQgPyB1dHhvbGliLmNsYXNzaWZ5LmlucHV0KHNjcmlwdCwgLyogYWxsb3dJbmNvbXBsZXRlICovIHRydWUpIDogdW5kZWZpbmVkLFxuICAgICAgb3V0cHV0OiBzY3JpcHQgPyB1dHhvbGliLmNsYXNzaWZ5Lm91dHB1dChzY3JpcHQpIDogdW5kZWZpbmVkLFxuICAgICAgd2l0bmVzczogd2l0bmVzcyA/IHV0eG9saWIuY2xhc3NpZnkud2l0bmVzcyh3aXRuZXNzKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcGFyc2VQYXltZW50KHBheW1lbnQ6IHV0eG9saWIuUGF5bWVudCk6IFBhcnNlck5vZGUge1xuICAgIHJldHVybiBwYXJzZVVua25vd24odGhpcywgYHBheW1lbnQ6ICR7cGF5bWVudC5uYW1lfWAsIHBheW1lbnQsIHtcbiAgICAgIG9taXQ6IFsnbmV0d29yaycsICduYW1lJ10sXG4gICAgfSk7XG4gIH1cblxuICBwYXJzZUJ1ZmZlckFzUGF5bWVudChzY3JpcHQ6IEJ1ZmZlcik6IFBhcnNlck5vZGVbXSB7XG4gICAgcmV0dXJuIHBheW1lbnRUeXBlcy5mbGF0TWFwKCh0eXBlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gW3RoaXMucGFyc2VQYXltZW50KHBhcnNlUGF5bWVudFdpdGhUeXBlKHNjcmlwdCwgdHlwZSwgdGhpcy5uZXR3b3JrKSldO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZShzY3JpcHQ6IEJ1ZmZlcik6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IGNsYXNzaWZpY2F0aW9uID0gU2NyaXB0UGFyc2VyLmNsYXNzaWZ5KHNjcmlwdCwgdW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZWNvbXBpbGVkID0gdXR4b2xpYi5zY3JpcHQuZGVjb21waWxlKHNjcmlwdCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZSgnc2NyaXB0JywgYGxlbmd0aCAke3NjcmlwdC5sZW5ndGh9IGJ5dGVzYCwgW1xuICAgICAgdGhpcy5ub2RlKCdjbGFzc2lmaWNhdGlvbicsIHVuZGVmaW5lZCwgW1xuICAgICAgICB0aGlzLm5vZGUoJ2lucHV0JywgY2xhc3NpZmljYXRpb24uaW5wdXQpLFxuICAgICAgICB0aGlzLm5vZGUoJ291dHB1dCcsIGNsYXNzaWZpY2F0aW9uLm91dHB1dCksXG4gICAgICAgIHRoaXMubm9kZSgnd2l0bmVzcycsIGNsYXNzaWZpY2F0aW9uLndpdG5lc3MpLFxuICAgICAgXSksXG4gICAgICB0aGlzLm5vZGUoJ2FzbScsIFNjcmlwdFBhcnNlci50b0FTTShzY3JpcHQpKSxcbiAgICAgIHRoaXMubm9kZSgnZGVjb21waWxlZCcsIHVuZGVmaW5lZCwgZGVjb21waWxlZCA/IGRlY29tcGlsZWQubWFwKCh2LCBpKSA9PiB0aGlzLm5vZGUoaSwgdikpIDogdW5kZWZpbmVkKSxcbiAgICAgIC4uLnRoaXMucGFyc2VCdWZmZXJBc1BheW1lbnQoc2NyaXB0KSxcbiAgICBdKTtcbiAgfVxufVxuIl19
@@ -1,6 +1,7 @@
1
1
  import { OutputSpend, TransactionStatus } from '@bitgo/blockapis';
2
2
  import * as utxolib from '@bitgo/utxo-lib';
3
3
  import { Parser, ParserNode } from './Parser';
4
+ import { ParserTx, ParserTxInput, ParserTxOutput } from './ParserTx';
4
5
  export declare type TxParserArgs = {
5
6
  parseScriptData: boolean;
6
7
  parseScriptAsm: boolean;
@@ -10,24 +11,26 @@ export declare type TxParserArgs = {
10
11
  ecdsa: boolean;
11
12
  schnorr: boolean;
12
13
  };
14
+ parseAsUnknown: boolean;
13
15
  hide?: string[];
14
16
  maxOutputs?: number;
15
17
  vin?: number[];
18
+ parseError?: 'throw' | 'continue';
16
19
  };
17
20
  export declare type ChainInfo = {
18
21
  status?: TransactionStatus;
19
22
  outputSpends?: OutputSpend[];
20
- prevOutputs?: utxolib.TxOutput[];
23
+ prevOutputs?: utxolib.TxOutput<bigint>[];
21
24
  prevOutputSpends?: OutputSpend[];
22
25
  };
23
26
  export declare class TxParser extends Parser {
24
27
  private params;
25
28
  static PARSE_ALL: TxParserArgs;
26
29
  constructor(params: TxParserArgs);
27
- parseIns(ins: utxolib.TxInput[], tx: utxolib.bitgo.UtxoTransaction, outputInfo: ChainInfo): ParserNode[];
28
- parseOuts(outs: utxolib.TxOutput[], tx: utxolib.bitgo.UtxoTransaction, params: ChainInfo): ParserNode[];
29
- parseStatus(tx: utxolib.bitgo.UtxoTransaction, status?: TransactionStatus): ParserNode[];
30
- parseVersion(tx: utxolib.bitgo.UtxoTransaction): ParserNode;
31
- parse(tx: utxolib.bitgo.UtxoTransaction, chainInfo?: ChainInfo): ParserNode;
30
+ parseIns(ins: ParserTxInput[], tx: ParserTx, txid: string, outputInfo: ChainInfo): ParserNode[];
31
+ parseOuts(outs: ParserTxOutput[], tx: ParserTx, txid: string, params: ChainInfo): ParserNode[];
32
+ parseStatus(status?: TransactionStatus): ParserNode[];
33
+ parseVersion(tx: utxolib.bitgo.UtxoTransaction<bigint> | utxolib.bitgo.UtxoPsbt): ParserNode;
34
+ parse(tx: ParserTx, chainInfo?: ChainInfo): ParserNode;
32
35
  }
33
36
  //# sourceMappingURL=TxParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TxParser.d.ts","sourceRoot":"","sources":["../../src/TxParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAa9C,oBAAY,YAAY,GAAG;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;CAClC,CAAC;AAEF,qBAAa,QAAS,SAAQ,MAAM;IAYtB,OAAO,CAAC,MAAM;IAX1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAS5B;gBAEkB,MAAM,EAAE,YAAY;IAIxC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,EAAE,SAAS,GAAG,UAAU,EAAE;IAUxG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE;IAUvG,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,EAAE;IAsBxF,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU;IAc3D,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,GAAE,SAAc,GAAG,UAAU;CAiChF"}
1
+ {"version":3,"file":"TxParser.d.ts","sourceRoot":"","sources":["../../src/TxParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAyB,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAa5F,oBAAY,YAAY,GAAG;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CACnC,CAAC;AAEF,oBAAY,SAAS,GAAG;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;CAClC,CAAC;AAEF,qBAAa,QAAS,SAAQ,MAAM;IAatB,OAAO,CAAC,MAAM;IAZ1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAU5B;gBAEkB,MAAM,EAAE,YAAY;IAIxC,QAAQ,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,UAAU,EAAE;IAQ/F,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE;IAQ9F,WAAW,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,UAAU,EAAE;IAsBrD,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;IAc5F,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAE,SAAc,GAAG,UAAU;CAoC3D"}
@@ -4,7 +4,9 @@ exports.TxParser = void 0;
4
4
  const utxolib = require("@bitgo/utxo-lib");
5
5
  const Parser_1 = require("./Parser");
6
6
  const format_1 = require("./format");
7
- const InputOutputParser_1 = require("./InputOutputParser");
7
+ const ParserTx_1 = require("./ParserTx");
8
+ const InputParser_1 = require("./InputParser");
9
+ const OutputParser_1 = require("./OutputParser");
8
10
  function formatConsensusBranchId(branchId) {
9
11
  var _a;
10
12
  const map = {
@@ -16,26 +18,22 @@ function formatConsensusBranchId(branchId) {
16
18
  }
17
19
  class TxParser extends Parser_1.Parser {
18
20
  constructor(params) {
19
- super();
21
+ super(params);
20
22
  this.params = params;
21
23
  }
22
- parseIns(ins, tx, outputInfo) {
23
- const txid = tx.getId();
24
- const ioParser = new InputOutputParser_1.InputOutputParser(this.params);
24
+ parseIns(ins, tx, txid, outputInfo) {
25
25
  return ins.flatMap((input, i) => this.params.vin === undefined || this.params.vin.includes(i)
26
- ? [ioParser.parseInput(txid, tx, i, tx.ins[i], outputInfo)]
26
+ ? [new InputParser_1.InputParser(txid, tx, i, outputInfo, this.params).parseInput()]
27
27
  : []);
28
28
  }
29
- parseOuts(outs, tx, params) {
29
+ parseOuts(outs, tx, txid, params) {
30
30
  var _a;
31
31
  if (outs.length > ((_a = this.params.maxOutputs) !== null && _a !== void 0 ? _a : 200)) {
32
32
  return [this.node('(omitted)', undefined)];
33
33
  }
34
- const txid = tx.getId();
35
- const ioParser = new InputOutputParser_1.InputOutputParser(this.params);
36
- return outs.map((o, i) => ioParser.parseOutput(txid, o, i, tx.network, params));
34
+ return outs.map((o, i) => new OutputParser_1.OutputParser(tx.network, txid, i, o, params, this.params).parseOutput());
37
35
  }
38
- parseStatus(tx, status) {
36
+ parseStatus(status) {
39
37
  if (!status) {
40
38
  return [this.node('status', 'unknown')];
41
39
  }
@@ -59,26 +57,25 @@ class TxParser extends Parser_1.Parser {
59
57
  : []);
60
58
  }
61
59
  parse(tx, chainInfo = {}) {
62
- var _a;
63
- const weight = tx.weight();
64
- const vsize = tx.virtualSize();
65
- const outputSum = tx.outs.reduce((sum, o) => sum + o.value, 0);
66
- const inputSum = (_a = chainInfo.prevOutputs) === null || _a === void 0 ? void 0 : _a.reduce((sum, o) => sum + o.value, 0);
60
+ const { format, complete, id, weight, inputs, outputs, hasWitnesses, inputSum, outputSum } = ParserTx_1.getParserTxProperties(tx, chainInfo.prevOutputs);
61
+ const vsize = weight === undefined ? undefined : Math.ceil(weight / 4);
67
62
  const fee = inputSum ? inputSum - outputSum : undefined;
68
- const feeRate = fee ? fee / vsize : undefined;
69
- return this.node('transaction', tx.getId(), [
63
+ const feeRate = fee && vsize ? Number(fee) / vsize : undefined;
64
+ return this.node('transaction', id, [
65
+ this.node('format', format),
66
+ this.node('complete', complete),
70
67
  this.node('parsedAs', `${utxolib.getNetworkName(utxolib.getMainnet(tx.network))} ` +
71
68
  `${utxolib.isMainnet(tx.network) ? 'mainnet' : 'testnet'}`),
72
69
  this.parseVersion(tx),
73
70
  this.node('locktime', tx.locktime),
74
- this.node('hasWitnesses', tx.hasWitnesses()),
75
- ...this.parseStatus(tx, chainInfo.status),
71
+ this.node('hasWitnesses', hasWitnesses),
72
+ ...this.parseStatus(chainInfo.status),
76
73
  this.node('vsize', `${vsize}vbytes (${weight}wu)`),
77
74
  ...(fee && feeRate
78
75
  ? [this.node('fee [btc]', format_1.formatSat(fee)), this.node('feeRate [sat/vbyte]', feeRate.toFixed(2))]
79
76
  : []),
80
- this.node(`inputs`, [String(tx.ins.length)].concat(inputSum ? ['sum=' + format_1.formatSat(inputSum)] : []).join(' '), this.parseIns(tx.ins, tx, chainInfo)),
81
- this.node(`outputs`, [String(tx.outs.length), 'sum=' + format_1.formatSat(outputSum)].join(' '), this.parseOuts(tx.outs, tx, chainInfo)),
77
+ this.node(`inputs`, [inputs.length.toString()].concat(inputSum ? ['sum=' + format_1.formatSat(inputSum)] : []).join(' '), this.parseIns(inputs, tx, id, chainInfo)),
78
+ this.node(`outputs`, [outputs.length.toString(), 'sum=' + format_1.formatSat(outputSum)].join(' '), this.parseOuts(outputs, tx, id, chainInfo)),
82
79
  ]);
83
80
  }
84
81
  }
@@ -92,5 +89,6 @@ TxParser.PARSE_ALL = {
92
89
  ecdsa: true,
93
90
  schnorr: true,
94
91
  },
92
+ parseAsUnknown: false,
95
93
  };
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHhQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHhQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQTJDO0FBQzNDLHFDQUE4QztBQUM5QyxxQ0FBcUM7QUFDckMsMkRBQXdEO0FBRXhELFNBQVMsdUJBQXVCLENBQUMsUUFBZ0I7O0lBQy9DLE1BQU0sR0FBRyxHQUEyQjtRQUNsQyxvQkFBb0IsRUFBRSxVQUFVO1FBQ2hDLGdCQUFnQixFQUFFLFVBQVU7UUFDNUIsYUFBYSxFQUFFLFVBQVU7S0FDMUIsQ0FBQztJQUNGLE9BQU8sTUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxtQ0FBSSxTQUFTLENBQUM7QUFDeEUsQ0FBQztBQXVCRCxNQUFhLFFBQVMsU0FBUSxlQUFNO0lBWWxDLFlBQW9CLE1BQW9CO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUV4QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQXNCLEVBQUUsRUFBaUMsRUFBRSxVQUFxQjtRQUN2RixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsRUFBRSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQXdCLEVBQUUsRUFBaUMsRUFBRSxNQUFpQjs7UUFDdEYsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsbUNBQUksR0FBRyxDQUFDLEVBQUU7WUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFpQyxFQUFFLE1BQTBCO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUN6QztRQUNELE9BQU87WUFDTCxJQUFJLENBQUMsSUFBSSxDQUNQLFFBQVEsRUFDUixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFDcEMsTUFBTSxDQUFDLEtBQUs7Z0JBQ1YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUNoQixDQUFDLENBQUM7d0JBQ0UsSUFBSSxDQUFDLElBQUksQ0FDUCxXQUFXLEVBQ1gsU0FBUyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzFGO3FCQUNGO29CQUNILENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsRUFBRSxDQUNQO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsRUFBaUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLFNBQVMsRUFDVCxFQUFFLENBQUMsT0FBTyxFQUNWLEVBQUUsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtZQUMxQyxDQUFDLENBQUM7Z0JBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztpQkFDakUsQ0FBQzthQUNIO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFpQyxFQUFFLFlBQXVCLEVBQUU7O1FBQ2hFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLFFBQVEsR0FBRyxNQUFBLFNBQVMsQ0FBQyxXQUFXLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQ1AsVUFBVSxFQUNWLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHO2dCQUMxRCxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUM3RDtZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEtBQUssV0FBVyxNQUFNLEtBQUssQ0FBQztZQUNsRCxHQUFHLENBQUMsR0FBRyxJQUFJLE9BQU87Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxJQUFJLENBQ1AsUUFBUSxFQUNSLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxrQkFBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FDckM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUNQLFNBQVMsRUFDVCxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sR0FBRyxrQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUN2QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBeEdILDRCQXlHQztBQXhHUSxrQkFBUyxHQUFpQjtJQUMvQixlQUFlLEVBQUUsSUFBSTtJQUNyQixjQUFjLEVBQUUsSUFBSTtJQUNwQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGtCQUFrQixFQUFFO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsSUFBSTtLQUNkO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE91dHB1dFNwZW5kLCBUcmFuc2FjdGlvblN0YXR1cyB9IGZyb20gJ0BiaXRnby9ibG9ja2FwaXMnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZm9ybWF0U2F0IH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHsgSW5wdXRPdXRwdXRQYXJzZXIgfSBmcm9tICcuL0lucHV0T3V0cHV0UGFyc2VyJztcblxuZnVuY3Rpb24gZm9ybWF0Q29uc2Vuc3VzQnJhbmNoSWQoYnJhbmNoSWQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgICBPVkVSV0lOVEVSX0JSQU5DSF9JRDogMHg1YmE4MWIxOSxcbiAgICBDQU5PUFlfQlJBTkNIX0lEOiAweGU5ZmY3NWE2LFxuICAgIE5VNV9CUkFOQ0hfSUQ6IDB4YzJkNmQwYjQsXG4gIH07XG4gIHJldHVybiBPYmplY3Qua2V5cyhtYXApLmZpbmQoKGspID0+IG1hcFtrXSA9PT0gYnJhbmNoSWQpID8/ICd1bmtub3duJztcbn1cblxuZXhwb3J0IHR5cGUgVHhQYXJzZXJBcmdzID0ge1xuICBwYXJzZVNjcmlwdERhdGE6IGJvb2xlYW47XG4gIHBhcnNlU2NyaXB0QXNtOiBib29sZWFuO1xuICBwYXJzZU91dHB1dFNjcmlwdDogYm9vbGVhbjtcbiAgcGFyc2VTaWduYXR1cmVEYXRhOiB7XG4gICAgc2NyaXB0OiBib29sZWFuO1xuICAgIGVjZHNhOiBib29sZWFuO1xuICAgIHNjaG5vcnI6IGJvb2xlYW47XG4gIH07XG4gIGhpZGU/OiBzdHJpbmdbXTtcbiAgbWF4T3V0cHV0cz86IG51bWJlcjtcbiAgdmluPzogbnVtYmVyW107XG59O1xuXG5leHBvcnQgdHlwZSBDaGFpbkluZm8gPSB7XG4gIHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzO1xuICBvdXRwdXRTcGVuZHM/OiBPdXRwdXRTcGVuZFtdO1xuICBwcmV2T3V0cHV0cz86IHV0eG9saWIuVHhPdXRwdXRbXTtcbiAgcHJldk91dHB1dFNwZW5kcz86IE91dHB1dFNwZW5kW107XG59O1xuXG5leHBvcnQgY2xhc3MgVHhQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBzdGF0aWMgUEFSU0VfQUxMOiBUeFBhcnNlckFyZ3MgPSB7XG4gICAgcGFyc2VTY3JpcHREYXRhOiB0cnVlLFxuICAgIHBhcnNlU2NyaXB0QXNtOiB0cnVlLFxuICAgIHBhcnNlT3V0cHV0U2NyaXB0OiB0cnVlLFxuICAgIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgICAgc2NyaXB0OiB0cnVlLFxuICAgICAgZWNkc2E6IHRydWUsXG4gICAgICBzY2hub3JyOiB0cnVlLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJhbXM6IFR4UGFyc2VyQXJncykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwYXJzZUlucyhpbnM6IHV0eG9saWIuVHhJbnB1dFtdLCB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIG91dHB1dEluZm86IENoYWluSW5mbyk6IFBhcnNlck5vZGVbXSB7XG4gICAgY29uc3QgdHhpZCA9IHR4LmdldElkKCk7XG4gICAgY29uc3QgaW9QYXJzZXIgPSBuZXcgSW5wdXRPdXRwdXRQYXJzZXIodGhpcy5wYXJhbXMpO1xuICAgIHJldHVybiBpbnMuZmxhdE1hcCgoaW5wdXQsIGkpID0+XG4gICAgICB0aGlzLnBhcmFtcy52aW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzLnBhcmFtcy52aW4uaW5jbHVkZXMoaSlcbiAgICAgICAgPyBbaW9QYXJzZXIucGFyc2VJbnB1dCh0eGlkLCB0eCwgaSwgdHguaW5zW2ldLCBvdXRwdXRJbmZvKV1cbiAgICAgICAgOiBbXVxuICAgICk7XG4gIH1cblxuICBwYXJzZU91dHMob3V0czogdXR4b2xpYi5UeE91dHB1dFtdLCB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIHBhcmFtczogQ2hhaW5JbmZvKTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAob3V0cy5sZW5ndGggPiAodGhpcy5wYXJhbXMubWF4T3V0cHV0cyA/PyAyMDApKSB7XG4gICAgICByZXR1cm4gW3RoaXMubm9kZSgnKG9taXR0ZWQpJywgdW5kZWZpbmVkKV07XG4gICAgfVxuXG4gICAgY29uc3QgdHhpZCA9IHR4LmdldElkKCk7XG4gICAgY29uc3QgaW9QYXJzZXIgPSBuZXcgSW5wdXRPdXRwdXRQYXJzZXIodGhpcy5wYXJhbXMpO1xuICAgIHJldHVybiBvdXRzLm1hcCgobywgaSkgPT4gaW9QYXJzZXIucGFyc2VPdXRwdXQodHhpZCwgbywgaSwgdHgubmV0d29yaywgcGFyYW1zKSk7XG4gIH1cblxuICBwYXJzZVN0YXR1cyh0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24sIHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzKTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAoIXN0YXR1cykge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3N0YXR1cycsICd1bmtub3duJyldO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgc3RhdHVzLmZvdW5kID8gJ2ZvdW5kJyA6ICdub3QgZm91bmQnLFxuICAgICAgICBzdGF0dXMuZm91bmRcbiAgICAgICAgICA/IHN0YXR1cy5jb25maXJtZWRcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZShcbiAgICAgICAgICAgICAgICAgICdjb25maXJtZWQnLFxuICAgICAgICAgICAgICAgICAgYGJsb2NrICR7c3RhdHVzLmJsb2NrSGVpZ2h0fWAgKyAoc3RhdHVzLmRhdGUgPyBgIGRhdGU9JHtzdGF0dXMuZGF0ZS50b0lTT1N0cmluZygpfWAgOiAnJylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA6IFt0aGlzLm5vZGUoJ2NvbmZpcm1lZCcsIGZhbHNlKV1cbiAgICAgICAgICA6IFtdXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVZlcnNpb24odHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKTogUGFyc2VyTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICd2ZXJzaW9uJyxcbiAgICAgIHR4LnZlcnNpb24sXG4gICAgICB0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uWmNhc2hUcmFuc2FjdGlvblxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHRoaXMubm9kZSgnY29uc2Vuc3VzQnJhbmNoSWQgKGluZmVycmVkKScsIHR4LmNvbnNlbnN1c0JyYW5jaElkLnRvU3RyaW5nKDE2KSwgW1xuICAgICAgICAgICAgICB0aGlzLm5vZGUoJ25hbWUnLCBmb3JtYXRDb25zZW5zdXNCcmFuY2hJZCh0eC5jb25zZW5zdXNCcmFuY2hJZCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlKHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbiwgY2hhaW5JbmZvOiBDaGFpbkluZm8gPSB7fSk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IHdlaWdodCA9IHR4LndlaWdodCgpO1xuICAgIGNvbnN0IHZzaXplID0gdHgudmlydHVhbFNpemUoKTtcbiAgICBjb25zdCBvdXRwdXRTdW0gPSB0eC5vdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBvLnZhbHVlLCAwKTtcbiAgICBjb25zdCBpbnB1dFN1bSA9IGNoYWluSW5mby5wcmV2T3V0cHV0cz8ucmVkdWNlKChzdW0sIG8pID0+IHN1bSArIG8udmFsdWUsIDApO1xuICAgIGNvbnN0IGZlZSA9IGlucHV0U3VtID8gaW5wdXRTdW0gLSBvdXRwdXRTdW0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmVlUmF0ZSA9IGZlZSA/IGZlZSAvIHZzaXplIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLm5vZGUoJ3RyYW5zYWN0aW9uJywgdHguZ2V0SWQoKSwgW1xuICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAncGFyc2VkQXMnLFxuICAgICAgICBgJHt1dHhvbGliLmdldE5ldHdvcmtOYW1lKHV0eG9saWIuZ2V0TWFpbm5ldCh0eC5uZXR3b3JrKSl9IGAgK1xuICAgICAgICAgIGAke3V0eG9saWIuaXNNYWlubmV0KHR4Lm5ldHdvcmspID8gJ21haW5uZXQnIDogJ3Rlc3RuZXQnfWBcbiAgICAgICksXG4gICAgICB0aGlzLnBhcnNlVmVyc2lvbih0eCksXG4gICAgICB0aGlzLm5vZGUoJ2xvY2t0aW1lJywgdHgubG9ja3RpbWUpLFxuICAgICAgdGhpcy5ub2RlKCdoYXNXaXRuZXNzZXMnLCB0eC5oYXNXaXRuZXNzZXMoKSksXG4gICAgICAuLi50aGlzLnBhcnNlU3RhdHVzKHR4LCBjaGFpbkluZm8uc3RhdHVzKSxcbiAgICAgIHRoaXMubm9kZSgndnNpemUnLCBgJHt2c2l6ZX12Ynl0ZXMgKCR7d2VpZ2h0fXd1KWApLFxuICAgICAgLi4uKGZlZSAmJiBmZWVSYXRlXG4gICAgICAgID8gW3RoaXMubm9kZSgnZmVlIFtidGNdJywgZm9ybWF0U2F0KGZlZSkpLCB0aGlzLm5vZGUoJ2ZlZVJhdGUgW3NhdC92Ynl0ZV0nLCBmZWVSYXRlLnRvRml4ZWQoMikpXVxuICAgICAgICA6IFtdKSxcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgYGlucHV0c2AsXG4gICAgICAgIFtTdHJpbmcodHguaW5zLmxlbmd0aCldLmNvbmNhdChpbnB1dFN1bSA/IFsnc3VtPScgKyBmb3JtYXRTYXQoaW5wdXRTdW0pXSA6IFtdKS5qb2luKCcgJyksXG4gICAgICAgIHRoaXMucGFyc2VJbnModHguaW5zLCB0eCwgY2hhaW5JbmZvKVxuICAgICAgKSxcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgYG91dHB1dHNgLFxuICAgICAgICBbU3RyaW5nKHR4Lm91dHMubGVuZ3RoKSwgJ3N1bT0nICsgZm9ybWF0U2F0KG91dHB1dFN1bSldLmpvaW4oJyAnKSxcbiAgICAgICAgdGhpcy5wYXJzZU91dHModHgub3V0cywgdHgsIGNoYWluSW5mbylcbiAgICAgICksXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHhQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVHhQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQTJDO0FBQzNDLHFDQUE4QztBQUM5QyxxQ0FBcUM7QUFDckMseUNBQTRGO0FBQzVGLCtDQUE0QztBQUM1QyxpREFBOEM7QUFFOUMsU0FBUyx1QkFBdUIsQ0FBQyxRQUFnQjs7SUFDL0MsTUFBTSxHQUFHLEdBQTJCO1FBQ2xDLG9CQUFvQixFQUFFLFVBQVU7UUFDaEMsZ0JBQWdCLEVBQUUsVUFBVTtRQUM1QixhQUFhLEVBQUUsVUFBVTtLQUMxQixDQUFDO0lBQ0YsT0FBTyxNQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLG1DQUFJLFNBQVMsQ0FBQztBQUN4RSxDQUFDO0FBeUJELE1BQWEsUUFBUyxTQUFRLGVBQU07SUFhbEMsWUFBb0IsTUFBb0I7UUFDdEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBREksV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUV4QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQW9CLEVBQUUsRUFBWSxFQUFFLElBQVksRUFBRSxVQUFxQjtRQUM5RSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFvQixFQUFFLENBQVMsRUFBRSxFQUFFLENBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDLElBQUkseUJBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxD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RSxDQUFDO1lBQ1AsSUFBSSxDQUFDLElBQUksQ0FDUCxRQUFRLEVBQ1IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsa0JBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQ3pDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FDUCxTQUFTLEVBQ1QsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sR0FBRyxrQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUMzQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBeEdILDRCQXlHQztBQXhHUSxrQkFBUyxHQUFpQjtJQUMvQixlQUFlLEVBQUUsSUFBSTtJQUNyQixjQUFjLEVBQUUsSUFBSTtJQUNwQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLGtCQUFrQixFQUFFO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsSUFBSTtLQUNkO0lBQ0QsY0FBYyxFQUFFLEtBQUs7Q0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE91dHB1dFNwZW5kLCBUcmFuc2FjdGlvblN0YXR1cyB9IGZyb20gJ0BiaXRnby9ibG9ja2FwaXMnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgUGFyc2VyLCBQYXJzZXJOb2RlIH0gZnJvbSAnLi9QYXJzZXInO1xuaW1wb3J0IHsgZm9ybWF0U2F0IH0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHsgZ2V0UGFyc2VyVHhQcm9wZXJ0aWVzLCBQYXJzZXJUeCwgUGFyc2VyVHhJbnB1dCwgUGFyc2VyVHhPdXRwdXQgfSBmcm9tICcuL1BhcnNlclR4JztcbmltcG9ydCB7IElucHV0UGFyc2VyIH0gZnJvbSAnLi9JbnB1dFBhcnNlcic7XG5pbXBvcnQgeyBPdXRwdXRQYXJzZXIgfSBmcm9tICcuL091dHB1dFBhcnNlcic7XG5cbmZ1bmN0aW9uIGZvcm1hdENvbnNlbnN1c0JyYW5jaElkKGJyYW5jaElkOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgT1ZFUldJTlRFUl9CUkFOQ0hfSUQ6IDB4NWJhODFiMTksXG4gICAgQ0FOT1BZX0JSQU5DSF9JRDogMHhlOWZmNzVhNixcbiAgICBOVTVfQlJBTkNIX0lEOiAweGMyZDZkMGI0LFxuICB9O1xuICByZXR1cm4gT2JqZWN0LmtleXMobWFwKS5maW5kKChrKSA9PiBtYXBba10gPT09IGJyYW5jaElkKSA/PyAndW5rbm93bic7XG59XG5cbmV4cG9ydCB0eXBlIFR4UGFyc2VyQXJncyA9IHtcbiAgcGFyc2VTY3JpcHREYXRhOiBib29sZWFuO1xuICBwYXJzZVNjcmlwdEFzbTogYm9vbGVhbjtcbiAgcGFyc2VPdXRwdXRTY3JpcHQ6IGJvb2xlYW47XG4gIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgIHNjcmlwdDogYm9vbGVhbjtcbiAgICBlY2RzYTogYm9vbGVhbjtcbiAgICBzY2hub3JyOiBib29sZWFuO1xuICB9O1xuICBwYXJzZUFzVW5rbm93bjogYm9vbGVhbjtcbiAgaGlkZT86IHN0cmluZ1tdO1xuICBtYXhPdXRwdXRzPzogbnVtYmVyO1xuICB2aW4/OiBudW1iZXJbXTtcbiAgcGFyc2VFcnJvcj86ICd0aHJvdycgfCAnY29udGludWUnO1xufTtcblxuZXhwb3J0IHR5cGUgQ2hhaW5JbmZvID0ge1xuICBzdGF0dXM/OiBUcmFuc2FjdGlvblN0YXR1cztcbiAgb3V0cHV0U3BlbmRzPzogT3V0cHV0U3BlbmRbXTtcbiAgcHJldk91dHB1dHM/OiB1dHhvbGliLlR4T3V0cHV0PGJpZ2ludD5bXTtcbiAgcHJldk91dHB1dFNwZW5kcz86IE91dHB1dFNwZW5kW107XG59O1xuXG5leHBvcnQgY2xhc3MgVHhQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBzdGF0aWMgUEFSU0VfQUxMOiBUeFBhcnNlckFyZ3MgPSB7XG4gICAgcGFyc2VTY3JpcHREYXRhOiB0cnVlLFxuICAgIHBhcnNlU2NyaXB0QXNtOiB0cnVlLFxuICAgIHBhcnNlT3V0cHV0U2NyaXB0OiB0cnVlLFxuICAgIHBhcnNlU2lnbmF0dXJlRGF0YToge1xuICAgICAgc2NyaXB0OiB0cnVlLFxuICAgICAgZWNkc2E6IHRydWUsXG4gICAgICBzY2hub3JyOiB0cnVlLFxuICAgIH0sXG4gICAgcGFyc2VBc1Vua25vd246IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1zOiBUeFBhcnNlckFyZ3MpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICB9XG5cbiAgcGFyc2VJbnMoaW5zOiBQYXJzZXJUeElucHV0W10sIHR4OiBQYXJzZXJUeCwgdHhpZDogc3RyaW5nLCBvdXRwdXRJbmZvOiBDaGFpbkluZm8pOiBQYXJzZXJOb2RlW10ge1xuICAgIHJldHVybiBpbnMuZmxhdE1hcCgoaW5wdXQ6IFBhcnNlclR4SW5wdXQsIGk6IG51bWJlcikgPT5cbiAgICAgIHRoaXMucGFyYW1zLnZpbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucGFyYW1zLnZpbi5pbmNsdWRlcyhpKVxuICAgICAgICA/IFtuZXcgSW5wdXRQYXJzZXIodHhpZCwgdHgsIGksIG91dHB1dEluZm8sIHRoaXMucGFyYW1zKS5wYXJzZUlucHV0KCldXG4gICAgICAgIDogW11cbiAgICApO1xuICB9XG5cbiAgcGFyc2VPdXRzKG91dHM6IFBhcnNlclR4T3V0cHV0W10sIHR4OiBQYXJzZXJUeCwgdHhpZDogc3RyaW5nLCBwYXJhbXM6IENoYWluSW5mbyk6IFBhcnNlck5vZGVbXSB7XG4gICAgaWYgKG91dHMubGVuZ3RoID4gKHRoaXMucGFyYW1zLm1heE91dHB1dHMgPz8gMjAwKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJyhvbWl0dGVkKScsIHVuZGVmaW5lZCldO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRzLm1hcCgobywgaSkgPT4gbmV3IE91dHB1dFBhcnNlcih0eC5uZXR3b3JrLCB0eGlkLCBpLCBvLCBwYXJhbXMsIHRoaXMucGFyYW1zKS5wYXJzZU91dHB1dCgpKTtcbiAgfVxuXG4gIHBhcnNlU3RhdHVzKHN0YXR1cz86IFRyYW5zYWN0aW9uU3RhdHVzKTogUGFyc2VyTm9kZVtdIHtcbiAgICBpZiAoIXN0YXR1cykge1xuICAgICAgcmV0dXJuIFt0aGlzLm5vZGUoJ3N0YXR1cycsICd1bmtub3duJyldO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5ub2RlKFxuICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgc3RhdHVzLmZvdW5kID8gJ2ZvdW5kJyA6ICdub3QgZm91bmQnLFxuICAgICAgICBzdGF0dXMuZm91bmRcbiAgICAgICAgICA/IHN0YXR1cy5jb25maXJtZWRcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZShcbiAgICAgICAgICAgICAgICAgICdjb25maXJtZWQnLFxuICAgICAgICAgICAgICAgICAgYGJsb2NrICR7c3RhdHVzLmJsb2NrSGVpZ2h0fWAgKyAoc3RhdHVzLmRhdGUgPyBgIGRhdGU9JHtzdGF0dXMuZGF0ZS50b0lTT1N0cmluZygpfWAgOiAnJylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA6IFt0aGlzLm5vZGUoJ2NvbmZpcm1lZCcsIGZhbHNlKV1cbiAgICAgICAgICA6IFtdXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBwYXJzZVZlcnNpb24odHg6IHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4gfCB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KTogUGFyc2VyTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZShcbiAgICAgICd2ZXJzaW9uJyxcbiAgICAgIHR4LnZlcnNpb24sXG4gICAgICB0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uWmNhc2hUcmFuc2FjdGlvblxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHRoaXMubm9kZSgnY29uc2Vuc3VzQnJhbmNoSWQgKGluZmVycmVkKScsIHR4LmNvbnNlbnN1c0JyYW5jaElkLnRvU3RyaW5nKDE2KSwgW1xuICAgICAgICAgICAgICB0aGlzLm5vZGUoJ25hbWUnLCBmb3JtYXRDb25zZW5zdXNCcmFuY2hJZCh0eC5jb25zZW5zdXNCcmFuY2hJZCkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlKHR4OiBQYXJzZXJUeCwgY2hhaW5JbmZvOiBDaGFpbkluZm8gPSB7fSk6IFBhcnNlck5vZGUge1xuICAgIGNvbnN0IHsgZm9ybWF0LCBjb21wbGV0ZSwgaWQsIHdlaWdodCwgaW5wdXRzLCBvdXRwdXRzLCBoYXNXaXRuZXNzZXMsIGlucHV0U3VtLCBvdXRwdXRTdW0gfSA9IGdldFBhcnNlclR4UHJvcGVydGllcyhcbiAgICAgIHR4LFxuICAgICAgY2hhaW5JbmZvLnByZXZPdXRwdXRzXG4gICAgKTtcbiAgICBjb25zdCB2c2l6ZSA9IHdlaWdodCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogTWF0aC5jZWlsKHdlaWdodCAvIDQpO1xuICAgIGNvbnN0IGZlZSA9IGlucHV0U3VtID8gaW5wdXRTdW0gLSBvdXRwdXRTdW0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmVlUmF0ZSA9IGZlZSAmJiB2c2l6ZSA/IE51bWJlcihmZWUpIC8gdnNpemUgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHRoaXMubm9kZSgndHJhbnNhY3Rpb24nLCBpZCwgW1xuICAgICAgdGhpcy5ub2RlKCdmb3JtYXQnLCBmb3JtYXQpLFxuICAgICAgdGhpcy5ub2RlKCdjb21wbGV0ZScsIGNvbXBsZXRlKSxcbiAgICAgIHRoaXMubm9kZShcbiAgICAgICAgJ3BhcnNlZEFzJyxcbiAgICAgICAgYCR7dXR4b2xpYi5nZXROZXR3b3JrTmFtZSh1dHhvbGliLmdldE1haW5uZXQodHgubmV0d29yaykpfSBgICtcbiAgICAgICAgICBgJHt1dHhvbGliLmlzTWFpbm5ldCh0eC5uZXR3b3JrKSA/ICdtYWlubmV0JyA6ICd0ZXN0bmV0J31gXG4gICAgICApLFxuICAgICAgdGhpcy5wYXJzZVZlcnNpb24odHgpLFxuICAgICAgdGhpcy5ub2RlKCdsb2NrdGltZScsIHR4LmxvY2t0aW1lKSxcbiAgICAgIHRoaXMubm9kZSgnaGFzV2l0bmVzc2VzJywgaGFzV2l0bmVzc2VzKSxcbiAgICAgIC4uLnRoaXMucGFyc2VTdGF0dXMoY2hhaW5JbmZvLnN0YXR1cyksXG4gICAgICB0aGlzLm5vZGUoJ3ZzaXplJywgYCR7dnNpemV9dmJ5dGVzICgke3dlaWdodH13dSlgKSxcbiAgICAgIC4uLihmZWUgJiYgZmVlUmF0ZVxuICAgICAgICA/IFt0aGlzLm5vZGUoJ2ZlZSBbYnRjXScsIGZvcm1hdFNhdChmZWUpKSwgdGhpcy5ub2RlKCdmZWVSYXRlIFtzYXQvdmJ5dGVdJywgZmVlUmF0ZS50b0ZpeGVkKDIpKV1cbiAgICAgICAgOiBbXSksXG4gICAgICB0aGlzLm5vZGUoXG4gICAgICAgIGBpbnB1dHNgLFxuICAgICAgICBbaW5wdXRzLmxlbmd0aC50b1N0cmluZygpXS5jb25jYXQoaW5wdXRTdW0gPyBbJ3N1bT0nICsgZm9ybWF0U2F0KGlucHV0U3VtKV0gOiBbXSkuam9pbignICcpLFxuICAgICAgICB0aGlzLnBhcnNlSW5zKGlucHV0cywgdHgsIGlkLCBjaGFpbkluZm8pXG4gICAgICApLFxuICAgICAgdGhpcy5ub2RlKFxuICAgICAgICBgb3V0cHV0c2AsXG4gICAgICAgIFtvdXRwdXRzLmxlbmd0aC50b1N0cmluZygpLCAnc3VtPScgKyBmb3JtYXRTYXQob3V0cHV0U3VtKV0uam9pbignICcpLFxuICAgICAgICB0aGlzLnBhcnNlT3V0cyhvdXRwdXRzLCB0eCwgaWQsIGNoYWluSW5mbylcbiAgICAgICksXG4gICAgXSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import * as yargs from 'yargs';
2
2
  import { TxParser, TxParserArgs } from './TxParser';
3
3
  import { AddressParser } from './AddressParser';
4
+ import { ScriptParser } from './ScriptParser';
4
5
  declare type OutputFormat = 'tree' | 'json';
5
6
  declare type ArgsParseTransaction = {
6
7
  network: string;
@@ -8,7 +9,7 @@ declare type ArgsParseTransaction = {
8
9
  clipboard: boolean;
9
10
  path?: string;
10
11
  txid?: string;
11
- hex?: string;
12
+ data?: string;
12
13
  all: boolean;
13
14
  cache: boolean;
14
15
  format: OutputFormat;
@@ -16,7 +17,10 @@ declare type ArgsParseTransaction = {
16
17
  fetchStatus: boolean;
17
18
  fetchInputs: boolean;
18
19
  fetchSpends: boolean;
20
+ finalize: boolean;
19
21
  parseSignatureData: boolean;
22
+ parseAsUnknown: boolean;
23
+ parseError: 'throw' | 'continue';
20
24
  } & Omit<TxParserArgs, 'parseSignatureData'>;
21
25
  declare type ArgsParseAddress = {
22
26
  network?: string;
@@ -25,12 +29,28 @@ declare type ArgsParseAddress = {
25
29
  convert: boolean;
26
30
  address: string;
27
31
  };
32
+ declare type ArgsParseScript = {
33
+ network?: string;
34
+ format: OutputFormat;
35
+ all: boolean;
36
+ script: string;
37
+ };
38
+ export declare type ArgsGenerateAddress = {
39
+ network?: string;
40
+ userKey: string;
41
+ backupKey: string;
42
+ bitgoKey: string;
43
+ chain?: number[];
44
+ showDerivationPath?: boolean;
45
+ limit: number;
46
+ };
28
47
  export declare function getTxParser(argv: yargs.Arguments<ArgsParseTransaction>): TxParser;
29
48
  export declare function getAddressParser(argv: ArgsParseAddress): AddressParser;
49
+ export declare function getScriptParser(argv: ArgsParseScript): ScriptParser;
30
50
  export declare const cmdParseTx: {
31
51
  readonly command: "parseTx [path]";
32
52
  readonly aliases: readonly ["parse", "tx"];
33
- readonly describe: "display transaction components in human-readable form";
53
+ readonly describe: string;
34
54
  readonly builder: (b: yargs.Argv<unknown>) => yargs.Argv<ArgsParseTransaction>;
35
55
  readonly handler: (argv: yargs.Arguments<ArgsParseTransaction>) => Promise<void>;
36
56
  };
@@ -41,5 +61,17 @@ export declare const cmdParseAddress: {
41
61
  readonly builder: (b: yargs.Argv<unknown>) => yargs.Argv<ArgsParseAddress>;
42
62
  readonly handler: (argv: yargs.Arguments<ArgsParseAddress>) => void;
43
63
  };
64
+ export declare const cmdParseScript: {
65
+ command: string;
66
+ describe: string;
67
+ builder(b: yargs.Argv<unknown>): yargs.Argv<ArgsParseScript>;
68
+ handler(argv: yargs.Arguments<ArgsParseScript>): void;
69
+ };
70
+ export declare const cmdGenerateAddress: {
71
+ command: string;
72
+ describe: string;
73
+ builder(b: yargs.Argv<unknown>): yargs.Argv<ArgsGenerateAddress>;
74
+ handler(argv: yargs.Arguments<ArgsGenerateAddress>): void;
75
+ };
44
76
  export {};
45
77
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,aAAK,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC,aAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAE7C,aAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAyCF,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,QAAQ,CAYjF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CAEtE;AAED,eAAO,MAAM,UAAU;;;;0BAKV,MAAM,IAAI,CAAC,OAAO,CAAC,KAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC;6BAwB7C,MAAM,SAAS,CAAC,oBAAoB,CAAC,KAAG,QAAQ,IAAI,CAAC;CAuEjE,CAAC;AAEX,eAAO,MAAM,eAAe;;;;0BAIf,MAAM,IAAI,CAAC,OAAO,CAAC,KAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;6BAS/C,MAAM,SAAS,CAAC,gBAAgB,CAAC,KAAG,IAAI;CAI9C,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"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"}