import { TemplateRef, TrackByFunction } from '@angular/core';
import { AbstractPaginationDataSource, PaginatorLike } from '@rxap/data-source/pagination';
import { AbstractTableDataSource, FilterLike, SortLike } from '@rxap/data-source/table';
import { DataSourceCollectionDirective, DataSourceCollectionErrorTemplateContext } from '@rxap/data-source/directive';
import { IdOrInstanceOrToken } from '@rxap/definition';
import { BaseDataSourceViewer } from '@rxap/data-source';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export declare class TableDataSourceDirective<Data extends Record<any, any> = any, Parameters = any> extends DataSourceCollectionDirective<Data> {
    paginator: PaginatorLike;
    sort: SortLike;
    parameters: Observable<Record<string, any>>;
    filter: FilterLike;
    dataSourceOrIdOrToken: IdOrInstanceOrToken<AbstractTableDataSource<Data>>;
    viewer: BaseDataSourceViewer;
    emptyTemplate?: TemplateRef<void>;
    errorTemplate?: TemplateRef<DataSourceCollectionErrorTemplateContext>;
    set rxapTableDataSourceTrackBy(fn: TrackByFunction<Data>);
    loadDataSource(): AbstractPaginationDataSource<Data> | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableDataSourceDirective<any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TableDataSourceDirective<any, any>, "[rxapTableDataSource]", never, { "paginator": { "alias": "rxapTableDataSourcePaginator"; "required": false; }; "sort": { "alias": "rxapTableDataSourceSort"; "required": false; }; "parameters": { "alias": "rxapTableDataSourceParameters"; "required": false; }; "filter": { "alias": "rxapTableDataSourceFilter"; "required": false; }; "dataSourceOrIdOrToken": { "alias": "rxapTableDataSourceFrom"; "required": true; }; "viewer": { "alias": "rxapTableDataSourceViewer"; "required": false; }; "emptyTemplate": { "alias": "rxapTableDataSourceEmpty"; "required": false; }; "errorTemplate": { "alias": "rxapTableDataSourceErrorTemplate"; "required": false; }; "rxapTableDataSourceTrackBy": { "alias": "rxapTableDataSourceTrackBy"; "required": false; }; }, {}, never, never, true, never>;
}
