import { Paginate } from '@circe/pagination';
import { BehaviorSubject, Observable } from 'rxjs';
import { NpaId } from '@circe/core';
import { NpaTableFilter, NpaTableSort } from './table.types';
export declare class TableSource<T> {
    totalItems$: BehaviorSubject<number>;
    get data(): T[] | BehaviorSubject<T[]>;
    set data(data: T[] | BehaviorSubject<T[]>);
    get filter(): NpaTableFilter[] | BehaviorSubject<NpaTableFilter[]>;
    set filter(filter: NpaTableFilter[] | BehaviorSubject<NpaTableFilter[]>);
    get sorter(): NpaTableSort | BehaviorSubject<NpaTableSort>;
    set sorter(sorter: NpaTableSort | BehaviorSubject<NpaTableSort>);
    get paginator(): Paginate | BehaviorSubject<Paginate>;
    set paginator(paginator: Paginate | BehaviorSubject<Paginate>);
    private _data$;
    private _filter$;
    private _sorter$;
    private _paginator$;
    private _renderChanges$;
    private cancelStream$;
    private _renderChangesSubscription;
    private _dataSubscription;
    private _filterSubscription;
    private _sortSubscription;
    private _pageSubscription;
    constructor(data: T[] | BehaviorSubject<T[]>, _filter?: NpaTableFilter[] | BehaviorSubject<NpaTableFilter[]>, _paginator?: Paginate | BehaviorSubject<Paginate>, _sorter?: NpaTableSort | BehaviorSubject<NpaTableSort>);
    static sortRows(rows: any[], columnId: NpaId, order?: 'asc' | 'desc'): any[];
    static filterRows(rows: any[], filters: NpaTableFilter[]): any[];
    private _getDataObservable;
    private _filterRows;
    private _orderRows;
    private _pageRows;
    private _isPaginationComponent;
    connect(): Observable<T[]>;
}
export declare function _isTableSource<T>(obj: any): obj is TableSource<T>;
