import { Observable } from 'rxjs';
import { services } from 'typescript-angular-utilities';
import __transform = services.transform;
import { IFilterOption, IFilterGroup, FilterGroup } from '../filterGroup.service';
export interface IRangeFilterGroupSettings<TItemType> {
    label: string;
    type: string;
    getValue: {
        (item: TItemType): number;
    } | string;
    options: IRangeFilterOptionSettings[];
}
export interface IRangeFilterOptionSettings {
    label: string;
    highInclusive?: number;
    highExclusive?: number;
    lowInclusive?: number;
    lowExclusive?: number;
}
export interface IRangeFilterOption<TItemType> extends IFilterOption<TItemType> {
    highInclusive?: number;
    highExclusive?: number;
    lowInclusive?: number;
    lowExclusive?: number;
}
export interface IRangeFilterGroup<TItemType> extends IFilterGroup<TItemType> {
    options: IRangeFilterOption<TItemType>[];
    serialize(): Observable<IRangeFilterValue>;
}
export interface IRangeFilterValue {
    highInclusive?: number;
    highExclusive?: number;
    lowInclusive?: number;
    lowExclusive?: number;
}
export declare class RangeFilterGroup<TItemType> extends FilterGroup<TItemType> implements IRangeFilterGroup<TItemType> {
    private getValue;
    transformService: __transform.ITransformService;
    constructor(settings: IRangeFilterGroupSettings<any>, transformService: __transform.ITransformService);
    serialize(): Observable<IRangeFilterValue>;
    private buildRangeOption(option);
    private isNullOption(option);
}
