import { OnInit, EventEmitter, OnDestroy, AfterContentInit } from "@angular/core";
import { GridComponent, DataStateChangeEvent } from "@progress/kendo-angular-grid";
import { CompositeFilterDescriptor, SortDescriptor, GroupDescriptor } from "@progress/kendo-data-query";
import { IGridState } from "./GridState";
import { StorageService } from "./StorageService";
import * as i0 from "@angular/core";
export declare class GridStateDirective implements OnInit, OnDestroy, AfterContentInit {
    private grid;
    private storageService;
    /**tracks subscriptions*/
    private subs;
    /**tracks the expanded rows*/
    private _expandedRows;
    get expandedRows(): any[];
    set expandedRows(val: any[]);
    expandedRowsChange: EventEmitter<any[]>;
    /**Emitter for when persisted state is ready*/
    stateReady: EventEmitter<DataStateChangeEvent>;
    filter: CompositeFilterDescriptor;
    /**Emitter for when filter state is hydrated */
    filterChange: EventEmitter<CompositeFilterDescriptor>;
    /**gridState key: required*/
    gridState: string;
    sort: Array<SortDescriptor>;
    /**Emitter for when sort state is hydrated */
    sortChange: EventEmitter<Array<SortDescriptor>>;
    skip?: number;
    /**Emitter for when skip state is hydrated */
    skipChange: EventEmitter<number>;
    group?: Array<GroupDescriptor>;
    /**Emitter for when group state is hydrated */
    groupChange: EventEmitter<Array<GroupDescriptor>>;
    take?: number;
    /**Emitter for when take state is hydrated */
    takeChange: EventEmitter<number>;
    /**Session storage type: defaults to session */
    constructor(grid: GridComponent, storageService: StorageService);
    private expander;
    private get key();
    /**Gets the IGridState object from storage */
    get state(): IGridState;
    /**Sets the IGridState object to storage */
    set state(val: IGridState);
    get initState(): DataStateChangeEvent;
    ngOnInit(): void;
    private colMapper;
    ngAfterContentInit(): void;
    unload(e: any): void;
    private saveState;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<GridStateDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<GridStateDirective, "kendo-grid[gridState]", never, { "expandedRows": { "alias": "expandedRows"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "gridState": { "alias": "gridState"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "skip": { "alias": "skip"; "required": false; }; "group": { "alias": "group"; "required": false; }; "take": { "alias": "take"; "required": false; }; }, { "expandedRowsChange": "expandedRowsChange"; "stateReady": "stateReady"; "filterChange": "filterChange"; "sortChange": "sortChange"; "skipChange": "skipChange"; "groupChange": "groupChange"; "takeChange": "takeChange"; }, never, never, false, never>;
}
