import { CommonToken, CommonTokenStream, ErrorListener as ANTLRErrorListener, ParseTree, Recognizer, TerminalNode, Token } from 'antlr4';
import { MergeClauseContext } from '../generated-parser/CypherCmdParser';
export declare class FormatterErrorsListener implements ANTLRErrorListener<CommonToken> {
    syntaxError<T extends Token>(_r: Recognizer<CommonToken>, offendingSymbol: T, line: number, column: number): void;
    reportAmbiguity(): void;
    reportAttemptingFullContext(): void;
    reportContextSensitivity(): void;
}
/**
 * The maximum column width for the formatter. Not a hard limit as overflow
 * is unavoidable in some cases, but we always prefer a solution that doesn't overflow.
 */
export declare const MAX_COL = 80;
export type Chunk = RegularChunk | CommentChunk | SpecialChunk;
export interface RegularChunk {
    type: 'REGULAR';
    node?: TerminalNode;
    noSpace?: true;
    isCursor?: true;
    text: string;
}
export interface CommentChunk {
    type: 'COMMENT';
    isCursor?: true;
    breakBefore: boolean;
    text: string;
}
interface GroupChunk {
    type: 'GROUP_START' | 'GROUP_END';
    extraIndent?: number;
}
interface IndentationChunk {
    type: 'INDENT' | 'DEDENT';
}
type SpecialChunk = GroupChunk | IndentationChunk;
export declare function isSpecialChunk(chunk: Chunk): chunk is SpecialChunk;
export declare function handleMergeClause(ctx: MergeClauseContext, visit: (node: ParseTree) => void, startGroup?: () => void, endGroup?: () => void): void;
export declare function wantsToBeUpperCase(node: TerminalNode): boolean;
export declare function wantsToBeConcatenated(node: TerminalNode): boolean;
export declare function isComment(token: Token): boolean;
export declare function getParseTreeAndTokens(query: string): {
    tree: import("../generated-parser/CypherCmdParser").StatementsOrCommandsContext;
    tokens: CommonTokenStream;
};
export declare function findTargetToken(tokens: Token[], cursorPosition: number): Token | false;
export declare const indentChunk: IndentationChunk;
export declare const dedentChunk: IndentationChunk;
export declare const groupStartChunk: GroupChunk;
export declare const collectionGroupStartChunk: GroupChunk;
export declare const caseGroupStartChunk: GroupChunk;
export declare const groupEndChunk: Chunk;
export {};
