import * as ast from "./grammar/ast"; import { InputSource, Program } from "./semantics/program"; import { TypeChecker } from "./semantics/type-checker"; export declare class VisitorContext { source: InputSource; program: Program; typeChecker: TypeChecker; constructor(source: InputSource, program: Program); visit(node: ast.AnyAstNode, callback: VisitorCallback): void; } export declare enum VisitResult { Continue = 0, StopVisiting = 1 } export type VisitorCallback = (node: ast.AnyAstNode, context: VisitorContext) => VisitResult | void; export declare function visitFile(file: ast.File, source: InputSource, callback: VisitorCallback, program: Program): void;