import GirafeSingleton from '../../base/GirafeSingleton';
import State from './state';
import ConfigManager from '../configuration/configmanager';
export type Callback = (oldValue: any, value: any, parent?: any) => void | Promise<void>;
declare class StateManager extends GirafeSingleton {
    #private;
    get state(): State;
    configManager: ConfigManager;
    constructor(type: string);
    private setDefaultValues;
    private onChange;
    subscribe(path: string, callback: Callback): Callback;
    subscribe(path: RegExp, callback: Callback): Callback;
    /** Unsubscribe one or multiple trackers by their callbacks.  */
    unsubscribe(callback: Callback): void;
    unsubscribe(callbacks: Callback[]): void;
    /**
     * Returns true if to object are deeply equal, false otherwise
     * Circular references are ignored
     */
    private areEqual;
    private areNumbersEqual;
    private areNullOrUndefinedEqual;
    private areSimpleValuesEqual;
    private areCircularReferencesEqual;
    private areArraysEqual;
    private areObjectsEqual;
}
export default StateManager;
