type IsAny = unknown extends T ? ([keyof T] extends [never] ? false : true) : false; type ExcludeArrayKeys = T extends ArrayLike ? Exclude : keyof T; type PathImpl = Key extends string ? IsAny extends true ? never : T[Key] extends Record ? `${Key}.${PathImpl> & string}` | `${Key}.${ExcludeArrayKeys & string}` : never : never; type Path = keyof T extends string ? (PathImpl | keyof T) extends infer P ? P extends string | keyof T ? P : keyof T : keyof T : never; declare function deepPickUnsafe(obj: object, paths: Array): {}; declare function deepPick(obj: O, paths: Array>): {}; declare function deepOmitUnsafe(obj: object, paths: Array): object; declare function deepOmit(obj: O, paths: Array>): object; export { type Path, deepOmit, deepOmitUnsafe, deepPick, deepPickUnsafe };