/// <reference types="hammerjs" />
import { ChangeDetectorRef, ElementRef, TemplateRef, NgZone, OnInit, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';
import { IgxTextHighlightDirective } from '../directives/text-highlight/text-highlight.directive';
import { GridBaseAPIService } from './api.service';
import { PlatformUtil } from '../core/utils';
import { IgxGridBaseDirective } from './grid-base.directive';
import { IgxGridSelectionService, ISelectionNode, IgxGridCRUDService } from './selection/selection.service';
import { HammerGesturesManager } from '../core/touch';
import { ColumnType } from './common/column.interface';
import { RowType } from './common/row.interface';
import { GridSelectionMode } from './common/enums';
import { GridType } from './common/grid.interface';
import { ISearchInfo } from './grid';
/**
 * Providing reference to `IgxGridCellComponent`:
 * ```typescript
 * @ViewChild('grid', { read: IgxGridComponent })
 *  public grid: IgxGridComponent;
 * ```
 * ```typescript
 *  let column = this.grid.columnList.first;
 * ```
 * ```typescript
 *  let cell = column.cells[0];
 * ```
 */
export declare class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy {
    protected selectionService: IgxGridSelectionService;
    protected crudService: IgxGridCRUDService;
    gridAPI: GridBaseAPIService<IgxGridBaseDirective & GridType>;
    cdr: ChangeDetectorRef;
    private element;
    protected zone: NgZone;
    private touchManager;
    protected platformUtil: PlatformUtil;
    private _vIndex;
    protected _lastSearchInfo: ISearchInfo;
    /**
     * Gets the column of the cell.
     * ```typescript
     *  let cellColumn = this.cell.column;
     * ```
     * @memberof IgxGridCellComponent
     */
    column: ColumnType;
    /**
     * Gets the row of the cell.
     * ```typescript
     * let cellRow = this.cell.row;
     * ```
     * @memberof IgxGridCellComponent
     */
    row: RowType;
    /**
     * Gets the data of the row of the cell.
     * ```typescript
     * let rowData = this.cell.rowData;
     * ```
     * @memberof IgxGridCellComponent
     */
    rowData: any;
    /**
     * Sets/gets the template of the cell.
     * ```html
     * <ng-template #cellTemplate igxCell let-value>
     *   <div style="font-style: oblique; color:blueviolet; background:red">
     *       <span>{{value}}</span>
     *   </div>
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild('cellTemplate',{read: TemplateRef})
     * cellTemplate: TemplateRef<any>;
     * ```
     * ```typescript
     * this.cell.cellTemplate = this.cellTemplate;
     * ```
     * ```typescript
     * let template =  this.cell.cellTemplate;
     * ```
     * @memberof IgxGridCellComponent
     */
    cellTemplate: TemplateRef<any>;
    pinnedIndicator: TemplateRef<any>;
    /**
     * Sets/gets the cell value.
     * ```typescript
     * this.cell.value = "Cell Value";
     * ```
     * ```typescript
     * let cellValue = this.cell.value;
     * ```
     * @memberof IgxGridCellComponent
     */
    value: any;
    /**
     * Sets/gets the highlight class of the cell.
     * Default value is `"igx-highlight"`.
     * ```typescript
     * let highlightClass = this.cell.highlightClass;
     * ```
     * ```typescript
     * this.cell.highlightClass = 'igx-cell-highlight';
     * ```
     * @memberof IgxGridCellComponent
     */
    highlightClass: string;
    /**
     * Sets/gets the active highlight class class of the cell.
     * Default value is `"igx-highlight__active"`.
     * ```typescript
     * let activeHighlightClass = this.cell.activeHighlightClass;
     * ```
     * ```typescript
     * this.cell.activeHighlightClass = 'igx-cell-highlight_active';
     * ```
     * @memberof IgxGridCellComponent
     */
    activeHighlightClass: string;
    /**
     * Gets the cell formatter.
     * ```typescript
     * let cellForamatter = this.cell.formatter;
     * ```
     * @memberof IgxGridCellComponent
     */
    formatter: (value: any) => any;
    /**
     * Gets the cell template context object.
     * ```typescript
     *  let context = this.cell.context();
     * ```
     * @memberof IgxGridCellComponent
     */
    get context(): any;
    /**
     * Gets the cell template.
     * ```typescript
     * let template = this.cell.template;
     * ```
     * @memberof IgxGridCellComponent
     */
    get template(): TemplateRef<any>;
    /**
     * Gets the cell template.
     * ```typescript
     * let template = this.cell.template;
     * ```
     * @memberof IgxGridCellComponent
     */
    get pinnedIndicatorTemplate(): TemplateRef<any>;
    /**
     * Gets the `id` of the grid in which the cell is stored.
     * ```typescript
     * let gridId = this.cell.gridID;
     * ```
     * @memberof IgxGridCellComponent
     */
    get gridID(): any;
    /**
     * Gets the grid of the cell.
     * ```typescript
     * let grid = this.cell.grid;
     * ```
     * @memberof IgxGridCellComponent
     */
    get grid(): any;
    /**
     * Gets the `index` of the row where the cell is stored.
     * ```typescript
     * let rowIndex = this.cell.rowIndex;
     * ```
     * @memberof IgxGridCellComponent
     */
    get rowIndex(): number;
    /**
     * Gets the `index` of the cell column.
     * ```typescript
     * let columnIndex = this.cell.columnIndex;
     * ```
     * @memberof IgxGridCellComponent
     */
    get columnIndex(): number;
    /**
     * Gets the visible `index` of the in which the cell is stored.
     * ```typescript
     * let visibleColumnIndex = this.cell.visibleColumnIndex;
     * ```
     * @memberof IgxGridCellComponent
     */
    get visibleColumnIndex(): number;
    set visibleColumnIndex(val: number);
    /**
     * Gets the ID of the cell.
     * ```typescript
     * let cellID = this.cell.cellID;
     * ```
     * @memberof IgxGridCellComponent
     */
    get cellID(): {
        rowID: any;
        columnID: number;
        rowIndex: number;
    };
    get attrCellID(): string;
    /**
     * Returns a reference to the nativeElement of the cell.
     * ```typescript
     * let cellNativeElement = this.cell.nativeElement;
     * ```
     * @memberof IgxGridCellComponent
     */
    get nativeElement(): HTMLElement;
    /**
     * @hidden
     * @internal
     */
    get cellSelectionMode(): GridSelectionMode;
    /**
     * @hidden
     * @internal
     */
    set lastSearchInfo(value: ISearchInfo);
    set cellSelectionMode(value: GridSelectionMode);
    /**
     * @hidden
     * @internal
     */
    lastPinned: boolean;
    /**
     * @hidden
     * @internal
     */
    firstPinned: boolean;
    /**
     * Returns whether the cell is in edit mode.
     */
    editMode: boolean;
    /**
     * Sets/get the `role` property of the cell.
     * Default value is `"gridcell"`.
     * ```typescript
     * this.cell.role = 'grid-cell';
     * ```
     * ```typescript
     * let cellRole = this.cell.role;
     * ```
     * @memberof IgxGridCellComponent
     */
    role: string;
    /**
     * Gets whether the cell is editable.
     * ```typescript
     * let isCellReadonly = this.cell.readonly;
     * ```
     * @memberof IgxGridCellComponent
     */
    get readonly(): boolean;
    get gridRowSpan(): number;
    get gridColumnSpan(): number;
    get rowEnd(): number;
    get colEnd(): number;
    get rowStart(): number;
    get colStart(): number;
    /**
     * Returns a string containing the grid `id` and the column `field` concatenated by "_".
     * ```typescript
     * let describedBy = this.cell.describedBy;
     * ```
     * @memberof IgxGridCellComponent
     */
    get describedby(): string;
    /**
     * Gets the width of the cell.
     * ```typescript
     * let cellWidth = this.cell.width;
     * ```
     * @memberof IgxGridCellComponent
     */
    width: string;
    /**
     * @hidden
     */
    active: boolean;
    get ariaSelected(): boolean;
    /**
     * Gets whether the cell is selected.
     * ```typescript
     * let isSelected = this.cell.selected;
     * ```
     * @memberof IgxGridCellComponent
     */
    get selected(): boolean;
    /**
     * Selects/deselects the cell.
     * ```typescript
     * this.cell.selected = true.
     * ```
     * @memberof IgxGridCellComponent
     */
    set selected(val: boolean);
    /**
     * Gets whether the cell column is selected.
     * ```typescript
     * let isCellColumnSelected = this.cell.columnSelected;
     * ```
     * @memberof IgxGridCellComponent
     */
    get columnSelected(): boolean;
    get dirty(): any;
    /**
     * Sets the current edit value while a cell is in edit mode.
     * Only for cell editing mode.
     * ```typescript
     * this.cell.editValue = value;
     * ```
     * @memberof IgxGridCellComponent
     */
    set editValue(value: any);
    /**
     * Gets the current edit value while a cell is in edit mode.
     * Only for cell editing mode.
     * ```typescript
     * let editValue = this.cell.editValue;
     * ```
     * @memberof IgxGridCellComponent
     */
    get editValue(): any;
    /**
     * Returns whether the cell is editable.
     */
    get editable(): boolean;
    /**
     * @hidden
     */
    displayPinnedChip: boolean;
    protected defaultCellTemplate: TemplateRef<any>;
    protected defaultPinnedIndicator: TemplateRef<any>;
    protected inlineEditorTemplate: TemplateRef<any>;
    protected set highlight(value: IgxTextHighlightDirective);
    protected get highlight(): IgxTextHighlightDirective;
    protected get selectionNode(): ISelectionNode;
    focused: boolean;
    protected compositionStartHandler: any;
    protected compositionEndHandler: any;
    private _highlight;
    private _cellSelection;
    constructor(selectionService: IgxGridSelectionService, crudService: IgxGridCRUDService, gridAPI: GridBaseAPIService<IgxGridBaseDirective & GridType>, cdr: ChangeDetectorRef, element: ElementRef, zone: NgZone, touchManager: HammerGesturesManager, platformUtil: PlatformUtil);
    private addPointerListeners;
    private removePointerListeners;
    /**
     * @hidden
     * @internal
     */
    ngOnInit(): void;
    /**
     * @hidden
     * @internal
     */
    ngOnDestroy(): void;
    /**
     * @hidden
     * @internal
     */
    _updateCRUDStatus(): void;
    /**
     * @deprecated
     * Gets whether the cell is selected.
     * ```typescript
     * let isCellSelected = thid.cell.isCellSelected();
     * ```
     * @memberof IgxGridCellComponent
     */
    isCellSelected(): boolean;
    /**
     * @hidden
     * @internal
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Starts/ends edit mode for the cell.
     *
     * ```typescript
     * cell.setEditMode(true);
     * ```
     */
    setEditMode(value: boolean): void;
    /**
     * Sets new value to the cell.
     * ```typescript
     * this.cell.update('New Value');
     * ```
     * @memberof IgxGridCellComponent
     */
    update(val: any): void;
    /**
     *
     * @hidden
     * @internal
     */
    pointerdown: (event: PointerEvent) => void;
    /**
     *
     * @hidden
     * @internal
     */
    pointerenter: (event: PointerEvent) => void;
    /**
     * @hidden
     * @internal
     */
    pointerup: (event: PointerEvent) => void;
    /**
     * @hidden
     * @internal
     */
    onDoubleClick: (event: MouseEvent | HammerInput) => void;
    /**
     * @hidden
     * @internal
     */
    onClick(event: MouseEvent): void;
    /**
     * @hidden
     * @internal
     */
    onContextMenu(event: MouseEvent): void;
    /**
     * @hidden
     * @internal
     */
    activate(event: FocusEvent | KeyboardEvent): void;
    /**
     * If the provided string matches the text in the cell, the text gets highlighted.
     * ```typescript
     * this.cell.highlightText('Cell Value', true);
     * ```
     * @memberof IgxGridCellComponent
     */
    highlightText(text: string, caseSensitive?: boolean, exactMatch?: boolean): number;
    /**
     * Clears the highlight of the text in the cell.
     * ```typescript
     * this.cell.clearHighLight();
     * ```
     * @memberof IgxGridCellComponent
     */
    clearHighlight(): void;
    /**
     * @hidden
     * @internal
     */
    calculateSizeToFit(range: any): number;
    /**
     * @hidden
     * @internal
     */
    get searchMetadata(): Map<string, any>;
}
