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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.mocharc.js +1 -1
  2. package/CHANGELOG.md +541 -0
  3. package/bin/generate_tables.ts +94 -0
  4. package/dist/bin/generate_tables.d.ts +2 -0
  5. package/dist/bin/generate_tables.d.ts.map +1 -0
  6. package/dist/bin/generate_tables.js +107 -0
  7. package/dist/{codes.d.ts → src/codes.d.ts} +11 -10
  8. package/dist/src/codes.d.ts.map +1 -0
  9. package/dist/src/codes.js +182 -0
  10. package/dist/{dimensions.d.ts → src/dimensions.d.ts} +10 -11
  11. package/dist/src/dimensions.d.ts.map +1 -0
  12. package/dist/src/dimensions.js +500 -0
  13. package/dist/{index.d.ts → src/index.d.ts} +1 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +44 -0
  16. package/dist/{inputWeights.d.ts → src/inputWeights.d.ts} +4 -3
  17. package/dist/src/inputWeights.d.ts.map +1 -0
  18. package/dist/src/inputWeights.js +97 -0
  19. package/dist/{scriptSizes.d.ts → src/scriptSizes.d.ts} +1 -0
  20. package/dist/src/scriptSizes.d.ts.map +1 -0
  21. package/dist/src/scriptSizes.js +50 -0
  22. package/dist/{types.d.ts → src/types.d.ts} +1 -0
  23. package/dist/src/types.d.ts.map +1 -0
  24. package/dist/src/types.js +39 -0
  25. package/dist/{virtualSizes.d.ts → src/virtualSizes.d.ts} +13 -12
  26. package/dist/src/virtualSizes.d.ts.map +1 -0
  27. package/dist/src/virtualSizes.js +114 -0
  28. package/dist/src/zcash.d.ts +9 -0
  29. package/dist/src/zcash.d.ts.map +1 -0
  30. package/dist/src/zcash.js +22 -0
  31. package/dist/test/chain.d.ts +2 -0
  32. package/dist/test/chain.d.ts.map +1 -0
  33. package/dist/test/chain.js +92 -0
  34. package/dist/test/dimensions.d.ts +2 -0
  35. package/dist/test/dimensions.d.ts.map +1 -0
  36. package/dist/test/dimensions.js +235 -0
  37. package/dist/test/signedTx/inputWeights.d.ts +2 -0
  38. package/dist/test/signedTx/inputWeights.d.ts.map +1 -0
  39. package/dist/test/signedTx/inputWeights.js +127 -0
  40. package/dist/test/signedTx/txCombinations.d.ts +3 -0
  41. package/dist/test/signedTx/txCombinations.d.ts.map +1 -0
  42. package/dist/test/signedTx/txCombinations.js +130 -0
  43. package/dist/test/signedTx/txGen.d.ts +74 -0
  44. package/dist/test/signedTx/txGen.d.ts.map +1 -0
  45. package/dist/test/signedTx/txGen.js +233 -0
  46. package/dist/test/testutils.d.ts +36 -0
  47. package/dist/test/testutils.d.ts.map +1 -0
  48. package/dist/test/testutils.js +190 -0
  49. package/dist/test/virtualSizes.d.ts +2 -0
  50. package/dist/test/virtualSizes.d.ts.map +1 -0
  51. package/dist/test/virtualSizes.js +18 -0
  52. package/dist/test/zcash.d.ts +2 -0
  53. package/dist/test/zcash.d.ts.map +1 -0
  54. package/dist/test/zcash.js +60 -0
  55. package/dist/tsconfig.build.tsbuildinfo +1 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -0
  57. package/docs/input-costs.md +14 -0
  58. package/package.json +7 -7
  59. package/dist/codes.js +0 -168
  60. package/dist/dimensions.js +0 -490
  61. package/dist/index.js +0 -30
  62. package/dist/inputWeights.js +0 -97
  63. package/dist/scriptSizes.js +0 -51
  64. package/dist/types.js +0 -25
  65. package/dist/virtualSizes.js +0 -114
@@ -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,107 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs/promises"));
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ const src_1 = require("../src");
39
+ const headers = [
40
+ 'Script Type',
41
+ 'Chain Codes',
42
+ 'Spend Type',
43
+ 'Input Size (Virtual Bytes)',
44
+ 'Relative Size (p2trMusig2 = 1.00)',
45
+ ];
46
+ const relativeCostRef = src_1.Dimensions.fromScriptType('taprootKeyPathSpend').getInputsVSize();
47
+ function formatMarkdownTable(headers, rows) {
48
+ return [headers, headers.map(() => '---'), ...rows].map((row) => `| ${row.join(' | ')} |`).join('\n');
49
+ }
50
+ function generateRowsForScriptType(headers, t, params) {
51
+ const chainCode = utxolib.bitgo.toChainPair(t);
52
+ if (!params) {
53
+ if (t === 'p2tr') {
54
+ return [
55
+ ...generateRowsForScriptType(headers, t, {
56
+ spendTypeName: 'Script Path, Level 2 (Backup/User, Backup/BitGo)',
57
+ scriptTypeParams: { scriptPathLevel: 2 },
58
+ }),
59
+ ...generateRowsForScriptType(headers, t, {
60
+ spendTypeName: 'Script Path, Level 1 (User/BitGo)',
61
+ scriptTypeParams: { scriptPathLevel: 1 },
62
+ }),
63
+ ];
64
+ }
65
+ if (t === 'p2trMusig2') {
66
+ return [
67
+ ...generateRowsForScriptType(headers, t, {
68
+ spendTypeName: 'Script Path (Backup/User, Backup/BitGo)',
69
+ scriptTypeParams: { scriptPathLevel: 1 },
70
+ }),
71
+ ...generateRowsForScriptType(headers, t, {
72
+ spendTypeName: 'Key Path (User/BitGo)',
73
+ scriptTypeParams: { scriptPathLevel: undefined },
74
+ }),
75
+ ];
76
+ }
77
+ }
78
+ const inputVSize = src_1.Dimensions.fromScriptType(t, params?.scriptTypeParams).getInputsVSize();
79
+ const row = [
80
+ t,
81
+ chainCode.join(`/`),
82
+ params?.spendTypeName ?? 'all',
83
+ inputVSize.toString(),
84
+ (inputVSize / relativeCostRef).toFixed(2),
85
+ ];
86
+ return [row];
87
+ }
88
+ function generateTables() {
89
+ const scriptTypes = [...utxolib.bitgo.outputScripts.scriptTypes2Of3];
90
+ return formatMarkdownTable(headers, scriptTypes.flatMap((s) => generateRowsForScriptType(headers, s)));
91
+ }
92
+ function generateDocument() {
93
+ return [
94
+ '# Input Costs',
95
+ 'This document contains the worst-case input costs for various script types and spend types.',
96
+ 'The input costs are calculated using the `Dimensions` class from `@bitgo-beta/unspents`.',
97
+ '',
98
+ generateTables(),
99
+ ].join('\n');
100
+ }
101
+ if (require.main === module) {
102
+ const outfile = 'docs/input-costs.md';
103
+ fs.writeFile(outfile, generateDocument())
104
+ .then(() => console.log('wrote to', outfile))
105
+ .catch((e) => console.error(e));
106
+ }
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdGFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2dlbmVyYXRlX3RhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUFrQztBQUNsQyw4REFBZ0Q7QUFFaEQsZ0NBQW9DO0FBRXBDLE1BQU0sT0FBTyxHQUFHO0lBQ2QsYUFBYTtJQUNiLGFBQWE7SUFDYixZQUFZO0lBQ1osNEJBQTRCO0lBQzVCLG1DQUFtQztDQUNwQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsZ0JBQVUsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUkxRixTQUFTLG1CQUFtQixDQUFDLE9BQWlCLEVBQUUsSUFBZ0I7SUFDOUQsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FDaEMsT0FBaUIsRUFDakIsQ0FBNkMsRUFDN0MsTUFHQztJQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRS9DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE9BQU87Z0JBQ0wsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsa0RBQWtEO29CQUNqRSxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7Z0JBQ0YsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsbUNBQW1DO29CQUNsRCxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE9BQU87Z0JBQ0wsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUseUNBQXlDO29CQUN4RCxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7aUJBQ3pDLENBQUM7Z0JBQ0YsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO29CQUN2QyxhQUFhLEVBQUUsdUJBQXVCO29CQUN0QyxnQkFBZ0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7aUJBQ2pELENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxnQkFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0YsTUFBTSxHQUFHLEdBQVE7UUFDZixDQUFDO1FBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsTUFBTSxFQUFFLGFBQWEsSUFBSSxLQUFLO1FBQzlCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFDckIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUMxQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsY0FBYztJQUNyQixNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDckUsT0FBTyxtQkFBbUIsQ0FDeEIsT0FBTyxFQUNQLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU87UUFDTCxlQUFlO1FBQ2YsNkZBQTZGO1FBQzdGLDBGQUEwRjtRQUMxRixFQUFFO1FBQ0YsY0FBYyxFQUFFO0tBQ2pCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUM1QixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQztJQUN0QyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IERpbWVuc2lvbnMgfSBmcm9tICcuLi9zcmMnO1xuXG5jb25zdCBoZWFkZXJzID0gW1xuICAnU2NyaXB0IFR5cGUnLFxuICAnQ2hhaW4gQ29kZXMnLFxuICAnU3BlbmQgVHlwZScsXG4gICdJbnB1dCBTaXplIChWaXJ0dWFsIEJ5dGVzKScsXG4gICdSZWxhdGl2ZSBTaXplIChwMnRyTXVzaWcyID0gMS4wMCknLFxuXTtcblxuY29uc3QgcmVsYXRpdmVDb3N0UmVmID0gRGltZW5zaW9ucy5mcm9tU2NyaXB0VHlwZSgndGFwcm9vdEtleVBhdGhTcGVuZCcpLmdldElucHV0c1ZTaXplKCk7XG5cbnR5cGUgUm93ID0gW3N0cmluZywgc3RyaW5nLCBzdHJpbmcsIHN0cmluZywgc3RyaW5nXTtcblxuZnVuY3Rpb24gZm9ybWF0TWFya2Rvd25UYWJsZShoZWFkZXJzOiBzdHJpbmdbXSwgcm93czogc3RyaW5nW11bXSk6IHN0cmluZyB7XG4gIHJldHVybiBbaGVhZGVycywgaGVhZGVycy5tYXAoKCkgPT4gJy0tLScpLCAuLi5yb3dzXS5tYXAoKHJvdykgPT4gYHwgJHtyb3cuam9pbignIHwgJyl9IHxgKS5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShcbiAgaGVhZGVyczogc3RyaW5nW10sXG4gIHQ6IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMyxcbiAgcGFyYW1zPzoge1xuICAgIHNwZW5kVHlwZU5hbWU6IHN0cmluZztcbiAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbD86IG51bWJlciB9O1xuICB9XG4pOiBSb3dbXSB7XG4gIGNvbnN0IGNoYWluQ29kZSA9IHV0eG9saWIuYml0Z28udG9DaGFpblBhaXIodCk7XG5cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICBpZiAodCA9PT0gJ3AydHInKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5nZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHQsIHtcbiAgICAgICAgICBzcGVuZFR5cGVOYW1lOiAnU2NyaXB0IFBhdGgsIExldmVsIDIgKEJhY2t1cC9Vc2VyLCBCYWNrdXAvQml0R28pJyxcbiAgICAgICAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbDogMiB9LFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uZ2VuZXJhdGVSb3dzRm9yU2NyaXB0VHlwZShoZWFkZXJzLCB0LCB7XG4gICAgICAgICAgc3BlbmRUeXBlTmFtZTogJ1NjcmlwdCBQYXRoLCBMZXZlbCAxIChVc2VyL0JpdEdvKScsXG4gICAgICAgICAgc2NyaXB0VHlwZVBhcmFtczogeyBzY3JpcHRQYXRoTGV2ZWw6IDEgfSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmICh0ID09PSAncDJ0ck11c2lnMicpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmdlbmVyYXRlUm93c0ZvclNjcmlwdFR5cGUoaGVhZGVycywgdCwge1xuICAgICAgICAgIHNwZW5kVHlwZU5hbWU6ICdTY3JpcHQgUGF0aCAoQmFja3VwL1VzZXIsIEJhY2t1cC9CaXRHbyknLFxuICAgICAgICAgIHNjcmlwdFR5cGVQYXJhbXM6IHsgc2NyaXB0UGF0aExldmVsOiAxIH0sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5nZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHQsIHtcbiAgICAgICAgICBzcGVuZFR5cGVOYW1lOiAnS2V5IFBhdGggKFVzZXIvQml0R28pJyxcbiAgICAgICAgICBzY3JpcHRUeXBlUGFyYW1zOiB7IHNjcmlwdFBhdGhMZXZlbDogdW5kZWZpbmVkIH0sXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBpbnB1dFZTaXplID0gRGltZW5zaW9ucy5mcm9tU2NyaXB0VHlwZSh0LCBwYXJhbXM/LnNjcmlwdFR5cGVQYXJhbXMpLmdldElucHV0c1ZTaXplKCk7XG4gIGNvbnN0IHJvdzogUm93ID0gW1xuICAgIHQsXG4gICAgY2hhaW5Db2RlLmpvaW4oYC9gKSxcbiAgICBwYXJhbXM/LnNwZW5kVHlwZU5hbWUgPz8gJ2FsbCcsXG4gICAgaW5wdXRWU2l6ZS50b1N0cmluZygpLFxuICAgIChpbnB1dFZTaXplIC8gcmVsYXRpdmVDb3N0UmVmKS50b0ZpeGVkKDIpLFxuICBdO1xuICByZXR1cm4gW3Jvd107XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVGFibGVzKCkge1xuICBjb25zdCBzY3JpcHRUeXBlcyA9IFsuLi51dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuc2NyaXB0VHlwZXMyT2YzXTtcbiAgcmV0dXJuIGZvcm1hdE1hcmtkb3duVGFibGUoXG4gICAgaGVhZGVycyxcbiAgICBzY3JpcHRUeXBlcy5mbGF0TWFwKChzKSA9PiBnZW5lcmF0ZVJvd3NGb3JTY3JpcHRUeXBlKGhlYWRlcnMsIHMpKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZURvY3VtZW50KCkge1xuICByZXR1cm4gW1xuICAgICcjIElucHV0IENvc3RzJyxcbiAgICAnVGhpcyBkb2N1bWVudCBjb250YWlucyB0aGUgd29yc3QtY2FzZSBpbnB1dCBjb3N0cyBmb3IgdmFyaW91cyBzY3JpcHQgdHlwZXMgYW5kIHNwZW5kIHR5cGVzLicsXG4gICAgJ1RoZSBpbnB1dCBjb3N0cyBhcmUgY2FsY3VsYXRlZCB1c2luZyB0aGUgYERpbWVuc2lvbnNgIGNsYXNzIGZyb20gYEBiaXRnby1iZXRhL3Vuc3BlbnRzYC4nLFxuICAgICcnLFxuICAgIGdlbmVyYXRlVGFibGVzKCksXG4gIF0uam9pbignXFxuJyk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBjb25zdCBvdXRmaWxlID0gJ2RvY3MvaW5wdXQtY29zdHMubWQnO1xuICBmcy53cml0ZUZpbGUob3V0ZmlsZSwgZ2VuZXJhdGVEb2N1bWVudCgpKVxuICAgIC50aGVuKCgpID0+IGNvbnNvbGUubG9nKCd3cm90ZSB0bycsIG91dGZpbGUpKVxuICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcihlKSk7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as tcomb from 'tcomb';
2
- export declare type ChainCode = number;
2
+ export type ChainCode = number;
3
3
  export declare class ErrorInvalidCode extends Error {
4
4
  constructor(code: ChainCode);
5
5
  }
@@ -34,6 +34,7 @@ export declare class CodesByType extends CodeGroup {
34
34
  p2tr: ChainCode;
35
35
  constructor(p: Purpose);
36
36
  }
37
+ /** @deprecated - use utxolib.bitgo */
37
38
  declare const _default: Readonly<{
38
39
  ChainType: tcomb.Irreducible<unknown>;
39
40
  /** @deprecated - use utxolib.bitgo */
@@ -57,23 +58,23 @@ declare const _default: Readonly<{
57
58
  /** @deprecated - use utxolib.bitgo */
58
59
  all: readonly number[];
59
60
  /** @deprecated - use utxolib.bitgo */
60
- isP2sh: (code: number) => boolean;
61
+ isP2sh: (code: ChainCode) => boolean;
61
62
  /** @deprecated - use utxolib.bitgo */
62
- isP2shP2wsh: (code: number) => boolean;
63
+ isP2shP2wsh: (code: ChainCode) => boolean;
63
64
  /** @deprecated - use utxolib.bitgo */
64
- isP2wsh: (code: number) => boolean;
65
+ isP2wsh: (code: ChainCode) => boolean;
65
66
  /** @deprecated - use utxolib.bitgo */
66
- isP2tr: (code: number) => boolean;
67
+ isP2tr: (code: ChainCode) => boolean;
67
68
  /** @deprecated - use utxolib.bitgo */
68
- isExternal: (code: number) => boolean;
69
+ isExternal: (code: ChainCode) => boolean;
69
70
  /** @deprecated - use utxolib.bitgo */
70
- isInternal: (code: number) => boolean;
71
+ isInternal: (code: ChainCode) => boolean;
71
72
  /** @deprecated - use utxolib.bitgo */
72
- isValid: (c: number) => boolean;
73
+ isValid: (c: ChainCode) => boolean;
73
74
  /** @deprecated - use utxolib.bitgo */
74
75
  forType: (u: UnspentType) => CodesByPurpose;
75
76
  /** @deprecated - use utxolib.bitgo */
76
- typeForCode: (c: number) => UnspentType;
77
+ typeForCode: (c: ChainCode) => UnspentType;
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,MAAM,MAAM,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;AAYD,sCAAsC;;;IAIpC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;;IAEtC,sCAAsC;mBApFrB,SAAS,KAAG,OAAO;IAsFpC,sCAAsC;wBAtFrB,SAAS,KAAG,OAAO;IAwFpC,sCAAsC;oBAxFrB,SAAS,KAAG,OAAO;IA0FpC,sCAAsC;mBA1FrB,SAAS,KAAG,OAAO;IA4FpC,sCAAsC;uBA5FrB,SAAS,KAAG,OAAO;IA8FpC,sCAAsC;uBA9FrB,SAAS,KAAG,OAAO;IAgGpC,sCAAsC;iBA/Gb,SAAS,KAAG,OAAO;IAiH5C,sCAAsC;iBAlIpB,WAAW,KAAG,cAAc;IAoI9C,sCAAsC;qBA3HhB,SAAS,KAAG,WAAW;;AAoF/C,wBAyCG"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CodesByType = exports.CodesByPurpose = exports.CodeGroup = exports.isValid = exports.ChainType = exports.Purpose = exports.UnspentType = exports.ErrorInvalidCode = void 0;
37
+ const tcomb = __importStar(require("tcomb"));
38
+ class ErrorInvalidCode extends Error {
39
+ constructor(code) {
40
+ super(`invalid code ${code}`);
41
+ }
42
+ }
43
+ exports.ErrorInvalidCode = ErrorInvalidCode;
44
+ var UnspentType;
45
+ (function (UnspentType) {
46
+ UnspentType["p2pkh"] = "p2pkh";
47
+ UnspentType["p2sh"] = "p2sh";
48
+ UnspentType["p2shP2wsh"] = "p2shP2wsh";
49
+ UnspentType["p2wpkh"] = "p2wpkh";
50
+ UnspentType["p2wsh"] = "p2wsh";
51
+ UnspentType["p2tr"] = "p2tr";
52
+ })(UnspentType || (exports.UnspentType = UnspentType = {}));
53
+ const UnspentTypeTcomb = tcomb.enums.of(Object.keys(UnspentType));
54
+ var Purpose;
55
+ (function (Purpose) {
56
+ Purpose["internal"] = "internal";
57
+ Purpose["external"] = "external";
58
+ })(Purpose || (exports.Purpose = Purpose = {}));
59
+ const PurposeTcomb = tcomb.enums.of(Object.keys(Purpose));
60
+ const codeList = Object.freeze([
61
+ [0, UnspentType.p2sh, Purpose.external],
62
+ [10, UnspentType.p2shP2wsh, Purpose.external],
63
+ [20, UnspentType.p2wsh, Purpose.external],
64
+ [30, UnspentType.p2tr, Purpose.external],
65
+ [1, UnspentType.p2sh, Purpose.internal],
66
+ [11, UnspentType.p2shP2wsh, Purpose.internal],
67
+ [21, UnspentType.p2wsh, Purpose.internal],
68
+ [31, UnspentType.p2tr, Purpose.internal],
69
+ ].map(([id, type, purpose]) => Object.freeze({ id, type, purpose })));
70
+ exports.ChainType = tcomb.irreducible('ChainType', (n) => (0, exports.isValid)(n));
71
+ const forType = (u) => {
72
+ // Do tcomb type checking in js projects that use this lib
73
+ if (!UnspentTypeTcomb.is(u)) {
74
+ throw new Error(`invalid unspent type: ${u}`);
75
+ }
76
+ return new CodesByPurpose(u);
77
+ };
78
+ const typeForCode = (c) => {
79
+ const code = codeList.find(({ id }) => id === c);
80
+ if (!code) {
81
+ throw new ErrorInvalidCode(c);
82
+ }
83
+ return code.type;
84
+ };
85
+ const isValid = (c) => codeList.some(({ id }) => id === c);
86
+ exports.isValid = isValid;
87
+ const throwIfUndefined = (v) => {
88
+ if (v === undefined) {
89
+ throw new Error(`expected value to be defined`);
90
+ }
91
+ return v;
92
+ };
93
+ class CodeGroup {
94
+ constructor(values) {
95
+ this.values = Object.freeze([...values]);
96
+ }
97
+ has(code) {
98
+ if (!(0, exports.isValid)(code)) {
99
+ throw new ErrorInvalidCode(code);
100
+ }
101
+ return this.values.includes(code);
102
+ }
103
+ }
104
+ exports.CodeGroup = CodeGroup;
105
+ class CodesByPurpose extends CodeGroup {
106
+ constructor(t) {
107
+ const codeMap = new Map(codeList.filter(({ type }) => type === t).map(({ purpose, id }) => [purpose, id]));
108
+ if (codeMap.size !== 2) {
109
+ throw new Error(`unexpected number of codes for type ${t}`);
110
+ }
111
+ super(codeMap.values());
112
+ this.internal = throwIfUndefined(codeMap.get(Purpose.internal));
113
+ this.external = throwIfUndefined(codeMap.get(Purpose.external));
114
+ }
115
+ }
116
+ exports.CodesByPurpose = CodesByPurpose;
117
+ class CodesByType extends CodeGroup {
118
+ constructor(p) {
119
+ const codeMap = new Map(codeList.filter(({ purpose }) => purpose === p).map(({ type, id }) => [type, id]));
120
+ if (codeMap.size !== 4) {
121
+ throw new Error(`unexpected number of codes`);
122
+ }
123
+ super(codeMap.values());
124
+ this.p2sh = throwIfUndefined(codeMap.get(UnspentType.p2sh));
125
+ this.p2shP2wsh = throwIfUndefined(codeMap.get(UnspentType.p2shP2wsh));
126
+ this.p2wsh = throwIfUndefined(codeMap.get(UnspentType.p2wsh));
127
+ this.p2tr = throwIfUndefined(codeMap.get(UnspentType.p2tr));
128
+ }
129
+ }
130
+ exports.CodesByType = CodesByType;
131
+ const boundHas = (instance) => instance.has.bind(instance);
132
+ const p2sh = Object.freeze(new CodesByPurpose(UnspentType.p2sh));
133
+ const p2shP2wsh = Object.freeze(new CodesByPurpose(UnspentType.p2shP2wsh));
134
+ const p2wsh = Object.freeze(new CodesByPurpose(UnspentType.p2wsh));
135
+ const p2tr = Object.freeze(new CodesByPurpose(UnspentType.p2tr));
136
+ const external = Object.freeze(new CodesByType(Purpose.external));
137
+ const internal = Object.freeze(new CodesByType(Purpose.internal));
138
+ const all = Object.freeze(codeList.map(({ id }) => id));
139
+ /** @deprecated - use utxolib.bitgo */
140
+ exports.default = Object.freeze({
141
+ /* @deprecated: use ChainCodeTcomb */
142
+ ChainType: exports.ChainType,
143
+ /** @deprecated - use utxolib.bitgo */
144
+ ChainCodeTcomb: exports.ChainType,
145
+ /** @deprecated - use utxolib.bitgo */
146
+ PurposeTcomb,
147
+ /** @deprecated - use utxolib.bitgo */
148
+ UnspentTypeTcomb,
149
+ /** @deprecated - use utxolib.bitgo */
150
+ p2sh,
151
+ /** @deprecated - use utxolib.bitgo */
152
+ p2shP2wsh,
153
+ /** @deprecated - use utxolib.bitgo */
154
+ p2wsh,
155
+ /** @deprecated - use utxolib.bitgo */
156
+ p2tr,
157
+ /** @deprecated - use utxolib.bitgo */
158
+ external,
159
+ /** @deprecated - use utxolib.bitgo */
160
+ internal,
161
+ /** @deprecated - use utxolib.bitgo */
162
+ all,
163
+ /** @deprecated - use utxolib.bitgo */
164
+ isP2sh: boundHas(p2sh),
165
+ /** @deprecated - use utxolib.bitgo */
166
+ isP2shP2wsh: boundHas(p2shP2wsh),
167
+ /** @deprecated - use utxolib.bitgo */
168
+ isP2wsh: boundHas(p2wsh),
169
+ /** @deprecated - use utxolib.bitgo */
170
+ isP2tr: boundHas(p2tr),
171
+ /** @deprecated - use utxolib.bitgo */
172
+ isExternal: boundHas(external),
173
+ /** @deprecated - use utxolib.bitgo */
174
+ isInternal: boundHas(internal),
175
+ /** @deprecated - use utxolib.bitgo */
176
+ isValid: exports.isValid,
177
+ /** @deprecated - use utxolib.bitgo */
178
+ forType,
179
+ /** @deprecated - use utxolib.bitgo */
180
+ typeForCode,
181
+ });
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBSS9CLE1BQWEsZ0JBQWlCLFNBQVEsS0FBSztJQUN6QyxZQUFZLElBQWU7UUFDekIsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQUpELDRDQUlDO0FBRUQsSUFBWSxXQU9YO0FBUEQsV0FBWSxXQUFXO0lBQ3JCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7SUFDdkIsZ0NBQWlCLENBQUE7SUFDakIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBUFcsV0FBVywyQkFBWCxXQUFXLFFBT3RCO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFFbEUsSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLGdDQUFxQixDQUFBO0lBQ3JCLGdDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxPQUFPLHVCQUFQLE9BQU8sUUFHbEI7QUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFRMUQsTUFBTSxRQUFRLEdBQW1DLE1BQU0sQ0FBQyxNQUFNLENBRTFEO0lBQ0UsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM3QyxDQUFDLEVBQUUs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LHNDQUFzQztJQUN0QyxPQUFPLEVBQVAsZUFBTztJQUNQLHNDQUFzQztJQUN0QyxPQUFPO0lBQ1Asc0NBQXNDO0lBQ3RDLFdBQVc7Q0FDWixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0Y29tYiBmcm9tICd0Y29tYic7XG5cbmV4cG9ydCB0eXBlIENoYWluQ29kZSA9IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIEVycm9ySW52YWxpZENvZGUgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGNvZGU6IENoYWluQ29kZSkge1xuICAgIHN1cGVyKGBpbnZhbGlkIGNvZGUgJHtjb2RlfWApO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIFVuc3BlbnRUeXBlIHtcbiAgcDJwa2ggPSAncDJwa2gnLFxuICBwMnNoID0gJ3Ayc2gnLFxuICBwMnNoUDJ3c2ggPSAncDJzaFAyd3NoJyxcbiAgcDJ3cGtoID0gJ3Ayd3BraCcsXG4gIHAyd3NoID0gJ3Ayd3NoJyxcbiAgcDJ0ciA9ICdwMnRyJyxcbn1cblxuY29uc3QgVW5zcGVudFR5cGVUY29tYiA9IHRjb21iLmVudW1zLm9mKE9iamVjdC5rZXlzKFVuc3BlbnRUeXBlKSk7XG5cbmV4cG9ydCBlbnVtIFB1cnBvc2Uge1xuICBpbnRlcm5hbCA9ICdpbnRlcm5hbCcsXG4gIGV4dGVybmFsID0gJ2V4dGVybmFsJyxcbn1cblxuY29uc3QgUHVycG9zZVRjb21iID0gdGNvbWIuZW51bXMub2YoT2JqZWN0LmtleXMoUHVycG9zZSkpO1xuXG5pbnRlcmZhY2UgSUNvZGUge1xuICBpZDogQ2hhaW5Db2RlO1xuICB0eXBlOiBVbnNwZW50VHlwZTtcbiAgcHVycG9zZTogUHVycG9zZTtcbn1cblxuY29uc3QgY29kZUxpc3Q6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHk8SUNvZGU+PiA9IE9iamVjdC5mcmVlemUoXG4gIChcbiAgICBbXG4gICAgICBbMCwgVW5zcGVudFR5cGUucDJzaCwgUHVycG9zZS5leHRlcm5hbF0sXG4gICAgICBbMTAsIFVuc3BlbnRUeXBlLnAyc2hQMndzaCwgUHVycG9zZS5leHRlcm5hbF0sXG4gICAgICBbMjAsIFVuc3BlbnRUeXBlLnAyd3NoLCBQdXJwb3NlLmV4dGVybmFsXSxcbiAgICAgIFszMCwgVW5zcGVudFR5cGUucDJ0ciwgUHVycG9zZS5leHRlcm5hbF0sXG5cbiAgICAgIFsxLCBVbnNwZW50VHlwZS5wMnNoLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICAgIFsxMSwgVW5zcGVudFR5cGUucDJzaFAyd3NoLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICAgIFsyMSwgVW5zcGVudFR5cGUucDJ3c2gsIFB1cnBvc2UuaW50ZXJuYWxdLFxuICAgICAgWzMxLCBVbnNwZW50VHlwZS5wMnRyLCBQdXJwb3NlLmludGVybmFsXSxcbiAgICBdIGFzIEFycmF5PFtDaGFpbkNvZGUsIFVuc3BlbnRUeXBlLCBQdXJwb3NlXT5cbiAgKS5tYXAoKFtpZCwgdHlwZSwgcHVycG9zZV0pID0+IE9iamVjdC5mcmVlemUoeyBpZCwgdHlwZSwgcHVycG9zZSB9KSlcbik7XG5cbmV4cG9ydCBjb25zdCBDaGFpblR5cGUgPSB0Y29tYi5pcnJlZHVjaWJsZSgnQ2hhaW5UeXBlJywgKG4pID0+IGlzVmFsaWQobikpO1xuXG5jb25zdCBmb3JUeXBlID0gKHU6IFVuc3BlbnRUeXBlKTogQ29kZXNCeVB1cnBvc2UgPT4ge1xuICAvLyBEbyB0Y29tYiB0eXBlIGNoZWNraW5nIGluIGpzIHByb2plY3RzIHRoYXQgdXNlIHRoaXMgbGliXG4gIGlmICghVW5zcGVudFR5cGVUY29tYi5pcyh1KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB1bnNwZW50IHR5cGU6ICR7dX1gKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgQ29kZXNCeVB1cnBvc2UodSk7XG59O1xuXG5jb25zdCB0eXBlRm9yQ29kZSA9IChjOiBDaGFpbkNvZGUpOiBVbnNwZW50VHlwZSA9PiB7XG4gIGNvbnN0IGNvZGUgPSBjb2RlTGlzdC5maW5kKCh7IGlkIH0pID0+IGlkID09PSBjKTtcbiAgaWYgKCFjb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9ySW52YWxpZENvZGUoYyk7XG4gIH1cbiAgcmV0dXJuIGNvZGUudHlwZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGM6IENoYWluQ29kZSk6IGJvb2xlYW4gPT4gY29kZUxpc3Quc29tZSgoeyBpZCB9KSA9PiBpZCA9PT0gYyk7XG5cbmNvbnN0IHRocm93SWZVbmRlZmluZWQgPSA8VD4odjogVCB8IHVuZGVmaW5lZCk6IFQgPT4ge1xuICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCB2YWx1ZSB0byBiZSBkZWZpbmVkYCk7XG4gIH1cbiAgcmV0dXJuIHY7XG59O1xuXG5leHBvcnQgY2xhc3MgQ29kZUdyb3VwIHtcbiAgcHVibGljIHZhbHVlczogUmVhZG9ubHlBcnJheTxDaGFpbkNvZGU+O1xuICBjb25zdHJ1Y3Rvcih2YWx1ZXM6IEl0ZXJhYmxlPENoYWluQ29kZT4pIHtcbiAgICB0aGlzLnZhbHVlcyA9IE9iamVjdC5mcmVlemUoWy4uLnZhbHVlc10pO1xuICB9XG5cbiAgcHVibGljIGhhcyhjb2RlOiBDaGFpbkNvZGUpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzVmFsaWQoY29kZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvckludmFsaWRDb2RlKGNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaW5jbHVkZXMoY29kZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvZGVzQnlQdXJwb3NlIGV4dGVuZHMgQ29kZUdyb3VwIHtcbiAgcHVibGljIGludGVybmFsOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBleHRlcm5hbDogQ2hhaW5Db2RlO1xuXG4gIGNvbnN0cnVjdG9yKHQ6IFVuc3BlbnRUeXBlKSB7XG4gICAgY29uc3QgY29kZU1hcDogTWFwPFB1cnBvc2UsIENoYWluQ29kZT4gPSBuZXcgTWFwKFxuICAgICAgY29kZUxpc3QuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gdCkubWFwKCh7IHB1cnBvc2UsIGlkIH0pOiBbUHVycG9zZSwgQ2hhaW5Db2RlXSA9PiBbcHVycG9zZSwgaWRdKVxuICAgICk7XG4gICAgaWYgKGNvZGVNYXAuc2l6ZSAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIG51bWJlciBvZiBjb2RlcyBmb3IgdHlwZSAke3R9YCk7XG4gICAgfVxuXG4gICAgc3VwZXIoY29kZU1hcC52YWx1ZXMoKSk7XG5cbiAgICB0aGlzLmludGVybmFsID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChQdXJwb3NlLmludGVybmFsKSk7XG4gICAgdGhpcy5leHRlcm5hbCA9IHRocm93SWZVbmRlZmluZWQoY29kZU1hcC5nZXQoUHVycG9zZS5leHRlcm5hbCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2Rlc0J5VHlwZSBleHRlbmRzIENvZGVHcm91cCB7XG4gIHB1YmxpYyBwMnNoOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBwMnNoUDJ3c2g6IENoYWluQ29kZTtcbiAgcHVibGljIHAyd3NoOiBDaGFpbkNvZGU7XG4gIHB1YmxpYyBwMnRyOiBDaGFpbkNvZGU7XG5cbiAgY29uc3RydWN0b3IocDogUHVycG9zZSkge1xuICAgIGNvbnN0IGNvZGVNYXA6IE1hcDxVbnNwZW50VHlwZSwgQ2hhaW5Db2RlPiA9IG5ldyBNYXAoXG4gICAgICBjb2RlTGlzdC5maWx0ZXIoKHsgcHVycG9zZSB9KSA9PiBwdXJwb3NlID09PSBwKS5tYXAoKHsgdHlwZSwgaWQgfSk6IFtVbnNwZW50VHlwZSwgQ2hhaW5Db2RlXSA9PiBbdHlwZSwgaWRdKVxuICAgICk7XG4gICAgaWYgKGNvZGVNYXAuc2l6ZSAhPT0gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIG51bWJlciBvZiBjb2Rlc2ApO1xuICAgIH1cblxuICAgIHN1cGVyKGNvZGVNYXAudmFsdWVzKCkpO1xuXG4gICAgdGhpcy5wMnNoID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChVbnNwZW50VHlwZS5wMnNoKSk7XG4gICAgdGhpcy5wMnNoUDJ3c2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyc2hQMndzaCkpO1xuICAgIHRoaXMucDJ3c2ggPSB0aHJvd0lmVW5kZWZpbmVkKGNvZGVNYXAuZ2V0KFVuc3BlbnRUeXBlLnAyd3NoKSk7XG4gICAgdGhpcy5wMnRyID0gdGhyb3dJZlVuZGVmaW5lZChjb2RlTWFwLmdldChVbnNwZW50VHlwZS5wMnRyKSk7XG4gIH1cbn1cblxuY29uc3QgYm91bmRIYXMgPSAoaW5zdGFuY2U6IENvZGVHcm91cCkgPT4gaW5zdGFuY2UuaGFzLmJpbmQoaW5zdGFuY2UpO1xuXG5jb25zdCBwMnNoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJzaCkpO1xuY29uc3QgcDJzaFAyd3NoID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJzaFAyd3NoKSk7XG5jb25zdCBwMndzaCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlQdXJwb3NlKFVuc3BlbnRUeXBlLnAyd3NoKSk7XG5jb25zdCBwMnRyID0gT2JqZWN0LmZyZWV6ZShuZXcgQ29kZXNCeVB1cnBvc2UoVW5zcGVudFR5cGUucDJ0cikpO1xuY29uc3QgZXh0ZXJuYWwgPSBPYmplY3QuZnJlZXplKG5ldyBDb2Rlc0J5VHlwZShQdXJwb3NlLmV4dGVybmFsKSk7XG5jb25zdCBpbnRlcm5hbCA9IE9iamVjdC5mcmVlemUobmV3IENvZGVzQnlUeXBlKFB1cnBvc2UuaW50ZXJuYWwpKTtcbmNvbnN0IGFsbCA9IE9iamVjdC5mcmVlemUoY29kZUxpc3QubWFwKCh7IGlkIH0pID0+IGlkKSk7XG5cbi8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG5leHBvcnQgZGVmYXVsdCBPYmplY3QuZnJlZXplKHtcbiAgLyogQGRlcHJlY2F0ZWQ6IHVzZSBDaGFpbkNvZGVUY29tYiAqL1xuICBDaGFpblR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIENoYWluQ29kZVRjb21iOiBDaGFpblR5cGUsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIFB1cnBvc2VUY29tYixcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgVW5zcGVudFR5cGVUY29tYixcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJzaCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJzaFAyd3NoLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBwMndzaCxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgcDJ0cixcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgZXh0ZXJuYWwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGludGVybmFsLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBhbGwsXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJzaDogYm91bmRIYXMocDJzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJzaFAyd3NoOiBib3VuZEhhcyhwMnNoUDJ3c2gpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1Ayd3NoOiBib3VuZEhhcyhwMndzaCksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzUDJ0cjogYm91bmRIYXMocDJ0ciksXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVzZSB1dHhvbGliLmJpdGdvICovXG4gIGlzRXh0ZXJuYWw6IGJvdW5kSGFzKGV4dGVybmFsKSxcbiAgLyoqIEBkZXByZWNhdGVkIC0gdXNlIHV0eG9saWIuYml0Z28gKi9cbiAgaXNJbnRlcm5hbDogYm91bmRIYXMoaW50ZXJuYWwpLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBpc1ZhbGlkLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICBmb3JUeXBlLFxuICAvKiogQGRlcHJlY2F0ZWQgLSB1c2UgdXR4b2xpYi5iaXRnbyAqL1xuICB0eXBlRm9yQ29kZSxcbn0pO1xuIl19
@@ -1,7 +1,6 @@
1
- /// <reference types="node" />
2
1
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
2
  import { bitgo } from '@bitgo-beta/utxo-lib';
4
- declare type ChainCode = bitgo.ChainCode;
3
+ type ChainCode = bitgo.ChainCode;
5
4
  import { VirtualSizes } from './virtualSizes';
6
5
  export { VirtualSizes };
7
6
  /**
@@ -119,10 +118,9 @@ export declare class Dimensions {
119
118
  static fromInput(input: utxolib.TxInput, params?: FromInputParams): Dimensions;
120
119
  /**
121
120
  * Create Dimensions from psbt input
122
- * @param psbt - psbt
123
- * @param inputIndex - psbt input index
121
+ * @param input - psbt input
124
122
  */
125
- static fromPsbtInput(psbt: bitgo.UtxoPsbt, inputIndex: number): Dimensions;
123
+ static fromPsbtInput(input: bitgo.PsbtInputType): Dimensions;
126
124
  /**
127
125
  * @param inputs - Array of inputs
128
126
  * @param params - @see Dimensions.fromInput()
@@ -131,11 +129,10 @@ export declare class Dimensions {
131
129
  static fromInputs(inputs: utxolib.TxInput[], params?: FromInputParams): Dimensions;
132
130
  /**
133
131
  * 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())
132
+ * @param inputs psbt input array
133
+ * @return {Dimensions} sum of the dimensions for each input (@see Dimensions.fromPsbtInput())
137
134
  */
138
- static fromPsbtInputs(psbt: bitgo.UtxoPsbt): Dimensions;
135
+ static fromPsbtInputs(inputs: bitgo.PsbtInputType[]): Dimensions;
139
136
  /**
140
137
  * @param scriptLength {number} - size of the output script in bytes
141
138
  * @return {Dimensions} - Dimensions of the output
@@ -166,7 +163,7 @@ export declare class Dimensions {
166
163
  /**
167
164
  * Return dimensions of an unspent according to `chain` parameter
168
165
  * @param chain - Chain code as defined by utxo.chain
169
- * @param params - Hint for unspents with variable input sizes (p2tr).
166
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
170
167
  * @return {Dimensions} of the unspent
171
168
  * @throws if the chain code is invalid or unsupported
172
169
  */
@@ -175,11 +172,12 @@ export declare class Dimensions {
175
172
  }, params?: FromUnspentParams): Dimensions;
176
173
  /**
177
174
  * @param unspents
175
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
178
176
  * @return {Dimensions} sum of the dimensions for each unspent (@see Dimensions.fromUnspent())
179
177
  */
180
178
  static fromUnspents(unspents: {
181
179
  chain: ChainCode;
182
- }[]): Dimensions;
180
+ }[], params?: FromUnspentParams): Dimensions;
183
181
  /**
184
182
  * @param transaction - bitcoin-like transaction
185
183
  * @param [param.assumeUnsigned] - default type for unsigned inputs
@@ -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":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,KAAK,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AAKjC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,CAAC;AAcxB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;gBAED,EAAE,KAAS,EAAE,IAAQ,EAAE,GAAE,gBAAwC;CAY9E;AAED,UAAU,eAAe;IAEvB,cAAc,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE;QACJ,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,UAAU,EAAE;QACV,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAeD;;GAEG;AACH,qBAAa,UAAU;IACrB,2DAA2D;IAC3D,SAAgB,WAAW,EAAE,MAAM,CAAK;IACxC,SAAgB,gBAAgB,EAAE,MAAM,CAAK;IAC7C,SAAgB,YAAY,EAAE,MAAM,CAAK;IACzC,SAAgB,kBAAkB,EAAE,MAAM,CAAK;IAC/C,SAAgB,2BAA2B,EAAE,MAAM,CAAK;IACxD,SAAgB,2BAA2B,EAAE,MAAM,CAAK;IAGxD,SAAgB,eAAe,EAAE,MAAM,CAAK;IAE5C,SAAgB,OAAO,EAAE,gBAAgB,CAA0B;gBAEvD,CAAC,GAAE,OAAO,CAAC,UAAU,CAAM;IAMvC,OAAO,CAAC,WAAW;IA4BnB,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAmC;IAEvD;;;OAGG;IACH,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC;IAInC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAI7C,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;OAQzB;IAEH;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAUpB;IAED,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,EAEpB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAErB;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,UAAU;IAItD;;;OAGG;IACH,MAAM,CAAC,6BAA6B,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAW9D;;;OAGG;IACH,MAAM,CAAC,iCAAiC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAOtE,MAAM,CAAC,QAAQ,CAAC,WAAW;;;;;;;;OAQxB;IAEH;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,OAAO,EACjG,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;KACrB,GACL,UAAU;IAiCb,MAAM,CAAC,QAAQ,CAAC,WAAW,aAA+B;IAC1D,MAAM,CAAC,QAAQ,CAAC,iBAAiB,aAAoC;IACrE,MAAM,CAAC,QAAQ,CAAC,YAAY,aAAgC;IAC5D,MAAM,CAAC,QAAQ,CAAC,mBAAmB,aAAsC;IACzE,MAAM,CAAC,QAAQ,CAAC,6BAA6B,aAA+C;IAC5F,MAAM,CAAC,QAAQ,CAAC,6BAA6B,aAA+C;IAC5F,MAAM,CAAC,QAAQ,CAAC,sBAAsB,aAAmC;IAEzE,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAQlC;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,GAAE,eAAoB,GAAG,UAAU;IASlF;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,UAAU;IAK5D;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,UAAU;IAOlF;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,GAAG,UAAU;IAOhE;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IAS/D;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU;IAU7D;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,UAAU;IAO7D;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU;IAItD;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,GAAE,iBAAwC,GAAG,UAAU;IAa9G;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,EAAE,MAAM,GAAE,iBAAwC,GAAG,UAAU;IAQnH;;;;OAIG;IACH,MAAM,CAAC,eAAe,CACpB,EACE,GAAG,EACH,IAAI,GACL,EAAE;QACD,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;KAC1B,EACD,MAAM,CAAC,EAAE,eAAe,GACvB,UAAU;IAIb;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,GAAG,UAAU;IAIjD;;;OAGG;IACH,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAqCjD;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAiBjC;;;OAGG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAWnB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,cAAc,IAAI,MAAM;IAoCxB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;CAGnB"}