import type { CypherEnvironment } from "../Environment";
import { ListIndex } from "../expressions/list/ListIndex";
import type { Expr } from "../types";
import { PropertyRef } from "./PropertyRef";
/** Represents a variable
 * @group Variables
 */
export declare class Variable {
    /**
     * @internal
     */
    prefix: string;
    constructor();
    /** Access individual property via the PropertyRef class */
    property(...path: Array<string | Expr>): PropertyRef;
    index(index: number): ListIndex;
    /** @internal */
    getCypher(env: CypherEnvironment): string;
}
/** @internal */
export interface NamedReference extends Variable {
    readonly id: string;
}
/**
 * Represents a variable with a explicit name
 * @group Variables
 */
export declare class NamedVariable extends Variable implements NamedReference {
    readonly id: string;
    constructor(name: string);
}
