import { NodeKind } from "./NodeKind.cjs";
import { ParsedNode } from "./ParsedNode.cjs";
import { PathPartCandidate } from "./PathPartCandidate.cjs";
/**
 * Represents a node.
 */
export declare abstract class Node<T> {
    /**
     * The type of the node.
     */
    abstract readonly Type: NodeKind;
    /**
     * The source of the node.
     */
    private source;
    /**
     * Initializes a new instance of the {@linkcode Node} class.
     *
     * @param source
     * The source of the node.
     */
    constructor(source: T);
    /**
     * Gets the source of the node.
     */
    get Source(): T;
    /**
     * Gets the expression path component of this node.
     */
    get PathPart(): PathPartCandidate<T>;
    /**
     * The full path of the node.
     */
    get Path(): Array<PathPartCandidate<T>>;
    /**
     * Gets the root of the node.
     */
    get Root(): ParsedNode<T>;
}
