import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { Params } from '@angular/router';
import { BsModalRef } from 'ngx-bootstrap';
import { Subject } from 'rxjs';
import { DataSet } from '../../interfaces/DisplayInterfaces';
import { DataTableValueInfo, GenericTableConfiguration, NameValue, TableButtonInfo, TableRowSelectionButton } from '../../interfaces/WidgetInterfaces';
import { Dictionary } from './../../classes/UtilityFunctions';
import { DisplayStateService } from './../../services/DisplayStateService';
export declare class PlatformTableComponent implements OnInit, OnDestroy, OnChanges {
    private displayStateService;
    RemoveFilter: EventEmitter<string>;
    AddFilter: EventEmitter<NameValue>;
    NewSort: EventEmitter<NameValue>;
    ButtonClick: EventEmitter<TableRowSelectionButton>;
    ButtonInfoClick: EventEmitter<Params>;
    Hover: EventEmitter<Params>;
    ValueClick: EventEmitter<DataTableValueInfo>;
    RowChangeableEvent: EventEmitter<any>;
    SendFilteredData: EventEmitter<any>;
    Config: GenericTableConfiguration;
    Dataset: DataSet | null;
    SortAndfilterLocally: boolean;
    TableClasses: string[];
    filteringToolTipTemplate: TemplateRef<any>;
    tooltipModalRef: BsModalRef;
    searchUpdated: Subject<NameValue>;
    ngUnsubscribe: Subject<boolean>;
    rowEventDebounceListerner$: Subject<boolean>;
    mergedConfigjson: string;
    defaultPageSize: number;
    currentPage: number;
    currentRecordStart: number;
    currentRecordEnd: number;
    minPage: number;
    maxPage: number;
    activeRowIdx: number;
    columns: string[];
    rows: string[][];
    filterRows: string[][];
    filter: string;
    filterlkp: Params;
    dropdowns: string[][];
    dataSetCells: CellInfo[][];
    buttonListCells: ButtonCellInfo[][];
    paretoColumns: string[];
    isCaseSensitive: boolean;
    localFilters: Params;
    filterRowVisible: boolean;
    dropdownRowVisible: boolean;
    pageOfRows: string[][];
    templateRefContext: {
        rowIdx: any;
        colIdx: any;
        value: string;
        props: any;
        rowInfo: string[];
    };
    cachedAlignRules: Dictionary<number, string>;
    defaultConfig: GenericTableConfiguration;
    mergedConfig: GenericTableConfiguration;
    HasLocalFilters(): boolean;
    MergeConfigs(): void;
    constructor(displayStateService: DisplayStateService);
    PageSize(): number;
    NeedsButtonColumn(place: any): boolean;
    getButtonPosition(place: any): boolean;
    getButtonColumnLabel(): string;
    IsExportToCsvEnabled(): boolean;
    IsCustomTableClasses(): string[];
    HasButtons(): boolean;
    TotalColumnCount(): number;
    ToggleFilterSortRow(): void;
    RefreshFromDataSet(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    filterUpdate(filterNV: NameValue, forceOnEmpty?: boolean): void;
    ToggleAndSort(colName: string, e: any): void;
    ExportToCsv(): void;
    DownloadCsv(content: any, fileName: any, mimeType: any): void;
    SetSort(colName: string, sortExpression: string): void;
    ngOnDestroy(): void;
    private getColumnRule(col);
    private rangeMap(inMin, inMax, outMin, outMax, inValue);
    private maxTextLength(columnName, colIdx, tempInfo, rule);
    private rowChange(columnName, colIdx, tempInfo, rule);
    showCurrentConfigJson(): void;
    applyCurrentConfigJson(): void;
    private dropdown(columnName, colIdx, tempInfo, rule);
    getDefinedFilterTemplateRef(colIndex: any): TemplateRef<any> | boolean;
    getColumnClassNames(colIndex: any): string;
    getColumnStylePros(colIndex: any): any;
    private paretoMap(columnName, colIdx, tempInfo, rule);
    private minMaxForHeatmap(heatmapRules, colIdx);
    private redMap(columnName, colIdx, tempInfo, rule);
    private greenMap(columnName, colIdx, tempInfo, rule);
    private heatmap(columnName, colIdx, tempInfo, rule);
    BuildDisplay(): void;
    fireRowChangeEvent(): void;
    getbuttonClassName(rowIdx: any, name: any): string;
    getbuttonIconClassName(rowIdx: any, name: any): string;
    getbuttonText(rowIdx: any, name: any): string;
    getbuttonToolTip(rowIdx: any, name: any): string;
    scaleParetoValueToPercentage(initialValue: number, minVal: number, maxVal: number): number;
    LocalRemoveFilter(name: string): void;
    LocalAddFilter(name: string, value: string): void;
    isValueClickLink(colIdx: number): boolean;
    isHighchart(colIdx: number): boolean;
    onValueClick(colIdx: any, rowIdx: any, event: any): void;
    getActualRowData(rowIdx: any, colIdx: any): string[];
    ClearFilters(): void;
    ApplyFilterParams(): void;
    ApplyGlobalFilter(): void;
    CalculateMaxPage(): void;
    ClientButtonInfoClick(tableButtonInfo: TableButtonInfo, rowidx: any): void;
    ClientHover(rowidx: any): void;
    ClientButtonClick(button: any, rowidx: any): void;
    GetBgColorStyle(row: number, col: number): string;
    getColAlign(col: number): string;
    GetCellText(row: number, col: number): string;
    GetHighChartsConfig(row: number, col: number): any;
    swithTemplate(rowIdx: any, colIdx: any): string;
    private DataSetHasCells(row, col);
    RoundDecimalValue(row: number, col: number, precision: number): string;
    GetCellScaledValue(row: number, col: number): number;
    GetFgColorStyle(row: number, col: number): string;
    onGlobalFilterChange(newValue: string): void;
    onFilterChange(column: any, filterExpression: any): void;
    onDropdownChanged(column: any, filterExpression: any): void;
    PageCrement(amount: number): void;
    onPageSizeChange(newValue: string): void;
    OnPageNumberChange(newValue: string): void;
    SetPageOfRows(): void;
    ShowTooltip(): void;
    hideModal(elemRef: any): void;
    hideColumn(colindx: any): boolean;
    GetTemplateRef(row: number, col: number): TemplateRef<any>;
    GetCurrentProps(row: number, col: number): any;
    GetToolTip(row: number, col: number): string;
}
export declare class CellInfo {
    backgroundColor: string;
    color: string;
    text: string;
    isBreak: boolean;
    scaledValue: number;
    tooltip: string;
    templateRef: TemplateRef<any>;
    props: any;
    constructor();
}
export declare class ButtonCellInfo {
    name: string;
    class: string;
    iconClass: string;
    text: string;
    toolTip: string;
    constructor(name: any, className?: string, iconClass?: string, text?: string, tooltip?: string);
}
export declare class minMaxReply {
    min: number;
    max: number;
    range: number;
    reverse: boolean;
}
