import { TemplateResult } from 'lit-html';
import { ChildArena, ParentArena } from '../interfaces/Arena';
import ArenaCursorText from '../interfaces/ArenaCursorText';
import ArenaCursorAncestor from '../interfaces/ArenaCursorAncestor';
import { ArenaFormatings } from '../interfaces/ArenaFormating';
import { ChildArenaNode } from '../interfaces/ArenaNode';
import AbstractNode from './AbstractNode';
import ArenaAttributes from '../interfaces/ArenaAttributes';
export default abstract class AbstractParentNode<TArena extends ParentArena> extends AbstractNode<TArena> {
    readonly hasParent: boolean;
    readonly hasChildren: true;
    readonly hasText: false;
    readonly inline: false;
    readonly single: false;
    get automerge(): boolean;
    get group(): boolean;
    get protected(): boolean;
    children: ChildArenaNode[];
    constructor(arena: TArena, id: string, children?: ChildArenaNode[], attributes?: ArenaAttributes);
    getTemplate(frms: ArenaFormatings): TemplateResult | string;
    getPublicHtml(frms: ArenaFormatings): string;
    getOutputHtml(frms: ArenaFormatings, start?: number, end?: number): string;
    getPlainText(start?: number, end?: number): string;
    getTextCursor(index?: number): ArenaCursorText | undefined;
    insertText(): ArenaCursorText;
    isAllowedNode(arena: ChildArena): boolean;
    insertNode(node: ChildArenaNode, offset?: number): ChildArenaNode | undefined;
    getChild(index: number): ChildArenaNode | undefined;
    removeChild(index: number): ArenaCursorAncestor;
    getChildren(): ChildArenaNode[];
    insertChildren(nodes: ChildArenaNode[], offset?: number): ChildArenaNode[];
    mergeChildren(index: number): ArenaCursorAncestor;
    cutChildren(start: number, length?: number): ChildArenaNode[];
    removeChildren(start: number, length?: number): void;
    resetCache(): void;
    protected cache: TemplateResult | string | undefined;
}
//# sourceMappingURL=AbstractParentNode.d.ts.map