import { Notifier } from "./notifier";
import { ChangeListener } from "./types";
export declare class NotifierDeep extends Map<Key[], Notifier<unknown>> {
    getNotifier<T = unknown>(keys: Key[]): {
        key: Key[];
        notifier: Notifier<T>;
    };
    subscribe<T = unknown>(keys: Key[], listener: ChangeListener<T>): () => void;
    key(keys: Key[]): (string | number | symbol)[];
    has(keys: Key[]): boolean;
    get<T = unknown>(keys: Key[]): Notifier<T>;
    /** Gets related keys and notifiers */
    getRelated(keys: Key[]): Map<Key[], Notifier<unknown>>;
    clear(): void;
    notify<T>(keys: Key[], value: T): this;
    notify(keys: Key[], ...args: any[]): this;
    static get(abon: any): NotifierDeep;
    static define<T>(abon: T): T;
}
declare type Key = keyof any;
export {};
