import { AnyPlainObject } from './is-plain-object'; declare type LooseMapper = readonly [((value: any) => any) | LooseMapper] | { [key: string]: ((value: any) => any) | LooseMapper; }; declare type CastAsLooseMapper = T extends LooseMapper ? T : never; export declare type MappedTree = Tr extends LooseMapper ? T extends readonly any[] ? { [K in keyof T]: Tr[0] extends (value: any) => infer R ? R : MappedTree>; } : T extends AnyPlainObject ? { [K in keyof T]: K extends keyof Tr ? (Tr[K] extends (value: any) => infer R ? R : MappedTree>) : T[K]; } : T : never; export declare type Mapper = T extends ReadonlyArray ? readonly [((value: X) => any) | Mapper] : T extends AnyPlainObject ? { [K in keyof T]?: ((value: T[K]) => any) | Mapper; } : never; export declare function directDeepMap>(tree: T, deepMapper: Tr): MappedTree; export {};