import type { IntlShape } from 'react-intl';
import type { PortalProviderAPI } from '@atlaskit/editor-common/portal';
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
import type { EditorState, ReadonlyTransaction, Transaction } from '@atlaskit/editor-prosemirror/state';
import { PluginKey } from '@atlaskit/editor-prosemirror/state';
import { DecorationSet } from '@atlaskit/editor-prosemirror/view';
import type { ActiveDropTargetNode, BlockControlsMeta, BlockControlsPlugin, MultiSelectDnD, NodeDecorationFactory, PluginState } from '../blockControlsPluginType';
import { AnchorRectCache } from './utils/anchor-utils';
export declare const key: PluginKey<PluginState>;
export interface FlagType {
    isMultiSelectEnabled: boolean;
    toolbarFlagsEnabled: boolean;
}
export declare const getDecorations: (state: EditorState) => DecorationSet | undefined;
export declare const apply: (api: ExtractInjectionAPI<BlockControlsPlugin> | undefined, formatMessage: IntlShape["formatMessage"], tr: ReadonlyTransaction, currentState: PluginState, newState: EditorState, flags: FlagType, nodeViewPortalProviderAPI: PortalProviderAPI, nodeDecorationRegistry: NodeDecorationFactory[], rightSideControlsEnabled?: boolean, quickInsertButtonEnabled?: boolean, anchorRectCache?: AnchorRectCache, resizeObserverWidth?: ResizeObserver, pragmaticCleanup?: (() => void) | null) => PluginState | {
    activeDropTargetNode: ActiveDropTargetNode | undefined;
    activeNode: any;
    blockMenuOptions: {
        canMoveDown: any;
        canMoveUp: any;
        openedViaKeyboard: any;
    } | undefined;
    decorations: DecorationSet;
    editorHeight: any;
    editorWidthLeft: any;
    editorWidthRight: any;
    isDocSizeLimitEnabled: boolean | null;
    isDragging: any;
    isMenuOpen: boolean | undefined;
    isPMDragging: any;
    isResizerResizing: boolean;
    isSelectedViaDragHandle: any;
    isShiftDown: any;
    lastDragCancelled: any;
    menuTriggerBy: any;
    menuTriggerByNode: any;
    multiSelectDnD: MultiSelectDnD | undefined;
};
export declare const createPlugin: (api: ExtractInjectionAPI<BlockControlsPlugin> | undefined, getIntl: () => IntlShape, nodeViewPortalProviderAPI: PortalProviderAPI, nodeDecorationRegistry: NodeDecorationFactory[], rightSideControlsEnabled?: boolean, quickInsertButtonEnabled?: boolean) => SafePlugin<PluginState | {
    activeDropTargetNode: ActiveDropTargetNode | undefined;
    activeNode: any;
    blockMenuOptions: {
        canMoveDown: any;
        canMoveUp: any;
        openedViaKeyboard: any;
    } | undefined;
    decorations: DecorationSet;
    editorHeight: any;
    editorWidthLeft: any;
    editorWidthRight: any;
    isDocSizeLimitEnabled: boolean | null;
    isDragging: any;
    isMenuOpen: boolean | undefined;
    isPMDragging: any;
    isResizerResizing: boolean;
    isSelectedViaDragHandle: any;
    isShiftDown: any;
    lastDragCancelled: any;
    menuTriggerBy: any;
    menuTriggerByNode: any;
    multiSelectDnD: MultiSelectDnD | undefined;
}>;
export declare const getBlockControlsMeta: (tr: Transaction | ReadonlyTransaction) => BlockControlsMeta | undefined;
