import { DOMConversionMap, EditorConfig, ElementNode, LexicalNode, LexicalUpdateJSON, NodeKey, RangeSelection, SerializedElementNode, Spread } from "lexical";
export type SemanticTagAttributes = Record<string, string>;
export type SerializedSemanticTagNode = Spread<{
    tag: string;
    attributes: SemanticTagAttributes;
    text: null | string;
}, SerializedElementNode>;
export declare class SemanticTagNode extends ElementNode {
    __tag: string;
    __attributes: SemanticTagAttributes;
    __text: null | string;
    static getType(): string;
    static clone(node: SemanticTagNode): SemanticTagNode;
    constructor(tag?: string, attributes?: SemanticTagAttributes, text?: null | string, key?: NodeKey);
    static importDOM(): DOMConversionMap | null;
    static importJSON(serializedNode: SerializedSemanticTagNode): SemanticTagNode;
    updateFromJSON(serializedNode: LexicalUpdateJSON<SerializedSemanticTagNode>): this;
    exportJSON(): SerializedSemanticTagNode;
    createDOM(config: EditorConfig): HTMLElement;
    updateDOM(prevNode: this, dom: HTMLElement): boolean;
    exportDOM(): {
        element: HTMLElement;
    };
    applyEditorAttributes(dom: HTMLElement): void;
    insertNewAfter(_selection: RangeSelection, restoreSelection?: boolean): null | ElementNode;
    canInsertTextBefore(): boolean;
    canInsertTextAfter(): boolean;
    canBeEmpty(): boolean;
    isInline(): boolean;
    getTag(): string;
    setTag(tag: string): this;
    getAttributes(): SemanticTagAttributes;
    setAttributes(attributes: SemanticTagAttributes): this;
    getText(): null | string;
    setText(text: null | string): this;
}
export declare const $createSemanticTagNode: (tag: string, attributes?: SemanticTagAttributes, text?: null | string) => SemanticTagNode;
export declare const $isSemanticTagNode: (node: LexicalNode | null | undefined) => node is SemanticTagNode;
//# sourceMappingURL=SemanticTagNode.d.ts.map