export declare type PathImpl = Key extends string ? T[Key] extends Record ? `${Key}.${PathImpl> & string}` | `${Key}.${Exclude & string}` : never : never; export declare type PathImpl2 = PathImpl | keyof T; export declare type Path = keyof T extends string ? PathImpl2 extends string | keyof T ? PathImpl2 : keyof T : never; export declare type PathValue> = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? Rest extends Path ? PathValue : never : never : P extends keyof T ? T[P] : never;