import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
import type { Selection } from '@atlaskit/editor-prosemirror/state';
import type { Mapping } from '@atlaskit/editor-prosemirror/transform';
import type { EditorView } from '@atlaskit/editor-prosemirror/view';
import type { MediaOptions } from '../types';
/** Keeps a media insertion point collapsed so a drop never replaces the current selection. */
export declare const mediaDropSelection: (doc: PMNode, pos: number) => Selection;
export declare const findMediaDropPosition: (view: EditorView, coords: {
    left: number;
    top: number;
}, fileTypes: string[], mediaOptions?: MediaOptions) => number | undefined;
export type MediaDropReplacement = {
    media: PMNode;
    pos: number;
};
/** Only a single image over a media card can replace it; captions and surrounding space insert. */
export declare const findMediaDropReplacement: (view: EditorView, event: DragEvent, fileTypes: string[]) => MediaDropReplacement | undefined;
/** Retains drop locations while uploads prepare and other edits change document positions. */
export declare class MediaDropTargets {
    hover?: number;
    hoverReplacement?: MediaDropReplacement;
    private batches;
    private files;
    start(traceId: string, pos: number, replacement?: MediaDropReplacement): () => void;
    register(traceId: string, fileIds: string[]): void;
    positionFor(fileId: string): number | undefined;
    replacementFor(fileId: string, doc: PMNode): MediaDropReplacement | undefined;
    hoverReplacementFor(doc: PMNode): MediaDropReplacement | undefined;
    clearHover(): void;
    inserted(fileId: string): void;
    map(mapping: Mapping): void;
    clear(): void;
    private prune;
}
