import { BsModalService } from 'ngx-bootstrap/modal';
import { PageChangedEvent, PaginationComponent } from 'ngx-bootstrap/pagination';
import { DoCheck, EventEmitter, IterableDiffers, OnInit, Renderer2 } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { DataGridConfig, EnumAutoFitMode, EnumDataGridMode } from './config/data-grid-config';
import { ActionsColumnDirective } from './directives/data-grid-templates.directive';
import { DataGridColumnModel, EnumSortDirection } from './models/data-grid-column.model';
import * as i0 from "@angular/core";
export declare class GridDataModel {
    rows: Array<GridRowModel>;
    hasData: boolean;
}
export declare class GridRowModel {
    model: any;
    columns: Array<GridColumnModel>;
    selected: boolean;
    ngClass?: any;
}
export declare class GridColumnModel {
    value?: string | SafeHtml;
    isHtml: boolean;
}
export declare class DataGridComponent implements OnInit, DoCheck, DataGridConfig {
    private iterableDiffers;
    private modalService;
    private renderer;
    private sanitizer;
    initialRenderApplied: boolean;
    sortApplied: boolean;
    animating: boolean;
    selectAll: boolean;
    isResizing: boolean;
    isReordering: boolean;
    currentElementBeingReorderedFromIndex: number;
    currentElementBeingReorderedToIndex: number;
    currentPage: number;
    gridData: GridDataModel;
    identifier: string;
    debugMode: boolean;
    tableId?: string;
    columns: Array<DataGridColumnModel>;
    emptyResultsMessage?: string;
    infoMessage?: string;
    animated?: boolean;
    striped?: boolean;
    bordered?: boolean;
    hoverEffect?: boolean;
    responsive?: boolean;
    showCheckboxColumn?: boolean;
    showSelectAllCheckbox?: boolean;
    selectAllPages?: boolean;
    checkBoxMode?: number;
    showSummaries?: boolean;
    allowExports?: boolean;
    exportButtonLabel?: string;
    exportedFileName?: string;
    exportedExcelSheetName?: string;
    initialColumnToSort?: number;
    initialSortDirection?: EnumSortDirection;
    mode?: EnumDataGridMode;
    totalItems?: number;
    itemsPerPage?: number;
    maxSize?: number;
    boundaryLinks?: boolean;
    directionLinks?: boolean;
    rotate?: boolean;
    showActionsColumn?: boolean;
    showInfos?: boolean;
    actionsColumnCaption?: string;
    actionsColumnWidth?: string;
    firstText?: string;
    previousText?: string;
    nextText?: string;
    lastText?: string;
    autoFitMode?: EnumAutoFitMode;
    allowColumnResize?: boolean;
    allowColumnFilters?: boolean;
    allowColumnReorder?: boolean;
    fixedHeader?: boolean;
    minHeight?: number;
    maxHeight?: number;
    userPreferencesKey?: string;
    filterPlaceholder?: string;
    filterPlacement?: string;
    boundedExportCallback?: () => Promise<any[]>;
    OnSelectionChanged: EventEmitter<any>;
    OnRowSelected: EventEmitter<any>;
    OnRowRendered: EventEmitter<GridRowModel>;
    OnPaginate: EventEmitter<any>;
    OnSort: EventEmitter<DataGridColumnModel>;
    OnColumnFiltered: EventEmitter<DataGridColumnModel>;
    actionsColumnTemplate: ActionsColumnDirective;
    paginator: PaginationComponent;
    private _dataDiffer;
    private _internalData;
    private _externalData;
    private _internalColumns;
    private _externalColumns;
    private _maxWidth;
    private _minColumnWidth;
    private _columnDefinitions;
    get data(): Array<any>;
    set data(value: Array<any>);
    constructor(defaultOptions: DataGridConfig, iterableDiffers: IterableDiffers, modalService: BsModalService, renderer: Renderer2, sanitizer: DomSanitizer);
    ngOnInit(): void;
    ngDoCheck(): void;
    ToogleSorting(column: DataGridColumnModel): void;
    PageChanged(event: PageChangedEvent): void;
    GetInfo(): string;
    Redraw(): void;
    RenderPropertyValue(propertyPath: string, object: any): any;
    RenderColumnSummary(column: DataGridColumnModel): number;
    HasSummarizableColumns(): boolean;
    OnSelectAllChanged(): void;
    OnRowSelectedChanged(row: any, rowIndex: number): void;
    ExportToExcel(event: MouseEvent): Promise<boolean>;
    OnResizerMouseDown(e: any): void;
    OnColumnMouseDown(e: any, index: number): void;
    OnColumnFilterClick(e: Event, column: DataGridColumnModel): void;
    OnFiltersChange(column: DataGridColumnModel): void;
    HandleColumnClick(row: any, currentData: any, rowIndex: number, column: DataGridColumnModel): void;
    HandleColumnRendering(row: any, currentData: any, rowIndex: number, column: DataGridColumnModel): SafeHtml;
    private draw;
    private initializeRendering;
    private initializeGridData;
    private initGridDataModel;
    private initializeColumns;
    private initializeSorting;
    private initializePaging;
    private paddingDiff;
    private getStyleVal;
    private isUndefinedOrNull;
    private sortOnClient;
    private paginateOnClient;
    private handleAutoFit;
    private autofitByContent;
    private autofitByCaption;
    private autofitByFixedWidths;
    private handleSelectAllCheckboxState;
    private setDataGridWidths;
    private handleInitialRenderingFlag;
    private initializeFilters;
    private closeAllColumnsFilters;
    private handleRowRenders;
    private verifyColumnIndexPersistences;
    private getColumnReorderingDefinition;
    private getOrCreateColumnReorderingDefinition;
    private buildColumnReorderingDefinition;
    private definitionIsNotCompatibleAnymore;
    private applyColumnReorderingDefinition;
    private updateColumnReorderingDefinition;
    private getColumnReorderingDefinitionFrom;
    private filterColumnsThatShouldBeVisible;
    private debug;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, [{ optional: true; }, null, null, null, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "datagrid", never, { "debugMode": "debugMode"; "tableId": "tableId"; "columns": "columns"; "emptyResultsMessage": "emptyResultsMessage"; "infoMessage": "infoMessage"; "animated": "animated"; "striped": "striped"; "bordered": "bordered"; "hoverEffect": "hoverEffect"; "responsive": "responsive"; "showCheckboxColumn": "showCheckboxColumn"; "showSelectAllCheckbox": "showSelectAllCheckbox"; "selectAllPages": "selectAllPages"; "checkBoxMode": "checkBoxMode"; "showSummaries": "showSummaries"; "allowExports": "allowExports"; "exportButtonLabel": "exportButtonLabel"; "exportedFileName": "exportedFileName"; "exportedExcelSheetName": "exportedExcelSheetName"; "initialColumnToSort": "initialColumnToSort"; "initialSortDirection": "initialSortDirection"; "mode": "mode"; "totalItems": "totalItems"; "itemsPerPage": "itemsPerPage"; "maxSize": "maxSize"; "boundaryLinks": "boundaryLinks"; "directionLinks": "directionLinks"; "rotate": "rotate"; "showActionsColumn": "showActionsColumn"; "showInfos": "showInfos"; "actionsColumnCaption": "actionsColumnCaption"; "actionsColumnWidth": "actionsColumnWidth"; "firstText": "firstText"; "previousText": "previousText"; "nextText": "nextText"; "lastText": "lastText"; "autoFitMode": "autoFitMode"; "allowColumnResize": "allowColumnResize"; "allowColumnFilters": "allowColumnFilters"; "allowColumnReorder": "allowColumnReorder"; "fixedHeader": "fixedHeader"; "minHeight": "minHeight"; "maxHeight": "maxHeight"; "userPreferencesKey": "userPreferencesKey"; "filterPlaceholder": "filterPlaceholder"; "filterPlacement": "filterPlacement"; "boundedExportCallback": "boundedExportCallback"; "data": "data"; }, { "OnSelectionChanged": "OnSelectionChanged"; "OnRowSelected": "OnRowSelected"; "OnRowRendered": "OnRowRendered"; "OnPaginate": "OnPaginate"; "OnSort": "OnSort"; "OnColumnFiltered": "OnColumnFiltered"; }, ["actionsColumnTemplate"], never, false, never>;
}
