import { DataSource } from '@angular/cdk/table';
import { Observable } from 'rxjs';
import { AbstractVariable } from '@iotize/tap/data';
import * as i0 from "@angular/core";
export interface TableDataEntry {
    __date?: number;
    [key: string]: any;
}
export interface TableColumnType {
    header: string;
    columnDef: string;
    cell: (row: any) => string;
}
export declare class MonitoringTableComponent {
    /** Table columns */
    columns?: TableColumnType[];
    dataSource: MonitoringTableComponentDataSource;
    set columnsMap(mapping: {
        [key: string]: string;
    });
    /** Column definitions in order */
    displayedColumns: string[] | undefined;
    set variables(variables: AbstractVariable<any>[]);
    set data$(stream: Observable<any>);
    set data(data: TableDataEntry[]);
    date: boolean;
    constructor();
    private setupColumns;
    private addColumn;
    static ɵfac: i0.ɵɵFactoryDeclaration<MonitoringTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MonitoringTableComponent, "tap-app-monitoring-table", never, { "columns": "columns"; "dataSource": "dataSource"; "columnsMap": "columnsMap"; "displayedColumns": "displayedColumns"; "variables": "variables"; "data$": "data$"; "data": "data"; "date": "date"; }, {}, never, never, false>;
}
/**
 * TODO add export function
 */
export declare class MonitoringTableComponentDataSource extends DataSource<TableDataEntry> {
    options: {
        max: number;
        newItemOnTop: boolean;
    };
    _data: TableDataEntry[];
    private _subject;
    constructor(options?: {
        max: number;
        newItemOnTop: boolean;
    });
    add(item: TableDataEntry): void;
    set data(d: TableDataEntry[]);
    connect(): Observable<TableDataEntry[]>;
    refresh(): void;
    disconnect(): void;
    clear(): void;
}
