import * as _tiptap_core from '@tiptap/core';
import { Editor as Editor$1, NodeViewRendererOptions, NodeViewRenderer, DecorationWithType } from '@tiptap/core';
export * from '@tiptap/core';
import { Component, VueConstructor } from 'vue';
import * as vue_ts_types_dist_types_js from 'vue-ts-types/dist/types.js';
import { Node } from '@tiptap/pm/model';
import { Decoration, DecorationSource } from '@tiptap/pm/view';

declare class Editor extends Editor$1 {
    contentComponent: Vue | null;
}

interface EditorContentInterface extends Vue {
    editor: Editor;
}
declare const EditorContent: Component;

interface NodeViewContentInterface extends Vue {
    as: string;
}
declare const NodeViewContent: Component;

interface NodeViewWrapperInterface extends Vue {
    as: string;
    decorationClasses: {
        value: string;
    };
    onDragStart: () => void;
}
declare const NodeViewWrapper: Component;

declare const nodeViewProps: {
    editor: vue_ts_types_dist_types_js.RequiredPropOptions<_tiptap_core.Editor>;
    node: vue_ts_types_dist_types_js.RequiredPropOptions<Node>;
    decorations: vue_ts_types_dist_types_js.RequiredPropOptions<readonly DecorationWithType[]>;
    selected: vue_ts_types_dist_types_js.RequiredPropOptions<boolean>;
    extension: vue_ts_types_dist_types_js.RequiredPropOptions<_tiptap_core.Node<any, any>>;
    getPos: vue_ts_types_dist_types_js.PropOptions<() => number | undefined> & {
        required: true;
    } & {
        default?: (() => () => number | undefined) | undefined;
    };
    updateAttributes: vue_ts_types_dist_types_js.PropOptions<(attributes: Record<string, any>) => void> & {
        required: true;
    } & {
        default?: (() => (attributes: Record<string, any>) => void) | undefined;
    };
    deleteNode: vue_ts_types_dist_types_js.PropOptions<() => void> & {
        required: true;
    } & {
        default?: (() => () => void) | undefined;
    };
};
interface VueNodeViewRendererOptions extends NodeViewRendererOptions {
    update: ((props: {
        oldNode: Node;
        oldDecorations: readonly Decoration[];
        oldInnerDecorations: DecorationSource;
        newNode: Node;
        newDecorations: readonly Decoration[];
        innerDecorations: DecorationSource;
        updateProps: () => void;
    }) => boolean) | null;
}
declare function VueNodeViewRenderer(component: Vue | VueConstructor, options?: Partial<VueNodeViewRendererOptions>): NodeViewRenderer;

/**
 * The VueRenderer class is responsible for rendering a Vue component as a ProseMirror node view.
 */
declare class VueRenderer {
    ref: Vue;
    constructor(component: Vue | VueConstructor, props: any);
    get element(): Element;
    updateProps(props?: Record<string, any>): void;
    destroy(): void;
}

export { Editor, EditorContent, type EditorContentInterface, NodeViewContent, type NodeViewContentInterface, NodeViewWrapper, type NodeViewWrapperInterface, VueNodeViewRenderer, type VueNodeViewRendererOptions, VueRenderer, nodeViewProps };
