@bitgo-beta/unspents 0.13.2-beta.21 → 0.13.2-beta.2100

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 (67) hide show
  1. package/README.md +0 -9
  2. package/dist/bin/generate_tables.d.ts +2 -0
  3. package/dist/bin/generate_tables.d.ts.map +1 -0
  4. package/dist/bin/generate_tables.js +107 -0
  5. package/dist/{codes.d.ts → src/codes.d.ts} +11 -10
  6. package/dist/src/codes.d.ts.map +1 -0
  7. package/dist/src/codes.js +182 -0
  8. package/dist/{dimensions.d.ts → src/dimensions.d.ts} +17 -17
  9. package/dist/src/dimensions.d.ts.map +1 -0
  10. package/dist/src/dimensions.js +502 -0
  11. package/dist/{index.d.ts → src/index.d.ts} +2 -0
  12. package/dist/src/index.d.ts.map +1 -0
  13. package/dist/src/index.js +46 -0
  14. package/dist/{inputWeights.d.ts → src/inputWeights.d.ts} +4 -3
  15. package/dist/src/inputWeights.d.ts.map +1 -0
  16. package/dist/src/inputWeights.js +97 -0
  17. package/dist/{scriptSizes.d.ts → src/scriptSizes.d.ts} +1 -0
  18. package/dist/src/scriptSizes.d.ts.map +1 -0
  19. package/dist/src/scriptSizes.js +50 -0
  20. package/dist/{types.d.ts → src/types.d.ts} +1 -0
  21. package/dist/src/types.d.ts.map +1 -0
  22. package/dist/src/types.js +39 -0
  23. package/dist/{virtualSizes.d.ts → src/virtualSizes.d.ts} +13 -12
  24. package/dist/src/virtualSizes.d.ts.map +1 -0
  25. package/dist/src/virtualSizes.js +114 -0
  26. package/dist/src/zcash.d.ts +9 -0
  27. package/dist/src/zcash.d.ts.map +1 -0
  28. package/dist/src/zcash.js +22 -0
  29. package/dist/test/chain.d.ts +2 -0
  30. package/dist/test/chain.d.ts.map +1 -0
  31. package/dist/test/chain.js +92 -0
  32. package/dist/test/dimensions.d.ts +2 -0
  33. package/dist/test/dimensions.d.ts.map +1 -0
  34. package/dist/test/dimensions.js +235 -0
  35. package/dist/test/signedTx/inputWeights.d.ts +2 -0
  36. package/dist/test/signedTx/inputWeights.d.ts.map +1 -0
  37. package/dist/test/signedTx/inputWeights.js +127 -0
  38. package/dist/test/signedTx/txCombinations.d.ts +3 -0
  39. package/dist/test/signedTx/txCombinations.d.ts.map +1 -0
  40. package/dist/test/signedTx/txCombinations.js +130 -0
  41. package/dist/test/signedTx/txGen.d.ts +74 -0
  42. package/dist/test/signedTx/txGen.d.ts.map +1 -0
  43. package/dist/test/signedTx/txGen.js +233 -0
  44. package/dist/test/testutils.d.ts +36 -0
  45. package/dist/test/testutils.d.ts.map +1 -0
  46. package/dist/test/testutils.js +190 -0
  47. package/dist/test/virtualSizes.d.ts +2 -0
  48. package/dist/test/virtualSizes.d.ts.map +1 -0
  49. package/dist/test/virtualSizes.js +18 -0
  50. package/dist/test/zcash.d.ts +2 -0
  51. package/dist/test/zcash.d.ts.map +1 -0
  52. package/dist/test/zcash.js +60 -0
  53. package/dist/tsconfig.build.tsbuildinfo +1 -0
  54. package/dist/tsconfig.tsbuildinfo +1 -0
  55. package/package.json +12 -9
  56. package/.eslintignore +0 -1
  57. package/.eslintrc.js +0 -3
  58. package/.mocharc.js +0 -6
  59. package/.prettierrc.yml +0 -3
  60. package/CHANGELOG.md +0 -157
  61. package/dist/codes.js +0 -168
  62. package/dist/dimensions.js +0 -485
  63. package/dist/index.js +0 -30
  64. package/dist/inputWeights.js +0 -97
  65. package/dist/scriptSizes.js +0 -51
  66. package/dist/types.js +0 -25
  67. package/dist/virtualSizes.js +0 -114
package/README.md CHANGED
@@ -47,15 +47,6 @@ Dimensions.fromUnspents({ unspents })
47
47
  .getVSize();
48
48
  ```
49
49
 
50
- ## Publishing new versions
51
-
52
- Publishing new versions should be done by running the publish script in `scripts/publish.sh`.
53
-
54
- It can be invoked with the name of the branch to release, and will default to the currently checked out branch if not given.
55
-
56
- It will perform validation of all prepublish conditions, run a dry-run publish, then, if successful, a real publish. After that is complete,
57
- the newly installed package will be downloaded and `require()`'d to ensure the package was published correctly.
58
-
59
50
  ## Continuous Integration
60
51
 
61
52
  `@bitgo/unspents` uses github actions for continuous integration, which is configured by the `.github/workflows/ci.yml` file in the project root. All changes to the CI process should be done by modifying the `.github/workflows/ci.yml` file.
@@ -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,9 +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;
5
- import { VirtualSizes } from './virtualSizes';
6
- export { VirtualSizes };
3
+ type ChainCode = bitgo.ChainCode;
7
4
  /**
8
5
  * Aggregate count and size of transaction outputs
9
6
  */
@@ -55,14 +52,14 @@ export declare class Dimensions {
55
52
  * @return Dimensions for a single output with given size
56
53
  */
57
54
  static singleOutput(size: number): Dimensions;
58
- static readonly SingleOutput: Readonly<{
55
+ static SingleOutput: {
59
56
  p2sh: Dimensions;
60
57
  p2shP2wsh: Dimensions;
61
58
  p2wsh: Dimensions;
62
59
  p2tr: Dimensions;
63
60
  p2pkh: Dimensions;
64
61
  p2wpkh: Dimensions;
65
- }>;
62
+ };
66
63
  /**
67
64
  * @return Number of total inputs (p2sh + p2shP2wsh + p2wsh + p2tr)
68
65
  */
@@ -88,7 +85,7 @@ export declare class Dimensions {
88
85
  * @return {Number} vSize of an output with script length
89
86
  */
90
87
  static getVSizeForOutputWithScriptLength(scriptLength: number): number;
91
- static readonly SingleInput: Readonly<{
88
+ static SingleInput: {
92
89
  p2sh: Dimensions;
93
90
  p2shP2wsh: Dimensions;
94
91
  p2wsh: Dimensions;
@@ -96,20 +93,20 @@ export declare class Dimensions {
96
93
  p2trScriptPathLevel1: Dimensions;
97
94
  p2trScriptPathLevel2: Dimensions;
98
95
  p2shP2pk: Dimensions;
99
- }>;
96
+ };
100
97
  /**
101
98
  * @return
102
99
  */
103
100
  static fromScriptType(scriptType: utxolib.bitgo.outputScripts.ScriptType | utxolib.bitgo.ParsedScriptType2Of3 | 'p2pkh', params?: {
104
101
  scriptPathLevel?: number;
105
102
  }): Dimensions;
106
- static readonly ASSUME_P2SH: Dimensions;
107
- static readonly ASSUME_P2SH_P2WSH: Dimensions;
108
- static readonly ASSUME_P2WSH: Dimensions;
109
- static readonly ASSUME_P2TR_KEYPATH: Dimensions;
110
- static readonly ASSUME_P2TR_SCRIPTPATH_LEVEL1: Dimensions;
111
- static readonly ASSUME_P2TR_SCRIPTPATH_LEVEL2: Dimensions;
112
- static readonly ASSUME_P2SH_P2PK_INPUT: Dimensions;
103
+ static ASSUME_P2SH: Dimensions;
104
+ static ASSUME_P2SH_P2WSH: Dimensions;
105
+ static ASSUME_P2WSH: Dimensions;
106
+ static ASSUME_P2TR_KEYPATH: Dimensions;
107
+ static ASSUME_P2TR_SCRIPTPATH_LEVEL1: Dimensions;
108
+ static ASSUME_P2TR_SCRIPTPATH_LEVEL2: Dimensions;
109
+ static ASSUME_P2SH_P2PK_INPUT: Dimensions;
113
110
  private static getAssumedDimension;
114
111
  /**
115
112
  * @param input - the transaction input to count
@@ -164,7 +161,7 @@ export declare class Dimensions {
164
161
  /**
165
162
  * Return dimensions of an unspent according to `chain` parameter
166
163
  * @param chain - Chain code as defined by utxo.chain
167
- * @param params - Hint for unspents with variable input sizes (p2tr).
164
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
168
165
  * @return {Dimensions} of the unspent
169
166
  * @throws if the chain code is invalid or unsupported
170
167
  */
@@ -173,11 +170,12 @@ export declare class Dimensions {
173
170
  }, params?: FromUnspentParams): Dimensions;
174
171
  /**
175
172
  * @param unspents
173
+ * @param params - Hint for unspents with variable input sizes (p2tr, p2trMusig2)
176
174
  * @return {Dimensions} sum of the dimensions for each unspent (@see Dimensions.fromUnspent())
177
175
  */
178
176
  static fromUnspents(unspents: {
179
177
  chain: ChainCode;
180
- }[]): Dimensions;
178
+ }[], params?: FromUnspentParams): Dimensions;
181
179
  /**
182
180
  * @param transaction - bitcoin-like transaction
183
181
  * @param [param.assumeUnsigned] - default type for unsigned inputs
@@ -232,3 +230,5 @@ export declare class Dimensions {
232
230
  */
233
231
  getVSize(): number;
234
232
  }
233
+ export {};
234
+ //# 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;AAmBjC;;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,YAAY,EAAE;QACnB,IAAI,EAAE,UAAU,CAAC;QACjB,SAAS,EAAE,UAAU,CAAC;QACtB,KAAK,EAAE,UAAU,CAAC;QAClB,IAAI,EAAE,UAAU,CAAC;QACjB,KAAK,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;KACpB,CAAC;IAEF;;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,WAAW,EAAE;QAClB,IAAI,EAAE,UAAU,CAAC;QACjB,SAAS,EAAE,UAAU,CAAC;QACtB,KAAK,EAAE,UAAU,CAAC;QAClB,WAAW,EAAE,UAAU,CAAC;QACxB,oBAAoB,EAAE,UAAU,CAAC;QACjC,oBAAoB,EAAE,UAAU,CAAC;QACjC,QAAQ,EAAE,UAAU,CAAC;KACtB,CAAC;IAEF;;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,WAAW,EAAE,UAAU,CAAC;IAC/B,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC;IACrC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC;IAChC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC;IACvC,MAAM,CAAC,6BAA6B,EAAE,UAAU,CAAC;IACjD,MAAM,CAAC,6BAA6B,EAAE,UAAU,CAAC;IACjD,MAAM,CAAC,sBAAsB,EAAE,UAAU,CAAC;IAE1C,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"}