import { Observable } from 'rxjs';
import { services } from 'typescript-angular-utilities';
import ObjectUtility = services.object.ObjectUtility;
import TransformService = services.transform.TransformService;
import { IFilter, Filter } from '../filter';
export interface ISelectFilterSettings<TDataType, TFilterType> {
    valueSelector: string | {
        (item: TDataType): any;
    };
    comparer?: IEqualityFunction<TFilterType>;
}
export interface IEqualityFunction<TFilterType> {
    (item1: TFilterType, item2: TFilterType): boolean;
}
export declare class SelectFilter<TDataType, TFilterType> extends Filter<TDataType, TFilterType> implements IFilter<TDataType, TFilterType> {
    type: string;
    private valueSelector;
    private comparer;
    objectUtility: ObjectUtility;
    transformService: TransformService;
    readonly selectedValue$: Observable<TFilterType>;
    constructor(settings: ISelectFilterSettings<TDataType, TFilterType>, objectUtility: ObjectUtility, transformService: TransformService);
    select(value: TFilterType): void;
    predicate: (item: TDataType, selectedValue: TFilterType) => boolean;
    private getValue(item);
}
