import { ElementRef, ChangeDetectorRef, QueryList, AfterViewInit, OnDestroy } from '@angular/core';
import { DatePipe } from '@angular/common';
import { DeviceDetectorService } from 'ngx-device-detector';
import { SdApiService } from '@sd-angular/core/api';
import { SdNotifyService } from '@sd-angular/core/notify';
import { SdLoadingService } from '@sd-angular/core/loading';
import { SdTranslateService } from '@sd-angular/core/translate';
import { SdGridOption, GridItem, SdGridColumn } from './grid.model';
import { ConfigResult } from './components/grid-config/grid-config.model';
import { SdGridConfig } from './components/grid-config/grid-config.component';
import { EditorHandlerPipe } from './pipes/editor-handler.pipe';
import { SdGridPopupEditor } from './components/grid-popup-editor/grid-popup-editor.component';
import { SdGridPopupFilter } from './components/grid-popup-filter/grid-popup-filter.component';
import { SdGridPopupExportExcel } from './components/grid-popup-export-excel/grid-popup-export-excel.component';
import { QuickFilter, FilterConfiguration } from './components/grid-popup-filter/grid-popup-filter.model';
import { MatSelect } from '@angular/material/select';
import { IGridConfiguration } from './models/grid-configuration.model';
import { MatPaginator } from '@angular/material/paginator';
import { SdCellDefDirective } from './directives/cell-def.directive';
import { SdCellFooterDevDirective } from './directives/cell-footer-def.directive';
import { SdCellEditorDefDirective } from './directives/cell-editor-def.directive';
import { HandlerLocal } from './models/handler-local';
import { HandlerDotnet } from './models/handler-dotnet';
import { SdGridImportExcel } from './components/grid-import-excel/grid-import-excel.component';
import { SdExportService } from '@sd-angular/core/export';
export declare class SdGrid implements AfterViewInit, OnDestroy {
    #private;
    configuration: IGridConfiguration;
    private ref;
    private handlerLocal;
    private handlerDotnet;
    private translateService;
    private datePipe;
    private loadingService;
    private apiService;
    private exportService;
    private notifyService;
    private editorVisiblePipe;
    private handler;
    isMobileOrTablet: boolean;
    displayKey: string;
    gridOption: SdGridOption;
    orderBy: string;
    orderDirection: 'ASC' | 'DESC';
    localItems: GridItem[];
    items: GridItem[];
    total: number;
    filter: {
        [key: string]: any;
    };
    externalFilter: {
        [key: string]: any;
    };
    hiddenPaginate: boolean;
    inlineExternal: {
        [key: string]: boolean;
    };
    inlineColumn: {
        [key: string]: boolean;
    };
    quickFilters: QuickFilter[];
    selectedQuickFilter: string;
    pages: number[];
    pageCount: number;
    totalPage: number;
    isLoading: boolean;
    viewItems: GridItem[];
    sumarize: string;
    fixedColumns: SdGridColumn[];
    normalColumns: SdGridColumn[];
    columns: SdGridColumn[];
    isCheckedAll: boolean;
    selectedItems: any[];
    private fixedHeaders;
    private fixedBodies;
    fixedGridContainer: ElementRef;
    gridFixedBody: ElementRef;
    gridContainer: ElementRef;
    gridHeader: ElementRef;
    gridBody: ElementRef;
    sdGridConfig: SdGridConfig;
    sdGridPopupEditor: SdGridPopupEditor;
    sdGridPopupFilter: SdGridPopupFilter;
    matSelect: MatSelect;
    sdGridPopupExportExcel: SdGridPopupExportExcel;
    sdGridImportExcel: SdGridImportExcel;
    cellDefs: QueryList<SdCellDefDirective>;
    cellDef: {
        [column: string]: SdCellDefDirective;
    };
    cellEditorDefs: QueryList<SdCellEditorDefDirective>;
    cellEditorDef: {
        [column: string]: SdCellEditorDefDirective;
    };
    cellFooterDefs: QueryList<SdCellFooterDevDirective>;
    cellFooterDef: {
        [column: string]: SdCellFooterDevDirective[];
    };
    footerRows: number[];
    set paginator(paginator: MatPaginator);
    set option(value: SdGridOption);
    selectedItem: any;
    rowHandler: {
        click: (item: any) => void;
        dblClick: (item: any) => void;
    };
    private setOption;
    private initConfiguration;
    private initTranslate;
    constructor(configuration: IGridConfiguration, ref: ChangeDetectorRef, deviceService: DeviceDetectorService, handlerLocal: HandlerLocal, handlerDotnet: HandlerDotnet, translateService: SdTranslateService, datePipe: DatePipe, loadingService: SdLoadingService, apiService: SdApiService, exportService: SdExportService, notifyService: SdNotifyService, editorVisiblePipe: EditorHandlerPipe);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    reload: (gridItems?: any[]) => Promise<void>;
    reloadItem(data: {
        [id: string]: any;
    }): void;
    private blink;
    private stopBlink;
    detectChanges: () => void;
    private generateViewItems;
    get editedItems(): {
        [key: string]: any;
    }[];
    selectPage: () => void;
    updateFilter: (param?: {
        filter: any;
        externalFilter: any;
    }) => void;
    getItems(): GridItem[];
    onCheck: (item: GridItem, isCheckbox?: boolean) => void;
    checkAll(isCheckedAll: boolean): void;
    sort: (column: SdGridColumn) => 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, isModified?: boolean) => void;
    onSave: (item: GridItem) => Promise<void>;
    onCancel: (item: GridItem) => void;
    private initExternalFilter;
    onSearch: (searchValue: string, item: GridItem, column: SdGridColumn) => void;
    onFilterConfigurationLoaded: (param: FilterConfiguration) => void;
    onSelectQuickFilter: (value: string) => void;
    private getExportItems;
    private getFilterInfo;
    onExportByTemplate: (params: {
        excelConfig: any;
        excelColumns: any[];
    }) => Promise<void>;
    get invalidItems(): {
        item: {
            [key: string]: any;
        };
        message: string;
    }[];
    get gridItems(): {
        [key: string]: any;
    }[];
    onEditorChange: () => void;
    onSelectPageSize: () => void;
    private refreshExternalFilter;
    onCreateQuickFilter: (ev?: Event) => void;
    onEditQuickFilter: (ev: Event, quickFilter?: QuickFilter) => void;
    onDeleteQuickFilter: (ev: Event, quickFilter?: QuickFilter) => void;
}
