import { EditorState, Plugin, PluginKey } from "prosemirror-state";
import { EditorView } from "prosemirror-view";
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
import { BaseUiElementCallbacks, BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes";
import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
import { EventEmitter } from "../../util/EventEmitter";
export type FormattingToolbarCallbacks = BaseUiElementCallbacks;
export type FormattingToolbarState = BaseUiElementState;
export declare class FormattingToolbarView {
    private readonly editor;
    private readonly pmView;
    private formattingToolbarState?;
    updateFormattingToolbar: () => void;
    preventHide: boolean;
    preventShow: boolean;
    prevWasEditable: boolean | null;
    shouldShow: (props: {
        view: EditorView;
        state: EditorState;
        from: number;
        to: number;
    }) => boolean;
    constructor(editor: BlockNoteEditor<BlockSchema, InlineContentSchema, StyleSchema>, pmView: EditorView, updateFormattingToolbar: (formattingToolbarState: FormattingToolbarState) => void);
    viewMousedownHandler: () => void;
    viewMouseupHandler: () => void;
    dragHandler: () => void;
    focusHandler: () => void;
    blurHandler: (event: FocusEvent) => void;
    scrollHandler: () => void;
    update(view: EditorView, oldState?: EditorState): void;
    destroy(): void;
    getSelectionBoundingBox(): DOMRect;
}
export declare const formattingToolbarPluginKey: PluginKey<any>;
export declare class FormattingToolbarProsemirrorPlugin extends EventEmitter<any> {
    private view;
    readonly plugin: Plugin;
    constructor(editor: BlockNoteEditor<any, any, any>);
    onUpdate(callback: (state: FormattingToolbarState) => void): () => void;
}
