import { AfterContentInit, ElementRef, OnDestroy, QueryList } from '@angular/core';
import { ClrDatagrid, ClrDatagridColumn, ClrDatagridFilter, ClrDatagridPagination } from '@clr/angular';
import { ClrDatagridStatePersistenceModel } from './datagrid-state-persistence-model.interface';
import { Subject } from 'rxjs';
import { StatePersistenceOptions } from './state-persistence-options.interface';
import * as i0 from "@angular/core";
export declare class StatePersistenceKeyDirective implements AfterContentInit, OnDestroy {
    private datagrid;
    /**
     * Configuration options for the persistence.
     * 'Key' represents the local storage key under which the persistence state is stored.
     *
     * Optional fields with the 'persist' prefix toggle the persistence of the respective datagrid functionality,
     * the default value is always 'true'.
     */
    options: StatePersistenceOptions;
    useLocalStoreOnly: boolean;
    paginationDescription: string;
    pagination: ClrDatagridPagination;
    paginationElem: ElementRef;
    customFilters: QueryList<ClrDatagridFilter>;
    gridColumnRefs: QueryList<ElementRef>;
    gridColumns: QueryList<ClrDatagridColumn>;
    canShowPaginationDescription: boolean;
    warnedAboutCustomDescription: boolean;
    destroy$: Subject<void>;
    constructor(datagrid: ClrDatagrid);
    ngAfterContentInit(): void;
    private init;
    /**
     * With this method filters can be cleared
     * @param key The key for clrStatePersistenceKey
     * @param useLocalStoreOnly The clrUseLocalStoreOnly indicator
     */
    static clearFilters(key: string, useLocalStoreOnly: boolean): void;
    private initPageSizePersister;
    private initCurrentPage;
    private initFilter;
    private initSorting;
    private initColumnWidths;
    private initDatagridPersister;
    private persistFiltersAndCurrentPage;
    private persistSorting;
    private persistColumnWidths;
    /**
     * Pagination description must be set by this directive,
     * otherwise we can't update datagrid values from localStorage
     * without getting ExpressionChangedAfterItHasBeenCheckedError
     */
    private updatePaginationDescription;
    /**
     * Gets the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
     */
    getVolatileDataState(): ClrDatagridStatePersistenceModel;
    getLocalStorageState(): ClrDatagridStatePersistenceModel;
    /**
     * Save the state of volatile data. This can be influenced by clrUseLocalStoreOnly.
     */
    saveVolatileDataState(state: ClrDatagridStatePersistenceModel): void;
    saveLocalStorageState(state: ClrDatagridStatePersistenceModel): void;
    private getStorageBasedOnInputFlag;
    /**
     * As a date is serialized as string, but not deserialized as date
     * we need to add some meta information to do that manually later
     */
    private enrichFilterValue;
    /**
     * Parse filter values with meta information like date, which needs manual deserialization to a date object
     */
    private parseFilterValue;
    private getFilter;
    private getFilterPropertyName;
    private resolveSignal;
    private getSortProperty;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<StatePersistenceKeyDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<StatePersistenceKeyDirective, "[clrStatePersistenceKey]", never, { "options": { "alias": "clrStatePersistenceKey"; "required": false; }; "useLocalStoreOnly": { "alias": "clrUseLocalStoreOnly"; "required": false; }; "paginationDescription": { "alias": "clrPaginationDescription"; "required": false; }; }, {}, ["pagination", "paginationElem", "customFilters", "gridColumnRefs", "gridColumns"], never, false, never>;
}
