import type { MediaADFAttrs } from '@atlaskit/adf-schema';
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, getPosHandler as ProsemirrorGetPosHandler } from '../types';
export type RemoteDimensions = {
    id: string;
    height: number;
    width: number;
};
export interface MediaNodeUpdaterProps {
    view: EditorView;
    node: PMNode;
    mediaProvider?: Promise<MediaProvider>;
    contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
    isMediaSingle: boolean;
    mediaOptions?: MediaOptions;
    dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
}
export declare class MediaNodeUpdater {
    props: MediaNodeUpdaterProps;
    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: () => MediaADFAttrs | undefined;
    getObjectId: () => Promise<string | null>;
    uploadExternalMedia: (getPos: ProsemirrorGetPosHandler) => Promise<void>;
    getNodeContextId: () => string | null;
    updateDimensions: (dimensions: RemoteDimensions) => void;
    getRemoteDimensions(): Promise<false | RemoteDimensions>;
    hasDifferentContextId: () => Promise<boolean>;
    isNodeFromDifferentCollection: () => Promise<boolean>;
    handleExternalMedia(getPos: ProsemirrorGetPosHandler): Promise<void>;
    copyNodeFromBlobUrl: (getPos: ProsemirrorGetPosHandler) => Promise<void>;
    copyNodeFromPos: (getPos: ProsemirrorGetPosHandler, traceContext?: MediaTraceContext) => Promise<void>;
    copyNode: (traceContext?: MediaTraceContext) => Promise<void>;
    private copyFile;
}
