declare type WalkObjectPredicate = (value: unknown, path: string[]) => Leaf; declare type MappedLeavesObject = { [Prop in keyof Obj]: Obj[Prop] extends Array ? MappedLeavesObject[] : Obj[Prop] extends object ? MappedLeavesObject : LeafType; }; declare function walkObject(target: Target, predicate: WalkObjectPredicate): MappedLeavesObject>>; export { MappedLeavesObject, WalkObjectPredicate, walkObject };