import { CompletionItem as VSCodeCompletionItem } from 'vscode-languageserver-types';
export type ReturnDescription = {
    name: string;
    description: string;
    type: Neo4jStringType;
    isDeprecated: boolean;
};
export declare const allCypherVersions: string[];
export declare const cypherVersionNumbers: string[];
export type CypherVersion = (typeof allCypherVersions)[number];
export type Neo4jStringType = string;
export type ArgumentDescription = ReturnDescription & {
    default?: string;
};
type ProcedureMode = 'READ' | 'DBMS' | 'SCHEMA' | 'WRITE' | 'DEFAULT';
export type Neo4jProcedure = {
    name: string;
    description: string;
    mode: ProcedureMode;
    worksOnSystem: boolean;
    argumentDescription: ArgumentDescription[];
    returnDescription: ReturnDescription[];
    signature: string;
    admin: boolean;
    option: {
        deprecated: boolean;
    } & Record<string, unknown>;
    deprecatedBy?: string;
};
export type Neo4jFunction = {
    name: string;
    category: string;
    description: string;
    isBuiltIn: boolean;
    argumentDescription: ArgumentDescription[];
    returnDescription: string;
    signature: string;
    aggregating: boolean;
    isDeprecated: boolean;
    deprecatedBy?: string;
};
export type CompletionItem = VSCodeCompletionItem & {
    signature?: string;
};
export type SymbolTable = {
    variable: string;
    definitionPosition: number;
    types: string[];
    references: number[];
    labels: LabelOrCondition;
}[];
export type LabelOrCondition = LabelLeaf | ConditionNode;
export declare const isCondition: (condition: string) => condition is Condition;
export type LabelLeaf = {
    value: string;
};
export declare const isLabelLeaf: (labelOrCondition: LabelOrCondition) => labelOrCondition is LabelLeaf;
declare const CONDITIONS: readonly ["and", "or", "not", "any"];
export type Condition = (typeof CONDITIONS)[number];
export type ConditionNode = {
    condition: Condition;
    children: LabelOrCondition[];
};
export type SymbolsInfo = {
    query: string;
    symbolTables: SymbolTable[];
};
export {};
