import { PatchObject } from "./compare";
export interface Listener {
    callback: Function;
    rules: RegExp[];
    rawRules: string[];
}
export interface DataChange extends PatchObject {
    path: any;
    rawPath: string[];
}
export declare class StateContainer<T = any> {
    state: T;
    private listeners;
    private defaultListener;
    private matcherPlaceholders;
    constructor(state: T);
    set(newState: T): PatchObject[];
    registerPlaceholder(placeholder: string, matcher: RegExp): void;
    listen(segments: string | Function, callback?: Function, immediate?: boolean): Listener;
    removeListener(listener: Listener): void;
    removeAllListeners(): void;
    private checkPatches(patches, listeners, defaultListener?);
    private getPathVariables(patch, listener);
    private reset();
}
