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