import { CommonTokenStream, TerminalNode, Token } from 'antlr4';
export declare const INTERNAL_FORMAT_ERROR_MESSAGE: string;
/**
 * 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 declare enum AlignIndentationOptions {
    Add = 1,
    Remove = -1,
    Maintain = 0
}
export interface ChunkIndentation {
    base: number;
    special: number;
    align: AlignIndentationOptions;
}
export interface BaseChunk {
    isCursor?: boolean;
    doubleBreak?: true;
    text: string;
    groupsStarting: number;
    groupsEnding: number;
    indentation: ChunkIndentation;
}
export interface RegularChunk extends BaseChunk {
    type: 'REGULAR';
    node?: TerminalNode;
    noSpace?: boolean;
    noBreak?: boolean;
    mustBreak?: boolean;
}
export interface SyntaxErrorChunk extends BaseChunk {
    type: 'SYNTAX_ERROR';
}
export interface CommentChunk extends BaseChunk {
    type: 'COMMENT';
    breakBefore: boolean;
}
export type Chunk = RegularChunk | CommentChunk | SyntaxErrorChunk;
export declare const initialIndentation: ChunkIndentation;
export declare const emptyChunk: RegularChunk;
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;
    unParseable: string;
    firstUnParseableToken: Token;
};
export declare function findTargetToken(tokens: Token[], cursorPosition: number): Token | false;
export declare function isCommentBreak(chunk: Chunk, nextChunk: Chunk): boolean;
