import { Atom } from "../atom/definition.ts";
import { Field } from "../field/definition.ts";
export declare class ValidationTree {
    #private;
    at(path: Atom.Path): Field.Error[];
    nested(path: Atom.Path): ValidationTree.ErrorsList;
    static traverse(node: ValidationTree.Node, callback: (path: Atom.Path, node: ValidationTree.Node) => void, path?: Atom.Path): void;
    add(path: Atom.Path, error: Field.Error): ValidationTree.Index;
    clear(path: Atom.Path): void;
    static node(): ValidationTree.Node;
}
export declare namespace ValidationTree {
    export type Index = number & {
        [indexBrand]: true;
    };
    const indexBrand: unique symbol;
    export interface Node {
        errors: ErrorsMap;
        children: Record<string, Node>;
    }
    export type ErrorsMap = Map<Index, boolean>;
    export type ErrorsList = Array<[Atom.Path, Field.Error]>;
    export {};
}
//# sourceMappingURL=index.d.ts.map