/**
 * Thanks to Anders Hejlsberg for these types:
 *
 * https://github.com/ahejlsberg/tsconf2020-demos/blob/b83b9698a8ffd40c63afa63905142ec5c30eb604/template/main.ts#L108-L136
 */
export declare type PathKeys<T> = object extends T ? string : T extends readonly any[] ? Extract<keyof T, `${number}`> | SubKeys<T, Extract<keyof T, `${number}`>> : T extends object ? Extract<keyof T, string> | SubKeys<T, Extract<keyof T, string>> : never;
export declare type SubKeys<T, K extends string> = K extends keyof T ? `${K}.${PathKeys<T[K]>}` : never;
export declare type PropType<T, Path extends string> = Path extends keyof T ? T[Path] : Path extends `${infer K}.${infer R}` ? K extends keyof T ? PropType<T[K], R> : unknown : unknown;
//# sourceMappingURL=types.d.ts.map