@enspirit/emb 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/src/cli/abstract/BaseCommand.js +2 -2
- package/dist/src/cli/commands/down.js +2 -2
- package/dist/src/config/index.d.ts +4 -4
- package/dist/src/config/index.js +4 -15
- package/dist/src/config/types.d.ts +1 -4
- package/dist/src/config/validation.d.ts +2 -2
- package/dist/src/config/validation.js +1 -2
- package/dist/src/docker/compose/operations/ComposeDownOperation.d.ts +3 -2
- package/dist/src/docker/compose/operations/ComposeDownOperation.js +4 -2
- package/dist/src/docker/compose/operations/ComposeUpOperation.js +2 -2
- package/dist/src/docker/operations/images/BuildImageOperation.js +12 -7
- package/dist/src/monorepo/component.d.ts +2 -1
- package/dist/src/monorepo/component.js +5 -2
- package/dist/src/monorepo/config.d.ts +5 -5
- package/dist/src/monorepo/monorepo.d.ts +7 -6
- package/dist/src/monorepo/monorepo.js +28 -13
- package/dist/src/monorepo/operations/shell/ExecuteLocalCommandOperation.d.ts +3 -2
- package/dist/src/monorepo/operations/shell/ExecuteLocalCommandOperation.js +4 -1
- package/dist/src/monorepo/operations/tasks/RunTasksOperation.d.ts +1 -1
- package/dist/src/monorepo/operations/tasks/RunTasksOperation.js +9 -4
- package/dist/src/monorepo/plugins/AutoDockerPlugin.js +1 -1
- package/dist/src/monorepo/plugins/EmbfileLoaderPlugin.js +2 -2
- package/dist/src/utils/TemplateExpander.d.ts +9 -6
- package/dist/src/utils/TemplateExpander.js +17 -23
- package/oclif.manifest.json +117 -117
- package/package.json +30 -9
- package/dist/src/config/convert.d.ts +0 -2
- package/dist/src/config/convert.js +0 -18
package/README.md
CHANGED
|
@@ -17,9 +17,9 @@ export class BaseCommand extends Command {
|
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
19
|
try {
|
|
20
|
-
const config = await withMarker('emb:config', 'load', () => loadConfig());
|
|
20
|
+
const { rootDir, config } = await withMarker('emb:config', 'load', () => loadConfig());
|
|
21
21
|
const monorepo = await withMarker('emb:monorepo', 'init', () => {
|
|
22
|
-
return new Monorepo(config).init();
|
|
22
|
+
return new Monorepo(config, rootDir).init();
|
|
23
23
|
});
|
|
24
24
|
this.context = setContext({
|
|
25
25
|
docker: new Dockerode(),
|
|
@@ -11,8 +11,8 @@ export default class DownCommand extends FlavoredCommand {
|
|
|
11
11
|
const runner = new Listr([
|
|
12
12
|
{
|
|
13
13
|
rendererOptions: { persistentOutput: true },
|
|
14
|
-
async task() {
|
|
15
|
-
return monorepo.run(new ComposeDownOperation(), {});
|
|
14
|
+
async task(ctx, task) {
|
|
15
|
+
return monorepo.run(new ComposeDownOperation(task.stdout()), {});
|
|
16
16
|
},
|
|
17
17
|
title: 'Stopping project',
|
|
18
18
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { UserConfig } from './types.js';
|
|
2
|
-
export * from './convert.js';
|
|
3
1
|
export * from './types.js';
|
|
4
2
|
export * from './validation.js';
|
|
5
|
-
export declare const loadConfig: (
|
|
6
|
-
|
|
3
|
+
export declare const loadConfig: () => Promise<{
|
|
4
|
+
rootDir: string;
|
|
5
|
+
config: import("./schema.js").EMBConfig;
|
|
6
|
+
}>;
|
package/dist/src/config/index.js
CHANGED
|
@@ -1,25 +1,14 @@
|
|
|
1
1
|
import { findUp } from 'find-up';
|
|
2
2
|
import { dirname } from 'node:path';
|
|
3
|
-
import { toUserConfig } from './convert.js';
|
|
4
3
|
import { validateUserConfig } from './validation.js';
|
|
5
|
-
export * from './convert.js';
|
|
6
4
|
export * from './types.js';
|
|
7
5
|
export * from './validation.js';
|
|
8
|
-
|
|
9
|
-
export const loadConfig = async (force = false) => {
|
|
10
|
-
if (config && !force) {
|
|
11
|
-
return config;
|
|
12
|
-
}
|
|
6
|
+
export const loadConfig = async () => {
|
|
13
7
|
const path = await findUp('.emb.yml');
|
|
14
8
|
if (!path) {
|
|
15
9
|
throw new Error('Could not find EMB config anywhere');
|
|
16
10
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
export const getConfig = () => {
|
|
21
|
-
if (!config) {
|
|
22
|
-
throw new Error(`Config not loaded, please use 'loadConfig' first`);
|
|
23
|
-
}
|
|
24
|
-
return config;
|
|
11
|
+
const rootDir = dirname(path);
|
|
12
|
+
const config = await validateUserConfig(path);
|
|
13
|
+
return { rootDir, config };
|
|
25
14
|
};
|
|
@@ -3,11 +3,8 @@ export * from './schema.js';
|
|
|
3
3
|
type RemoveIndexSignature<T> = {
|
|
4
4
|
[K in keyof T as K extends string ? (string extends K ? never : K) : K]: T[K];
|
|
5
5
|
};
|
|
6
|
-
export type ProjectConfig = Required<EMBConfig['project']>;
|
|
7
|
-
export type UserConfig = EMBConfig & {
|
|
8
|
-
project: ProjectConfig;
|
|
9
|
-
};
|
|
10
6
|
export type PluginConfig = Required<EMBConfig>['plugins'][number];
|
|
7
|
+
export type ProjectConfig = EMBConfig['project'];
|
|
11
8
|
export type IResourceConfig = RemoveIndexSignature<ResourceConfig>;
|
|
12
9
|
export type QualifiedResourceConfig = IResourceConfig & {
|
|
13
10
|
id: string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ComponentConfig,
|
|
2
|
-
export declare const validateUserConfig: (pathOrObject: string | unknown) => Promise<
|
|
1
|
+
import { ComponentConfig, EMBConfig } from './types.js';
|
|
2
|
+
export declare const validateUserConfig: (pathOrObject: string | unknown) => Promise<EMBConfig>;
|
|
3
3
|
export declare const validateEmbfile: (pathOrObject: string | unknown) => Promise<ComponentConfig>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Ajv } from 'ajv';
|
|
2
2
|
import { readFile, stat } from 'node:fs/promises';
|
|
3
3
|
import yaml from 'yaml';
|
|
4
|
-
import { toUserConfig } from './convert.js';
|
|
5
4
|
import configSchema from './schema.json' with { type: 'json' };
|
|
6
5
|
const ajv = new Ajv();
|
|
7
6
|
ajv.addSchema(configSchema);
|
|
@@ -23,7 +22,7 @@ export const validateUserConfig = async (pathOrObject) => {
|
|
|
23
22
|
ajv.errors?.forEach((err) => console.error(err));
|
|
24
23
|
throw new Error(`Your .emb.yml is incorrect`);
|
|
25
24
|
}
|
|
26
|
-
return
|
|
25
|
+
return embConfig;
|
|
27
26
|
};
|
|
28
27
|
export const validateEmbfile = async (pathOrObject) => {
|
|
29
28
|
let component;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Readable } from 'node:stream';
|
|
1
|
+
import { Readable, Writable } from 'node:stream';
|
|
2
2
|
import * as z from 'zod';
|
|
3
3
|
import { AbstractOperation } from '../../../operations/index.js';
|
|
4
4
|
/**
|
|
@@ -6,7 +6,8 @@ import { AbstractOperation } from '../../../operations/index.js';
|
|
|
6
6
|
*/
|
|
7
7
|
declare const schema: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
|
|
8
8
|
export declare class ComposeDownOperation extends AbstractOperation<typeof schema, Readable> {
|
|
9
|
-
|
|
9
|
+
protected out: Writable;
|
|
10
|
+
constructor(out: Writable);
|
|
10
11
|
protected _run(_input: z.input<typeof schema>): Promise<Readable>;
|
|
11
12
|
}
|
|
12
13
|
export {};
|
|
@@ -7,13 +7,15 @@ import { AbstractOperation } from '../../../operations/index.js';
|
|
|
7
7
|
*/
|
|
8
8
|
const schema = z.object({}).optional();
|
|
9
9
|
export class ComposeDownOperation extends AbstractOperation {
|
|
10
|
-
|
|
10
|
+
out;
|
|
11
|
+
constructor(out) {
|
|
11
12
|
super(schema);
|
|
13
|
+
this.out = out;
|
|
12
14
|
}
|
|
13
15
|
async _run(_input) {
|
|
14
16
|
const { monorepo } = getContext();
|
|
15
17
|
const command = ['docker', 'compose', 'down'];
|
|
16
|
-
return monorepo.run(new ExecuteLocalCommandOperation(), {
|
|
18
|
+
return monorepo.run(new ExecuteLocalCommandOperation(this.out), {
|
|
17
19
|
script: command.join(' '),
|
|
18
20
|
workingDir: monorepo.rootDir,
|
|
19
21
|
});
|
|
@@ -26,8 +26,8 @@ export class ComposeUpOperation extends AbstractOperation {
|
|
|
26
26
|
}
|
|
27
27
|
manager.add([
|
|
28
28
|
{
|
|
29
|
-
async task() {
|
|
30
|
-
return monorepo.run(new ExecuteLocalCommandOperation(), {
|
|
29
|
+
async task(ctx, task) {
|
|
30
|
+
return monorepo.run(new ExecuteLocalCommandOperation(task.stdout()), {
|
|
31
31
|
script: command.join(' '),
|
|
32
32
|
workingDir: monorepo.rootDir,
|
|
33
33
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PassThrough } from 'node:stream';
|
|
1
2
|
import * as z from 'zod';
|
|
2
3
|
import { decodeBuildkitStatusResponse } from '../../index.js';
|
|
3
4
|
import { AbstractOperation } from '../../../operations/index.js';
|
|
@@ -36,8 +37,13 @@ export class BuildImageOperation extends AbstractOperation {
|
|
|
36
37
|
this.out = out;
|
|
37
38
|
}
|
|
38
39
|
async _run(input) {
|
|
39
|
-
const
|
|
40
|
-
this.
|
|
40
|
+
const tee = new PassThrough();
|
|
41
|
+
const logFile = await this.context.monorepo.store.createWriteStream(`logs/docker/build/${input.tag}.log`);
|
|
42
|
+
tee.pipe(logFile);
|
|
43
|
+
if (this.out) {
|
|
44
|
+
tee.pipe(this.out);
|
|
45
|
+
}
|
|
46
|
+
tee.write('Sending build context to Docker\n');
|
|
41
47
|
const stream = await this.context.docker.buildImage({
|
|
42
48
|
context: input.context,
|
|
43
49
|
src: [...input.src],
|
|
@@ -49,22 +55,21 @@ export class BuildImageOperation extends AbstractOperation {
|
|
|
49
55
|
target: input.target,
|
|
50
56
|
version: '2',
|
|
51
57
|
});
|
|
52
|
-
|
|
58
|
+
tee.write('Starting build\n');
|
|
53
59
|
return new Promise((resolve, reject) => {
|
|
54
60
|
this.context.docker.modem.followProgress(stream, (err, traces) => {
|
|
55
|
-
|
|
61
|
+
// logFile.close();
|
|
56
62
|
return err ? reject(err) : resolve(traces);
|
|
57
63
|
}, async (trace) => {
|
|
58
64
|
if (trace.error) {
|
|
59
|
-
|
|
65
|
+
// logFile.close();
|
|
60
66
|
reject(new Error(trace.error));
|
|
61
67
|
}
|
|
62
68
|
else {
|
|
63
69
|
try {
|
|
64
70
|
const { vertexes } = await decodeBuildkitStatusResponse(trace.aux);
|
|
65
71
|
vertexes.forEach((v) => {
|
|
66
|
-
|
|
67
|
-
this.out?.write(v.name + '\n');
|
|
72
|
+
tee.write(v.name + '\n');
|
|
68
73
|
});
|
|
69
74
|
}
|
|
70
75
|
catch (error) {
|
|
@@ -4,11 +4,12 @@ export declare class Component implements ComponentConfig {
|
|
|
4
4
|
readonly name: string;
|
|
5
5
|
readonly config: ComponentConfig;
|
|
6
6
|
protected monorepo: Monorepo;
|
|
7
|
-
readonly
|
|
7
|
+
readonly _rootDir?: string;
|
|
8
8
|
readonly tasks: Tasks;
|
|
9
9
|
readonly resources: Resources;
|
|
10
10
|
readonly flavors: ComponentFlavors;
|
|
11
11
|
constructor(name: string, config: ComponentConfig, monorepo: Monorepo);
|
|
12
|
+
get rootDir(): string;
|
|
12
13
|
flavor(name: string, mustExist?: boolean): ComponentFlavorConfig;
|
|
13
14
|
cloneWith(config: Partial<ComponentConfig>): ComponentConfig;
|
|
14
15
|
toJSON(): ComponentConfig;
|
|
@@ -5,7 +5,7 @@ export class Component {
|
|
|
5
5
|
name;
|
|
6
6
|
config;
|
|
7
7
|
monorepo;
|
|
8
|
-
|
|
8
|
+
_rootDir;
|
|
9
9
|
tasks;
|
|
10
10
|
resources;
|
|
11
11
|
flavors;
|
|
@@ -13,13 +13,16 @@ export class Component {
|
|
|
13
13
|
this.name = name;
|
|
14
14
|
this.config = config;
|
|
15
15
|
this.monorepo = monorepo;
|
|
16
|
-
this.
|
|
16
|
+
this._rootDir = config.rootDir;
|
|
17
17
|
this.tasks = toIdentifedHash(config.tasks || {}, this.name);
|
|
18
18
|
this.resources = toIdentifedHash(
|
|
19
19
|
// Due to the schema.json -> typescript conversion weirdness
|
|
20
20
|
config.resources || {}, this.name);
|
|
21
21
|
this.flavors = toIdentifedHash(config.flavors || {}, this.name);
|
|
22
22
|
}
|
|
23
|
+
get rootDir() {
|
|
24
|
+
return this._rootDir || this.name;
|
|
25
|
+
}
|
|
23
26
|
flavor(name, mustExist = true) {
|
|
24
27
|
const flavor = this.flavors[name];
|
|
25
28
|
if (!flavor && mustExist) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ProjectFlavors, Tasks } from '../index.js';
|
|
2
|
-
import { ComponentConfig, DefaultsConfig, PluginConfig, ProjectConfig, ProjectFlavorConfig
|
|
3
|
-
export declare class MonorepoConfig implements
|
|
2
|
+
import { ComponentConfig, DefaultsConfig, EMBConfig, PluginConfig, ProjectConfig, ProjectFlavorConfig } from '../config/index.js';
|
|
3
|
+
export declare class MonorepoConfig implements EMBConfig {
|
|
4
4
|
project: ProjectConfig;
|
|
5
5
|
defaults: DefaultsConfig;
|
|
6
6
|
env: Record<string, string>;
|
|
@@ -9,9 +9,9 @@ export declare class MonorepoConfig implements UserConfig {
|
|
|
9
9
|
vars: Record<string, unknown>;
|
|
10
10
|
tasks: Tasks;
|
|
11
11
|
components: Record<string, ComponentConfig>;
|
|
12
|
-
constructor(config:
|
|
12
|
+
constructor(config: EMBConfig);
|
|
13
13
|
component(id: string): ComponentConfig;
|
|
14
14
|
flavor(name: string): ProjectFlavorConfig;
|
|
15
|
-
toJSON(): Required<
|
|
16
|
-
with(overrides: Partial<
|
|
15
|
+
toJSON(): Required<EMBConfig>;
|
|
16
|
+
with(overrides: Partial<EMBConfig>): MonorepoConfig;
|
|
17
17
|
}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EMBConfig } from '../config/types.js';
|
|
2
2
|
import { IOperation } from '../operations/index.js';
|
|
3
|
-
import { TemplateExpander } from '../utils/index.js';
|
|
3
|
+
import { Expandable, TemplateExpander } from '../utils/index.js';
|
|
4
4
|
import { Component } from './component.js';
|
|
5
5
|
import { EMBStore } from './store/index.js';
|
|
6
6
|
import { ResourceInfo, TaskInfo } from './types.js';
|
|
7
7
|
export declare class Monorepo {
|
|
8
|
+
private _rootDir;
|
|
8
9
|
private defaultFlavor;
|
|
9
10
|
private _config;
|
|
10
11
|
private _store;
|
|
11
12
|
private initialized;
|
|
12
|
-
constructor(config:
|
|
13
|
-
get config():
|
|
13
|
+
constructor(config: EMBConfig, _rootDir: string, defaultFlavor?: string);
|
|
14
|
+
get config(): EMBConfig;
|
|
14
15
|
get defaults(): import("../config/types.js").DefaultsConfig;
|
|
15
16
|
get flavors(): import("./types.js").ProjectFlavors;
|
|
16
17
|
get name(): string;
|
|
@@ -24,12 +25,12 @@ export declare class Monorepo {
|
|
|
24
25
|
get resources(): Array<ResourceInfo>;
|
|
25
26
|
resource(nameOrId: string): ResourceInfo;
|
|
26
27
|
get vars(): Record<string, unknown>;
|
|
27
|
-
expand(str: string, expander?: TemplateExpander): Promise<string>;
|
|
28
|
-
expand<R extends Record<string, unknown>>(record: R, expander?: TemplateExpander): Promise<R>;
|
|
28
|
+
expand<T extends Expandable>(toExpand: T, expander?: TemplateExpander): Promise<T extends string ? string : T extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: /*elided*/ any; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : T extends { readonly [K_2 in keyof T]: Expandable; } ? { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : T_1 extends { readonly [K_5 in keyof T_1]: Expandable; } ? { readonly [K_6 in keyof T_1]: T_1[K_6] extends infer T_2 ? T_2 extends T_1[K_6] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : T_2 extends { readonly [K_7 in keyof T_2]: Expandable; } ? { readonly [K_8 in keyof T_2]: T_2[K_8] extends infer T_3 ? T_3 extends T_2[K_8] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : T_3 extends { readonly [K_9 in keyof T_3]: Expandable; } ? { readonly [K_10 in keyof T_3]: T_3[K_10] extends infer T_4 ? T_4 extends T_3[K_10] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : T_4 extends { readonly [K_11 in keyof T_4]: Expandable; } ? { readonly [K_12 in keyof T_4]: T_4[K_12] extends infer T_5 ? T_5 extends T_4[K_12] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : T_5 extends { readonly [K_13 in keyof T_5]: Expandable; } ? { readonly [K_14 in keyof T_5]: T_5[K_14] extends infer T_6 ? T_6 extends T_5[K_14] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : T_6 extends { readonly [K_15 in keyof T_6]: Expandable; } ? { readonly [K_16 in keyof T_6]: T_6[K_16] extends infer T_7 ? T_7 extends T_6[K_16] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : U)[] : T_7 extends { readonly [K_17 in keyof T_7]: Expandable; } ? { readonly [K_18 in keyof T_7]: T_7[K_18] extends infer T_8 ? T_8 extends T_7[K_18] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_9 ? T_9 extends U[K_1] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : U)[] : T_8 extends { readonly [K_19 in keyof T_8]: Expandable; } ? { readonly [K_20 in keyof T_8]: T_8[K_20] extends infer T_9 ? T_9 extends T_8[K_20] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : T_9 extends { readonly [K_21 in keyof T_9]: Expandable; } ? { readonly [K_22 in keyof T_9]: T_9[K_22] extends infer T_10 ? T_10 extends T_9[K_22] ? T_10 extends string ? string : T_10 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_10 extends { readonly [K_23 in keyof T_10]: Expandable; } ? { readonly [K_24 in keyof T_10]: /*elided*/ any; } : T_10 : never : never; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T>;
|
|
29
29
|
private installStore;
|
|
30
30
|
private installEnv;
|
|
31
31
|
init(): Promise<Monorepo>;
|
|
32
32
|
join(...paths: string[]): string;
|
|
33
33
|
run<I, O>(operation: IOperation<I, O>, args: I): Promise<O>;
|
|
34
|
+
private expandPatches;
|
|
34
35
|
withFlavor(flavorName: string): Promise<Monorepo>;
|
|
35
36
|
}
|