import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js';
import type { DOMConversionMap, DOMExportOutput, EditorConfig, ElementFormatType, LexicalEditor, LexicalNode, NodeKey, Spread } from 'lexical';
import type { JsonObject } from 'payload';
import type { JSX } from 'react';
import { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js';
type BaseBlockFields<TBlockFields extends JsonObject = JsonObject> = {
    /** Block form data */
    blockName: string;
    blockType: string;
} & TBlockFields;
export type BlockFields<TBlockFields extends JsonObject = JsonObject> = {
    id: string;
} & BaseBlockFields<TBlockFields>;
export type BlockFieldsOptionalID<TBlockFields extends JsonObject = JsonObject> = {
    id?: string;
} & BaseBlockFields<TBlockFields>;
export type SerializedBlockNode<TBlockFields extends JsonObject = JsonObject> = Spread<{
    children?: never;
    fields: BlockFields<TBlockFields>;
    type: 'block';
}, SerializedDecoratorBlockNode>;
export declare class ServerBlockNode extends DecoratorBlockNode {
    __fields: BlockFields;
    constructor({ fields, format, key, }: {
        fields: BlockFields;
        format?: ElementFormatType;
        key?: NodeKey;
    });
    static clone(node: ServerBlockNode): ServerBlockNode;
    static getType(): string;
    static importDOM(): DOMConversionMap<HTMLDivElement> | null;
    static importJSON(serializedNode: SerializedBlockNode): ServerBlockNode;
    static isInline(): false;
    decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element | null;
    exportDOM(): DOMExportOutput;
    exportJSON(): SerializedBlockNode;
    getFields(): BlockFields;
    getTextContent(): string;
    setFields(fields: BlockFields): void;
}
export declare function $createServerBlockNode(fields: BlockFieldsOptionalID): ServerBlockNode;
export declare function $isServerBlockNode(node: LexicalNode | null | ServerBlockNode | undefined): node is ServerBlockNode;
export {};
//# sourceMappingURL=BlocksNode.d.ts.map