import { QueryNode } from './base.js'; /** * Gets the index the next VariableQueryNode will be assigned * * Variable indices are assigned in ascending order, so all variables created between two calls of this function have * an index in the range [first result, second result). */ export declare function peekNextVariableIndex(): number; /** * A node that evaluates to the value of a variable. * * Use in a VariableAssignmentQueryNode or in a TransformListQueryNode to assign a value */ export declare class VariableQueryNode extends QueryNode { readonly label?: string | undefined; constructor(label?: string | undefined); readonly index: number; equals(other: this): boolean; toString(): string; describe(): string; } /** * A node that sets the value of a variable to the result of a node and evaluates to a second node * * LET $variableNode = $variableValueNode RETURN $resultNode * * (function() { * let $variableNode = $variableValueNode * return $resultNode * })() */ export declare class VariableAssignmentQueryNode extends QueryNode { constructor(params: { variableValueNode: QueryNode; resultNode: QueryNode; variableNode: VariableQueryNode; }); static create(valueNode: QueryNode, resultNodeFn: (variableNode: QueryNode) => QueryNode, varLabel?: string): VariableAssignmentQueryNode; readonly variableValueNode: QueryNode; readonly resultNode: QueryNode; readonly variableNode: VariableQueryNode; describe(): string; } /** * A wrapper around an expression that should be hoisted out of certain contexts * * This is a simpler version of a variable assignment (which is also hoistable) but does not require * a variable. For this reason, it cannot be used if the expression is used multiple times. */ export declare class HoistableQueryNode extends QueryNode { readonly node: QueryNode; /** * The name of the variable this node would be assigned to when hoisted */ readonly variableLabel: string; constructor(node: QueryNode, /** * The name of the variable this node would be assigned to when hoisted */ variableLabel: string); describe(): string; }