
import { IgcFilteringExpressionsTree } from './igc-filtering-expressions-tree';
import { IgcGridScrollEventArgs } from './igc-grid-scroll-event-args';
import { IgcGridCellEventArgs } from './igc-grid-cell-event-args';
import { IgcGridRowEventArgs } from './igc-grid-row-event-args';
import { IgcGridFormGroupCreatedEventArgs } from './igc-grid-form-group-created-event-args';
import { IgcGridValidationStatusEventArgs } from './igc-grid-validation-status-event-args';
import { IgcRowSelectionEventArgs } from './igc-row-selection-event-args';
import { IgcColumnSelectionEventArgs } from './igc-column-selection-event-args';
import { IgcPinColumnCancellableEventArgs } from './igc-pin-column-cancellable-event-args';
import { IgcPinColumnEventArgs } from './igc-pin-column-event-args';
import { IgcGridEditEventArgs } from './igc-grid-edit-event-args';
import { IgcGridEditDoneEventArgs } from './igc-grid-edit-done-event-args';
import { IgcColumnComponent } from './igc-column-component';
import { IgcColumnsAutoGeneratedEventArgs } from './igc-columns-auto-generated-event-args';
import { IgcSortingEventArgs } from './igc-sorting-event-args';
import { IgcSortingExpression } from './igc-sorting-expression';
import { IgcFilteringEventArgs } from './igc-filtering-event-args';
import { IgcRowDataEventArgs } from './igc-row-data-event-args';
import { IgcRowDataCancelableEventArgs } from './igc-row-data-cancelable-event-args';
import { IgcColumnResizeEventArgs } from './igc-column-resize-event-args';
import { IgcGridContextMenuEventArgs } from './igc-grid-context-menu-event-args';
import { IgcColumnVisibilityChangingEventArgs } from './igc-column-visibility-changing-event-args';
import { IgcColumnVisibilityChangedEventArgs } from './igc-column-visibility-changed-event-args';
import { IgcColumnMovingStartEventArgs } from './igc-column-moving-start-event-args';
import { IgcColumnMovingEventArgs } from './igc-column-moving-event-args';
import { IgcColumnMovingEndEventArgs } from './igc-column-moving-end-event-args';
import { IgcGridKeydownEventArgs } from './igc-grid-keydown-event-args';
import { IgcRowDragStartEventArgs } from './igc-row-drag-start-event-args';
import { IgcRowDragEndEventArgs } from './igc-row-drag-end-event-args';
import { IgcGridClipboardEvent } from './igc-grid-clipboard-event';
import { IgcRowToggleEventArgs } from './igc-row-toggle-event-args';
import { IgcPinRowEventArgs } from './igc-pin-row-event-args';
import { IgcActiveNodeChangeEventArgs } from './igc-active-node-change-event-args';
import { IgcGridToolbarExportEventArgs } from './igc-grid-toolbar-export-event-args';
import { IgcGridSelectionRange } from './igc-grid-selection-range';
import { IgcForOfDataChangingEventArgs } from './igc-for-of-data-changing-event-args';
import { IgcRenderFunction } from './common';
import { IgcDataCloneStrategy } from './igc-data-clone-strategy';
import { IgcClipboardOptions } from './igc-clipboard-options';
import { IgcActionStripToken } from './igc-action-strip-token';
import { IgcGridRowDragGhostContext } from './igc-grid-row-drag-ghost-context';
import { IgcGridRowEditTextTemplateContext } from './igc-grid-row-edit-text-template-context';
import { IgcGridEmptyTemplateContext } from './igc-grid-empty-template-context';
import { IgcGridRowEditActionsTemplateContext } from './igc-grid-row-edit-actions-template-context';
import { IgcGridRowTemplateContext } from './igc-grid-row-template-context';
import { IgcGridTemplateContext } from './igc-grid-template-context';
import { IgcGridHeaderTemplateContext } from './igc-grid-header-template-context';
import { IgcGridToolbarComponent } from './igc-grid-toolbar-component';
import { IgcPaginatorComponent } from './igc-paginator-component';
import { IgcGridResourceStrings } from './igc-grid-resource-strings';
import { FilteringLogic } from './filtering-logic';
import { GridPagingMode } from './grid-paging-mode';
import { GridValidationTrigger } from './grid-validation-trigger';
import { IgcPinningConfig } from './igc-pinning-config';
import { FilterMode } from './filter-mode';
import { GridSummaryPosition } from './grid-summary-position';
import { GridSummaryCalculationMode } from './grid-summary-calculation-mode';
import { IgcFilteringStrategy } from './igc-filtering-strategy';
import { IgcGridSortingStrategy } from './igc-grid-sorting-strategy';
import { IgcSortingOptions } from './igc-sorting-options';
import { IgcRowDirective } from './igc-row-directive';
import { IgcHeadSelectorTemplateContext } from './igc-head-selector-template-context';
import { IgcRowSelectorTemplateContext } from './igc-row-selector-template-context';
import { GridSelectionMode } from './grid-selection-mode';
import { IgcSearchInfo } from './igc-search-info';
import { IgcForOfState } from './igc-for-of-state';
import { IgcOverlayOutletDirective } from './igc-overlay-outlet-directive';
import { IgcGridRowComponent } from './igc-grid-row-component';
import { DropPosition } from './drop-position';
import { IgcFilteringOperation } from './igc-filtering-operation';
                import { IgcRowType } from './igc-row-type';
import { IgcCellPosition } from './igc-cell-position';
import { IgcOverlaySettings } from './igc-overlay-settings';
import { EventEmitterMixin, LitElement, Constructor, AbstractConstructor } from './common';


/* wcSkipComponentSuffix */


/* blazorIndirectRender
   blazorComponent
   omitModule
   wcSkipComponentSuffix */

    export declare abstract class IgcGridBaseDirective extends EventEmitterMixin<IgcGridBaseDirectiveEventMap, Constructor<LitElement>>(LitElement)

    {

          

    /**
     * Gets/Sets the display time for the row adding snackbar notification.
     *
     * @remarks
     * By default it is 6000ms.
     */
    public set snackbarDisplayTime(value: number);
          public get snackbarDisplayTime(): number;
  
          

    /**
     * Gets/Sets whether to auto-generate the columns.
     *
     * @remarks
     * The default value is false. When set to true, it will override all columns declared through code or in markup.
     * @example
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set autoGenerate(value: boolean);
          public get autoGenerate(): boolean;
  
          

    /**
     * Gets/Sets a list of property keys to be excluded from the generated column collection
     * @remarks
     * The collection is only used during initialization and changing it will not cause any changes in the generated columns at runtime
     * unless the grid is destroyed and recreated. To modify the columns visible in the UI at runtime, please use their
     * [hidden](https://www.infragistics.com/products/ignite-ui-angular/docs/typescript/latest/classes/IgxColumnComponent.html#hidden) property.
     * @example
     * ```html
     * <igx-grid data=[Data] [autoGenerate]="true" [autoGenerateExclude]="['ProductName', 'Count']"></igx-grid>
     * ```
     * ```typescript
     * const Data = [{ 'Id': '1', 'ProductName': 'name1', 'Description': 'description1', 'Count': 5 }]
     * ```
     */
    public set autoGenerateExclude(value: string[]);
          public get autoGenerateExclude(): string[];
  
          

    /**
     * Controls whether columns moving is enabled in the grid.
     *
     */
    public set moving(value: boolean);
          public get moving(): boolean;
  
          

    /**
     * Gets/Sets a custom template when empty.
     *
     * @example
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [emptyGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set emptyGridTemplate(value: IgcRenderFunction<void>);
          public get emptyGridTemplate(): IgcRenderFunction<void>;
  
          

    /**
     * Gets/Sets a custom template for adding row UI when grid is empty.
     *
     * @example
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [addRowEmptyTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set addRowEmptyTemplate(value: IgcRenderFunction<void>);
          public get addRowEmptyTemplate(): IgcRenderFunction<void>;
  
          

    /**
     * Gets/Sets a custom template when loading.
     *
     * @example
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [loadingGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set loadingGridTemplate(value: IgcRenderFunction<void>);
          public get loadingGridTemplate(): IgcRenderFunction<void>;
  
          

    /**
     * Get/Set IgxSummaryRow height
     */
    public set summaryRowHeight(value: number);
          public get summaryRowHeight(): number;
  
          

    /**
     * Gets/Sets the data clone strategy of the grid when in edit mode.
     *
     * @example
     * ```html
     *  <igx-grid #grid [data]="localData" [dataCloneStrategy]="customCloneStrategy"></igx-grid>
     * ```
     */
    public set dataCloneStrategy(value: IgcDataCloneStrategy);
          public get dataCloneStrategy(): IgcDataCloneStrategy;
  
          

    /**
     * Controls the copy behavior of the grid.
     */
    public set clipboardOptions(value: IgcClipboardOptions);
          public get clipboardOptions(): IgcClipboardOptions;
  
          

    /* treatAsRef */
    /**
     * Sets a conditional class selector to the grid's row element.
     * Accepts an object literal, containing key-value pairs,
     * where the key is the name of the CSS class and the value is
     * either a callback function that returns a boolean, or boolean, like so:
     * ```typescript
     * callback = (row: RowType) => { return row.selected > 6; }
     * rowClasses = { 'className' : this.callback };
     * ```
     * ```html
     * <igx-grid #grid [data]="Data" [rowClasses] = "rowClasses" [autoGenerate]="true"></igx-grid>
     * ```
     *
     * @memberof IgxColumnComponent
     */
    public set rowClasses(value: any);
          public get rowClasses(): any;
  
          

    /* treatAsRef */
    /**
     * Sets conditional style properties on the grid row element.
     * It accepts an object literal where the keys are
     * the style properties and the value is an expression to be evaluated.
     * ```typescript
     * styles = {
     *  background: 'yellow',
     *  color: (row: RowType) => row.selected : 'red': 'white'
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="Data" [rowStyles]="styles" [autoGenerate]="true"></igx-grid>
     * ```
     *
     * @memberof IgxColumnComponent
     */
    public set rowStyles(value: any);
          public get rowStyles(): any;
  
          

    /**
     * Gets/Sets the primary key.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [primaryKey]="'ProductID'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set primaryKey(value: string);
          public get primaryKey(): string;
  
          

    /* reactContentChildren */
    /* blazorInclude */
    /* blazorTreatAsCollection */
    /* blazorCollectionName: ColumnCollection */
    /* ngQueryListName: columnList */
    /**
     * @hidden @internal
     */
    public set columnList(value: IgcColumnComponent[]);
          public get columnList(): IgcColumnComponent[];
  
          

    /* contentChildren */
    /* blazorInclude */
    /* blazorTreatAsCollection */
    /* blazorCollectionName: ActionStripCollection */
    /* blazorCollectionItemName: ActionStrip */
    /* ngQueryListName: actionStripComponents */
    /** @hidden @internal */
    public set actionStripComponents(value: IgcActionStripToken[]);
          public get actionStripComponents(): IgcActionStripToken[];
  
          


    /**
     * Gets the custom template, if any, used for row drag ghost.
     */
    public set dragGhostCustomTemplate(value: IgcRenderFunction<IgcGridRowDragGhostContext>);
          public get dragGhostCustomTemplate(): IgcRenderFunction<IgcGridRowDragGhostContext>;
  
          

    /**
     * Gets the row edit text template.
     */
    public set rowEditTextTemplate(value: IgcRenderFunction<IgcGridRowEditTextTemplateContext>);
          public get rowEditTextTemplate(): IgcRenderFunction<IgcGridRowEditTextTemplateContext>;
  
          

    /**
     * Gets the row add text template.
     */
    public set rowAddTextTemplate(value: IgcRenderFunction<IgcGridEmptyTemplateContext>);
          public get rowAddTextTemplate(): IgcRenderFunction<IgcGridEmptyTemplateContext>;
  
          

    /**
     * Gets the row edit actions template.
     */
    public set rowEditActionsTemplate(value: IgcRenderFunction<IgcGridRowEditActionsTemplateContext>);
          public get rowEditActionsTemplate(): IgcRenderFunction<IgcGridRowEditActionsTemplateContext>;
  
          

    /**
     * Gets the row expand indicator template.
    */
    public set rowExpandedIndicatorTemplate(value: IgcRenderFunction<IgcGridRowTemplateContext>);
          public get rowExpandedIndicatorTemplate(): IgcRenderFunction<IgcGridRowTemplateContext>;
  
          

    /**
     * Gets the row collapse indicator template.
    */
    public set rowCollapsedIndicatorTemplate(value: IgcRenderFunction<IgcGridRowTemplateContext>);
          public get rowCollapsedIndicatorTemplate(): IgcRenderFunction<IgcGridRowTemplateContext>;
  
          

    /**
     * Gets the header expand indicator template.
    */
    public set headerExpandedIndicatorTemplate(value: IgcRenderFunction<IgcGridTemplateContext>);
          public get headerExpandedIndicatorTemplate(): IgcRenderFunction<IgcGridTemplateContext>;
  
          

    /**
     * Gets the row collapse indicator template.
    */
    public set headerCollapsedIndicatorTemplate(value: IgcRenderFunction<IgcGridTemplateContext>);
          public get headerCollapsedIndicatorTemplate(): IgcRenderFunction<IgcGridTemplateContext>;
  
          

    /**
     * Gets the excel style header icon.
    */
    public set excelStyleHeaderIconTemplate(value: IgcRenderFunction<IgcGridHeaderTemplateContext>);
          public get excelStyleHeaderIconTemplate(): IgcRenderFunction<IgcGridHeaderTemplateContext>;
  
          

    /**
     * The custom template, if any, that should be used when rendering a header sorting indicator when columns are sorted in asc order.
     */
    public set sortAscendingHeaderIconTemplate(value: IgcRenderFunction<IgcGridHeaderTemplateContext>);
          public get sortAscendingHeaderIconTemplate(): IgcRenderFunction<IgcGridHeaderTemplateContext>;
  
          

    /**
     * The custom template, if any, that should be used when rendering a header sorting indicator when columns are sorted in desc order.
     */
    public set sortDescendingHeaderIconTemplate(value: IgcRenderFunction<IgcGridHeaderTemplateContext>);
          public get sortDescendingHeaderIconTemplate(): IgcRenderFunction<IgcGridHeaderTemplateContext>;
  
          

    /**
     * Gets custom template, if any, that should be used when rendering a header sorting indicator when columns are not sorted.
     */
    public set sortHeaderIconTemplate(value: IgcRenderFunction<IgcGridHeaderTemplateContext>);
          public get sortHeaderIconTemplate(): IgcRenderFunction<IgcGridHeaderTemplateContext>;
  
          

    /* contentChildren */
    /* blazorInclude */
    /* blazorTreatAsCollection */
    /* blazorCollectionName: GridToolbarCollection */
    /* ngQueryListName: toolbar */
    /** @hidden @internal */
    public set toolbar(value: IgcGridToolbarComponent[]);
          public get toolbar(): IgcGridToolbarComponent[];
  
          

    /* contentChildren */
    /* blazorInclude */
    /* blazorTreatAsCollection */
    /* blazorCollectionName: PaginatorCollection */
    /* ngQueryListName: paginationComponents */
    /** @hidden @internal */
    public set paginationComponents(value: IgcPaginatorComponent[]);
          public get paginationComponents(): IgcPaginatorComponent[];
  
          


    /**
     * Gets/Sets the resource strings.
     *
     * @remarks
     * By default it uses EN resources.
     */
    public set resourceStrings(value: IgcGridResourceStrings);
          public get resourceStrings(): IgcGridResourceStrings;
  
          

    /**
     * Gets/Sets the filtering logic of the `IgxGridComponent`.
     *
     * @remarks
     * The default is AND.
     * @example
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true" [filteringLogic]="filtering"></igx-grid>
     * ```
     */
    public set filteringLogic(value: FilteringLogic);
          public get filteringLogic(): FilteringLogic;
  
          

    /* mustSetInCodePlatforms: WebComponents;Blazor */
    /**
     * Gets/Sets the filtering state.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [autoGenerate]="true" [(filteringExpressionsTree)]="model.filteringExpressions"></igx-grid>
     * ```
     * @remarks
     * Supports two-way binding.
     */
    public set filteringExpressionsTree(value: IgcFilteringExpressionsTree);
          public get filteringExpressionsTree(): IgcFilteringExpressionsTree;
  
          

    /**
     * Gets/Sets the advanced filtering state.
     *
     * @example
     * ```typescript
     * let advancedFilteringExpressionsTree = this.grid.advancedFilteringExpressionsTree;
     * this.grid.advancedFilteringExpressionsTree = logic;
     * ```
     */
    public set advancedFilteringExpressionsTree(value: IgcFilteringExpressionsTree);
          public get advancedFilteringExpressionsTree(): IgcFilteringExpressionsTree;
  
          

    /**
     * Gets/Sets the locale.
     *
     * @remarks
     * If not set, returns browser's language.
     */
    public set locale(value: string);
          public get locale(): string;
  
          

    public set pagingMode(value: GridPagingMode);
          public get pagingMode(): GridPagingMode;
  
          

    /**
     * Gets/Sets if the row selectors are hidden.
     *
     * @remarks
     *  By default row selectors are shown
     */
    public set hideRowSelectors(value: boolean);
          public get hideRowSelectors(): boolean;
  
          

    /**
     * Gets/Sets whether rows can be moved.
     *
     * @example
     * ```html
     * <igx-grid #grid [rowDraggable]="true"></igx-grid>
     * ```
     */
    public set rowDraggable(value: boolean);
          public get rowDraggable(): boolean;
  
          

    /**
     * Gets/Sets the trigger for validators used when editing the grid.
     *
     * @example
     * ```html
     * <igx-grid #grid validationTrigger='blur'></igx-grid>
     * ```
     */
    public set validationTrigger(value: GridValidationTrigger);
          public get validationTrigger(): GridValidationTrigger;
  
          

    /**
     * Gets/Sets whether the rows are editable.
     *
     * @remarks
     * By default it is set to false.
     * @example
     * ```html
     * <igx-grid #grid [rowEditable]="true" [primaryKey]="'ProductID'" ></igx-grid>
     * ```
     */
    public set rowEditable(value: boolean);
          public get rowEditable(): boolean;
  
          

    /**
     * Gets/Sets the height.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set height(value: string);
          public get height(): string;
  
          

    /**
     * Gets/Sets the width of the grid.
     *
     * @example
     * ```typescript
     * let gridWidth = this.grid.width;
     * ```
     */
    public set width(value: string);
          public get width(): string;
  
          

    /**
     * Gets/Sets the row height.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [rowHeight]="100" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set rowHeight(value: number);
          public get rowHeight(): number;
  
          

    /**
     * Gets/Sets the default width of the columns.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [columnWidth]="100" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set columnWidth(value: string);
          public get columnWidth(): string;
  
          

    /**
     * Get/Sets the message displayed when there are no records.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set emptyGridMessage(value: string);
          public get emptyGridMessage(): string;
  
          

    /**
     * Gets/Sets whether the grid is going to show a loading indicator.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [isLoading]="true" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set isLoading(value: boolean);
          public get isLoading(): boolean;
  
          

    /**
     * Gets/Sets whether the columns should be auto-generated once again after the initialization of the grid
     *
     * @remarks
     * This will allow to bind the grid to remote data and having auto-generated columns at the same time.
     * Note that after generating the columns, this property would be disabled to avoid re-creating
     * columns each time a new data is assigned.
     * @example
     * ```typescript
     *  this.grid.shouldGenerate = true;
     * ```
     * @deprecated Column re-creation now relies on `autoGenerate` instead.
     */
    public set shouldGenerate(value: boolean);
          public get shouldGenerate(): boolean;
  
          

    /**
     * Gets/Sets the message displayed when there are no records and the grid is filtered.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set emptyFilteredGridMessage(value: string);
          public get emptyFilteredGridMessage(): string;
  
          

    /* mustSetInCodePlatforms: WebComponents;Blazor;React */
    /**
     * Gets/Sets the initial pinning configuration.
     *
     * @remarks
     * Allows to apply pinning the columns to the start or the end.
     * Note that pinning to both sides at a time is not allowed.
     * @example
     * ```html
     * <igx-grid [pinning]="pinningConfig"></igx-grid>
     * ```
     */
    public set pinning(value: IgcPinningConfig);
          public get pinning(): IgcPinningConfig;
  
          

    /**
     * Gets/Sets if the filtering is enabled.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [allowFiltering]="true" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set allowFiltering(value: boolean);
          public get allowFiltering(): boolean;
  
          

    /**
     * Gets/Sets a value indicating whether the advanced filtering is enabled.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [allowAdvancedFiltering]="true" [autoGenerate]="true"></igx-grid>
     * ```
     */
    public set allowAdvancedFiltering(value: boolean);
          public get allowAdvancedFiltering(): boolean;
  
          

    /**
     * Gets/Sets the filter mode.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [filterMode]="'quickFilter'" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default it's set to FilterMode.quickFilter.
     */
    public set filterMode(value: FilterMode);
          public get filterMode(): FilterMode;
  
          

    /**
     * Gets/Sets the summary position.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" summaryPosition="top" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default it is bottom.
     */
    public set summaryPosition(value: GridSummaryPosition);
          public get summaryPosition(): GridSummaryPosition;
  
          

    /**
     * Gets/Sets the summary calculation mode.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" summaryCalculationMode="rootLevelOnly" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default it is rootAndChildLevels which means the summaries are calculated for the root level and each child level.
     */
    public set summaryCalculationMode(value: GridSummaryCalculationMode);
          public get summaryCalculationMode(): GridSummaryCalculationMode;
  
          

    /**
     * Controls whether the summary row is visible when groupBy/parent row is collapsed.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [showSummaryOnCollapse]="true" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default showSummaryOnCollapse is set to 'false' which means that the summary row is not visible
     * when the groupBy/parent row is collapsed.
     */
    public set showSummaryOnCollapse(value: boolean);
          public get showSummaryOnCollapse(): boolean;
  
          

    /**
     * Gets/Sets the filtering strategy of the grid.
     *
     * @example
     * ```html
     *  <igx-grid #grid [data]="localData" [filterStrategy]="filterStrategy"></igx-grid>
     * ```
     */
    public set filterStrategy(value: IgcFilteringStrategy);
          public get filterStrategy(): IgcFilteringStrategy;
  
          

    /**
     * Gets/Sets the sorting strategy of the grid.
     *
     * @example
     * ```html
     *  <igx-grid #grid [data]="localData" [sortStrategy]="sortStrategy"></igx-grid>
     * ```
     */
    public set sortStrategy(value: IgcGridSortingStrategy);
          public get sortStrategy(): IgcGridSortingStrategy;
  
          

    /**
     * Gets/Sets the sorting options - single or multiple sorting.
     * Accepts an `ISortingOptions` object with any of the `mode` properties.
     *
     * @example
     * ```typescript
     * const _sortingOptions: ISortingOptions = {
     *      mode: 'single'
     * }
     * ```html
     * <igx-grid [sortingOptions]="sortingOptions"><igx-grid>
     * ```
     */
    public set sortingOptions(value: IgcSortingOptions);
          public get sortingOptions(): IgcSortingOptions;
  
          

    /* blazorByValueArray */
    /* blazorAlwaysWriteback */
    /* @tsTwoWayProperty (true, "SelectedRowsChange", "Detail", false) */
    /* blazorPrimitiveValue */
    /**
     * Gets/Sets the current selection state.
     *
     * @remarks
     * Represents the selected rows' IDs (primary key or rowData)
     * @example
     * ```html
     * <igx-grid [data]="localData" primaryKey="ID" rowSelection="multiple" [selectedRows]="[0, 1, 2]"><igx-grid>
     * ```
     */
    /* @tsTwoWayProperty (true, "SelectedRowsChange", "Detail", false) */
        /* @blazorSynthesizeTwoWayBind */
public set selectedRows(value: any[]);
          public get selectedRows(): any[];
  
                

    /* csSuppress */
    /**
     * A list of `IgxGridRowComponent`.
     *
     * @example
     * ```typescript
     * const rowList = this.grid.rowList;
     * ```
     */
    public get rowList(): IgcRowDirective[];
        
                

    /* csSuppress */
    /**
     * A list of currently rendered `IgxGridRowComponent`'s.
     *
     * @example
     * ```typescript
     * const dataList = this.grid.dataRowList;
     * ```
     */
    public get dataRowList(): IgcRowDirective[];
        
          

    /**
     * Gets the header row selector template.
     */
    public set headSelectorTemplate(value: IgcRenderFunction<IgcHeadSelectorTemplateContext>);
          public get headSelectorTemplate(): IgcRenderFunction<IgcHeadSelectorTemplateContext>;
  
          

    /**
     * Gets the row selector template.
     */
    public set rowSelectorTemplate(value: IgcRenderFunction<IgcRowSelectorTemplateContext>);
          public get rowSelectorTemplate(): IgcRenderFunction<IgcRowSelectorTemplateContext>;
  
          

    /**
     * The custom template, if any, that should be used when rendering the row drag indicator icon
     */
    public set dragIndicatorIconTemplate(value: IgcRenderFunction<IgcGridEmptyTemplateContext>);
          public get dragIndicatorIconTemplate(): IgcRenderFunction<IgcGridEmptyTemplateContext>;
  
          

    /* mustSetInCodePlatforms: WebComponents;Blazor;React */
    /**
     * Gets/Sets the sorting state.
     *
     * @remarks
     * Supports two-way data binding.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [autoGenerate]="true" [(sortingExpressions)]="model.sortingExpressions"></igx-grid>
     * ```
     */
    public set sortingExpressions(value: IgcSortingExpression[]);
          public get sortingExpressions(): IgcSortingExpression[];
  
                

    /**
     * Gets the number of hidden columns.
     *
     * @example
     * ```typescript
     * const hiddenCol = this.grid.hiddenColumnsCount;
     * ``
     */
    public get hiddenColumnsCount(): number;
        
                

    /**
     * Gets the number of pinned columns.
     */
    public get pinnedColumnsCount(): number;
        
          

    /**
     * Gets/Sets whether the grid has batch editing enabled.
     * When batch editing is enabled, changes are not made directly to the underlying data.
     * Instead, they are stored as transactions, which can later be committed w/ the `commit` method.
     *
     * @example
     * ```html
     * <igx-grid [batchEditing]="true" [data]="someData">
     * </igx-grid>
     * ```
     */
    public set batchEditing(value: boolean);
          public get batchEditing(): boolean;
  
          

    /**
     * Gets/Sets cell selection mode.
     *
     * @remarks
     * By default the cell selection mode is multiple
     * @param selectionMode: GridSelectionMode
     */
    public set cellSelection(value: GridSelectionMode);
          public get cellSelection(): GridSelectionMode;
  
          

    /**
     * Gets/Sets row selection mode
     *
     * @remarks
     * By default the row selection mode is 'none'
     * Note that in IgxGrid and IgxHierarchicalGrid 'multipleCascade' behaves like 'multiple'
     */
    public set rowSelection(value: GridSelectionMode);
          public get rowSelection(): GridSelectionMode;
  
          

    /**
     * Gets/Sets column selection mode
     *
     * @remarks
     * By default the row selection mode is none
     * @param selectionMode: GridSelectionMode
     */
    public set columnSelection(value: GridSelectionMode);
          public get columnSelection(): GridSelectionMode;
  
                

    /**
     * Represents the last search information.
     */
    public get lastSearchInfo(): IgcSearchInfo;
        
                

    /**
     * Returns an array of objects containing the filtered data.
     *
     * @example
     * ```typescript
     * let filteredData = this.grid.filteredData;
     * ```
     */
    public get filteredData(): any;
        
                

    /**
     * Returns an array containing the filtered sorted data.
     *
     * @example
     * ```typescript
     * const filteredSortedData = this.grid1.filteredSortedData;
     * ```
     */
    public get filteredSortedData(): any[];
        
                

    /**
     * Returns the state of the grid virtualization.
     *
     * @remarks
     * Includes the start index and how many records are rendered.
     * @example
     * ```typescript
     * const gridVirtState = this.grid1.virtualizationState;
     * ```
     */
    public get virtualizationState(): IgcForOfState;
        
          

    /**
     * Gets/Sets the outlet used to attach the grid's overlays to.
     *
     * @remarks
     * If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.
     */
    public set outlet(value: IgcOverlayOutletDirective);
          public get outlet(): IgcOverlayOutletDirective;
  
                


    /**
     * Gets the default row height.
     *
     * @example
     * ```typescript
     * const rowHeigh = this.grid.defaultRowHeight;
     * ```
     */
    public get defaultRowHeight(): number;
        
                

    /**
     * Returns the `IgxGridHeaderGroupComponent`'s minimum allowed width.
     *
     * @remarks
     * Used internally for restricting header group component width.
     * The values below depend on the header cell default right/left padding values.
     */
    public get defaultHeaderGroupMinWidth(): number;
        
                

    /**
     * Gets an array of `IgxColumnComponent`s.
     *
     * @example
     * ```typescript
     * const colums = this.grid.columns.
     * ```
     */
    public get columns(): IgcColumnComponent[];
        
                

    /**
     * Gets an array of the pinned `IgxColumnComponent`s.
     *
     * @example
     * ```typescript
     * const pinnedColumns = this.grid.pinnedColumns.
     * ```
     */
    public get pinnedColumns(): IgcColumnComponent[];
        
                

    /* csSuppress */
    /**
     * Gets an array of the pinned `IgxRowComponent`s.
     *
     * @example
     * ```typescript
     * const pinnedRow = this.grid.pinnedRows;
     * ```
     */
    public get pinnedRows(): IgcGridRowComponent[];
        
                

    /**
     * Gets an array of unpinned `IgxColumnComponent`s.
     *
     * @example
     * ```typescript
     * const unpinnedColumns = this.grid.unpinnedColumns.
     * ```
     */
    public get unpinnedColumns(): IgcColumnComponent[];
        
                

    /**
     * Returns an array of visible `IgxColumnComponent`s.
     *
     * @example
     * ```typescript
     * const visibleColumns = this.grid.visibleColumns.
     * ```
     */
    public get visibleColumns(): IgcColumnComponent[];
        
          

    /**
     * Returns the total number of records.
     *
     * @remarks
     * Only functions when paging is enabled.
     * @example
     * ```typescript
     * const totalRecords = this.grid.totalRecords;
     * ```
     */
    public set totalRecords(value: number);
          public get totalRecords(): number;
  
                

    /**
     * Returns the currently transformed paged/filtered/sorted/grouped/pinned/unpinned row data, displayed in the grid.
     *
     * @example
     * ```typescript
     *      const dataView = this.grid.dataView;
     * ```
     */
    public get dataView(): any[];
        
          

    /**
     * Gets/Sets whether clicking over a row should select/deselect it
     *
     * @remarks
     * By default it is set to true
     * @param enabled: boolean
     */
    public set selectRowOnClick(value: boolean);
          public get selectRowOnClick(): boolean;
  
            

    /**
     * Returns whether the record is pinned or not.
     *
     * @param rowIndex Index of the record in the `filteredSortedData` collection.
     */
    public isRecordPinnedByIndex(rowIndex: number): void;

            

    /**
     * Toggles the specified column's visibility.
     *
     * @example
     * ```typescript
     * this.grid1.toggleColumnVisibility({
     *       column: this.grid1.columns[0],
     *       newValue: true
     * });
     * ```
     */
    public toggleColumnVisibility(args: IgcColumnVisibilityChangedEventArgs): void;

            

    /**
     * Expands all rows.
     *
     * @example
     * ```typescript
     * this.grid.expandAll();
     * ```
     */
    public expandAll(): void;

            

    /**
     * Collapses all rows.
     *
     * @example
     * ```typescript
     * this.grid.collapseAll();
     * ```
     */
    public collapseAll(): void;

            

    /**
     * Expands the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.expandRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     */
    public expandRow(rowID: any): void;

            

    /**
     * Collapses the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.collapseRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     */
    public collapseRow(rowID: any): void;

            


    /**
     * Toggles the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.toggleRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     */
    public toggleRow(rowID: any): void;

            

    /**
     * Gets the `width` to be set on `IgxGridHeaderGroupComponent`.
     */
    public getHeaderGroupWidth(column: IgcColumnComponent): string;

            

    /**
     * Returns the `IgxColumnComponent` by field name.
     *
     * @example
     * ```typescript
     * const myCol = this.grid1.getColumnByName("ID");
     * ```
     * @param name
     */
    public getColumnByName(name: string): IgcColumnComponent;

            

    public getColumnByVisibleIndex(index: number): IgcColumnComponent;

            

    /**
     * Recalculates all widths of columns that have size set to `auto`.
     *
     * @example
     * ```typescript
     * this.grid1.recalculateAutoSizes();
     * ```
     */
    public recalculateAutoSizes(): void;

            

    /**
     * Places a column before or after the specified target column.
     *
     * @example
     * ```typescript
     * grid.moveColumn(column, target);
     * ```
     */
    public moveColumn(column: IgcColumnComponent, target: IgcColumnComponent, pos?: DropPosition): void;

            

    /**
     * Triggers change detection for the `IgxGridComponent`.
     * Calling markForCheck also triggers the grid pipes explicitly, resulting in all updates being processed.
     * May degrade performance if used when not needed, or if misused:
     * ```typescript
     * // DON'Ts:
     * // don't call markForCheck from inside a loop
     * // don't call markForCheck when a primitive has changed
     * grid.data.forEach(rec => {
     *  rec = newValue;
     *  grid.markForCheck();
     * });
     *
     * // DOs
     * // call markForCheck after updating a nested property
     * grid.data.forEach(rec => {
     *  rec.nestedProp1.nestedProp2 = newValue;
     * });
     * grid.markForCheck();
     * ```
     *
     * @example
     * ```typescript
     * grid.markForCheck();
     * ```
     */
    public markForCheck(): void;

            

    /* csSuppress */
    /**
     * Creates a new `IgxGridRowComponent` and adds the data record to the end of the data source.
     *
     * @example
     * ```typescript
     * this.grid1.addRow(record);
     * ```
     * @param data
     */
    public addRow(data: any): void;

            

    /* blazorCSSuppress */
    /**
     * Removes the `IgxGridRowComponent` and the corresponding data record by primary key.
     *
     * @remarks
     * Requires that the `primaryKey` property is set.
     * The method accept rowSelector as a parameter, which is the rowID.
     * @example
     * ```typescript
     * this.grid1.deleteRow(0);
     * ```
     * @param rowSelector
     */
    public deleteRow(rowSelector: any): any;

            

    /* blazorCSSuppress */
    /**
     * Updates the `IgxGridRowComponent` and the corresponding data record by primary key.
     *
     * @remarks
     * Requires that the `primaryKey` property is set.
     * @example
     * ```typescript
     * this.gridWithPK.updateCell('Updated', 1, 'ProductName');
     * ```
     * @param value the new value which is to be set.
     * @param rowSelector corresponds to rowID.
     * @param column corresponds to column field.
     */
    public updateCell(value: any, rowSelector: any, column: string): void;

            

    /* blazorCSSuppress */
    /**
     * Updates the `IgxGridRowComponent`
     *
     * @remarks
     * The row is specified by
     * rowSelector parameter and the data source record with the passed value.
     * This method will apply requested update only if primary key is specified in the grid.
     * @example
     * ```typescript
     * grid.updateRow({
     *       ProductID: 1, ProductName: 'Spearmint', InStock: true, UnitsInStock: 1, OrderDate: new Date('2005-03-21')
     *   }, 1);
     * ```
     * @param value–
     * @param rowSelector correspond to rowID
     */
    // TODO: prevent event invocation
    public updateRow(value: any, rowSelector: any): void;

            

    /**
     * Returns the data that is contained in the row component.
     *
     * @remarks
     * If the primary key is not specified the row selector match the row data.
     * @example
     * ```typescript
     * const data = grid.getRowData(94741);
     * ```
     * @param rowSelector correspond to rowID
     */
    public getRowData(rowSelector: any): any;

            

    /**
     * Sort a single `IgxColumnComponent`.
     *
     * @remarks
     * Sort the `IgxGridComponent`'s `IgxColumnComponent` based on the provided array of sorting expressions.
     * @example
     * ```typescript
     * this.grid.sort({ fieldName: name, dir: SortingDirection.Asc, ignoreCase: false });
     * ```
     */
    public sort(expression: IgcSortingExpression[]): void;

            

    /**
     * Filters a single `IgxColumnComponent`.
     *
     * @example
     * ```typescript
     * public filter(term) {
     *      this.grid.filter("ProductName", term, IgxStringFilteringOperand.instance().condition("contains"));
     * }
     * ```
     * @param name
     * @param value
     * @param conditionOrExpressionTree
     * @param ignoreCase
     */
    public filter(name: string, value: any, conditionOrExpressionTree?: IgcFilteringExpressionsTree | IgcFilteringOperation, ignoreCase?: boolean): void;

            

    /**
     * Filters all the `IgxColumnComponent` in the `IgxGridComponent` with the same condition.
     *
     * @example
     * ```typescript
     * grid.filterGlobal('some', IgxStringFilteringOperand.instance().condition('contains'));
     * ```
     * @param value
     * @param condition
     * @param ignoreCase
     * @deprecated 
     */
    public filterGlobal(value: any, condition: any, ignoreCase?: any): void;

            

    /**
     * Enables summaries for the specified column and applies your customSummary.
     *
     * @remarks
     * If you do not provide the customSummary, then the default summary for the column data type will be applied.
     * @example
     * ```typescript
     * grid.enableSummaries([{ fieldName: 'ProductName' }, { fieldName: 'ID' }]);
     * ```
     * Enable summaries for the listed columns.
     * @example
     * ```typescript
     * grid.enableSummaries('ProductName');
     * ```
     * @param rest
     */
    public enableSummaries(rest: any[]): void;

            

    /**
     * Disable summaries for the specified column.
     *
     * @example
     * ```typescript
     * grid.disableSummaries('ProductName');
     * ```
     * @remarks
     * Disable summaries for the listed columns.
     * @example
     * ```typescript
     * grid.disableSummaries([{ fieldName: 'ProductName' }]);
     * ```
     */
    public disableSummaries(rest: any[]): void;

            

    /**
     * If name is provided, clears the filtering state of the corresponding `IgxColumnComponent`.
     *
     * @remarks
     * Otherwise clears the filtering state of all `IgxColumnComponent`s.
     * @example
     * ```typescript
     * this.grid.clearFilter();
     * ```
     * @param name
     */
    public clearFilter(name?: string): void;

            

    /**
     * If name is provided, clears the sorting state of the corresponding `IgxColumnComponent`.
     *
     * @remarks
     * otherwise clears the sorting state of all `IgxColumnComponent`.
     * @example
     * ```typescript
     * this.grid.clearSort();
     * ```
     * @param name
     */
    public clearSort(name?: string): void;

            

    // TODO: We have return values here. Move them to event args ??

    /**
     * Pins a column by field name.
     *
     * @remarks
     * Returns whether the operation is successful.
     * @example
     * ```typescript
     * this.grid.pinColumn("ID");
     * ```
     * @param columnName
     * @param index
     */
    public pinColumn(columnName: string, index?: number): boolean;

            

    /**
     * Unpins a column by field name. Returns whether the operation is successful.
     *
     * @example
     * ```typescript
     * this.grid.pinColumn("ID");
     * ```
     * @param columnName
     * @param index
     */
    public unpinColumn(columnName: string, index?: number): boolean;

            

    /* csSuppress */
    /**
     * Pin the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.pinRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     * @param index The index at which to insert the row in the pinned collection.
     */
    public pinRow(rowID: any, index?: number, row?: IgcRowType): boolean;

            

    /* csSuppress */
    /**
     * Unpin the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.unpinRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     */
    public unpinRow(rowID: any, row?: IgcRowType): boolean;

            

    /**
     * Recalculates grid width/height dimensions.
     *
     * @remarks
     * Should be run when changing DOM elements dimentions manually that affect the grid's size.
     * @example
     * ```typescript
     * this.grid.reflow();
     * ```
     */
    public reflow(): void;

            

    /**
     * Finds the next occurrence of a given string in the grid and scrolls to the cell if it isn't visible.
     *
     * @remarks
     * Returns how many times the grid contains the string.
     * @example
     * ```typescript
     * this.grid.findNext("financial");
     * ```
     * @param text the string to search.
     * @param caseSensitive optionally, if the search should be case sensitive (defaults to false).
     * @param exactMatch optionally, if the text should match the entire value  (defaults to false).
     */
    public findNext(text: string, caseSensitive?: boolean, exactMatch?: boolean): number;

            

    /**
     * Finds the previous occurrence of a given string in the grid and scrolls to the cell if it isn't visible.
     *
     * @remarks
     * Returns how many times the grid contains the string.
     * @example
     * ```typescript
     * this.grid.findPrev("financial");
     * ```
     * @param text the string to search.
     * @param caseSensitive optionally, if the search should be case sensitive (defaults to false).
     * @param exactMatch optionally, if the text should match the entire value (defaults to false).
     */
    public findPrev(text: string, caseSensitive?: boolean, exactMatch?: boolean): number;

            

    /**
     * Reapplies the existing search.
     *
     * @remarks
     * Returns how many times the grid contains the last search.
     * @example
     * ```typescript
     * this.grid.refreshSearch();
     * ```
     * @param updateActiveInfo
     */
    public refreshSearch(updateActiveInfo?: boolean, endEdit?: boolean): number;

            

    /**
     * Removes all the highlights in the cell.
     *
     * @example
     * ```typescript
     * this.grid.clearSearch();
     * ```
     */
    public clearSearch(): void;

            

    /**
     * Gets calculated width of the pinned area.
     *
     * @example
     * ```typescript
     * const pinnedWidth = this.grid.getPinnedWidth();
     * ```
     * @param takeHidden If we should take into account the hidden columns in the pinned area.
     */
    public getPinnedWidth(takeHidden?: boolean): void;

            

    /**
     * Select specified rows by ID.
     *
     * @example
     * ```typescript
     * this.grid.selectRows([1,2,5], true);
     * ```
     * @param rowIDs
     * @param clearCurrentSelection if true clears the current selection
     */
    public selectRows(rowIDs: any[], clearCurrentSelection?: boolean): void;

            

    /**
     * Deselect specified rows by ID.
     *
     * @example
     * ```typescript
     * this.grid.deselectRows([1,2,5]);
     * ```
     * @param rowIDs
     */
    public deselectRows(rowIDs: any[]): void;

            

    /**
     * Selects all rows
     *
     * @remarks
     * By default if filtering is in place, selectAllRows() and deselectAllRows() select/deselect all filtered rows.
     * If you set the parameter onlyFilterData to false that will select all rows in the grid exept deleted rows.
     * @example
     * ```typescript
     * this.grid.selectAllRows();
     * this.grid.selectAllRows(false);
     * ```
     * @param onlyFilterData
     */
    public selectAllRows(onlyFilterData?: boolean): void;

            

    /**
     * Deselects all rows
     *
     * @remarks
     * By default if filtering is in place, selectAllRows() and deselectAllRows() select/deselect all filtered rows.
     * If you set the parameter onlyFilterData to false that will deselect all rows in the grid exept deleted rows.
     * @example
     * ```typescript
     * this.grid.deselectAllRows();
     * ```
     * @param onlyFilterData
     */
    public deselectAllRows(onlyFilterData?: boolean): void;

            

    /**
     * Deselect selected cells.
     * @example
     * ```typescript
     * this.grid.clearCellSelection();
     * ```
     */
    public clearCellSelection(): void;

            

    /**
     * Select range(s) of cells between certain rows and columns of the grid.
     */
    public selectRange(arg: IgcGridSelectionRange[]): void;

            

    /**
     * Get the currently selected ranges in the grid.
     */
    public getSelectedRanges(): IgcGridSelectionRange[];

            

    /**
     *
     * Returns an array of the current cell selection in the form of `[{ column.field: cell.value }, ...]`.
     *
     * @remarks
     * If `formatters` is enabled, the cell value will be formatted by its respective column formatter (if any).
     * If `headers` is enabled, it will use the column header (if any) instead of the column field.
     */
    public getSelectedData(formatters?: boolean, headers?: boolean): void;

            

    /**
     * Get current selected columns.
     *
     * @example
     * Returns an array with selected columns
     * ```typescript
     * const selectedColumns = this.grid.selectedColumns();
     * ```
     */
    public selectedColumns(): IgcColumnComponent[];

            

    /**
     * Select specified columns.
     *
     * @example
     * ```typescript
     * this.grid.selectColumns(['ID','Name'], true);
     * ```
     * @param columns
     * @param clearCurrentSelection if true clears the current selection
     */
    public selectColumns(columns: string[] | IgcColumnComponent[], clearCurrentSelection?: boolean): void;

            

    /**
     * Deselect specified columns by field.
     *
     * @example
     * ```typescript
     * this.grid.deselectColumns(['ID','Name']);
     * ```
     * @param columns
     */
    public deselectColumns(columns: string[] | IgcColumnComponent[]): void;

            

    /**
     * Deselects all columns
     *
     * @example
     * ```typescript
     * this.grid.deselectAllColumns();
     * ```
     */
    public deselectAllColumns(): void;

            

    /**
     * Selects all columns
     *
     * @example
     * ```typescript
     * this.grid.deselectAllColumns();
     * ```
     */
    public selectAllColumns(): void;

            

    /**
     *
     * Returns an array of the current columns selection in the form of `[{ column.field: cell.value }, ...]`.
     *
     * @remarks
     * If `formatters` is enabled, the cell value will be formatted by its respective column formatter (if any).
     * If `headers` is enabled, it will use the column header (if any) instead of the column field.
     */
    public getSelectedColumnsData(formatters?: boolean, headers?: boolean): void;

            

    /* blazorCsSuppress */
    /**
     * Navigates to a position in the grid based on provided `rowindex` and `visibleColumnIndex`.
     *
     * @remarks
     * Also can execute a custom logic over the target element,
     * through a callback function that accepts { targetType: GridKeydownTargetType, target: Object }
     * @example
     * ```typescript
     *  this.grid.navigateTo(10, 3, (args) => { args.target.nativeElement.focus(); });
     * ```
     */
    public navigateTo(rowIndex: number, visibleColIndex?: number, cb?: any): void;

            

    /* blazorCsSuppress */
    /**
     * Returns `ICellPosition` which defines the next cell,
     * according to the current position, that match specific criteria.
     *
     * @remarks
     * You can pass callback function as a third parameter of `getPreviousCell` method.
     * The callback function accepts IgxColumnComponent as a param
     * @example
     * ```typescript
     *  const nextEditableCellPosition = this.grid.getNextCell(0, 3, (column) => column.editable);
     * ```
     */
    public getNextCell(currRowIndex: number, curVisibleColIndex: number, callback?: any): IgcCellPosition;

            

    /* blazorCsSuppress */
    /**
     * Returns `ICellPosition` which defines the previous cell,
     * according to the current position, that match specific criteria.
     *
     * @remarks
     * You can pass callback function as a third parameter of `getPreviousCell` method.
     * The callback function accepts IgxColumnComponent as a param
     * @example
     * ```typescript
     *  const previousEditableCellPosition = this.grid.getPreviousCell(0, 3, (column) => column.editable);
     * ```
     */
    public getPreviousCell(currRowIndex: number, curVisibleColIndex: number, callback?: any): IgcCellPosition;

            

    /**
     * Opens the advanced filtering dialog.
     */
    public openAdvancedFilteringDialog(overlaySettings?: IgcOverlaySettings): void;

            

    /**
     * Closes the advanced filtering dialog.
     *
     * @param applyChanges indicates whether the changes should be applied
     */
    public closeAdvancedFilteringDialog(applyChanges: boolean): void;

            

    /**
     * Finishes the row transactions on the current row and returns whether the grid editing was canceled.
     *
     * @remarks
     * If `commit === true`, passes them from the pending state to the data (or transaction service)
     * @example
     * ```html
     * <button type="button" igxButton (click)="grid.endEdit(true)">Commit Row</button>
     * ```
     * @param commit
     */
    // TODO: Facade for crud service refactoring. To be removed
    // TODO: do not remove this, as it is used in rowEditTemplate, but mark is as internal and hidden
    /* blazorCSSuppress */
    public endEdit(commit?: boolean, evt?: any): boolean;

            

    /**
     * Enters add mode by spawning the UI under the specified row by rowID.
     *
     * @remarks
     * If null is passed as rowID, the row adding UI is spawned as the first record in the data view
     * @remarks
     * Spawning the UI to add a child for a record only works if you provide a rowID
     * @example
     * ```typescript
     * this.grid.beginAddRowById('ALFKI');
     * this.grid.beginAddRowById('ALFKI', true);
     * this.grid.beginAddRowById(null);
     * ```
     * @param rowID - The rowID to spawn the add row UI for, or null to spawn it as the first record in the data view
     * @param asChild - Whether the record should be added as a child. Only applicable to igxTreeGrid.
     */
    public beginAddRowById(rowID: any, asChild?: boolean): void;

            

    /* csSuppress */
    /**
     * Enters add mode by spawning the UI at the specified index.
     *
     * @remarks
     * Accepted values for index are integers from 0 to this.grid.dataView.length
     * @example
     * ```typescript
     * this.grid.beginAddRowByIndex(0);
     * ```
     * @param index - The index to spawn the UI at. Accepts integers from 0 to this.grid.dataView.length
     */
    public beginAddRowByIndex(index: number): void;

    }

export declare interface IgcGridBaseDirectiveEventMap {
            
        		    /**
		     * Emitted after filtering is performed.
		     *
		     * @remarks
		     * Returns the filtering expressions tree of the column for which filtering was performed.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
		     *              (filteringExpressionsTreeChange)="filteringExprTreeChange($event)"></igx-grid>
		     * ```
		     */
filteringExpressionsTreeChange: CustomEvent<IgcFilteringExpressionsTree>;

        		    /**
		     * Emitted after advanced filtering is performed.
		     *
		     * @remarks
		     * Returns the advanced filtering expressions tree.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
		     *           (advancedFilteringExpressionsTreeChange)="advancedFilteringExprTreeChange($event)"></igx-grid>
		     * ```
		     */
advancedFilteringExpressionsTreeChange: CustomEvent<IgcFilteringExpressionsTree>;

        		    /**
		     * Emitted when grid is scrolled horizontally/vertically.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
		     *              (gridScroll)="onScroll($event)"></igx-grid>
		     * ```
		     */
gridScroll: CustomEvent<IgcGridScrollEventArgs>;

        		    /**
		     * Emitted when a cell is clicked.
		     *
		     * @remarks
		     * Returns the `IgxGridCell`.
		     * @example
		     * ```html
		     * <igx-grid #grid (cellClick)="cellClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
cellClick: CustomEvent<IgcGridCellEventArgs>;

        		    /**
		     * Emitted when a row is clicked.
		     *
		     * @remarks
		     * Returns the `IgxGridRow`.
		     * @example
		     * ```html
		     * <igx-grid #grid (rowClick)="rowClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowClick: CustomEvent<IgcGridRowEventArgs>;

        		    /**
		     * Emitted when formGroup is created on edit of row/cell.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid (formGroupCreated)="formGroupCreated($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
formGroupCreated: CustomEvent<IgcGridFormGroupCreatedEventArgs>;

        		    /**
		     * Emitted when grid's validation status changes.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid (validationStatusChange)="validationStatusChange($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
validationStatusChange: CustomEvent<IgcGridValidationStatusEventArgs>;

        		    /**
		     * Emitted when a cell is selected.
		     *
		     * @remarks
		     *  Returns the `IgxGridCell`.
		     * @example
		     * ```html
		     * <igx-grid #grid (selected)="onCellSelect($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
selected: CustomEvent<IgcGridCellEventArgs>;

        		    /**
		     *  Emitted when `IgxGridRowComponent` is selected.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid (rowSelectionChanging)="rowSelectionChanging($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowSelectionChanging: CustomEvent<IgcRowSelectionEventArgs>;

        		    /**
		     *  Emitted when `IgxColumnComponent` is selected.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid (columnSelectionChanging)="columnSelectionChanging($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
columnSelectionChanging: CustomEvent<IgcColumnSelectionEventArgs>;

        		    /**
		     * Emitted before `IgxColumnComponent` is pinned.
		     *
		     * @remarks
		     * The index at which to insert the column may be changed through the `insertAtIndex` property.
		     * @example
		     * ```typescript
		     * public columnPinning(event) {
		     *     if (event.column.field === "Name") {
		     *       event.insertAtIndex = 0;
		     *     }
		     * }
		     * ```
		     */
columnPin: CustomEvent<IgcPinColumnCancellableEventArgs>;

        		    /**
		     * Emitted after `IgxColumnComponent` is pinned.
		     *
		     * @remarks
		     * The index that the column is inserted at may be changed through the `insertAtIndex` property.
		     * @example
		     * ```typescript
		     * public columnPinning(event) {
		     *     if (event.column.field === "Name") {
		     *       event.insertAtIndex = 0;
		     *     }
		     * }
		     * ```
		     */
columnPinned: CustomEvent<IgcPinColumnEventArgs>;

        		    /**
		     * Emitted when cell enters edit mode.
		     *
		     * @remarks
		     * This event is cancelable.
		     * @example
		     * ```html
		     * <igx-grid #grid3 (cellEditEnter)="editStart($event)" [data]="data" [primaryKey]="'ProductID'">
		     * </igx-grid>
		     * ```
		     */
cellEditEnter: CustomEvent<IgcGridEditEventArgs>;

        		    /**
		     * Emitted when cell exits edit mode.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid3 (cellEditExit)="editExit($event)" [data]="data" [primaryKey]="'ProductID'">
		     * </igx-grid>
		     * ```
		     */
cellEditExit: CustomEvent<IgcGridEditDoneEventArgs>;

        		    /**
		     * Emitted when cell has been edited.
		     *
		     * @remarks
		     * Event is fired after editing is completed, when the cell is exiting edit mode.
		     * This event is cancelable.
		     * @example
		     * ```html
		     * <igx-grid #grid3 (cellEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
		     * </igx-grid>
		     * ```
		     */
cellEdit: CustomEvent<IgcGridEditEventArgs>;

        		    /* blazorCSSuppress */
		    /**
		     * Emitted after cell has been edited and editing has been committed.
		     *
		     * @example
		     * ```html
		     * <igx-grid #grid3 (cellEditDone)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
		     * </igx-grid>
		     * ```
		     */
cellEditDone: CustomEvent<IgcGridEditDoneEventArgs>;

        		    /**
		     * Emitted when a row enters edit mode.
		     *
		     * @remarks
		     * Emitted when [rowEditable]="true".
		     * This event is cancelable.
		     * @example
		     * ```html
		     * <igx-grid #grid3 (rowEditEnter)="editStart($event)" [primaryKey]="'ProductID'" [rowEditable]="true">
		     * </igx-grid>
		     * ```
		     */
rowEditEnter: CustomEvent<IgcGridEditEventArgs>;

        		    /**
		     * Emitted when exiting edit mode for a row.
		     *
		     * @remarks
		     * Emitted when [rowEditable]="true" & `endEdit(true)` is called.
		     * Emitted when changing rows during edit mode, selecting an un-editable cell in the edited row,
		     * performing paging operation, column resizing, pinning, moving or hitting `Done`
		     * button inside of the rowEditingOverlay, or hitting the `Enter` key while editing a cell.
		     * This event is cancelable.
		     * @example
		     * ```html
		     * <igx-grid #grid3 (rowEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
		     * </igx-grid>
		     * ```
		     */
rowEdit: CustomEvent<IgcGridEditEventArgs>;

        		    /**
		     * Emitted after exiting edit mode for a row and editing has been committed.
		     *
		     * @remarks
		     * Emitted when [rowEditable]="true" & `endEdit(true)` is called.
		     * Emitted when changing rows during edit mode, selecting an un-editable cell in the edited row,
		     * performing paging operation, column resizing, pinning, moving or hitting `Done`
		     * button inside of the rowEditingOverlay, or hitting the `Enter` key while editing a cell.
		     * @example
		     * ```html
		     * <igx-grid #grid3 (rowEditDone)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
		     * </igx-grid>
		     * ```
		     */
rowEditDone: CustomEvent<IgcGridEditDoneEventArgs>;

        		    /**
		     * Emitted when row editing is canceled.
		     *
		     * @remarks
		     * Emits when [rowEditable]="true" & `endEdit(false)` is called.
		     * Emitted when changing hitting `Esc` key during cell editing and when click on the `Cancel` button
		     * in the row editing overlay.
		     * @example
		     * ```html
		     * <igx-grid #grid3 (rowEditExit)="editExit($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
		     * </igx-grid>
		     * ```
		     */
rowEditExit: CustomEvent<IgcGridEditDoneEventArgs>;

        		    /**
		     * Emitted when a column is initialized.
		     *
		     * @remarks
		     * Returns the column object.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (columnInit)="initColumns($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
columnInit: CustomEvent<IgcColumnComponent>;

        		    /* blazorInclude */
		    /**
		     * @hidden @internal
		     */
columnsAutogenerated: CustomEvent<IgcColumnsAutoGeneratedEventArgs>;

        		    /**
		     * Emitted before sorting expressions are applied.
		     *
		     * @remarks
		     * Returns an `ISortingEventArgs` object. `sortingExpressions` key holds the sorting expressions.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (sorting)="sorting($event)"></igx-grid>
		     * ```
		     */
sorting: CustomEvent<IgcSortingEventArgs>;

        		    /**
		     * Emitted after sorting is completed.
		     *
		     * @remarks
		     * Returns the sorting expression.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingDone)="sortingDone($event)"></igx-grid>
		     * ```
		     */
sortingDone: CustomEvent<IgcSortingExpression[]>;

        		    /**
		     * Emitted before filtering expressions are applied.
		     *
		     * @remarks
		     * Returns an `IFilteringEventArgs` object. `filteringExpressions` key holds the filtering expressions for the column.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (filtering)="filtering($event)"></igx-grid>
		     * ```
		     */
filtering: CustomEvent<IgcFilteringEventArgs>;

        		    /**
		     * Emitted after filtering is performed through the UI.
		     *
		     * @remarks
		     * Returns the filtering expressions tree of the column for which filtering was performed.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (filteringDone)="filteringDone($event)"></igx-grid>
		     * ```
		     */
filteringDone: CustomEvent<IgcFilteringExpressionsTree>;

        		    /* blazorCSSuppress */
		    /**
		     * Emitted when a row is added.
		     *
		     * @remarks
		     * Returns the data for the new `IgxGridRowComponent` object.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (rowAdded)="rowAdded($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowAdded: CustomEvent<IgcRowDataEventArgs>;

        		    /* blazorCSSuppress */
		    /**
		     * Emitted when a row is deleted.
		     *
		     * @remarks
		     * Returns an `IRowDataEventArgs` object.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (rowDeleted)="rowDeleted($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowDeleted: CustomEvent<IgcRowDataEventArgs>;

        		    /**
		     * Emmited when deleting a row.
		     *
		     * @remarks
		     * This event is cancelable.
		     * Returns an IRowDataCancellableEventArgs` object.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (rowDelete)="rowDelete($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowDelete: CustomEvent<IgcRowDataCancelableEventArgs>;

        		    /**
		     * Emmited just before the newly added row is commited.
		     *
		     * @remarks
		     * This event is cancelable.
		     * Returns an IRowDataCancellableEventArgs` object.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (rowAdd)="rowAdd($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowAdd: CustomEvent<IgcRowDataCancelableEventArgs>;

        		    /**
		     * Emitted after column is resized.
		     *
		     * @remarks
		     * Returns the `IgxColumnComponent` object's old and new width.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (columnResized)="resizing($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
columnResized: CustomEvent<IgcColumnResizeEventArgs>;

        		    /**
		     * Emitted when a cell or row is right clicked.
		     *
		     * @remarks
		     * Returns the `IgxGridCell` object if the immediate context menu target is a cell or an `IgxGridRow` otherwise.
		     * ```html
		     * <igx-grid #grid [data]="localData" (contextMenu)="contextMenu($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
contextMenu: CustomEvent<IgcGridContextMenuEventArgs>;

        		    /**
		     * Emitted when a cell is double clicked.
		     *
		     * @remarks
		     * Returns the `IgxGridCell` object.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" (doubleClick)="dblClick($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
doubleClick: CustomEvent<IgcGridCellEventArgs>;

        		    /**
		     * Emitted before column visibility is changed.
		     *
		     * @remarks
		     * Args: { column: any, newValue: boolean }
		     * @example
		     * ```html
		     * <igx-grid (columnVisibilityChanging)="visibilityChanging($event)"></igx-grid>
		     * ```
		     */
columnVisibilityChanging: CustomEvent<IgcColumnVisibilityChangingEventArgs>;

        		    /**
		     * Emitted after column visibility is changed.
		     *
		     * @remarks
		     * Args: { column: IgxColumnComponent, newValue: boolean }
		     * @example
		     * ```html
		     * <igx-grid (columnVisibilityChanged)="visibilityChanged($event)"></igx-grid>
		     * ```
		     */
columnVisibilityChanged: CustomEvent<IgcColumnVisibilityChangedEventArgs>;

        		    /**
		     * Emitted when column moving starts.
		     *
		     * @remarks
		     * Returns the moved `IgxColumnComponent` object.
		     * @example
		     * ```html
		     * <igx-grid (columnMovingStart)="movingStart($event)"></igx-grid>
		     * ```
		     */
columnMovingStart: CustomEvent<IgcColumnMovingStartEventArgs>;

        		    /**
		     * Emitted during the column moving operation.
		     *
		     * @remarks
		     * Returns the source and target `IgxColumnComponent` objects. This event is cancelable.
		     * @example
		     * ```html
		     * <igx-grid (columnMoving)="moving($event)"></igx-grid>
		     * ```
		     */
columnMoving: CustomEvent<IgcColumnMovingEventArgs>;

        		    /**
		     * Emitted when column moving ends.
		     *
		     * @remarks
		     * Returns the source and target `IgxColumnComponent` objects.
		     * @example
		     * ```html
		     * <igx-grid (columnMovingEnd)="movingEnds($event)"></igx-grid>
		     * ```
		     */
columnMovingEnd: CustomEvent<IgcColumnMovingEndEventArgs>;

        		    /**
		     * Emitted when keydown is triggered over element inside grid's body.
		     *
		     * @remarks
		     * This event is fired only if the key combination is supported in the grid.
		     * Return the target type, target object and the original event. This event is cancelable.
		     * @example
		     * ```html
		     *  <igx-grid (gridKeydown)="customKeydown($event)"></igx-grid>
		     * ```
		     */
gridKeydown: CustomEvent<IgcGridKeydownEventArgs>;

        		    /**
		     * Emitted when start dragging a row.
		     *
		     * @remarks
		     * Return the dragged row.
		     */
rowDragStart: CustomEvent<IgcRowDragStartEventArgs>;

        		    /**
		     * Emitted when dropping a row.
		     *
		     * @remarks
		     * Return the dropped row.
		     */
rowDragEnd: CustomEvent<IgcRowDragEndEventArgs>;

        		    /**
		     * Emitted when a copy operation is executed.
		     *
		     * @remarks
		     * Fired only if copy behavior is enabled through the [`clipboardOptions`]{@link IgxGridBaseDirective#clipboardOptions}.
		     */
gridCopy: CustomEvent<IgcGridClipboardEvent>;

        		    /* blazorInclude */
		    /** @hidden @internal */
selectedRowsChange: CustomEvent<any[]>;

        		    /**
		     * Emitted when the expanded state of a row gets changed.
		     *
		     * @example
		     * ```html
		     * <igx-grid [data]="employeeData" (rowToggle)="rowToggle($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowToggle: CustomEvent<IgcRowToggleEventArgs>;

        		    /**
		     * Emitted when the pinned state of a row is changed.
		     *
		     * @example
		     * ```html
		     * <igx-grid [data]="employeeData" (rowPinning)="rowPin($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowPinning: CustomEvent<IgcPinRowEventArgs>;

        		    /**
		     * Emitted when the pinned state of a row is changed.
		     *
		     * @example
		     * ```html
		     * <igx-grid [data]="employeeData" (rowPinned)="rowPin($event)" [autoGenerate]="true"></igx-grid>
		     * ```
		     */
rowPinned: CustomEvent<IgcPinRowEventArgs>;

        		    /**
		     * Emmited when the active node is changed.
		     *
		     * @example
		     * ```
		     * <igx-grid [data]="data" [autoGenerate]="true" (activeNodeChange)="activeNodeChange($event)"></igx-grid>
		     * ```
		     */
activeNodeChange: CustomEvent<IgcActiveNodeChangeEventArgs>;

        		    /**
		     * Emitted before sorting is performed.
		     *
		     * @remarks
		     * Returns the sorting expressions.
		     * @example
		     * ```html
		     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingExpressionsChange)="sortingExprChange($event)"></igx-grid>
		     * ```
		     */
sortingExpressionsChange: CustomEvent<IgcSortingExpression[]>;

        		    /**
		     * Emitted when an export process is initiated by the user.
		     *
		     * @example
		     * ```typescript
		     * toolbarExporting(event: IGridToolbarExportEventArgs){
		     *     const toolbarExporting = event;
		     * }
		     * ```
		     */
toolbarExporting: CustomEvent<IgcGridToolbarExportEventArgs>;

        		    /* End of toolbar related definitions */
		    /**
		     * Emitted when making a range selection.
		     *
		     * @remarks
		     * Range selection can be made either through drag selection or through keyboard selection.
		     */
rangeSelected: CustomEvent<IgcGridSelectionRange>;

        		    /** Emitted after the ngAfterViewInit hook. At this point the grid exists in the DOM */
 rendered: CustomEvent;

        		    /**
		     * Emitted before the grid's data view is changed because of a data operation, rebinding, etc.
		     *
		     * @example
		     * ```typescript
		     *  <igx-grid #grid [data]="localData" [autoGenerate]="true" (dataChanging)='handleDataChangingEvent()'></igx-grid>
		     * ```
		     */
dataChanging: CustomEvent<IgcForOfDataChangingEventArgs>;

        		    /**
		     * Emitted after the grid's data view is changed because of a data operation, rebinding, etc.
		     *
		     * @example
		     * ```typescript
		     *  <igx-grid #grid [data]="localData" [autoGenerate]="true" (dataChanged)='handleDataChangedEvent()'></igx-grid>
		     * ```
		     */
 dataChanged: CustomEvent;

}
        