interface Result {
    beforeElement: HTMLElement | null;
    insertedElement: HTMLElement | null;
    afterElement: HTMLElement | null;
    order: HTMLElement[];
}
export declare class DragDrop {
    dropzones: HTMLElement[];
    draggables: HTMLElement[];
    result: Result;
    onDrop: (e: DragEvent, res: Result) => void;
    constructor(dropzones: HTMLElement[], draggables: HTMLElement[], onDrop: (e: DragEvent, res: Result) => void);
    private dragStart;
    private dragOver;
    private dragEnd;
    load(): void;
    unload(): void;
    /**
     * @returns The element which is being dragged
     */
    getDraggingElement(): HTMLElement;
    /**
     * @returns All draggable elements not being dragged
     */
    getDraggableElements(): HTMLElement[];
    /**
     * Gets the closest element before the dragged element
     */
    private getDragBeforeElement;
    /**
     * Gets the closest element after the dragged element
     */
    private getDragAfterElement;
}
export {};
//# sourceMappingURL=dragDropUtils.d.ts.map