import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher';
import type { PortalProviderAPI } from '@atlaskit/editor-common/portal';
import ReactNodeView, { type ReactComponentProps, type getPosHandler } from '@atlaskit/editor-common/react-node-view';
import type { ExtractInjectionAPI, getPosHandlerNode, PMPluginFactoryParams } from '@atlaskit/editor-common/types';
import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
import type { EditorView, NodeView } from '@atlaskit/editor-prosemirror/view';
import type { SyncBlockStoreManager } from '@atlaskit/editor-synced-block-provider';
import type { SyncedBlockPlugin, SyncedBlockPluginOptions } from '../syncedBlockPluginType';
export interface BodiedSyncBlockNodeViewProps extends ReactComponentProps {
    api?: ExtractInjectionAPI<SyncedBlockPlugin>;
    eventDispatcher: EventDispatcher;
    getPos: getPosHandler;
    node: PMNode;
    pluginOptions: SyncedBlockPluginOptions | undefined;
    portalProviderAPI: PortalProviderAPI;
    syncBlockStore?: SyncBlockStoreManager;
    view: EditorView;
}
export interface BodiedSyncBlockNodeViewProperties {
    api?: ExtractInjectionAPI<SyncedBlockPlugin>;
    pluginOptions: SyncedBlockPluginOptions | undefined;
    pmPluginFactoryParams: PMPluginFactoryParams;
    syncBlockStore?: SyncBlockStoreManager;
}
export declare const bodiedSyncBlockNodeViewOld: (props: BodiedSyncBlockNodeViewProperties) => (node: PMNode, view: EditorView, getPos: getPosHandler) => ReactNodeView<BodiedSyncBlockNodeViewProps>;
export declare class BodiedSyncBlock implements NodeView {
    dom: HTMLElement;
    contentDOM: HTMLElement;
    node: PMNode;
    view: EditorView;
    getPos: getPosHandlerNode;
    nodeViewPortalProviderAPI: PortalProviderAPI;
    private api?;
    private syncBlockStore?;
    private cleanupConnectivityModeListener?;
    private cleanupViewModeListener?;
    private labelKey;
    constructor(node: PMNode, view: EditorView, getPos: getPosHandlerNode, api: ExtractInjectionAPI<SyncedBlockPlugin> | undefined, nodeViewPortalProviderAPI: PortalProviderAPI, syncBlockStore?: SyncBlockStoreManager);
    private updateContentEditable;
    private handleConnectivityModeChange;
    private handleViewModeChange;
    private get syncedBlockStore();
    update(node: PMNode): boolean;
    ignoreMutation(mutation: MutationRecord | {
        target: Node;
        type: 'selection';
    }): boolean;
    destroy(): void;
}
export declare const bodiedSyncBlockNodeView: (props: BodiedSyncBlockNodeViewProperties) => ((node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView);
