import { Observable, BehaviorSubject } from 'rxjs';
import { IServerSearchFunction, IServerSearchParams, IDataResult } from '../asyncTypes';
import { IFilter } from '../../filters/index';
import { DataSourceBase } from '../dataSourceBase.service';
import { ISort } from '../../sorts/sort';
export declare const defaultDebounce = 1000;
export declare class SmartDataSource<TDataType> extends DataSourceBase<TDataType> {
    throttled$: BehaviorSubject<boolean>;
    private filters$;
    getDataSet: IServerSearchFunction<TDataType>;
    constructor(getDataSet: IServerSearchFunction<TDataType>);
    init(): void;
    filters: IFilter<TDataType, any>[];
    initialRequest(filters$: Observable<IFilter<any, any>[]>, sorts$: Observable<ISort[]>): Observable<IServerSearchParams>;
    toRequestStream(throttled$: Observable<boolean>, filters$: Observable<IFilter<any, any>[]>, sorts$: Observable<ISort[]>): Observable<IServerSearchParams>;
    startLoading(): void;
    resolveReload(data: IDataResult<TDataType>): void;
}
