export type TPrimitive = string | number | boolean | null | undefined; export type TNestedPath = T extends TPrimitive ? never : T extends any[] ? never : T extends object ? { [K in keyof T]-?: K extends string | number ? T[K] extends TPrimitive ? `${K}` : `${K}` | `${K}.${TNestedPath}` : never; }[keyof T & (string | number)] : never; export type TNestedProperty = P extends keyof T ? T[P] : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? TNestedProperty : undefined : undefined; export declare function getNestedProperty>(obj: T, path: P): TNestedProperty;