declare const objectRecurseImmutable: <T>(request_: {
    target: T;
    doOnValue?: ((value: unknown, key: string, owner: unknown, depth: {
        maxDepth: number;
        depth: number;
    }) => void) | undefined;
    doOnObject?: ((object: unknown, key: string, owner: unknown, depth: {
        maxDepth: number;
        depth: number;
    }) => void) | undefined;
    doOnResult?: ((target: unknown, depth: {
        maxDepth: number;
        depth: number;
    }) => unknown) | undefined;
    doOnDepthReached?: ((target: unknown, depth: {
        maxDepth: number;
        depth: number;
    }) => unknown) | undefined;
    gcTargetAfterDone?: boolean | undefined;
}, maxDepth?: number) => T | undefined;

export { objectRecurseImmutable };
