import { PanelOptions } from '../dockview/options';
declare class TransferObject {
    constructor();
}
export declare class PanelTransfer extends TransferObject {
    readonly viewId: string;
    readonly groupId: string;
    readonly panelId: string;
    constructor(viewId: string, groupId: string, panelId: string);
}
export declare class PaneTransfer extends TransferObject {
    readonly viewId: string;
    readonly paneId: string;
    constructor(viewId: string, paneId: string);
}
export declare const DATA_KEY = "splitview/transfer";
export declare const isPanelTransferEvent: (event: DragEvent) => boolean;
export declare enum DragType {
    DOCKVIEW_TAB = "dockview_tab",
    EXTERNAL = "external_group_drag"
}
export interface DragItem {
    itemId: string;
    groupId: string;
}
export interface ExternalDragItem extends PanelOptions {
}
export declare type DataObject = DragItem | ExternalDragItem;
/**
 * Determine whether this data belong to that of an event that was started by
 * dragging a tab component
 */
export declare const isTabDragEvent: (data: any) => data is DragItem;
/**
 * Determine whether this data belong to that of an event that was started by
 * a custom drag-enable component
 */
export declare const isCustomDragEvent: (data: any) => data is ExternalDragItem;
export declare const extractData: (event: DragEvent) => DataObject | null;
/**
 * A singleton to store transfer data during drag & drop operations that are only valid within the application.
 */
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 declare function getPanelData(): PanelTransfer | undefined;
export declare function getPaneData(): PaneTransfer | undefined;
export {};
