import { Observable } from 'rxjs';
import { services } from 'typescript-angular-utilities';
import __transform = services.transform;
import { IFilterOption, IFilterGroup, FilterGroup } from '../filterGroup.service';
export interface IModeFilterGroupSettings<TItemType> {
    label: string;
    type: string;
    getValue: {
        (item: TItemType): string | number | boolean;
    } | string;
    options: IModeFilterOptionSettings[];
}
export interface IModeFilterOptionSettings {
    label: string;
    displayAll?: boolean;
    value?: number | string | boolean;
}
export interface IModeFilterOption<TItemType> extends IFilterOption<TItemType> {
    displayAll?: boolean;
    value?: number | string | boolean;
}
export interface IModeFilterGroup<TItemType> extends IFilterGroup<TItemType> {
    options: IModeFilterOption<TItemType>[];
    serialize(): Observable<number | string | boolean>;
}
export declare class ModeFilterGroup<TItemType> extends FilterGroup<TItemType> implements IModeFilterGroup<TItemType> {
    private getValue;
    transformService: __transform.ITransformService;
    constructor(settings: IModeFilterGroupSettings<any>, transformService: __transform.ITransformService);
    serialize(): Observable<number | string | boolean>;
    private buildModeOption(option);
}
