import { DragMouseEvent } from "../../../base/browser/mouseEvent.js";
import { VSBuffer } from "../../../base/common/buffer.js";
import { URI, UriComponents } from "../../../base/common/uri.js";
import { IBaseTextResourceEditorInput, ITextEditorSelection } from "../../editor/common/editor.js";
import { ServicesAccessor } from "../../instantiation/common/instantiation.js";
import { IMarker } from "../../markers/common/markers.js";
export declare const CodeDataTransfers: {
    EDITORS: string;
    FILES: string;
    SYMBOLS: string;
    MARKERS: string;
    NOTEBOOK_CELL_OUTPUT: string;
};
export interface IDraggedResourceEditorInput extends IBaseTextResourceEditorInput {
    resource: URI | undefined;
    isExternal?: boolean;
    allowWorkspaceOpen?: boolean;
}
export declare function extractEditorsDropData(e: DragEvent): Array<IDraggedResourceEditorInput>;
export declare function extractEditorsAndFilesDropData(accessor: ServicesAccessor, e: DragEvent): Promise<Array<IDraggedResourceEditorInput>>;
export declare function createDraggedEditorInputFromRawResourcesData(rawResourcesData: string | undefined): IDraggedResourceEditorInput[];
interface IFileTransferData {
    resource: URI;
    isDirectory?: boolean;
    contents?: VSBuffer;
}
export declare function extractFileListData(accessor: ServicesAccessor, files: FileList): Promise<IFileTransferData[]>;
export declare function containsDragType(event: DragEvent, ...dragTypesToFind: string[]): boolean;
export interface IResourceStat {
    readonly resource: URI;
    readonly isDirectory?: boolean;
    readonly selection?: ITextEditorSelection;
}
export interface IDragAndDropContributionRegistry {
    register(contribution: IDragAndDropContribution): void;
    getAll(): IterableIterator<IDragAndDropContribution>;
}
interface IDragAndDropContribution {
    readonly dataFormatKey: string;
    getEditorInputs(data: string): IDraggedResourceEditorInput[];
    setData(resources: IResourceStat[], event: DragMouseEvent | DragEvent): void;
}
export declare const Extensions: {
    DragAndDropContribution: string;
};
export declare class LocalSelectionTransfer<T> {
    private static readonly INSTANCE;
    private data?;
    private proto?;
    private constructor();
    static getInstance<T>(): LocalSelectionTransfer<T>;
    hasData(proto: T): boolean;
    clearData(proto: T): void;
    getData(proto: T): T[] | undefined;
    setData(data: T[], proto: T): void;
}
export interface DocumentSymbolTransferData {
    name: string;
    fsPath: string;
    range: {
        startLineNumber: number;
        startColumn: number;
        endLineNumber: number;
        endColumn: number;
    };
    kind: number;
}
export interface NotebookCellOutputTransferData {
    outputId: string;
}
export declare function extractSymbolDropData(e: DragEvent): DocumentSymbolTransferData[];
export declare function fillInSymbolsDragData(symbolsData: readonly DocumentSymbolTransferData[], e: DragEvent): void;
export type MarkerTransferData = IMarker | {
    uri: UriComponents;
};
export declare function extractMarkerDropData(e: DragEvent): MarkerTransferData[] | undefined;
export declare function fillInMarkersDragData(markerData: MarkerTransferData[], e: DragEvent): void;
export declare function extractNotebookCellOutputDropData(e: DragEvent): NotebookCellOutputTransferData | undefined;
export declare function getPathForFile(file: File): string | undefined;
export {};
