import type { ParserRuleContext, Token } from 'antlr4';
import { default as CypherParser, StatementOrCommandContext, StatementsOrCommandsContext } from './generated-parser/CypherCmdParser';
import { SyntaxDiagnostic } from './syntaxValidation/syntaxValidationHelpers';
export interface ParsedStatement {
    command: ParsedCommand;
    parser: CypherParser;
    tokens: Token[];
    ctx: StatementsOrCommandsContext;
    diagnostics: SyntaxDiagnostic[];
    stopNode: ParserRuleContext;
    collectedLabelOrRelTypes: LabelOrRelType[];
    collectedVariables: string[];
}
export interface ParsingResult {
    query: string;
    statementsParsing: ParsedStatement[];
}
export interface ParsingScaffolding {
    query: string;
    statementsScaffolding: StatementParsingScaffolding[];
}
export interface StatementParsingScaffolding {
    parser: CypherParser;
    tokens: Token[];
}
export declare enum LabelType {
    nodeLabelType = "Label",
    relLabelType = "Relationship type",
    unknown = "Label or relationship type"
}
export type LabelOrRelType = {
    labeltype: LabelType;
    labelText: string;
    couldCreateNewLabel: boolean;
    line: number;
    column: number;
    offsets: {
        start: number;
        end: number;
    };
};
export declare function createParsingScaffolding(query: string): ParsingScaffolding;
export declare function parse(query: string): StatementOrCommandContext[];
export declare function createParsingResult(query: string): ParsingResult;
type CypherCmd = {
    type: 'cypher';
    query: string;
};
type RuleTokens = {
    start: Token;
    stop: Token;
};
export type ParsedCypherCmd = CypherCmd & RuleTokens;
export type ParsedCommandNoPosition = {
    type: 'cypher';
    statement: string;
} | {
    type: 'use';
    database?: string;
} | {
    type: 'clear';
} | {
    type: 'history';
} | {
    type: 'set-parameters';
    parameters: {
        name: string;
        expression: string;
    }[];
} | {
    type: 'list-parameters';
} | {
    type: 'clear-parameters';
} | {
    type: 'parse-error';
};
export type ParsedCommand = ParsedCommandNoPosition & RuleTokens;
declare class ParserWrapper {
    parsingResult?: ParsingResult;
    parse(query: string): ParsingResult;
    clearCache(): void;
}
export declare function setConsoleCommandsEnabled(enabled: boolean): void;
export declare function consoleCommandEnabled(): boolean;
export declare const parserWrapper: ParserWrapper;
export {};
