import LINQ from '@berish/linq';
import { SERBER_LOOP_OBJECT_DATA_REVERT_SYMBOL, SERBER_LOOP_OBJECT_DATA_SYMBOL } from '../const';
import { ISerberPlugin } from '../types';
declare const typeLoopObj = "_s_loop_object_";
export interface ILoopObjectPluginOutput {
    type: typeof typeLoopObj;
    path: (string | symbol | number)[];
}
export interface ILoopObjectPluginParams {
    [SERBER_LOOP_OBJECT_DATA_SYMBOL]?: WeakMap<object, (string | symbol | number)[]>;
    [SERBER_LOOP_OBJECT_DATA_REVERT_SYMBOL]?: LINQ<[(string | number | symbol)[], (string | number | symbol)[]]>;
}
export declare const loopObjectPlugin: ISerberPlugin<object, object | ILoopObjectPluginOutput, ILoopObjectPluginParams>;
export {};
