/**-----------------------------------------------------------------------------------------
* Copyright © 2023 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { SimpleChange, OnInit, OnDestroy, OnChanges, DoCheck, ChangeDetectorRef } from '@angular/core';
import { State, SortDescriptor, GroupDescriptor, CompositeFilterDescriptor } from '@progress/kendo-data-query';
import { GridComponent } from './grid.component';
import { DataStateChangeEvent } from './data/change-event-args.interface';
import { GridDataResult } from './data/data.collection';
import { LocalDataChangesService } from './editing/local-data-changes.service';
import { RowReorderEvent } from './row-reordering/types';
import { RowReorderService } from './row-reordering/row-reorder.service';
import * as i0 from "@angular/core";
/**
 * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),
 * [sorting]({% slug sorting_grid %}), and [grouping]({% slug grouping_grid %})
 * ([more information and examples]({% slug local_data_grid %}#toc-using-the-data-binding-directive)).
 *
 * @example
 * ```html
 * <kendo-grid [kendoGridBinding]="gridData" ...></kendo-grid>
 * ```
 */
export declare class DataBindingDirective implements OnInit, OnDestroy, DoCheck, OnChanges {
    protected grid: GridComponent;
    protected changeDetector?: ChangeDetectorRef;
    protected localDataChangesService?: LocalDataChangesService;
    private rowReorderService?;
    /**
     * Defines the number of records that will be skipped by the pager.
     * @default 0
     */
    set skip(value: number);
    /**
     * Defines the descriptors by which the data will be sorted.
     */
    set sort(value: SortDescriptor[]);
    /**
     * Defines the descriptor by which the data will be filtered.
     */
    set filter(value: CompositeFilterDescriptor);
    /**
     * Defines the page size used by the Grid pager.
     */
    set pageSize(value: number);
    /**
     * The descriptors by which the data will be grouped.
     */
    set group(value: GroupDescriptor[]);
    /**
     * The array of data which will be used to populate the Grid.
     */
    set data(value: any[]);
    protected state: State;
    protected originalData: any[];
    protected dataChanged: boolean;
    private stateChangeSubscription;
    private dataChangedSubscription;
    private rowReorderSubscription;
    constructor(grid: GridComponent, changeDetector?: ChangeDetectorRef, localDataChangesService?: LocalDataChangesService, rowReorderService?: RowReorderService);
    /**
     * @hidden
     */
    ngOnInit(): void;
    /**
     * @hidden
     */
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    ngOnChanges(changes: {
        [propertyName: string]: SimpleChange;
    }): void;
    ngDoCheck(): void;
    /**
     * @hidden
     */
    onStateChange(state: DataStateChangeEvent): void;
    /**
     * @hidden
     */
    onRowReorder(ev: RowReorderEvent): void;
    /**
     * @hidden
     */
    rebind(): void;
    /**
     * Notifies the Grid that its data has changed.
     */
    notifyDataChange(): void;
    protected process(state: State): GridDataResult;
    protected applyState({ skip, take, sort, group, filter }: State): void;
    protected updateGridData(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataBindingDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DataBindingDirective, "[kendoGridBinding]", never, { "skip": "skip"; "sort": "sort"; "filter": "filter"; "pageSize": "pageSize"; "group": "group"; "data": "kendoGridBinding"; }, {}, never>;
}