import { Table } from 'primeng/table';
import { FilterService, PrimeNGConfig } from 'primeng/api';
import { ElementRef, EventEmitter, ChangeDetectorRef, AfterViewInit } from '@angular/core';
import { FILTER_TYPES } from './types/filterTypes';
import { PrimeOnFilterEvent } from './types/PrimeFilter';
import { MedSelectOption } from './types/MedSelectOption';
import { MedTableSettings } from './types/MedTableSettings';
import { PrimengConfigMixin } from './mixins/PrimengConfigMixin';
import { MedTableService } from './services/med-table.service';
import { CellDataConfigLocal } from './types/CellDataConfigLocal';
import { MedUpdateTableEvent } from './types/MedUpdateTableEvent';
import { MedTableColumnConfig } from './types/MedTableColumnConfig';
import { MedUpdateEvent } from './types/MedUpdateEvent';
import { MedTableSettingsLocal } from './types/MedTableSettingsLocal';
import { PrimeTableLazyLoadEvent } from './types/PrimeTableLazyLoadEvent';
import { FilterDataHandler } from './services/FilterDataHandler/FilterDataHandler';
import * as i0 from "@angular/core";
export declare class MedTableComponent<ItemType> extends PrimengConfigMixin implements AfterViewInit {
    private cb;
    private store;
    constructor(primeConfig: PrimeNGConfig, filterService: FilterService, cb: ChangeDetectorRef, store: MedTableService);
    readonly FILTER_TYPES: typeof FILTER_TYPES;
    readonly filterDataHandler: FilterDataHandler<ItemType>;
    columnsConfig: MedTableColumnConfig[];
    private _data;
    private _config;
    loading: boolean;
    settings: MedTableSettings;
    set config(newValue: MedTableColumnConfig[]);
    get config(): CellDataConfigLocal[];
    set data(newValue: ItemType[]);
    get data(): ItemType[];
    updateTable: EventEmitter<MedUpdateTableEvent>;
    updateRow: EventEmitter<MedUpdateEvent<ItemType>>;
    focusCell: EventEmitter<MedUpdateEvent<ItemType>>;
    tableRef: Table;
    upScrollRef: ElementRef<HTMLElement>;
    upScrollItemRef: ElementRef<HTMLElement>;
    get filterableFields(): string[];
    get localSettings(): MedTableSettingsLocal;
    get colspan(): number;
    get maxDeepKeyLevel(): number;
    get tableHeadLevels(): number[];
    ngAfterViewInit(): void;
    clearFilters(): void;
    exportData(data?: ItemType[]): void;
    /**
     * Call this method when updated dynamic height of outside content
     */
    updateDynamicHeight(): void;
    getHeadColumnClasses({ headCellClass, sticky }: MedTableColumnConfig): string;
    getDataColumnClasses({ dataCellClass, sticky }: MedTableColumnConfig, row: ItemType): string;
    getHeadRowConfigByLevel(level: number): Array<MedTableColumnConfig | undefined>;
    getColspan(column: MedTableColumnConfig): number;
    getRowspan(column: MedTableColumnConfig, level: number): number;
    getCellMinWidth({ minWidth }: MedTableColumnConfig): string;
    getCellMaxWidth({ maxWidth }: MedTableColumnConfig): string;
    getFilterSelectOptions({ key, sortKey }: CellDataConfigLocal): MedSelectOption<string>[];
    onFilter({ filters }: PrimeOnFilterEvent<ItemType>): void;
    onLazyLoad({ first, rows, globalFilter, sortField, sortOrder, filters }: PrimeTableLazyLoadEvent): void;
    private addDoubleScrollbar;
    static ɵfac: i0.ɵɵFactoryDeclaration<MedTableComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MedTableComponent<any>, "med-table", never, { "loading": "loading"; "settings": "settings"; "config": "config"; "data": "data"; }, { "updateTable": "updateTable"; "updateRow": "updateRow"; "focusCell": "focusCell"; }, never, never>;
}
