/// <reference types="core-js" />
import { Subject, Observable } from 'rxjs';
import { services } from 'typescript-angular-utilities';
import __array = services.array;
import { IDataSourceOld } from './dataSource';
import { DataSourceBaseOld } from './dataSourceBaseOld.service';
import { IDataSourceProcessorOld } from './processor/dataSourceProcessorOld.service';
export { IDataSourceOld };
export interface IDataSetFunction<TDataType> {
    (params: any): Promise<TDataType[]> | Observable<TDataType[]>;
}
export interface IAsyncDataSource<TDataType> extends IDataSourceOld<TDataType> {
    reload(): any;
    getDataSet: IDataSetFunction<TDataType>;
    reloaded: Subject<void>;
}
export declare class AsyncDataSource<TDataType> extends DataSourceBaseOld<TDataType> implements IAsyncDataSource<TDataType> {
    protected synchronizedRequests: Subject<Observable<TDataType[]>>;
    reloaded: Subject<void>;
    getDataSet: IDataSetFunction<TDataType>;
    constructor(getDataSet: IDataSetFunction<TDataType>, dataSourceProcessor: IDataSourceProcessorOld, array: __array.IArrayUtility);
    reload(): void;
    protected resolveReload(data: TDataType[]): void;
    protected getParams(): any;
}
