import { DataSourceService } from "./data-source.service";
import { IFilter, IFilterGroup, IMultiFilterMetadata, INovaFilteringOutputs, INovaFilters } from "./public-api";
import { SearchService } from "../search.service";
import * as i0 from "@angular/core";
/**
 * <example-url>./../examples/index.html#/common/data-source-service/client-side</example-url>
 */
export declare class ClientSideDataSource<T, F extends INovaFilters = INovaFilters> extends DataSourceService<T, F> {
    protected searchService: SearchService;
    protected _allData: T[];
    protected _searchProps: string[];
    protected virtualScrollData: T[];
    constructor(searchService: SearchService);
    setData(initialData?: T[]): void;
    setSearchProperties(properties: string[]): void;
    getFilteredData(filters: F): Promise<INovaFilteringOutputs>;
    protected prepareData(filters: F): T[];
    protected searchHandler(searchTerm: any): T[];
    protected sortingHandler(filters: any, nextChunk: T[]): T[];
    protected paginationHandler(filters: any, nextChunk: T[]): T[];
    protected virtualScrollHandler(filters: any, nextChunk: T[]): T[];
    protected extractMultiFilters(filters: F): IFilterGroup<IFilter<string[], IMultiFilterMetadata>>[];
    static ɵfac: i0.ɵɵFactoryDeclaration<ClientSideDataSource<any, any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ClientSideDataSource<any, any>>;
}
