import { EditorState, Plugin, PluginKey } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
import { EventEmitter } from "../../util/EventEmitter";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
import { BlockSchema, InlineContentSchema, SpecificBlock, StyleSchema } from "../../schema";
import { BaseUiElementCallbacks, BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes";
export type ImageToolbarCallbacks = BaseUiElementCallbacks;
export type ImageToolbarState<B extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema = StyleSchema> = BaseUiElementState & {
    block: SpecificBlock<B, "image", I, S>;
};
export declare class ImageToolbarView<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema> {
    private readonly pluginKey;
    private readonly pmView;
    private imageToolbarState?;
    updateImageToolbar: () => void;
    prevWasEditable: boolean | null;
    constructor(pluginKey: PluginKey, pmView: EditorView, updateImageToolbar: (imageToolbarState: ImageToolbarState<BSchema, I, S>) => void);
    mouseDownHandler: () => void;
    dragstartHandler: () => void;
    blurHandler: (event: FocusEvent) => void;
    scrollHandler: () => void;
    update(view: EditorView, prevState: EditorState): void;
    destroy(): void;
}
export declare const imageToolbarPluginKey: PluginKey<any>;
export declare class ImageToolbarProsemirrorPlugin<BSchema extends BlockSchema, I extends InlineContentSchema, S extends StyleSchema> extends EventEmitter<any> {
    private view;
    readonly plugin: Plugin;
    constructor(_editor: BlockNoteEditor<BSchema, I, S>);
    onUpdate(callback: (state: ImageToolbarState<BSchema, I, S>) => void): () => void;
}
