type SimpleNode = { _: string; }; type MyNode = (SimpleNode['_'] | (SimpleNode & Record)>)>)>)>)>)>)>)>)>)); export interface StructNode { _: Exclude['_']; _path: `${U}.${Exclude['_']}`; } type Struct = (T extends SimpleNode['_'] ? Struct<{ _: Exclude; }, U> : keyof T extends '_' ? StructNode : StructNode & { [key in Exclude]: (T[key] extends SimpleNode['_'] ? Struct<{ _: Exclude; }, StructNode['_path']> : Struct[key], SimpleNode['_']>, StructNode['_path']>); }); export declare function makeUnderLangPropsCreator(langWildcard: LANG_WILDCARD): (obj: T) => Struct; export {};