@bitgo-beta/unspents 0.13.2-beta.9 → 0.13.2-beta.91

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 (56) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/bin/generate_tables.ts +94 -0
  3. package/dist/bin/generate_tables.d.ts +2 -0
  4. package/dist/bin/generate_tables.d.ts.map +1 -0
  5. package/dist/bin/generate_tables.js +94 -0
  6. package/dist/{codes.d.ts → src/codes.d.ts} +1 -0
  7. package/dist/src/codes.d.ts.map +1 -0
  8. package/dist/src/codes.js +168 -0
  9. package/dist/{dimensions.d.ts → src/dimensions.d.ts} +6 -7
  10. package/dist/src/dimensions.d.ts.map +1 -0
  11. package/dist/src/dimensions.js +485 -0
  12. package/dist/{index.d.ts → src/index.d.ts} +1 -0
  13. package/dist/src/index.d.ts.map +1 -0
  14. package/dist/{index.js → src/index.js} +1 -1
  15. package/dist/{inputWeights.d.ts → src/inputWeights.d.ts} +1 -0
  16. package/dist/src/inputWeights.d.ts.map +1 -0
  17. package/dist/src/inputWeights.js +97 -0
  18. package/dist/{scriptSizes.d.ts → src/scriptSizes.d.ts} +1 -0
  19. package/dist/src/scriptSizes.d.ts.map +1 -0
  20. package/dist/src/scriptSizes.js +51 -0
  21. package/dist/{types.d.ts → src/types.d.ts} +1 -0
  22. package/dist/src/types.d.ts.map +1 -0
  23. package/dist/{types.js → src/types.js} +1 -1
  24. package/dist/{virtualSizes.d.ts → src/virtualSizes.d.ts} +1 -0
  25. package/dist/src/virtualSizes.d.ts.map +1 -0
  26. package/dist/src/virtualSizes.js +114 -0
  27. package/dist/test/chain.d.ts +2 -0
  28. package/dist/test/chain.d.ts.map +1 -0
  29. package/dist/test/chain.js +92 -0
  30. package/dist/test/dimensions.d.ts +2 -0
  31. package/dist/test/dimensions.d.ts.map +1 -0
  32. package/dist/test/dimensions.js +211 -0
  33. package/dist/test/signedTx/inputWeights.d.ts +2 -0
  34. package/dist/test/signedTx/inputWeights.d.ts.map +1 -0
  35. package/dist/test/signedTx/inputWeights.js +113 -0
  36. package/dist/test/signedTx/txCombinations.d.ts +3 -0
  37. package/dist/test/signedTx/txCombinations.d.ts.map +1 -0
  38. package/dist/test/signedTx/txCombinations.js +116 -0
  39. package/dist/test/signedTx/txGen.d.ts +75 -0
  40. package/dist/test/signedTx/txGen.d.ts.map +1 -0
  41. package/dist/test/signedTx/txGen.js +219 -0
  42. package/dist/test/testutils.d.ts +36 -0
  43. package/dist/test/testutils.d.ts.map +1 -0
  44. package/dist/test/testutils.js +176 -0
  45. package/dist/test/virtualSizes.d.ts +2 -0
  46. package/dist/test/virtualSizes.d.ts.map +1 -0
  47. package/dist/test/virtualSizes.js +18 -0
  48. package/dist/tsconfig.build.tsbuildinfo +1 -0
  49. package/dist/tsconfig.tsbuildinfo +1 -0
  50. package/docs/input-costs.md +13 -0
  51. package/package.json +5 -5
  52. package/dist/codes.js +0 -168
  53. package/dist/dimensions.js +0 -490
  54. package/dist/inputWeights.js +0 -97
  55. package/dist/scriptSizes.js +0 -51
  56. package/dist/virtualSizes.js +0 -114
package/CHANGELOG.md CHANGED
@@ -3,6 +3,66 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.17.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.15.4...@bitgo/unspents@0.17.0) (2023-08-04)
7
+
8
+ ### Features
9
+
10
+ - **unspents:** add docs/input-costs.md, generation tool ([aa843da](https://github.com/BitGo/BitGoJS/commit/aa843da4ac4c538073c0244334500511998c0423))
11
+ - **unspents:** fix unspents module setup ([687f4c3](https://github.com/BitGo/BitGoJS/commit/687f4c3c29885b1e5b5bf9d79782d265937d6f1d)), closes [#3651](https://github.com/BitGo/BitGoJS/issues/3651)
12
+
13
+ # [0.16.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.15.4...@bitgo/unspents@0.16.0) (2023-07-28)
14
+
15
+ ### Features
16
+
17
+ - **unspents:** add docs/input-costs.md, generation tool ([aa843da](https://github.com/BitGo/BitGoJS/commit/aa843da4ac4c538073c0244334500511998c0423))
18
+ - **unspents:** fix unspents module setup ([687f4c3](https://github.com/BitGo/BitGoJS/commit/687f4c3c29885b1e5b5bf9d79782d265937d6f1d)), closes [#3651](https://github.com/BitGo/BitGoJS/issues/3651)
19
+
20
+ ## [0.15.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.15.3...@bitgo/unspents@0.15.4) (2023-07-18)
21
+
22
+ **Note:** Version bump only for package @bitgo/unspents
23
+
24
+ ## [0.15.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.15.2...@bitgo/unspents@0.15.3) (2023-06-21)
25
+
26
+ **Note:** Version bump only for package @bitgo/unspents
27
+
28
+ ## [0.15.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.15.1...@bitgo/unspents@0.15.2) (2023-06-13)
29
+
30
+ **Note:** Version bump only for package @bitgo/unspents
31
+
32
+ ## [0.15.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.15.0...@bitgo/unspents@0.15.1) (2023-06-07)
33
+
34
+ **Note:** Version bump only for package @bitgo/unspents
35
+
36
+ # [0.15.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.14.2...@bitgo/unspents@0.15.0) (2023-06-05)
37
+
38
+ ### Bug Fixes
39
+
40
+ - **utxo-lib:** use PsbtInput instead of UtxoPsbt ([1f73539](https://github.com/BitGo/BitGoJS/commit/1f73539409cf69fc55ab8aedb9d8873bb82bc375))
41
+
42
+ ### BREAKING CHANGES
43
+
44
+ - **utxo-lib:** functions signature is changed
45
+
46
+ ## [0.14.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.14.1...@bitgo/unspents@0.14.2) (2023-05-25)
47
+
48
+ **Note:** Version bump only for package @bitgo/unspents
49
+
50
+ ## [0.14.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.14.0...@bitgo/unspents@0.14.1) (2023-05-17)
51
+
52
+ ### Bug Fixes
53
+
54
+ - **bitgo:** drone is no longer used in this repo so can safely be removed ([badc0de](https://github.com/BitGo/BitGoJS/commit/badc0ded6870f56a0dc3925eba639b0fdb313c2b)), closes [#3554](https://github.com/BitGo/BitGoJS/issues/3554) [#3554](https://github.com/BitGo/BitGoJS/issues/3554)
55
+
56
+ # [0.14.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.13.2...@bitgo/unspents@0.14.0) (2023-05-10)
57
+
58
+ ### Features
59
+
60
+ - **utxo-lib:** add musig2 nonce at input index ([9991d3f](https://github.com/BitGo/BitGoJS/commit/9991d3ff4fbecc326c8fc67e523a5108843a0f9d))
61
+
62
+ ## [0.13.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.13.1...@bitgo/unspents@0.13.2) (2023-05-03)
63
+
64
+ **Note:** Version bump only for package @bitgo/unspents
65
+
6
66
  ## [0.13.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/unspents@0.13.0...@bitgo/unspents@0.13.1) (2023-04-25)
7
67
 
8
68
  **Note:** Version bump only for package @bitgo/unspents
@@ -0,0 +1,94 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+
4
+ import { Dimensions } from '../src';
5
+
6
+ const headers = [
7
+ 'Script Type',
8
+ 'Chain Codes',
9
+ 'Spend Type',
10
+ 'Input Size (Virtual Bytes)',
11
+ 'Relative Size (p2trMusig2 = 1.00)',
12
+ ];
13
+
14
+ const relativeCostRef = Dimensions.fromScriptType('taprootKeyPathSpend').getInputsVSize();
15
+
16
+ type Row = [string, string, string, string, string];
17
+
18
+ function formatMarkdownTable(headers: string[], rows: string[][]): string {
19
+ return [headers, headers.map(() => '---'), ...rows].map((row) => `| ${row.join(' | ')} |`).join('\n');
20
+ }
21
+
22
+ function generateRowsForScriptType(
23
+ headers: string[],
24
+ t: utxolib.bitgo.outputScripts.ScriptType2Of3,
25
+ params?: {
26
+ spendTypeName: string;
27
+ scriptTypeParams: { scriptPathLevel?: number };
28
+ }
29
+ ): Row[] {
30
+ const chainCode = utxolib.bitgo.toChainPair(t);
31
+
32
+ if (!params) {
33
+ if (t === 'p2tr') {
34
+ return [
35
+ ...generateRowsForScriptType(headers, t, {
36
+ spendTypeName: 'Script Path, Level 2 (Backup/User, Backup/BitGo)',
37
+ scriptTypeParams: { scriptPathLevel: 2 },
38
+ }),
39
+ ...generateRowsForScriptType(headers, t, {
40
+ spendTypeName: 'Script Path, Level 1 (User/BitGo)',
41
+ scriptTypeParams: { scriptPathLevel: 1 },
42
+ }),
43
+ ];
44
+ }
45
+
46
+ if (t === 'p2trMusig2') {
47
+ return [
48
+ ...generateRowsForScriptType(headers, t, {
49
+ spendTypeName: 'Script Path (Backup/User, Backup/BitGo)',
50
+ scriptTypeParams: { scriptPathLevel: 1 },
51
+ }),
52
+ ...generateRowsForScriptType(headers, t, {
53
+ spendTypeName: 'Key Path (User/BitGo)',
54
+ scriptTypeParams: { scriptPathLevel: undefined },
55
+ }),
56
+ ];
57
+ }
58
+ }
59
+
60
+ const inputVSize = Dimensions.fromScriptType(t, params?.scriptTypeParams).getInputsVSize();
61
+ const row: Row = [
62
+ t,
63
+ chainCode.join(`/`),
64
+ params?.spendTypeName ?? 'all',
65
+ inputVSize.toString(),
66
+ (inputVSize / relativeCostRef).toFixed(2),
67
+ ];
68
+ return [row];
69
+ }
70
+
71
+ function generateTables() {
72
+ const scriptTypes = [...utxolib.bitgo.outputScripts.scriptTypes2Of3];
73
+ return formatMarkdownTable(
74
+ headers,
75
+ scriptTypes.flatMap((s) => generateRowsForScriptType(headers, s))
76
+ );
77
+ }
78
+
79
+ function generateDocument() {
80
+ return [
81
+ '# Input Costs',
82
+ 'This document contains the worst-case input costs for various script types and spend types.',
83
+ 'The input costs are calculated using the `Dimensions` class from `@bitgo-beta/unspents`.',
84
+ '',
85
+ generateTables(),
86
+ ].join('\n');
87
+ }
88
+
89
+ if (require.main === module) {
90
+ const outfile = 'docs/input-costs.md';
91
+ fs.writeFile(outfile, generateDocument())
92
+ .then(() => console.log('wrote to', outfile))
93
+ .catch((e) => console.error(e));
94
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate_tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate_tables.d.ts","sourceRoot":"","sources":["../../bin/generate_tables.ts"],"names":[],"mappings":""}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const fs = __importStar(require("fs/promises"));
23
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
24
+ const src_1 = require("../src");
25
+ const headers = [
26
+ 'Script Type',
27
+ 'Chain Codes',
28
+ 'Spend Type',
29
+ 'Input Size (Virtual Bytes)',
30
+ 'Relative Size (p2trMusig2 = 1.00)',
31
+ ];
32
+ const relativeCostRef = src_1.Dimensions.fromScriptType('taprootKeyPathSpend').getInputsVSize();
33
+ function formatMarkdownTable(headers, rows) {
34
+ return [headers, headers.map(() => '---'), ...rows].map((row) => `| ${row.join(' | ')} |`).join('\n');
35
+ }
36
+ function generateRowsForScriptType(headers, t, params) {
37
+ var _a;
38
+ const chainCode = utxolib.bitgo.toChainPair(t);
39
+ if (!params) {
40
+ if (t === 'p2tr') {
41
+ return [
42
+ ...generateRowsForScriptType(headers, t, {
43
+ spendTypeName: 'Script Path, Level 2 (Backup/User, Backup/BitGo)',
44
+ scriptTypeParams: { scriptPathLevel: 2 },
45
+ }),
46
+ ...generateRowsForScriptType(headers, t, {
47
+ spendTypeName: 'Script Path, Level 1 (User/BitGo)',
48
+ scriptTypeParams: { scriptPathLevel: 1 },
49
+ }),
50
+ ];
51
+ }
52
+ if (t === 'p2trMusig2') {
53
+ return [
54
+ ...generateRowsForScriptType(headers, t, {
55
+ spendTypeName: 'Script Path (Backup/User, Backup/BitGo)',
56
+ scriptTypeParams: { scriptPathLevel: 1 },
57
+ }),
58
+ ...generateRowsForScriptType(headers, t, {
59
+ spendTypeName: 'Key Path (User/BitGo)',
60
+ scriptTypeParams: { scriptPathLevel: undefined },
61
+ }),
62
+ ];
63
+ }
64
+ }
65
+ const inputVSize = src_1.Dimensions.fromScriptType(t, params === null || params === void 0 ? void 0 : params.scriptTypeParams).getInputsVSize();
66
+ const row = [
67
+ t,
68
+ chainCode.join(`/`),
69
+ (_a = params === null || params === void 0 ? void 0 : params.spendTypeName) !== null && _a !== void 0 ? _a : 'all',
70
+ inputVSize.toString(),
71
+ (inputVSize / relativeCostRef).toFixed(2),
72
+ ];
73
+ return [row];
74
+ }
75
+ function generateTables() {
76
+ const scriptTypes = [...utxolib.bitgo.outputScripts.scriptTypes2Of3];
77
+ return formatMarkdownTable(headers, scriptTypes.flatMap((s) => generateRowsForScriptType(headers, s)));
78
+ }
79
+ function generateDocument() {
80
+ return [
81
+ '# Input Costs',
82
+ 'This document contains the worst-case input costs for various script types and spend types.',
83
+ 'The input costs are calculated using the `Dimensions` class from `@bitgo-beta/unspents`.',
84
+ '',
85
+ generateTables(),
86
+ ].join('\n');
87
+ }
88
+ if (require.main === module) {
89
+ const outfile = 'docs/input-costs.md';
90
+ fs.writeFile(outfile, generateDocument())
91
+ .then(() => console.log('wrote to', outfile))
92
+ .catch((e) => console.error(e));
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdGFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2dlbmVyYXRlX3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsOERBQWdEO0FBRWhELGdDQUFvQztBQUVwQyxNQUFNLE9BQU8sR0FBRztJQUNkLGFBQWE7SUFDYixhQUFhO0lBQ2IsWUFBWTtJQUNaLDRCQUE0QjtJQUM1QixtQ0FBbUM7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLGdCQUFVLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFJMUYsU0FBUyxtQkFBbUIsQ0FBQyxPQUFpQixFQUFFLElBQWdCO0lBQzlELE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEcsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQ2hDLE9BQWlCLEVBQ2pCLENBQTZDLEVBQzdDLE1BR0M7O0lBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFL0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNoQixPQUFPO2dCQUNMLEdBQUcseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsYUFBYSxFQUFFLGtEQUFrRDtvQkFDakUsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO2lCQUN6QyxDQUFDO2dCQUNGLEdBQUcseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsYUFBYSxFQUFFLG1DQUFtQztvQkFDbEQsZ0JBQWdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFO2lCQUN6QyxDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLEtBQUssWUFBWSxFQUFFO1lBQ3RCLE9BQU87Z0JBQ0wsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUseUNBQXlDO29CQUN4RCxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7Z0JBQ0YsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsdUJBQXVCO29CQUN0QyxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7aUJBQ2pELENBQUM7YUFDSCxDQUFDO1NBQ0g7S0FDRjtJQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZ0JBQWdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzRixNQUFNLEdBQUcsR0FBUTtRQUNmLENBQUM7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxhQUFhLG1DQUFJLEtBQUs7UUFDOUIsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUNyQixDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQzFDLENBQUM7SUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRSxPQUFPLG1CQUFtQixDQUN4QixPQUFPLEVBQ1AsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2xFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxnQkFBZ0I7SUFDdkIsT0FBTztRQUNMLGVBQWU7UUFDZiw2RkFBNkY7UUFDN0YsMEZBQTBGO1FBQzFGLEVBQUU7UUFDRixjQUFjLEVBQUU7S0FDakIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtJQUMzQixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQztJQUN0QyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5pbXBvcnQgeyBEaW1lbnNpb25zIH0gZnJvbSAnLi4vc3JjJztcblxuY29uc3QgaGVhZGVycyA9IFtcbiAgJ1NjcmlwdCBUeXBlJyxcbiAgJ0NoYWluIENvZGVzJyxcbiAgJ1NwZW5kIFR5cGUnLFxuICAnSW5wdXQgU2l6ZSAoVmlydHVhbCBCeXRlcyknLFxuICAnUmVsYXRpdmUgU2l6ZSAocDJ0ck11c2lnMiA9IDEuMDApJyxcbl07XG5cbmNvbnN0IHJlbGF0aXZlQ29zdFJlZiA9IERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUoJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKS5nZXRJbnB1dHNWU2l6ZSgpO1xuXG50eXBlIFJvdyA9IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZ107XG5cbmZ1bmN0aW9uIGZvcm1hdE1hcmtkb3duVGFibGUoaGVhZGVyczogc3RyaW5nW10sIHJvd3M6IHN0cmluZ1tdW10pOiBzdHJpbmcge1xuICByZXR1cm4gW2hlYWRlcnMsIGhlYWRlcnMubWFwKCgpID0+ICctLS0nKSwgLi4ucm93c10ubWFwKChyb3cpID0+IGB8ICR7cm93LmpvaW4oJyB8ICcpfSB8YCkuam9pbignXFxuJyk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoXG4gIGhlYWRlcnM6IHN0cmluZ1tdLFxuICB0OiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjMsXG4gIHBhcmFtcz86IHtcbiAgICBzcGVuZFR5cGVOYW1lOiBzdHJpbmc7XG4gICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw/OiBudW1iZXIgfTtcbiAgfVxuKTogUm93W10ge1xuICBjb25zdCBjaGFpbkNvZGUgPSB1dHhvbGliLmJpdGdvLnRvQ2hhaW5QYWlyKHQpO1xuXG4gIGlmICghcGFyYW1zKSB7XG4gICAgaWYgKHQgPT09ICdwMnRyJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ1NjcmlwdCBQYXRoLCBMZXZlbCAyIChCYWNrdXAvVXNlciwgQmFja3VwL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IDIgfSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLmdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgdCwge1xuICAgICAgICAgIHNwZW5kVHlwZU5hbWU6ICdTY3JpcHQgUGF0aCwgTGV2ZWwgMSAoVXNlci9CaXRHbyknLFxuICAgICAgICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAodCA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5nZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHQsIHtcbiAgICAgICAgICBzcGVuZFR5cGVOYW1lOiAnU2NyaXB0IFBhdGggKEJhY2t1cC9Vc2VyLCBCYWNrdXAvQml0R28pJyxcbiAgICAgICAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbDogMSB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ0tleSBQYXRoIChVc2VyL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IHVuZGVmaW5lZCB9LFxuICAgICAgICB9KSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5wdXRWU2l6ZSA9IERpbWVuc2lvbnMuZnJvbVNjcmlwdFR5cGUodCwgcGFyYW1zPy5zY3JpcHRUeXBlUGFyYW1zKS5nZXRJbnB1dHNWU2l6ZSgpO1xuICBjb25zdCByb3c6IFJvdyA9IFtcbiAgICB0LFxuICAgIGNoYWluQ29kZS5qb2luKGAvYCksXG4gICAgcGFyYW1zPy5zcGVuZFR5cGVOYW1lID8/ICdhbGwnLFxuICAgIGlucHV0VlNpemUudG9TdHJpbmcoKSxcbiAgICAoaW5wdXRWU2l6ZSAvIHJlbGF0aXZlQ29zdFJlZikudG9GaXhlZCgyKSxcbiAgXTtcbiAgcmV0dXJuIFtyb3ddO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVRhYmxlcygpIHtcbiAgY29uc3Qgc2NyaXB0VHlwZXMgPSBbLi4udXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnNjcmlwdFR5cGVzMk9mM107XG4gIHJldHVybiBmb3JtYXRNYXJrZG93blRhYmxlKFxuICAgIGhlYWRlcnMsXG4gICAgc2NyaXB0VHlwZXMuZmxhdE1hcCgocykgPT4gZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCBzKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVEb2N1bWVudCgpIHtcbiAgcmV0dXJuIFtcbiAgICAnIyBJbnB1dCBDb3N0cycsXG4gICAgJ1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHdvcnN0LWNhc2UgaW5wdXQgY29zdHMgZm9yIHZhcmlvdXMgc2NyaXB0IHR5cGVzIGFuZCBzcGVuZCB0eXBlcy4nLFxuICAgICdUaGUgaW5wdXQgY29zdHMgYXJlIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIGBEaW1lbnNpb25zYCBjbGFzcyBmcm9tIGBAYml0Z28tYmV0YS91bnNwZW50c2AuJyxcbiAgICAnJyxcbiAgICBnZW5lcmF0ZVRhYmxlcygpLFxuICBdLmpvaW4oJ1xcbicpO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgY29uc3Qgb3V0ZmlsZSA9ICdkb2NzL2lucHV0LWNvc3RzLm1kJztcbiAgZnMud3JpdGVGaWxlKG91dGZpbGUsIGdlbmVyYXRlRG9jdW1lbnQoKSlcbiAgICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnd3JvdGUgdG8nLCBvdXRmaWxlKSlcbiAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoZSkpO1xufVxuIl19
@@ -77,3 +77,4 @@ declare const _default: Readonly<{
77
77
  }>;
78
78
  /** @deprecated - use utxolib.bitgo */
79
79
  export default _default;
80
+ //# sourceMappingURL=codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/codes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,oBAAY,SAAS,GAAG,MAAM,CAAC;AAE/B,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,SAAS;CAG5B;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAID,oBAAY,OAAO;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AA0BD,eAAO,MAAM,SAAS,4BAAoD,CAAC;AAmB3E,eAAO,MAAM,OAAO,MAAO,SAAS,KAAG,OAA8C,CAAC;AAStF,qBAAa,SAAS;IACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC5B,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;IAIhC,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;CAMrC;AAED,qBAAa,cAAe,SAAQ,SAAS;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;gBAEf,CAAC,EAAE,WAAW;CAa3B;AAED,qBAAa,WAAY,SAAQ,SAAS;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;gBAEX,CAAC,EAAE,OAAO;CAevB;;;IAgBC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;;AAxCxC,sCAAsC;AACtC,wBAyCG"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.CodesByType = exports.CodesByPurpose = exports.CodeGroup = exports.isValid = exports.ChainType = exports.Purpose = exports.UnspentType = exports.ErrorInvalidCode = void 0;
23
+ const tcomb = __importStar(require("tcomb"));
24
+ class ErrorInvalidCode extends Error {
25
+ constructor(code) {
26
+ super(`invalid code ${code}`);
27
+ }
28
+ }
29
+ exports.ErrorInvalidCode = ErrorInvalidCode;
30
+ var UnspentType;
31
+ (function (UnspentType) {
32
+ UnspentType["p2pkh"] = "p2pkh";
33
+ UnspentType["p2sh"] = "p2sh";
34
+ UnspentType["p2shP2wsh"] = "p2shP2wsh";
35
+ UnspentType["p2wpkh"] = "p2wpkh";
36
+ UnspentType["p2wsh"] = "p2wsh";
37
+ UnspentType["p2tr"] = "p2tr";
38
+ })(UnspentType = exports.UnspentType || (exports.UnspentType = {}));
39
+ const UnspentTypeTcomb = tcomb.enums.of(Object.keys(UnspentType));
40
+ var Purpose;
41
+ (function (Purpose) {
42
+ Purpose["internal"] = "internal";
43
+ Purpose["external"] = "external";
44
+ })(Purpose = exports.Purpose || (exports.Purpose = {}));
45
+ const PurposeTcomb = tcomb.enums.of(Object.keys(Purpose));
46
+ const codeList = Object.freeze([
47
+ [0, UnspentType.p2sh, Purpose.external],
48
+ [10, UnspentType.p2shP2wsh, Purpose.external],
49
+ [20, UnspentType.p2wsh, Purpose.external],
50
+ [30, UnspentType.p2tr, Purpose.external],
51
+ [1, UnspentType.p2sh, Purpose.internal],
52
+ [11, UnspentType.p2shP2wsh, Purpose.internal],
53
+ [21, UnspentType.p2wsh, Purpose.internal],
54
+ [31, UnspentType.p2tr, Purpose.internal],
55
+ ].map(([id, type, purpose]) => Object.freeze({ id, type, purpose })));
56
+ exports.ChainType = tcomb.irreducible('ChainType', (n) => exports.isValid(n));
57
+ const forType = (u) => {
58
+ // Do tcomb type checking in js projects that use this lib
59
+ if (!UnspentTypeTcomb.is(u)) {
60
+ throw new Error(`invalid unspent type: ${u}`);
61
+ }
62
+ return new CodesByPurpose(u);
63
+ };
64
+ const typeForCode = (c) => {
65
+ const code = codeList.find(({ id }) => id === c);
66
+ if (!code) {
67
+ throw new ErrorInvalidCode(c);
68
+ }
69
+ return code.type;
70
+ };
71
+ const isValid = (c) => codeList.some(({ id }) => id === c);
72
+ exports.isValid = isValid;
73
+ const throwIfUndefined = (v) => {
74
+ if (v === undefined) {
75
+ throw new Error(`expected value to be defined`);
76
+ }
77
+ return v;
78
+ };
79
+ class CodeGroup {
80
+ constructor(values) {
81
+ this.values = Object.freeze([...values]);
82
+ }
83
+ has(code) {
84
+ if (!exports.isValid(code)) {
85
+ throw new ErrorInvalidCode(code);
86
+ }
87
+ return this.values.includes(code);
88
+ }
89
+ }
90
+ exports.CodeGroup = CodeGroup;
91
+ class CodesByPurpose extends CodeGroup {
92
+ constructor(t) {
93
+ const codeMap = new Map(codeList.filter(({ type }) => type === t).map(({ purpose, id }) => [purpose, id]));
94
+ if (codeMap.size !== 2) {
95
+ throw new Error(`unexpected number of codes for type ${t}`);
96
+ }
97
+ super(codeMap.values());
98
+ this.internal = throwIfUndefined(codeMap.get(Purpose.internal));
99
+ this.external = throwIfUndefined(codeMap.get(Purpose.external));
100
+ }
101
+ }
102
+ exports.CodesByPurpose = CodesByPurpose;
103
+ class CodesByType extends CodeGroup {
104
+ constructor(p) {
105
+ const codeMap = new Map(codeList.filter(({ purpose }) => purpose === p).map(({ type, id }) => [type, id]));
106
+ if (codeMap.size !== 4) {
107
+ throw new Error(`unexpected number of codes`);
108
+ }
109
+ super(codeMap.values());
110
+ this.p2sh = throwIfUndefined(codeMap.get(UnspentType.p2sh));
111
+ this.p2shP2wsh = throwIfUndefined(codeMap.get(UnspentType.p2shP2wsh));
112
+ this.p2wsh = throwIfUndefined(codeMap.get(UnspentType.p2wsh));
113
+ this.p2tr = throwIfUndefined(codeMap.get(UnspentType.p2tr));
114
+ }
115
+ }
116
+ exports.CodesByType = CodesByType;
117
+ const boundHas = (instance) => instance.has.bind(instance);
118
+ const p2sh = Object.freeze(new CodesByPurpose(UnspentType.p2sh));
119
+ const p2shP2wsh = Object.freeze(new CodesByPurpose(UnspentType.p2shP2wsh));
120
+ const p2wsh = Object.freeze(new CodesByPurpose(UnspentType.p2wsh));
121
+ const p2tr = Object.freeze(new CodesByPurpose(UnspentType.p2tr));
122
+ const external = Object.freeze(new CodesByType(Purpose.external));
123
+ const internal = Object.freeze(new CodesByType(Purpose.internal));
124
+ const all = Object.freeze(codeList.map(({ id }) => id));
125
+ /** @deprecated - use utxolib.bitgo */
126
+ exports.default = Object.freeze({
127
+ /* @deprecated: use ChainCodeTcomb */
128
+ ChainType: exports.ChainType,
129
+ /** @deprecated - use utxolib.bitgo */
130
+ ChainCodeTcomb: exports.ChainType,
131
+ /** @deprecated - use utxolib.bitgo */
132
+ PurposeTcomb,
133
+ /** @deprecated - use utxolib.bitgo */
134
+ UnspentTypeTcomb,
135
+ /** @deprecated - use utxolib.bitgo */
136
+ p2sh,
137
+ /** @deprecated - use utxolib.bitgo */
138
+ p2shP2wsh,
139
+ /** @deprecated - use utxolib.bitgo */
140
+ p2wsh,
141
+ /** @deprecated - use utxolib.bitgo */
142
+ p2tr,
143
+ /** @deprecated - use utxolib.bitgo */
144
+ external,
145
+ /** @deprecated - use utxolib.bitgo */
146
+ internal,
147
+ /** @deprecated - use utxolib.bitgo */
148
+ all,
149
+ /** @deprecated - use utxolib.bitgo */
150
+ isP2sh: boundHas(p2sh),
151
+ /** @deprecated - use utxolib.bitgo */
152
+ isP2shP2wsh: boundHas(p2shP2wsh),
153
+ /** @deprecated - use utxolib.bitgo */
154
+ isP2wsh: boundHas(p2wsh),
155
+ /** @deprecated - use utxolib.bitgo */
156
+ isP2tr: boundHas(p2tr),
157
+ /** @deprecated - use utxolib.bitgo */
158
+ isExternal: boundHas(external),
159
+ /** @deprecated - use utxolib.bitgo */
160
+ isInternal: boundHas(internal),
161
+ /** @deprecated - use utxolib.bitgo */
162
+ isValid: exports.isValid,
163
+ /** @deprecated - use utxolib.bitgo */
164
+ forType,
165
+ /** @deprecated - use utxolib.bitgo */
166
+ typeForCode,
167
+ });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUkvQixNQUFhLGdCQUFpQixTQUFRLEtBQUs7SUFDekMsWUFBWSxJQUFlO1FBQ3pCLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFKRCw0Q0FJQztBQUVELElBQVksV0FPWDtBQVBELFdBQVksV0FBVztJQUNyQiw4QkFBZSxDQUFBO0lBQ2YsNEJBQWEsQ0FBQTtJQUNiLHNDQUF1QixDQUFBO0lBQ3ZCLGdDQUFpQixDQUFBO0lBQ2pCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQVBXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBT3RCO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFFbEUsSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLGdDQUFxQixDQUFBO0lBQ3JCLGdDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFHbEI7QUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFRMUQsTUFBTSxRQUFRLEdBQW1DLE1BQU0sQ0FBQyxNQUFNLENBRTFEO0lBQ0UsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDekMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBRXhDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDN0MsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3pDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztDQUUzQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUNyRSxDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBYyxFQUFrQixFQUFFO0lBQ2pELDBEQUEwRDtJQUMxRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDL0M7SUFFRCxPQUFPLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBWSxFQUFlLEVBQUU7SUFDaEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsTUFBTSxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9CO0lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVLLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBWSxFQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQXpFLFFBQUEsT0FBTyxXQUFrRTtBQUV0RixNQUFNLGdCQUFnQixHQUFHLENBQUksQ0FBZ0IsRUFBSyxFQUFFO0lBQ2xELElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7S0FDakQ7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsQ0FBQztBQUVGLE1BQWEsU0FBUztJQUVwQixZQUFZLE1BQTJCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sR0FBRyxDQUFDLElBQWU7UUFDeEIsSUFBSSxDQUFDLGVBQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixNQUFNLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQVpELDhCQVlDO0FBRUQsTUFBYSxjQUFlLFNBQVEsU0FBUztJQUkzQyxZQUFZLENBQWM7UUFDeEIsTUFBTSxPQUFPLEdBQTRCLElBQUksR0FBRyxDQUM5QyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUF3QixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDeEcsQ0FBQztRQUNGLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM3RDtRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQWpCRCx3Q0FpQkM7QUFFRCxNQUFhLFdBQVksU0FBUSxTQUFTO0lBTXhDLFlBQVksQ0FBVTtRQUNwQixNQUFNLE9BQU8sR0FBZ0MsSUFBSSxHQUFHLENBQ2xELFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQTRCLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM1RyxDQUFDO1FBQ0YsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0M7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQXJCRCxrQ0FxQkM7QUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQW1CLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXRFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMzRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNsRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFeEQsc0NBQXNDO0FBQ3RDLGtCQUFlLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDM0IscUNBQXFDO0lBQ3JDLFNBQVMsRUFBVCxpQkFBUztJQUNULHNDQUFzQztJQUN0QyxjQUFjLEVBQUUsaUJBQVM7SUFDekIsc0NBQXNDO0lBQ3RDLFlBQVk7SUFDWixzQ0FBc0M7SUFDdEMsZ0JBQWdCO0lBQ2hCLHNDQUFzQztJQUN0QyxJQUFJO0lBQ0osc0NBQXNDO0lBQ3RDLFNBQVM7SUFDVCxzQ0FBc0M7SUFDdEMsS0FBSztJQUNMLHNDQUFzQztJQUN0QyxJQUFJO0lBQ0osc0NBQXNDO0lBQ3RDLFFBQVE7SUFDUixzQ0FBc0M7SUFDdEMsUUFBUTtJQUNSLHNDQUFzQztJQUN0QyxHQUFHO0lBQ0gsc0NBQXNDO0lBQ3RDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3RCLHNDQUFzQztJQUN0QyxXQUFXLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUNoQyxzQ0FBc0M7SUFDdEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDeEIsc0NBQXNDO0lBQ3RDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3RCLHNDQUFzQztJQUN0QyxVQUFVLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUM5QixzQ0FBc0M7SUFDdEMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDOUIsc0NBQXNDO0lBQ3RDLE9BQU8sRUFBUCxlQUFPO0lBQ1Asc0NBQXNDO0lBQ3RDLE9BQU87SUFDUCxzQ0FBc0M7SUFDdEMsV0FBVztDQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRjb21iIGZyb20gJ3Rjb21iJztcblxuZXhwb3J0IHR5cGUgQ2hhaW5Db2RlID0gbnVtYmVyO1xuXG5leHBvcnQgY2xhc3MgRXJyb3JJbnZhbGlkQ29kZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoY29kZTogQ2hhaW5Db2RlKSB7XG4gICAgc3VwZXIoYGludmFsaWQgY29kZSAke2NvZGV9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGVudW0gVW5zcGVudFR5cGUge1xuICBwMnBraCA9ICdwMnBraCcsXG4gIHAyc2ggPSAncDJzaCcsXG4gIHAyc2hQMndzaCA9ICdwMnNoUDJ3c2gnLFxuICBwMndwa2ggPSAncDJ3cGtoJyxcbiAgcDJ3c2ggPSAncDJ3c2gnLFxuICBwMnRyID0gJ3AydHInLFxufVxuXG5jb25zdCBVbnNwZW50VHlwZVRjb21iID0gdGNvbWIuZW51bXMub2YoT2JqZWN0LmtleXMoVW5zcGVudFR5cGUpKTtcblxuZXhwb3J0IGVudW0gUHVycG9zZSB7XG4gIGludGVybmFsID0gJ2ludGVybmFsJyxcbiAgZXh0ZXJuYWwgPSAnZXh0ZXJuYWwnLFxufVxuXG5jb25zdCBQdXJwb3NlVGNvbWIgPSB0Y29tYi5lbnVtcy5vZihPYmplY3Qua2V5cyhQdXJwb3NlKSk7XG5cbmludGVyZmFjZSBJQ29kZSB7XG4gIGlkOiBDaGFpbkNvZGU7XG4gIHR5cGU6IFVuc3BlbnRUeXBlO1xuICBwdXJwb3NlOiBQdXJwb3NlO1xufVxuXG5jb25zdCBjb2RlTGlzdDogUmVhZG9ubHlBcnJheTxSZWFkb25seTxJQ29kZT4+ID0gT2JqZWN0LmZyZWV6ZShcbiAgKFxuICAgIFtcbiAgICAgIFswLCBVbnNwZW50VHlwZS5wMnNoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFsxMCwgVW5zcGVudFR5cGUucDJzaFAyd3NoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFsyMCwgVW5zcGVudFR5cGUucDJ3c2gsIFB1cnBvc2UuZXh0ZXJuYWxdLFxuICAgICAgWzMwLCBVbnNwZW50VHlwZS5wMnRyLCBQdXJwb3NlLmV4dGVybmFsXSxcblxuICAgICAgWzEsIFVuc3BlbnRUeXBlLnAyc2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzExLCBVbnNwZW50VHlwZS5wMnNoUDJ3c2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzIxLCBVbnNwZW50VHlwZS5wMndzaCwgUHVycG9zZS5pbnRlcm5hbF0sXG4gICAgICBbMzEsIFVuc3BlbnRUeXBlLnAydHIsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgIF0gYXMgQXJyYXk8W0NoYWluQ29kZSwgVW5zcGVudFR5cGUsIFB1cnBvc2VdPlxuICApLm1hcCgoW2lkLCB0eXBlLCBwdXJwb3NlXSkgPT4gT2JqZWN0LmZyZWV6ZSh7IGlkLCB0eXBlLCBwdXJwb3NlIH0pKVxuKTtcblxuZXhwb3J0IGNvbnN0IENoYWluVHlwZSA9IHRjb21iLmlycmVkdWNpYmxlKCdDaGFpblR5cGUnLCAobikgPT4gaXNWYWxpZChuKSk7XG5cbmNvbnN0IGZvclR5cGUgPSAodTogVW5zcGVudFR5cGUpOiBDb2Rlc0J5UHVycG9zZSA9PiB7XG4gIC8vIERvIHRjb21iIHR5cGUgY2hlY2tpbmcgaW4ganMgcHJvamVjdHMgdGhhdCB1c2UgdGhpcyBsaWJcbiAgaWYgKCFVbnNwZW50VHlwZVRjb21iLmlzKHUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHVuc3BlbnQgdHlwZTogJHt1fWApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBDb2Rlc0J5UHVycG9zZSh1KTtcbn07XG5cbmNvbnN0IHR5cGVGb3JDb2RlID0gKGM6IENoYWluQ29kZSk6IFVuc3BlbnRUeXBlID0+IHtcbiAgY29uc3QgY29kZSA9IGNvZGVMaXN0LmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IGMpO1xuICBpZiAoIWNvZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JJbnZhbGlkQ29kZShjKTtcbiAgfVxuICByZXR1cm4gY29kZS50eXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAoYzogQ2hhaW5Db2RlKTogYm9vbGVhbiA9PiBjb2RlTGlzdC5zb21lKCh7IGlkIH0pID0+IGlkID09PSBjKTtcblxuY29uc3QgdGhyb3dJZlVuZGVmaW5lZCA9IDxUPih2OiBUIHwgdW5kZWZpbmVkKTogVCA9PiB7XG4gIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHZhbHVlIHRvIGJlIGRlZmluZWRgKTtcbiAgfVxuICByZXR1cm4gdjtcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgdmFsdWVzOiBSZWFkb25seUFycmF5PENoYWluQ29kZT47XG4gIGNvbnN0cnVjdG9yKHZhbHVlczogSXRlcmFibGU8Q2hhaW5Db2RlPikge1xuICAgIHRoaXMudmFsdWVzID0gT2JqZWN0LmZyZWV6ZShbLi4udmFsdWVzXSk7XG4gIH1cblxuICBwdWJsaWMgaGFzKGNvZGU6IENoYWluQ29kZSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNWYWxpZChjb2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9ySW52YWxpZENvZGUoY29kZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlcy5pbmNsdWRlcyhjb2RlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29kZXNCeVB1cnBvc2UgZXh0ZW5kcyBDb2RlR3JvdXAge1xuICBwdWJsaWMgaW50ZXJuYWw6IENoYWluQ29kZTtcbiAgcHVibGljIGV4dGVybmFsOiBDaGFpbkNvZGU7XG5cbiAgY29uc3RydWN0b3IodDogVW5zcGVudFR5cGUpIHtcbiAgICBjb25zdCBjb2RlTWFwOiBNYXA8UHVycG9zZSwgQ2hhaW5Db2RlPiA9IG5ldyBNYXAoXG4gICAgICBjb2RlTGlzdC5maWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSB0KS5tYXAoKHsgcHVycG9zZSwgaWQgfSk6IFtQdXJwb3NlLCBDaGFpbkNvZGVdID0+IFtwdXJwb3NlLCBpZF0pXG4gICAgKTtcbiAgICBpZiAoY29kZU1hcC5zaXplICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvZGVzIGZvciB0eXBlICR7dH1gKTtcbiAgICB9XG5cbiAgICBzdXBlcihjb2RlTWFwLnZhbHVlcygpKTtcblxuICAgIHRoaXMuaW50ZXJuYWwgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFB1cnBvc2UuaW50ZXJuYWwpKTtcbiAgICB0aGlzLmV4dGVybmFsID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChQdXJwb3NlLmV4dGVybmFsKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvZGVzQnlUeXBlIGV4dGVuZHMgQ29kZUdyb3VwIHtcbiAgcHVibGljIHAyc2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAyc2hQMndzaDogQ2hhaW5Db2RlO1xuICBwdWJsaWMgcDJ3c2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAydHI6IENoYWluQ29kZTtcblxuICBjb25zdHJ1Y3RvcihwOiBQdXJwb3NlKSB7XG4gICAgY29uc3QgY29kZU1hcDogTWFwPFVuc3BlbnRUeXBlLCBDaGFpbkNvZGU+ID0gbmV3IE1hcChcbiAgICAgIGNvZGVMaXN0LmZpbHRlcigoeyBwdXJwb3NlIH0pID0+IHB1cnBvc2UgPT09IHApLm1hcCgoeyB0eXBlLCBpZCB9KTogW1Vuc3BlbnRUeXBlLCBDaGFpbkNvZGVdID0+IFt0eXBlLCBpZF0pXG4gICAgKTtcbiAgICBpZiAoY29kZU1hcC5zaXplICE9PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvZGVzYCk7XG4gICAgfVxuXG4gICAgc3VwZXIoY29kZU1hcC52YWx1ZXMoKSk7XG5cbiAgICB0aGlzLnAyc2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyc2gpKTtcbiAgICB0aGlzLnAyc2hQMndzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJzaFAyd3NoKSk7XG4gICAgdGhpcy5wMndzaCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoVW5zcGVudFR5cGUucDJ3c2gpKTtcbiAgICB0aGlzLnAydHIgPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAydHIpKTtcbiAgfVxufVxuXG5jb25zdCBib3VuZEhhcyA9IChpbnN0YW5jZTogQ29kZUdyb3VwKSA9PiBpbnN0YW5jZS5oYXMuYmluZChpbnN0YW5jZSk7XG5cbmNvbnN0IHAyc2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnNoKSk7XG5jb25zdCBwMnNoUDJ3c2ggPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnNoUDJ3c2gpKTtcbmNvbnN0IHAyd3NoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJ3c2gpKTtcbmNvbnN0IHAydHIgPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5UHVycG9zZShVbnNwZW50VHlwZS5wMnRyKSk7XG5jb25zdCBleHRlcm5hbCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlUeXBlKFB1cnBvc2UuZXh0ZXJuYWwpKTtcbmNvbnN0IGludGVybmFsID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVR5cGUoUHVycG9zZS5pbnRlcm5hbCkpO1xuY29uc3QgYWxsID0gT2JqZWN0LmZyZWV6ZShjb2RlTGlzdC5tYXAoKHsgaWQgfSkgPT4gaWQpKTtcblxuLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5mcmVlemUoe1xuICAvKiBAZGVwcmVjYXRlZDogdXNlIENoYWluQ29kZVRjb21iICovXG4gIENoYWluVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgQ2hhaW5Db2RlVGNvbWI6IENoYWluVHlwZSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgUHVycG9zZVRjb21iLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBVbnNwZW50VHlwZVRjb21iLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnNoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnNoUDJ3c2gsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHAyd3NoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMnRyLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBleHRlcm5hbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaW50ZXJuYWwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGFsbCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnNoOiBib3VuZEhhcyhwMnNoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnNoUDJ3c2g6IGJvdW5kSGFzKHAyc2hQMndzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJ3c2g6IGJvdW5kSGFzKHAyd3NoKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNQMnRyOiBib3VuZEhhcyhwMnRyKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNFeHRlcm5hbDogYm91bmRIYXMoZXh0ZXJuYWwpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc0ludGVybmFsOiBib3VuZEhhcyhpbnRlcm5hbCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzVmFsaWQsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGZvclR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIHR5cGVGb3JDb2RlLFxufSk7XG4iXX0=
@@ -119,10 +119,9 @@ export declare class Dimensions {
119
119
  static fromInput(input: utxolib.TxInput, params?: FromInputParams): Dimensions;
120
120
  /**
121
121
  * Create Dimensions from psbt input
122
- * @param psbt - psbt
123
- * @param inputIndex - psbt input index
122
+ * @param input - psbt input
124
123
  */
125
- static fromPsbtInput(psbt: bitgo.UtxoPsbt, inputIndex: number): Dimensions;
124
+ static fromPsbtInput(input: bitgo.PsbtInputType): Dimensions;
126
125
  /**
127
126
  * @param inputs - Array of inputs
128
127
  * @param params - @see Dimensions.fromInput()
@@ -131,11 +130,10 @@ export declare class Dimensions {
131
130
  static fromInputs(inputs: utxolib.TxInput[], params?: FromInputParams): Dimensions;
132
131
  /**
133
132
  * Create Dimensions from multiple psbt inputs
134
- * @param psbt
135
- * @param params - @see Dimensions.fromInput()
136
- * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromInput())
133
+ * @param inputs psbt input array
134
+ * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromPsbtInput())
137
135
  */
138
- static fromPsbtInputs(psbt: bitgo.UtxoPsbt): Dimensions;
136
+ static fromPsbtInputs(inputs: bitgo.PsbtInputType[]): Dimensions;
139
137
  /**
140
138
  * @param scriptLength {number} - size of the output script in bytes
141
139
  * @return {Dimensions} - Dimensions of the output
@@ -234,3 +232,4 @@ export declare class Dimensions {
234
232
  */
235
233
  getVSize(): number;
236
234
  }
235
+ //# sourceMappingURL=dimensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/dimensions.ts"],"names":[],"mappings":"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"}