import { Token } from 'antlr4ts';
import * as lsp from 'vscode-languageserver';
import { Range, TextDocument, TextEdit } from 'vscode-languageserver-textdocument';
import { Lineage, LineageOptions } from './lineage.typing';
import { PreviewContext } from './listeners/preview.listener';
import { SchemaContext } from './listeners/schema.listener';
import { StructureResult } from './listeners/structure.listener';
import { SemanticToken } from './listeners/tokens-collector.listener';
import { ParsingWarehouse } from './parsing-warehouse';
import { SchemaRegistry } from './schema-registry';
import { TokenCollection, StructureCommandOptions } from './typings';
export declare class LSPServer {
    private readonly _warehouse;
    private readonly _schemaRegistry;
    constructor();
    get warehouse(): ParsingWarehouse;
    get schemaRegistry(): SchemaRegistry;
    getTokenByPosition(document: TextDocument, position: lsp.Position): Token | undefined;
    doValidation(document: TextDocument): lsp.Diagnostic[];
    doFormatting(document: TextDocument, options: lsp.FormattingOptions): TextEdit[];
    doFoldingRanges(document: TextDocument): lsp.FoldingRange[];
    doReferences(document: TextDocument, position: lsp.Position, skipSelf?: boolean): lsp.Range[];
    doCompletion(document: TextDocument, position: lsp.Position): {
        completionItems: lsp.CompletionItem[];
        identifiers: string[];
    };
    parseStructure(document: TextDocument, options?: StructureCommandOptions): StructureResult;
    generatePreviewScript(document: TextDocument, context: PreviewContext, range?: Range): string;
    extractSchemaContexts(document: TextDocument, range?: Range): SchemaContext[];
    collectTokens(document: TextDocument, range?: Range): TokenCollection;
    getLineage(document: TextDocument, options?: LineageOptions): Lineage;
}
export declare function isSemanticTokenReference(token1: SemanticToken, token2: SemanticToken): boolean;
