import type { Node } from '../../types'; export type FullWalkerCallback = (node: Node, state: TState, type: string) => void; type FullAncestorWalkerCallback = (node: Node, state: TState | Node[], ancestors: Node[], type: string) => void; export type WalkerCallback = (node: Node, state: TState, type?: string) => void; type SimpleWalkerFn = (node: Node, state: TState) => void; export type AncestorWalkerFn = (node: Node, state: TState | Node[], ancestors: Node[]) => void; type RecursiveWalkerFn = (node: Node, state: TState, callback: WalkerCallback) => void; interface SimpleVisitors { [type: string]: SimpleWalkerFn; } interface AncestorVisitors { [type: string]: AncestorWalkerFn; } interface RecursiveVisitors { [type: string]: RecursiveWalkerFn; } type FindPredicate = (type: string, node: Node) => boolean; interface Found { node: Node; state: TState; } export declare const simple: (node: Node, visitors: SimpleVisitors, base?: RecursiveVisitors, state?: TState) => void; export declare const ancestor: (node: Node, visitors: AncestorVisitors, base?: RecursiveVisitors, state?: TState) => void; export declare const recursive: (node: Node, state: TState, functions: RecursiveVisitors, base?: RecursiveVisitors) => void; export declare const full: (node: Node, callback: FullWalkerCallback, base?: RecursiveVisitors, state?: TState) => void; export declare const fullAncestor: (node: Node, callback: FullAncestorWalkerCallback, base?: RecursiveVisitors, state?: TState) => void; export declare const make: (functions: RecursiveVisitors, base?: RecursiveVisitors) => RecursiveVisitors; export declare const findNodeAt: (node: Node, start: number | undefined, end: number | undefined, type?: FindPredicate, base?: RecursiveVisitors, state?: TState) => Found | undefined; export declare const findNodeAround: typeof findNodeAt; export declare const findNodeAfter: typeof findNodeAt; export declare const base: AncestorVisitors; export {};