export interface CycleFreeNode {
    id: string;
    type: string;
    name: string;
    startIndex: number;
    endIndex: number;
    value: string;
    children: CycleFreeNode[];
}
export declare class Node {
    private _id;
    private _type;
    private _name;
    private _firstIndex;
    private _lastIndex;
    private _parent;
    private _children;
    private _value;
    get id(): string;
    get type(): string;
    get name(): string;
    get value(): string;
    get firstIndex(): number;
    get lastIndex(): number;
    get startIndex(): number;
    get endIndex(): number;
    get parent(): Node | null;
    get children(): readonly Node[];
    get hasChildren(): boolean;
    get isLeaf(): boolean;
    constructor(type: string, name: string, firstIndex: number, lastIndex: number, children?: Node[], value?: string);
    removeChild(node: Node): void;
    findChildIndex(node: Node): number;
    spliceChildren(index: number, deleteCount: number, ...items: Node[]): Node[];
    removeAllChildren(): void;
    replaceChild(newNode: Node, referenceNode: Node): void;
    replaceWith(newNode: Node): void;
    insertBefore(newNode: Node, referenceNode: Node | null): void;
    appendChild(newNode: Node): void;
    append(...nodes: Node[]): void;
    nextSibling(): Node | null;
    previousSibling(): Node | null;
    find(predicate: (node: Node) => boolean): Node | null;
    findAll(predicate: (node: Node) => boolean): Node[];
    findRoot(): Node;
    findAncestor(predicate: (node: Node) => boolean): Node | null;
    walkUp(callback: (node: Node) => void): void;
    walkDown(callback: (node: Node) => void): void;
    walkBreadthFirst(callback: (node: Node) => void): void;
    transform(visitors: Record<string, (node: Node) => Node>): Node;
    flatten(): Node[];
    compact(): void;
    remove(): void;
    clone(): Node;
    normalize(startIndex?: number): number;
    toString(): string;
    toCycleFreeObject(): CycleFreeNode;
    toJson(space?: number): string;
    isEqual(node: Node): boolean;
    static createValueNode(type: string, name: string, value?: string): Node;
    static createNode(type: string, name: string, children?: Node[]): Node;
}
