import { AfterContentInit, ElementRef, EventEmitter, OnChanges, QueryList, Renderer2, 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';
export declare class TlDatatable implements AfterContentInit, OnChanges {
    private render;
    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(render: Renderer2, 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;
    onRowDblclick(row: any, index: any): void;
    setFocus(): void;
    getScrollingHorizontal(): Observable<any>;
    getObjectRow(row: any, index: any): {
        data: any;
        index: any;
    };
}
