UNPKG

@enspirit/emb

Version:

A replacement for our Makefile-for-monorepos

28 lines 106 kB
import { EMBConfig } from '../config/types.js'; import { IOperation } from '../operations/index.js'; import { Expandable, TemplateExpander } from '../utils/index.js'; import { Component } from './component.js'; import { EMBStore } from './store/index.js'; import { ResourceInfo, TaskInfo } from './types.js'; export declare class Monorepo { private _rootDir; private defaultFlavor; private _config; private _store; private initialized; constructor(config: EMBConfig, _rootDir: string, defaultFlavor?: string); get config(): EMBConfig; get defaults(): import("../config/types.js").DefaultsConfig; get flavors(): import("./types.js").ProjectFlavors; get name(): string; get rootDir(): string; get currentFlavor(): string; get store(): EMBStore; get components(): Component[]; component(name: string): Component; get tasks(): TaskInfo[]; task(nameOrId: string): TaskInfo; get resources(): Array<ResourceInfo>; resource(nameOrId: string): ResourceInfo; get vars(): Record<string, unknown>; 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 ?