/**
 * This Source Code is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Copyright (c) Infonomic Company Limited
 */
import type { DOMConversionMap, DOMExportOutput, EditorConfig, ElementDOMSlot, LexicalEditor, LexicalNode, LexicalUpdateJSON, NodeKey } from 'lexical';
import { ElementNode } from 'lexical';
import type { AdmonitionAttributes, AdmonitionType, SerializedAdmonitionNode } from './node-types';
import './admonition-node.css';
/**
 * The admonition (callout) block. An `ElementNode` whose body is real
 * children in the main editor tree — see the module note in
 * `../../markdown/transformers.ts` for why this beats a nested editor for
 * markdown round-tripping. `__admonitionType` / `__title` are attributes set
 * from the Insert/Edit modal and rendered as non-editable chrome; the body
 * (paragraphs + inline content) renders into the slot returned by
 * `getDOMSlot`.
 */
export declare class AdmonitionNode extends ElementNode {
    __admonitionType: AdmonitionType;
    __title: string;
    static getType(): string;
    static clone(node: AdmonitionNode): AdmonitionNode;
    static importJSON(serializedNode: SerializedAdmonitionNode): AdmonitionNode;
    static importDOM(): DOMConversionMap | null;
    constructor(admonitionType: AdmonitionType, title: string, key?: NodeKey);
    updateFromJSON(serializedNode: LexicalUpdateJSON<SerializedAdmonitionNode>): this;
    exportJSON(): SerializedAdmonitionNode;
    exportDOM(): DOMExportOutput;
    isShadowRoot(): boolean;
    isInline(): false;
    canBeEmpty(): boolean;
    canIndent(): false;
    createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement;
    getDOMSlot(element: HTMLElement): ElementDOMSlot<HTMLElement>;
    updateDOM(prevNode: AdmonitionNode, dom: HTMLElement): boolean;
    getTitle(): string;
    setTitle(title: string): this;
    getAdmonitionType(): AdmonitionType;
    setAdmonitionType(admonitionType: AdmonitionType): this;
    update(payload: Partial<Pick<AdmonitionAttributes, 'admonitionType' | 'title'>>): void;
}
export declare function $createAdmonitionNode({ admonitionType, title, key, }: AdmonitionAttributes): AdmonitionNode;
export declare function $isAdmonitionNode(node: LexicalNode | null | undefined): node is AdmonitionNode;
