import { Observable } from 'rxjs';
import * as moment from 'moment';
import { services } from 'typescript-angular-utilities';
import __date = services.date;
import __transform = services.transform;
import { IFilter, Filter } from '../filter';
export interface IDateFilterValue {
    dateFrom?: moment.Moment;
    dateTo?: moment.Moment;
}
export interface IDateFilterSettings<TDataType> {
    type: string;
    valueSelector: {
        (item: TDataType): moment.Moment;
    } | string;
}
export interface IDateFilter<TDataType> extends IFilter<TDataType, IDateFilterValue> {
    dateFrom$: Observable<moment.Moment>;
    dateTo$: Observable<moment.Moment>;
    useTime: boolean;
    type: string;
}
export declare class DateFilter<TDataType> extends Filter<TDataType, IDateFilterValue> implements IDateFilter<TDataType> {
    useTime: boolean;
    private _dateFrom;
    private _dateTo;
    private valueSelector;
    type: string;
    showClear: boolean;
    useDateRange: boolean;
    label: string;
    template: string;
    private date;
    private transformService;
    readonly dateFrom$: Observable<moment.Moment>;
    readonly dateTo$: Observable<moment.Moment>;
    constructor(settings: IDateFilterSettings<TDataType>, dateUtility: __date.IDateUtility, transformService: __transform.ITransformService);
    setDateFrom(value: moment.Moment): void;
    setDateTo(value: moment.Moment): void;
    predicate: (item: TDataType, filterValue: IDateFilterValue) => boolean;
    serialize(): Observable<IDateFilterValue>;
    private getValue(item);
}
