import { Observable, BehaviorSubject, Subscription } from 'rxjs';
import { IDataSource } from './dataSource';
import { IProcessResult } from './processor/dataSourceProcessor';
import { SortManagerService } from '../sorts/index';
import { IFilter } from '../filters/index';
import { IDataPager } from '../paging/index';
export declare class DataSourceBase<TDataType> implements IDataSource<TDataType> {
    sorter: SortManagerService;
    filters: IFilter<TDataType, any>[];
    pager: IDataPager;
    countFilterGroups: boolean;
    protected _dataSet: BehaviorSubject<TDataType[]>;
    protected _filteredDataSet: BehaviorSubject<TDataType[]>;
    protected _rawDataSet: BehaviorSubject<TDataType[]>;
    protected _count: BehaviorSubject<number>;
    protected _isEmpty: BehaviorSubject<boolean>;
    protected _loadingDataSet: BehaviorSubject<boolean>;
    protected subscription: Subscription;
    constructor();
    readonly dataSet$: Observable<TDataType[]>;
    readonly filteredDataSet$: Observable<TDataType[]>;
    readonly rawDataSet$: Observable<TDataType[]>;
    readonly count$: Observable<number>;
    readonly loadingDataSet$: Observable<boolean>;
    readonly needsRefinedSearch$: Observable<boolean>;
    readonly isEmpty$: Observable<boolean>;
    init(): void;
    clear(): void;
    processData(): void;
    processDataNoClientFilters(): void;
    setProcessedData(processedData: IProcessResult<TDataType>): void;
    add(data: TDataType): void;
    remove(data: TDataType): void;
    replace(oldData: TDataType, newData: TDataType): void;
}
