import { TextDocument } from "vscode-languageserver-textdocument";
import { Connection, Diagnostic } from "vscode-languageserver/node";
import { Visitor } from "@herb-tools/core";
import type { ERBCaseNode, ERBCaseMatchNode } from "@herb-tools/core";
import { ParserService } from "./parser_service";
import { LinterService } from "./linter_service";
import { DocumentService } from "./document_service";
import { ConfigService } from "./config_service";
export declare class Diagnostics {
    private readonly connection;
    private readonly documentService;
    private readonly parserService;
    private readonly linterService;
    private readonly configService;
    private diagnostics;
    constructor(connection: Connection, documentService: DocumentService, parserService: ParserService, linterService: LinterService, configService: ConfigService);
    validate(textDocument: TextDocument): Promise<void>;
    private getUnreachableCodeDiagnostics;
    refreshDocument(document: TextDocument): Promise<void>;
    refreshAllDocuments(): Promise<void>;
    private sendDiagnosticsFor;
}
export declare class UnreachableCodeCollector extends Visitor {
    diagnostics: Diagnostic[];
    visitERBCaseNode(node: ERBCaseNode): void;
    visitERBCaseMatchNode(node: ERBCaseMatchNode): void;
    private checkUnreachableChildren;
    private toZeroBased;
}
