import { TemplateResult } from 'lit-html';
import RichTextManager from '../helpers/RichTextManager';
import { ArenaInlineInterface, ArenaTextInterface } from '../interfaces/Arena';
import ArenaAttributes from '../interfaces/ArenaAttributes';
import ArenaCursorText from '../interfaces/ArenaCursorText';
import ArenaFormating, { ArenaFormatings } from '../interfaces/ArenaFormating';
import { ArenaNodeInline, ArenaNodeText } from '../interfaces/ArenaNode';
import AbstractNode from './AbstractNode';
export default class TextNode extends AbstractNode<ArenaTextInterface> implements ArenaNodeText {
    readonly hasParent: true;
    readonly hasChildren: false;
    readonly hasText: true;
    readonly inline: false;
    readonly single: false;
    private richTextManager;
    constructor(arena: ArenaTextInterface, id: string, attributes?: ArenaAttributes, text?: string | RichTextManager);
    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;
    insertText(text: string | RichTextManager, offset: number, keepFormatings?: boolean): ArenaCursorText;
    insertFormating(name: string, start: number, end: number): void;
    togglePromiseFormating(formating: ArenaFormating, offset: number): void;
    ltrim(): void;
    rtrim(): void;
    clearSpaces(): void;
    toggleFormating(name: string, start: number, end: number): void;
    clearFormatings(start: number, end: number): void;
    getText(): RichTextManager;
    getRawText(): string;
    setRawText(text: string): void;
    cutText(start: number, end?: number): RichTextManager;
    removeText(start: number, end?: number): void;
    clearText(): void;
    getTextLength(): number;
    isEmpty(): boolean;
    addInlineNode(arena: ArenaInlineInterface, start: number, end: number): ArenaNodeInline | undefined;
    getInlineNode(arena: ArenaInlineInterface, start: number, end: number): ArenaNodeInline | undefined;
    removeInlineNode(node: ArenaNodeInline): void;
    updateInlineNode(node: ArenaNodeInline, start: number, end: number): void;
    clone(): TextNode;
}
//# sourceMappingURL=TextNode.d.ts.map