import { ElementRef, ChangeDetectorRef, KeyValueDiffers, EventEmitter } from '@angular/core';
import { Column, CellPosition, GridPart, UIAction, RowPosition } from '@true-directive/base';
import { GridViewComponent } from './grid-view.component';
import { GridStateService } from './grid-state.service';
import { RowDragEvent, RowClickEvent, ContextMenuEvent, CellClickEvent } from '@true-directive/base';
export declare class GridComponent extends GridViewComponent {
    state: GridStateService;
    protected elementRef: ElementRef;
    protected changeDetector: ChangeDetectorRef;
    protected keyValueDiffers: KeyValueDiffers;
    rowMouseDown: EventEmitter<any>;
    rowMouseUp: EventEmitter<any>;
    rowClick: EventEmitter<RowClickEvent>;
    cellClick: EventEmitter<CellClickEvent>;
    rowDblClick: EventEmitter<RowClickEvent>;
    rowKeyDown: EventEmitter<any>;
    contextMenu: EventEmitter<ContextMenuEvent>;
    /**
     * Пользователь перетащил строки. Событие возникает до того, как строки будут перенесены
     * гридом. Это действие можно отменить и обработать вне грида.
     */
    rowDrag: EventEmitter<RowDragEvent>;
    /**
     * Пользователь перетащил строки и грид обработал это действие.
     */
    rowDragged: EventEmitter<RowDragEvent>;
    /**
     * Маркер, указывающий новую позицию перетаскиваемого столбца
     */
    dropMarker: any;
    private _cellTouched;
    private _cellTouchedScrollPos;
    private _dragColumn;
    private _drag_x0;
    private _drag_y0;
    private _lastSel;
    private _paging;
    readonly isDragging: boolean;
    /**
     * Начало действия пользователя (перемещение строки или выделение ячеек)
     * @param  eX      Начальная координата X
     * @param  eY      Начальная координата Y
     * @param  place   Часть грида, в которой инициировано действие
     * @param  ctrlKey Нажата ли клавиша Ctrl
     * @param  byTouch Инициировано ли тач-событием
     */
    protected startAction(cp: CellPosition, eX: number, eY: number, place: GridPart, ctrlKey?: boolean, byTouch?: boolean): void;
    /**
     * Касание пальцем
     * @param  e Параметры события
     */
    touchStart(e: any): void;
    /**
     * Окончание касания
     * @param  e Параметры события
     */
    touchEnd(e: any): void;
    /**
     * Нажатие кнопки мыши.
     * @param  e Параметры события
     */
    dataMouseDown(e: any): void;
    protected doRowClick(e: any): void;
    dataContextMenu(e: any): void;
    dataRowClick(e: any, r: any): void;
    dataRowDblClick(e: any, r: any): void;
    /**
     * Обработка клавиши
     * @param  keyEvent Событие нажатия
     */
    processKey(keyEvent: any): boolean;
    dataKeyDown(e: any): void;
    private doSelect;
    readonly draggedRows: any[];
    getDragTransform(i: number): string;
    getDragWidth(): string;
    private checkRowDrag;
    private startDragRows;
    protected specifyDropPosition(pos: RowPosition, rLeft: number, e: MouseEvent): RowPosition;
    protected dropInfo(e: MouseEvent): any;
    protected dragRows(e: MouseEvent): RowPosition;
    private endDragRows;
    protected documentMouseMove(e: MouseEvent): void;
    documentMouseUp(e: MouseEvent): void;
    resizeInProcess(value: boolean): void;
    dragInProcess(value: boolean): void;
    private showMarker;
    hideMarker(): void;
    proceedToResizeColumn(ui: UIAction): void;
    resizeColumn(e: any): void;
    private setDragPosition;
    isDragColumn(): boolean;
    private startDragColumn;
    protected commitDrag(): void;
    protected dragColumn(e: UIAction): void;
    protected dropColumn(e: any): void;
    /**
     * Обработка события строки - переключение чекбокса.
     * @param  e Параметры события
     */
    toggleCheckbox(e: any): void;
    toggleCheckColumn(col: Column): void;
    setAppearance(appearanceClass: string): void;
    constructor(state: GridStateService, elementRef: ElementRef, changeDetector: ChangeDetectorRef, keyValueDiffers: KeyValueDiffers);
}
