import type { Atom } from "../atom/definition.ts";
import { AtomChange } from "../change/index.ts";
export declare class EventsTree<Kind extends Atom.Flavor.Kind> {
    #private;
    at(path: Atom.Path): Atom.Exact.Envelop<Kind, any, any, Atom.Qualifier.Default, never>[];
    traverse(path: Atom.Path, callback: EventsTree.TraverseCallback<Kind>): void;
    add(path: Atom.Path, atom: Atom.Exact.Envelop<Kind, any, any, Atom.Qualifier.Default, never>): void;
    delete(path: Atom.Path, atom: Atom.Exact.Envelop<Kind, any, any, Atom.Qualifier.Default, never>): boolean;
    move(from: Atom.Path, to: Atom.Path, atom: Atom.Exact.Envelop<Kind, any, any, Atom.Qualifier.Default, never>): boolean;
    static node<Kind extends Atom.Flavor.Kind>(): EventsTree.Node<Kind>;
    trigger(path: Atom.Path, changes: AtomChange): void;
}
export declare namespace EventsTree {
    interface Node<Kind extends Atom.Flavor.Kind> {
        atoms: Set<Atom.Exact.Envelop<Kind, any, Atom.Def<unknown>, Atom.Qualifier.Default, never>>;
        children: Record<keyof any, Node<Kind>>;
    }
    type TraverseCallback<Kind extends Atom.Flavor.Kind> = (path: Atom.Path, atoms: Atom.Exact.Envelop<Kind, any, Atom.Def<unknown>, Atom.Qualifier.Default, never>[]) => void;
}
//# sourceMappingURL=index.d.ts.map