import { ElementRef, ChangeDetectorRef, AfterViewInit, OnDestroy } from '@angular/core';
import { DatePipe } from '@angular/common';
import { GridOption, GridItem, GridColumn } from './grid-control.model';
import { UtilityService } from '../../services/utility/utility.service';
import { ConfigurationService } from '../../services/configuration/configuration.service';
import { ApiService } from '../../services/api/api.service';
import { ExcelService } from '../../services/excel/excel.service';
import { NotifyService } from '../../services/notify/notify.service';
import { HandlerLocal } from './handlers/handler-local';
import { HandlerDotnet } from './handlers/handler-dotnet';
import { ConfigResult } from './components/grid-config/grid-config.model';
import { GridConfigComponent } from './components/grid-config/grid-config.component';
import { EditorHandlerPipe } from './pipes/editor-handler.pipe';
import { GridPopupEditorComponent } from './components/grid-popup-editor/grid-popup-editor.component';
import { GridPopupFilterComponent } from './components/grid-popup-filter/grid-popup-filter.component';
import { GridImportExcelComponent } from './components/grid-import-excel/grid-import-excel.component';
import { ExcelConfig, ExcelTempateColumn } from '../../services/excel/excel.model';
import { GridPopupExportExcelComponent } from './components/grid-popup-export-excel/grid-popup-export-excel.component';
import { QuickFilter } from './components/grid-popup-filter/grid-popup-filter.model';
import { MatSelectChange } from '@angular/material/select';
import { LoadingService } from '../../services/loading/loading.service';
import { TranslateService } from '../../services/translate/translate.service';
import { DeviceDetectorService } from 'ngx-device-detector';
export declare class GridControlComponent implements AfterViewInit, OnDestroy {
    private ref;
    private handlerLocal;
    private handlerDotnet;
    private utilityService;
    private translateService;
    private configurationService;
    private datePipe;
    private loadingService;
    private apiService;
    private excelService;
    private notifyService;
    private editorVisiblePipe;
    private handler;
    isMobileOrTablet: boolean;
    displayKey: string;
    gridOption: GridOption;
    orderBy: string;
    orderDirection: 'ASC' | 'DESC';
    localItems: GridItem[];
    items: GridItem[];
    total: number;
    filter: {
        [key: string]: any;
    };
    externalFilter: {
        [key: string]: any;
    };
    currentPage: number;
    hiddenPaginate: boolean;
    showInlineFilter: boolean;
    quickFilters: QuickFilter[];
    selectedQuickFilter: string;
    pages: number[];
    pageCount: number;
    totalPage: number;
    isLoading: boolean;
    noDataImage: string;
    viewItems: GridItem[];
    sumarize: string;
    fixedColumns: GridColumn[];
    normalColumns: GridColumn[];
    columns: GridColumn[];
    isCheckedAll: boolean;
    selectedItems: any[];
    private fixedHeaders;
    private fixedBodies;
    private fixedHeadersSubcription;
    private fixedBodiesSubcription;
    fixedGridContainer: ElementRef;
    gridFixedBody: ElementRef;
    gridContainer: ElementRef;
    gridHeader: ElementRef;
    gridBody: ElementRef;
    sdGridConfig: GridConfigComponent;
    sdGridPopupEditor: GridPopupEditorComponent;
    sdGridPopupFilter: GridPopupFilterComponent;
    sdGridImportExcel: GridImportExcelComponent;
    sdGridPopupExportExcel: GridPopupExportExcelComponent;
    set option(value: GridOption);
    selectedItem: any;
    rowHandler: {
        click: (item: any) => void;
        dblClick: (item: any) => void;
    };
    setOption: (option: GridOption) => void;
    constructor(ref: ChangeDetectorRef, deviceService: DeviceDetectorService, handlerLocal: HandlerLocal, handlerDotnet: HandlerDotnet, utilityService: UtilityService, translateService: TranslateService, configurationService: ConfigurationService, datePipe: DatePipe, loadingService: LoadingService, apiService: ApiService, excelService: ExcelService, notifyService: NotifyService, editorVisiblePipe: EditorHandlerPipe);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    reload: (gridItems?: any[]) => Promise<void>;
    reloadItem(data: {
        [id: string]: any;
    }): void;
    private blink;
    private stopBlink;
    private detectChanges;
    private generateViewItems;
    get editedItems(): {
        [key: string]: any;
    }[];
    selectPage(selectedPage: number | string): void;
    updateFilter(param?: {
        filter: any;
        externalFilter: any;
    }): void;
    private generatePaginate;
    private generateSumarize;
    getItems(): GridItem[];
    private setSelectedItems;
    check(item: GridItem, isCheckbox?: boolean): void;
    checkAll(isCheckedAll: boolean): void;
    sort(column: GridColumn): void;
    private resize;
    setHeight(height?: string): void;
    loadConfig(configResult: ConfigResult): void;
    private initFilter;
    private initDictionaryColumnValues;
    private generateEditorHandlers;
    private generateEditorHanlder;
    trackById(index: any, item: any): any;
    get isFiltering(): boolean;
    onFilterPopup(): void;
    clearFilter: () => void;
    onClearFilter: () => void;
    expandOrCollapse: (gridItem: GridItem) => Promise<void>;
    onCreate: () => void;
    onUpdate: (item: GridItem) => void;
    onSave: (item: GridItem) => Promise<void>;
    onCancel: (item: GridItem) => void;
    private initExternalFilter;
    onSearch: (searchValue: string, item: GridItem, column: GridColumn) => void;
    onFilterConfigurationLoaded: (param: {
        showInlineFilter: boolean;
        quickFilters: QuickFilter[];
        selectedQuickFilter: string;
    }) => void;
    onSelectQuickFilter: (event: MatSelectChange) => void;
    private getExportItems;
    private getFilterInfo;
    onExportByTemplate: (params: {
        excelConfig: ExcelConfig;
        excelColumns: ExcelTempateColumn[];
    }) => Promise<void>;
    get invalidItems(): {
        item: {
            [key: string]: any;
        };
        message: string;
    }[];
    get gridItems(): {
        [key: string]: any;
    }[];
    onEditorChange: () => void;
    onSelectPageSize: () => void;
}
