import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy } from '@angular/core';
import { FVAbstractControl } from '../../shared/abstract-control.component';
import { ApiService, DGSNotificationService } from '@dotgov/core';
import { ProcessService } from '../../../services/process.service';
import { LanguageService } from '../../../services/language.service';
import { GridConfig, GridColumn, Dock } from '../../../models';
import { Subject } from 'rxjs/index';
/**
 * @Author [GrigoreMe](https://github.com/grigoreme)
 */
export declare class FVControlsGridComponent extends FVAbstractControl implements AfterViewInit, OnDestroy {
    private process;
    private api;
    private language;
    private ref;
    private notification;
    loading: boolean;
    lookupRows: Object[];
    itemsPerPage: number;
    downloadPages: number;
    currentPage: number;
    totalItems: number;
    searchCol: string;
    searchVal: string;
    searchEvent: Subject<any>;
    isReloaded: boolean;
    theadSize: number;
    hasRows: any;
    theadContainer: any;
    searchInput: any;
    private _sort;
    private _multiSort;
    private _destroyed;
    private _oldSearchVal;
    gridConfig: GridConfig;
    editable: boolean;
    dblClick: boolean;
    reload: boolean;
    onHandler: EventEmitter<{
        action: string;
        row: object;
        activePage: number;
    }>;
    onResponse: EventEmitter<any>;
    onAdvancedResponse: EventEmitter<any>;
    onActiveItemChange: EventEmitter<string>;
    onMenuItemClicked: EventEmitter<string>;
    titleUpdated: EventEmitter<string>;
    private _dblClickDialog;
    private _gridData;
    private _activeItem;
    private _lang;
    constructor(process: ProcessService, api: ApiService, language: LanguageService, ref: ChangeDetectorRef, notification: DGSNotificationService);
    ngAfterViewInit(): void;
    onResize(): void;
    sort(column: GridColumn): void;
    emitSearch(event: any): void;
    menuItemClicked(data: any): void;
    sortIcon(column: GridColumn): string;
    sendResponse(row: Object, dblClick?: boolean): Promise<void>;
    onNavigation(navData: any): void;
    updatePage(newPage: any): void;
    rowData(column: GridColumn, row: Object): any;
    search(property: any, value: any, forceUpdate?: boolean): Promise<any>;
    resetSearch(): Promise<any>;
    reset(): Promise<any>;
    /**
     * On user button clicked.
     */
    handleButton(action: string, row: Object): void;
    /**
     * Trigger file download.
     * @param rowData
     */
    downloadFile(rowData: any): void;
    fileName(rowData: any): string;
    sanitizeColumnName(columnName: string): string;
    isObject(item: any): boolean;
    /**
     * Transform any to array.
     * @param item
     */
    arrayFrom(item: any): any[];
    readonly isDblClick: boolean;
    readonly totalPages: number;
    readonly defaultCol: string;
    readonly activeCol: GridColumn;
    readonly searchType: string;
    readonly rows: any[];
    readonly columns: GridColumn[];
    activeItem: any;
    readonly dockedTop: Dock[];
    readonly dockedBottom: Dock[];
    readonly docked: Dock[];
    readonly showTools: boolean;
    loadingStatus: boolean;
    private updateData(forced?);
    private fetchGridData(page?, sorts?, filter?, skipCache?);
    private getTHeadSize();
    /**
     * Same as Object.values ( easier than to implement polyfill ).
     * @param obj
     */
    private values(obj);
    ngOnDestroy(): void;
}
