import type { Mark, Node } from 'prosemirror-model';
import type { EditorView, NodeView, NodeViewConstructor, ViewMutationRecord } from 'prosemirror-view';
import type { ExtensionDeps, Serializer } from "../core/index.js";
type ReactNodeViewOptions<T> = {
    isInline?: boolean;
    reactNodeWrapperCn?: string;
    extensionOptions?: T;
};
export declare const ReactNodeStopEventCn = "prosemirror-stop-event";
export type ReactNodeViewProps<T extends object = {}> = {
    dom: HTMLElement;
    view: EditorView;
    updateAttributes: (attrs: object, marks?: Mark[]) => void;
    node: Node;
    getPos: () => number | undefined;
    serializer: Serializer;
    extensionOptions?: T;
};
export declare class ReactNodeView<T extends object = {}> implements NodeView {
    readonly dom: HTMLElement;
    node: Node;
    readonly view: EditorView;
    readonly serializer: Serializer;
    readonly renderItem: import("../index.js").RendererItem;
    readonly getPos: () => number | undefined;
    constructor(Component: React.FC<ReactNodeViewProps<T>>, opts: {
        node: Node;
        view: EditorView;
        getPos: () => number | undefined;
        serializer: Serializer;
        options?: ReactNodeViewOptions<T>;
    });
    update(node: Node): boolean;
    destroy(): void;
    ignoreMutation(_mutation: ViewMutationRecord): boolean;
    updateAttributes(attributes: {}, marks?: Mark[]): void;
    stopEvent(e: Event): boolean;
}
export declare const reactNodeViewFactory: <T extends object = {}>(Component: React.FC<ReactNodeViewProps<T>>, options?: ReactNodeViewOptions<T>) => (deps: ExtensionDeps) => NodeViewConstructor;
export {};
