import { ApexBlock, ApexClass, ApexSourceRange, ApexTypeRef } from "../types";
import { DeclarationVisitor } from "./declarationVisitor";
import { BlockContext, CatchClauseContext, DotExpressionContext, IdCreatedNamePairContext, IdPrimaryContext, LocalVariableDeclarationContext } from "../grammar";
export declare class BlockVisitor<T extends ApexBlock> extends DeclarationVisitor<T> {
    private static standardNamespaces;
    constructor(state: T);
    private addBlock;
    visitBlock(ctx: BlockContext): T;
    visitLocalVariableDeclaration(ctx: LocalVariableDeclarationContext): T;
    visitCatchClause(ctx: CatchClauseContext): T;
    visitDotExpression(ctx: DotExpressionContext): T;
    visitIdPrimary(ctx: IdPrimaryContext): T;
    visitIdCreatedNamePair(ctx: IdCreatedNamePairContext): T;
    addLocalVariable(name: string, type: ApexTypeRef, sourceRange: ApexSourceRange): void;
    protected getLocalVariableNames(blockHierarchy: ApexBlock[]): string[];
    updateReferences(context: ApexClass): void;
    resolveBlockHierarchy(): Generator<ApexBlock[]>;
}
//# sourceMappingURL=blockVisitor.d.ts.map