type PathKey = keyof T & (string | number); type Path = T extends readonly unknown[] ? never : { [K in PathKey]: T[K] extends readonly unknown[] ? `${K}` : T[K] extends object ? `${K}` | `${K}/${Path}` : `${K}`; }[PathKey]; type ResolvePath = P extends `${infer Head}/${infer Rest}` ? Head extends keyof T ? ResolvePath : Head extends `${infer N extends number}` ? N extends keyof T ? ResolvePath : never : never : P extends keyof T ? T[P] : P extends `${infer N extends number}` ? N extends keyof T ? T[N] : never : never; export declare function createPathSelector(obj: T):

(selector: P extends Path ? P : Path) => ResolvePath; export {};