import { DragClue } from './DragClue';
import { DropClue } from './DropClue';
import { ExtendedColumnProps } from '../GridColumn';
/**
 * @hidden
 */
export declare type handler = (prevIndex: number, nextIndex: number, nativeEvent: any) => void;
/**
 * @hidden
 */
export declare class CommonDragLogic {
    columns: ExtendedColumnProps[];
    reorderable: boolean;
    groupable: boolean;
    private startColumn;
    private startGroup;
    private currentColumn;
    private currentGroup;
    private columnReorder;
    private groupReorder;
    private columnToGroup;
    private dropElementClue;
    private dragElementClue;
    private groupPanelDivElement;
    constructor(columnReorder: handler, groupReorder: handler, columnToGroup: handler);
    refGroupPanelDiv: (e: HTMLDivElement) => void;
    refDropElementClue: (e: DropClue) => void;
    refDragElementClue: (e: DragClue) => void;
    pressHandler: (event: any, element: HTMLDivElement | HTMLTableRowElement) => void;
    dragHandler: (event: any, element: HTMLDivElement | HTMLTableRowElement) => void;
    releaseHandler: (event: any) => void;
    private getColumnIndex;
    private getGroupIndex;
    private isValid;
    private updateDragElementClue;
    private updateDropElementClue;
}
