declare global {
    interface Object {
        __brainIsProxy?: boolean;
        __brainTarget: object;
        __brainParents: TProxy[];
        __brainChildren: Map<string, TProxy>;
        __brainFullPaths: string[];
    }
}
export type TProxy = InstanceType<typeof Proxy>;
type TTarget = any;
type Callback = (path: string, oldValue: TTarget, newValue: TTarget | TProxy, parents: TProxy[]) => void;
export default class Brain<T> {
    private readonly initialState;
    private readonly stateProxy;
    private readonly externalCallback;
    private readonly targetToProxy;
    private readonly proxyToTarget;
    private readonly proxyChildren;
    private readonly proxyParents;
    private readonly proxyToFullPaths;
    private delayed;
    private readonly delayedCallbacks;
    constructor(initialState: TTarget, callback: Callback);
    private callback;
    private createProxy;
    private getOrCreateProxyForValue;
    private cleanProxyForValue;
    private handleGetVirtualProperties;
    private handleGetIgnored;
    private handleGetFunctions;
    private getHandler;
    private setHandler;
    private setArrayHandler;
    private getFullPath;
    private readonly objectHandler;
    delay(statechanges: (state: T) => void): void;
    getState(): T;
}
export {};
