import { AfterContentInit, ElementRef, EventEmitter, OnChanges, QueryList, SimpleChanges } from '@angular/core';
import { TlDatatableColumn } from './parts/column/datatable-column';
import { DatatableFilterOptions } from './configs/datatable-filter-options';
import { TlDatatableFilterService } from './services/datatable-filter.service';
import { DatatableDataSource } from './services/datatable-datasource.service';
import { TlDatatableColumnService } from './services/datatable-column.service';
import { Observable, Subject } from 'rxjs';
import { TlDatatableSortService } from './services/datatable-sort.service';
import { TlDatatableContent } from './parts/content/datatable-content';
import { ContextMenuInterface } from '../contextmenu/interfaces/context-menu.interface';
import * as i0 from "@angular/core";
export declare class TlDatatable implements AfterContentInit, OnChanges {
    columnService: TlDatatableColumnService;
    filterService: TlDatatableFilterService;
    sortService: TlDatatableSortService;
    data: Array<any>;
    recordsCount: number;
    mode: 'scrollable' | 'paginator';
    rowModel: 'inmemory' | 'infinite';
    contextMenuItems: ContextMenuInterface[];
    allowResize: boolean;
    allowSortColumn: boolean;
    initializeFocus: boolean;
    allowFilterColumn: boolean;
    rowsPage: number;
    rowHeight: number;
    rowsClient: number;
    height: number;
    width: number;
    globalFilter: any;
    globalFilterOptions: DatatableFilterOptions;
    rowSelect: EventEmitter<any>;
    rowClick: EventEmitter<any>;
    rowDblclick: EventEmitter<any>;
    pageChange: EventEmitter<any>;
    sortData: EventEmitter<any>;
    filterData: EventEmitter<any>;
    loadData: EventEmitter<any>;
    endRow: EventEmitter<any>;
    datatableColumns: QueryList<TlDatatableColumn>;
    tbody: ElementRef;
    datatableBox: ElementRef;
    datatableContent: TlDatatableContent;
    dataSource: DatatableDataSource;
    columns: any[];
    heightViewPort: number;
    tabindex: number;
    scrollingHorizontalSubject: Subject<any>;
    private loadingSubject;
    private _loading;
    set loading(value: boolean);
    get loading(): boolean;
    constructor(columnService: TlDatatableColumnService, filterService: TlDatatableFilterService, sortService: TlDatatableSortService);
    ngAfterContentInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    calcDimensionsHeight(): void;
    onRowClick(row: any, index: any): void;
    onRowSelect(row: any, index: any): void;
    onChangeFilter(value: any): void;
    onChangeSort(sort: any): void;
    onKeydownFilter(event: any): void;
    onRowDblclick(row: any, index: any): void;
    setFocus(): void;
    getScrollingHorizontal(): Observable<any>;
    getObjectRow(row: any, index: any): {
        data: any;
        index: any;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<TlDatatable, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TlDatatable, "tl-datatable", never, { "data": "data"; "recordsCount": "recordsCount"; "mode": "mode"; "rowModel": "rowModel"; "contextMenuItems": "contextMenuItems"; "allowResize": "allowResize"; "allowSortColumn": "allowSortColumn"; "initializeFocus": "initializeFocus"; "allowFilterColumn": "allowFilterColumn"; "rowsPage": "rowsPage"; "rowHeight": "rowHeight"; "rowsClient": "rowsClient"; "height": "height"; "width": "width"; "globalFilter": "globalFilter"; "globalFilterOptions": "globalFilterOptions"; }, { "rowSelect": "rowSelect"; "rowClick": "rowClick"; "rowDblclick": "rowDblclick"; "pageChange": "pageChange"; "sortData": "sortData"; "filterData": "filterData"; "loadData": "loadData"; "endRow": "endRow"; }, ["datatableColumns"], never, false, never>;
}
//# sourceMappingURL=datatable.d.ts.map