import { SemanticTokenTypes } from 'vscode-languageserver-types';
import { Token } from 'antlr4';
import { CypherTokenType } from '../lexerSymbols.js';
export interface TokenPosition {
    line: number;
    startCharacter: number;
    startOffset: number;
}
export declare function computeTokenKey(tokenPosition: TokenPosition, tokenLength: number): string;
export interface ParsedCypherToken {
    position: TokenPosition;
    length: number;
    tokenType: CypherTokenType;
    token: string;
    bracketInfo?: BracketInfo;
}
export interface BracketInfo {
    bracketType: BracketType;
    bracketLevel: number;
}
export declare enum BracketType {
    bracket = "bracket",
    parenthesis = "parenthesis",
    curly = "curly"
}
export interface ColouredToken {
    position: TokenPosition;
    length: number;
    tokenColour: SemanticTokenTypes;
    token: string;
}
export declare function getTokenPosition(token: Token): TokenPosition;
export declare function toParsedTokens(tokenPosition: TokenPosition, tokenType: CypherTokenType, tokenStr: string, token: Token, bracketsLevel?: Map<BracketType, number>): ParsedCypherToken[];
export declare function getCypherTokenType(token: Token, nextToken: Token | undefined): {
    tokenType: CypherTokenType;
    finished: boolean;
};
export declare function shouldAssignTokenType(token: Token): boolean;
export declare function sortTokens(tokens: ParsedCypherToken[]): ParsedCypherToken[];
export declare function removeOverlappingTokens(tokens: ParsedCypherToken[]): ParsedCypherToken[];
