import { TreeArena } from '../interfaces/Arena';
import NodeAttributes from '../interfaces/NodeAttributes';
import ArenaCursorAncestor from '../interfaces/ArenaCursorAncestor';
import { ParentArenaNode } from '../interfaces/ArenaNode';
import ArenaAttribute from '../interfaces/ArenaAttribute';
export default abstract class AbstractNode<TArena extends TreeArena> {
    readonly arena: TArena;
    readonly id: string;
    readonly hasParent: boolean;
    readonly hasChildren: boolean;
    readonly hasText: boolean;
    readonly inline: boolean;
    readonly single: boolean;
    protected _parent: ParentArenaNode | undefined;
    get parent(): ParentArenaNode;
    constructor(arena: TArena, id: string, attributes?: NodeAttributes);
    getId(): string;
    getIndex(): number;
    isFirstChild(): boolean;
    isLastChild(): boolean;
    getGlobalIndex(): string;
    getOpenTag(): string;
    getCloseTag(): string;
    getParent(): ArenaCursorAncestor;
    setParent(parent: ParentArenaNode): void;
    getUnprotectedParent(): ArenaCursorAncestor | undefined;
    remove(): ArenaCursorAncestor;
    setAttribute(name: string, value: ArenaAttribute): void;
    setAttributes(attrs: NodeAttributes): void;
    getAttribute(name: string): ArenaAttribute;
    protected attributes: NodeAttributes;
}
//# sourceMappingURL=AbstractNode.d.ts.map