import GirafeSingleton from '../../base/GirafeSingleton.js';
import State from './state.js';
import IGirafeContext from '../context/icontext.js';
export type Callback = (oldValue: any, value: any, parents?: any) => void | Promise<void>;
declare class StateManager extends GirafeSingleton {
    private readonly girafeState;
    private readonly stateProxy;
    get state(): State;
    private readonly callbacks;
    constructor(context: IGirafeContext);
    initializeSingleton(): void;
    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;
    batchChanges(statechanges: (state: State) => void): void;
}
export default StateManager;
