import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, Renderer2, SimpleChanges } from '@angular/core';
import { EventsService, NpaId, ToolService } from '@circe/core';
import { NpaActionConfig } from './table-actions/table-actions.types';
import { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';
import { TableService } from './table.service';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { SelectComponent } from '@circe/select';
import { TableSource } from './table-source';
import { TableActionsComponent } from './table-actions/table-actions.component';
import { NpaTableConfiguration } from './configurations/table.configuration';
import { NpaTableActionsConfiguration } from './configurations/table-actions.configuration';
import { NpaTableCheckboxSelection, NpaTableColumn, NpaTableColumnConfigurationModel, NpaTableConfigModel, NpaTableRowValue, NpaTableSort } from './table.types';
export declare class TableComponent<T> implements OnInit, OnChanges, AfterViewInit, OnDestroy {
    ev: EventsService;
    tools: ToolService;
    tableService: TableService;
    private _renderer;
    _table: ElementRef<HTMLElement>;
    _tableBody: ElementRef<HTMLElement>;
    _tableRow: ElementRef<HTMLElement>;
    _tableHeader: ElementRef<HTMLElement>;
    _viewPort: CdkVirtualScrollViewport;
    tableActions: QueryList<TableActionsComponent<T>>;
    selects: QueryList<SelectComponent>;
    id: string;
    config: NpaTableConfigModel<T>;
    data: T[] | Observable<T[]> | TableSource<T>;
    showSpinner: boolean;
    showLoadOnScrollSpinner: boolean;
    hotRender: boolean;
    get sort(): NpaTableSort | BehaviorSubject<NpaTableSort>;
    set sort(sort: NpaTableSort | BehaviorSubject<NpaTableSort>);
    internalUpdate: EventEmitter<NpaTableRowValue<T>[]>;
    sortChange: EventEmitter<NpaTableSort>;
    scrolledToBottom: EventEmitter<void>;
    internalId: string;
    dataSource$: Observable<any[]>;
    dataSourceSubscription: Subscription;
    rows$: BehaviorSubject<NpaTableColumn<T>[][]>;
    tableConfiguration: NpaTableConfiguration<T>;
    tableActionsConfiguration: NpaTableActionsConfiguration<T>;
    checkboxColumnsModel: Record<NpaId, NpaTableCheckboxSelection>;
    rowsHoverState: boolean[];
    defaultAction: NpaActionConfig<T>;
    groupActions$: BehaviorSubject<boolean>;
    showInternalSpinner$: BehaviorSubject<boolean>;
    manualActionsHide$: Subject<void>;
    sort$: BehaviorSubject<NpaTableSort>;
    private _originalDataCopy;
    private _sortSubscription;
    private _scrollSubscription;
    private _iconHandler;
    private _componentDestroyed$;
    onResize(): void;
    constructor(ev: EventsService, tools: ToolService, tableService: TableService, _renderer: Renderer2);
    private _setDataStream;
    private _processRows;
    private _processColumn;
    private _processCheckboxColumn;
    private _processRadioColumn;
    private _processSelectColumn;
    private _processIconColumn;
    private _processBadgeColumn;
    private _processDateColumn;
    private _getBadgeType;
    private _getIcon;
    private _getTableValue;
    private _hideAllDropdowns;
    private _setScrollListener;
    private _setResizeListener;
    private _processConfiguration;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    checkColumnCheckboxes(columnId: NpaId): void;
    sortTableRows(column: NpaTableColumnConfigurationModel<T>): void;
    updateRadioColumn(columnId: NpaId, newValue: number): void;
    updateCheckboxColumn(column: NpaTableColumn<T>, row: NpaTableColumn<T>[], rowIndex: number, newValue: any, bypassCheck?: boolean): void;
    updateColumnValue(column: NpaTableColumn<T>, row: NpaTableColumn<T>[], rowIndex: number, newValue: any): void;
    linkAction(column: NpaTableColumn<T>, row: NpaTableColumn<T>[], rowIndex: number): void;
    setColumnCheckboxes(columnId: NpaId): void;
    rowHover(columnIndex: number): void;
    tableMouseLeave(): void;
    rowMouseLeave(rowIndex: number): void;
    checkScroll(): void;
    getRowValue(row: NpaTableColumn<T>[], rowIndex: number): NpaTableRowValue<T>;
    private _checkBiggerTableActions;
    ngOnDestroy(): void;
}
