/// <reference types="core-js" />
import { Observable } from 'rxjs';
import { services } from 'typescript-angular-utilities';
import __array = services.array;
import __object = services.object;
import __genericSearchFilter = services.genericSearchFilter;
import { IAsyncDataSource, AsyncDataSource } from '../asyncDataSource.service';
import { IDataSourceProcessorOld } from '../processor/dataSourceProcessorOld.service';
export interface IClientServerDataSource<TDataType> extends IAsyncDataSource<TDataType> {
    getFilterModel: IGetFilterModel<any>;
    validateModel: IValidateFilterModel<any>;
}
export interface IDataServiceSearchFunction<TDataType> {
    (search: string | any): Promise<TDataType[]> | Observable<TDataType[]>;
}
export interface IGetFilterModel<TFilterModelType> {
    (): TFilterModelType;
}
export interface IValidateFilterModel<TFilterModelType> {
    (filterModel: TFilterModelType): boolean;
}
export declare class ClientServerDataSource<TDataType> extends AsyncDataSource<TDataType> {
    private searchFilter;
    getFilterModel: IGetFilterModel<any>;
    validateModel: IValidateFilterModel<any>;
    private object;
    private minSearchLength;
    private search;
    private filterModel;
    constructor(getDataSet: IDataServiceSearchFunction<TDataType>, searchFilter: __genericSearchFilter.IGenericSearchFilter, getFilterModel: IGetFilterModel<any>, validateModel: IValidateFilterModel<any>, dataSourceProcessor: IDataSourceProcessorOld, array: __array.IArrayUtility, object: __object.IObjectUtility);
    refresh(): void;
    reload(): void;
    private filterModelChanged();
    protected getParams(): any;
}
