import { PluginObject } from 'vue';
import { MElementDomPlugin, MountFunction, RefreshFunction } from '../../domPlugin';
import { MDraggable } from '../draggable/draggable';
import './droppable.scss';
export declare enum MDroppableClassNames {
    Droppable = "m--is-droppable",
    Overing = "m--is-dragover",
    CanDrop = "m--can-drop",
    CantDrop = "m--cant-drop"
}
export declare enum MDropEffect {
    MMove = "move",
    MNone = "none"
}
export interface MDropEvent extends CustomEvent {
    dropInfo: MDropInfo;
}
export interface MDroppableOptions {
    acceptedActions: string[];
    canDrop?: boolean;
    alwaysMount?: boolean;
}
export interface MDropInfo {
    action: string;
    grouping?: string;
    data: any;
    canDrop: any;
}
export declare enum MDroppableEventNames {
    OnDrop = "droppable:drop",
    OnDragEnter = "droppable:dragenter",
    OnDragLeave = "droppable:dragleave",
    OnDragOver = "droppable:dragover"
}
export declare class MDroppable extends MElementDomPlugin<MDroppableOptions> {
    static defaultMountPoint: string;
    static currentHoverDroppable?: MDroppable;
    static previousHoverContainer?: MDroppable;
    private grabEvents;
    private cancelGrabEvents;
    private intputTouchUpListener;
    constructor(element: HTMLElement, options: MDroppableOptions);
    attach(mount: MountFunction): void;
    update(options: MDroppableOptions, refresh: RefreshFunction): void;
    detach(): void;
    cleanupCssClasses(): void;
    leaveDroppable(event: DragEvent): void;
    private canDropTarget;
    canDrop(draggable?: MDraggable | undefined): boolean;
    private attachAll;
    private attachDragOverOnly;
    private isDropRestrictedByEncapsuledSortable;
    private setOptions;
    private onDragLeave;
    private isLeavingDroppable;
    private onDragEnter;
    private onDragOver;
    private onDragIn;
    private onDrop;
    private dispatchEvent;
    private extractDropInfo;
    private isHoveringOverDraggedElementChild;
    private allowInputTextSelection;
    private turnDragOn;
}
declare const DroppablePlugin: PluginObject<any>;
export default DroppablePlugin;
//# sourceMappingURL=droppable.d.ts.map