import { CommonTokenStream, TerminalNode, Token } from 'antlr4';
export declare const INTERNAL_FORMAT_ERROR_MESSAGE: string;
/**
 * The (default) 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 DEFAULT_MAX_COL = 80;
export interface Group {
    id: number;
    shouldBreak?: boolean;
    size: number;
    dbgText: string;
}
export interface BaseChunk {
    isCursor?: boolean;
    doubleBreak?: true;
    text: string;
    groupsStarting: Group[];
    groupsEnding: Group[];
    indentation: IndentationModifier[];
    comment?: string;
    mustBreak?: boolean;
    specialSplit?: boolean;
    oneItem?: boolean;
}
export interface RegularChunk extends BaseChunk {
    type: 'REGULAR';
    node?: TerminalNode;
    noSpace?: boolean;
    noBreak?: boolean;
}
export interface SyntaxErrorChunk extends BaseChunk {
    type: 'SYNTAX_ERROR';
}
export interface CommentChunk extends BaseChunk {
    type: 'COMMENT';
}
export type Chunk = RegularChunk | CommentChunk | SyntaxErrorChunk;
export interface IndentationModifier {
    id: number;
    change: 1 | -1;
    removeReference?: IndentationModifier;
    isApplied: boolean;
}
export declare function wantsToBeUpperCase(node: TerminalNode): boolean;
export declare function wantsToBeConcatenated(node: TerminalNode): boolean;
export declare function isComment(token: Token): boolean;
export declare const isInlineComment: (chunk: Chunk) => 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 fillInRegularChunkGroupSizes(chunk: RegularChunk, activeGroups: Group[]): void;
export declare function verifyGroupSizes(chunkList: Chunk[]): void;
export declare function shouldAddSpace(chunk: Chunk, nextChunk: Chunk): boolean;
export declare function getActiveGroups(activeGroups: Group[], groupsEnding: Set<number>, chunk: Chunk): Group[];
