import type { DispatchAnalyticsEvent } from '@atlaskit/editor-common/analytics';
import type { ContextIdentifierProvider, MediaProvider } from '@atlaskit/editor-common/provider-factory';
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
import type { EditorView } from '@atlaskit/editor-prosemirror/view';
import { type MediaTraceContext } from '@atlaskit/media-common';
import type { MediaOptions, MediaPluginState, getPosHandler as ProsemirrorGetPosHandler, SupportedMediaAttributes } from '../types';
type RemoteDimensions = {
    height: number;
    id: string;
    width: number;
};
export interface MediaNodeUpdaterProps {
    contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
    dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
    isMediaSingle: boolean;
    mediaOptions?: MediaOptions;
    mediaProvider?: Promise<MediaProvider>;
    node: PMNode;
    view: EditorView;
}
export declare class MediaNodeUpdater {
    props: MediaNodeUpdaterProps;
    mediaPluginState: MediaPluginState | undefined;
    constructor(props: MediaNodeUpdaterProps);
    setProps(newComponentProps: Partial<MediaNodeUpdaterProps>): void;
    isMediaBlobUrl(): boolean;
    updateContextId: () => Promise<void>;
    updateNodeContextId: (getPos: ProsemirrorGetPosHandler) => Promise<void>;
    private hasFileAttributesDefined;
    private getNewFileAttrsForNode;
    updateMediaSingleFileAttrs: () => Promise<void>;
    updateNodeAttrs: (getPos: ProsemirrorGetPosHandler) => Promise<void>;
    getAttrs: () => SupportedMediaAttributes | undefined;
    getObjectId: () => Promise<string | null>;
    uploadExternalMedia: (getPos: ProsemirrorGetPosHandler) => Promise<void>;
    getNodeContextId: () => string | null;
    updateDimensions: (dimensions: RemoteDimensions) => void;
    getRemoteDimensions(): Promise<false | RemoteDimensions>;
    shouldNodeBeDeepCopied: () => Promise<boolean>;
    hasDifferentContextId: () => Promise<boolean>;
    isNodeFromDifferentCollection: () => Promise<boolean>;
    handleExternalMedia(getPos: ProsemirrorGetPosHandler): Promise<void>;
    private handleCopyFileSwitcher;
    copyNodeFromBlobUrl: (getPos: ProsemirrorGetPosHandler) => Promise<void>;
    copyNodeFromPos: (getPos: ProsemirrorGetPosHandler, traceContext?: MediaTraceContext) => Promise<void>;
    copyNode: (traceContext?: MediaTraceContext) => Promise<void>;
    private copyFile;
}
export declare const createMediaNodeUpdater: (props: MediaNodeUpdaterProps) => MediaNodeUpdater;
export {};
