/**
 * Side menu plugin
 *
 * Plugin docs: https://prosemirror.net/docs/ref/#state.Plugin_System
 * Plugin state example: https://github.com/remirror/remirror/blob/main/packages/remirror__extension-code-block/src/code-block-plugin.ts
 */
import type { Editor } from '@tiptap/core';
import { Plugin, PluginKey } from '@tiptap/pm/state';
import type { EditorState } from '@tiptap/pm/state';
import type { EditorView } from '@tiptap/pm/view';
import type { Instance, Props } from 'tippy.js';
export declare const SideMenuPluginKey: PluginKey<any>;
export declare class SideMenuState {
    hovered: boolean;
    coords: {
        left: number;
        top: number;
    };
    className: string;
    constructor();
    init(state: EditorState): this;
    apply({ tr, oldState, newState }: {
        tr: any;
        oldState: any;
        newState: any;
    }): this;
    setHover(hover: boolean, coords: {
        left: number;
        top: number;
    }, className?: string): void;
}
export interface SideMenuPluginProps {
    pluginKey: PluginKey | string;
    editor: Editor;
    element: HTMLElement;
    tippyOptions?: Partial<Props>;
    updateDelay?: number;
}
export type SideMenuViewProps = SideMenuPluginProps & {
    view: EditorView;
};
export declare class SideMenuView {
    editor: Editor;
    element: HTMLElement;
    view: EditorView;
    preventHide: boolean;
    tippy: Instance | undefined;
    tippyOptions?: Partial<Props>;
    updateDelay: number;
    private updateDebounceTimer;
    constructor({ editor, element, view, tippyOptions, updateDelay, }: SideMenuViewProps);
    mousedownHandler: () => void;
    onDragStart: (e: MouseEvent) => void;
    blurHandler: ({ event }: {
        event: FocusEvent;
    }) => void;
    tippyBlurHandler: (event: FocusEvent) => void;
    createTooltip(): void;
    update(view: EditorView, oldState?: EditorState): void;
    handleDebouncedUpdate: (view: EditorView, oldState?: EditorState) => void;
    updateHandler: (view: EditorView, selectionChanged: boolean, docChanged: boolean, oldState?: EditorState) => void;
    show(): void;
    hide(): void;
    destroy(): void;
}
export declare class SideMenuPlugin {
    options: SideMenuPluginProps;
    readonly plugin: Plugin;
    sideMenuView: SideMenuView | undefined;
    constructor(options: SideMenuPluginProps);
    dragstart(e: DragEvent): void;
    dragend(e: DragEvent): void;
}
