import { CommonTokenStream, Token } from "antlr4ts";
import { SymbolElement } from "../symbols/symbolElement";
import { CodeCompletionRequest, EditorContext } from "..";
import { SymbolTable } from "../symbols/symbolTable";
/**
 * 通过解析实现自动提示和错误解析的接口类
 */
export interface ParseService {
    /**
     * 符号表
     */
    symbolTable: SymbolTable;
    /**
     * 用户输入的数据
     */
    editorContext: EditorContext;
    /**
     * 对用户的sql进行解析，返回解析出来的CommonTokenStream
     */
    parserSQL(): CommonTokenStream;
    /**
     * 在语法解析树（AST）中查找指定光标位置的Token对象
     */
    findTokenByRangeOffSetInAST(tokenStream: CommonTokenStream): Token | undefined;
    /**
     * 根据光标定位的token找到其在符号表中的符号元素
     * @param tokenInAST
     */
    findSymbolElementByTokenInSymbolTable(tokenInAST: Token): SymbolElement | undefined;
    /**
     * 根据在符号表中查询到的Element对象，确定需要补全的对象
     * @param element
     */
    generateCodeCompletionRequest(element: SymbolElement): CodeCompletionRequest;
    /**
     * 获取当前数据库的关键字列表
     */
    getKeyWorld(): string[];
}
