import { Path } from './path'; export declare type JSON = { [key: string]: any; }; export declare type ChildResult = { pathToChild: string; child: Node; }; export declare type ChildrenFinder = () => ChildResult[]; export declare const DefaultChildrenFinder: ChildrenFinder; export declare type Node = { type: string; children: ChildrenFinder; toString?: () => string; validate?: () => void; } & JSON; export declare type SyncWalker = (path: Path, state?: JSON) => void; export declare type AsyncWalker = (path: Path, state?: JSON) => Promise; export declare type Walker = SyncWalker | AsyncWalker; export declare type NodeValidator = (node: Node) => boolean; export declare const DefaultNodeValidator: NodeValidator;