import { AfterContentInit, EventEmitter, KeyValueDiffer, OnDestroy, QueryList } from '@angular/core';
import { DraggableDirective } from './draggable.directive';
import { TableColumn } from '../types/table-column.type';
import { DraggableDragEvent, OrderableReorderEvent, TargetChangedEvent } from '../types/internal.types';
import * as i0 from "@angular/core";
interface OrderPosition {
    left: number;
    right: number;
    index: number;
    element: HTMLElement;
}
export declare class OrderableDirective implements AfterContentInit, OnDestroy {
    private document;
    reorder: EventEmitter<OrderableReorderEvent>;
    targetChanged: EventEmitter<TargetChangedEvent>;
    draggables: QueryList<DraggableDirective>;
    positions: Record<string, OrderPosition>;
    differ: KeyValueDiffer<string, DraggableDirective>;
    lastDraggingIndex: number;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    updateSubscriptions(): void;
    onDragStart(): void;
    onDragging({ element, model, event }: DraggableDragEvent): void;
    onDragEnd({ element, model, event }: DraggableDragEvent): void;
    isTarget(model: TableColumn, event: MouseEvent): {
        pos: OrderPosition;
        i: number;
    };
    private createMapDiffs;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrderableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<OrderableDirective, "[orderable]", never, {}, { "reorder": "reorder"; "targetChanged": "targetChanged"; }, ["draggables"], never, true, never>;
}
export {};
