import React from 'react';
import type { DispatchAnalyticsEvent } from '@atlaskit/editor-common/analytics';
import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher';
import type { PortalProviderAPI } from '@atlaskit/editor-common/portal-provider';
import type { ContextIdentifierProvider, MediaProvider, ProviderFactory } from '@atlaskit/editor-common/provider-factory';
import { SelectionBasedNodeView } from '@atlaskit/editor-common/selection-based-node-view';
import type { ExtractInjectionAPI } 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 { FileIdentifier } from '@atlaskit/media-client';
import type { MediaNextEditorPluginType } from '../next-plugin-type';
import type { MediaPluginState } from '../pm-plugins/types';
import type { getPosHandler, getPosHandler as ProsemirrorGetPosHandler } from '../types';
import { MediaNodeUpdater } from './mediaNodeUpdater';
export interface MediaInlineProps {
    mediaProvider: Promise<MediaProvider>;
    identifier: FileIdentifier;
    node: PMNode;
    isSelected: boolean;
    view: EditorView;
    getPos: ProsemirrorGetPosHandler;
    dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
    contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
    mediaPluginState: MediaPluginState;
}
export declare const createMediaNodeUpdater: (props: MediaInlineProps) => MediaNodeUpdater;
/**
 * Handles updating the media inline node attributes
 * but also handling copy-paste for cross-editor of the same instance
 * using the contextid
 *
 */
export declare const updateMediaNodeAttributes: (props: MediaInlineProps, mediaNodeUpdater: MediaNodeUpdater) => Promise<void>;
export declare const handleNewNode: (props: MediaInlineProps) => void;
export declare const MediaInline: React.FC<MediaInlineProps>;
export interface MediaInlineNodeViewProps {
    providerFactory: ProviderFactory;
    api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined;
    dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
}
export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInlineNodeViewProps> {
    createDomRef(): HTMLSpanElement;
    getContentDOM(): {
        dom: HTMLSpanElement;
    };
    ignoreMutation(): boolean;
    viewShouldUpdate(nextNode: PMNode): boolean;
    render(props: MediaInlineNodeViewProps): JSX.Element;
}
export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;
