type Predicate = (value: any, path: string[]) => R; type MappedObject = { [Prop in keyof T]: T[Prop] extends Array ? MappedObject[] : T[Prop] extends Record ? MappedObject : K; }; type WalkObjectStopFn = (value: any, path: string[]) => boolean; type WalkObjectOptions = { stop?: WalkObjectStopFn; getKey?(prop: string): string; }; declare function walkObject(target: T, predicate: Predicate, options?: WalkObjectOptions): MappedObject>>; declare function mapObject(obj: any, fn: (value: any) => any): any; export { MappedObject, WalkObjectOptions, WalkObjectStopFn, mapObject, walkObject };