import type { Comparator } from '../iScalarFilter';
import type { ISimpleFilterModelPresetType, Tuple } from '../iSimpleFilter';
import { ScalarFilterHandler } from '../scalarFilterHandler';
import { DateFilterModelFormatter } from './dateFilterModelFormatter';
import type { DateFilterModel, IDateFilterParams } from './iDateFilter';
type Range = {
    from: Date;
    to: Date;
};
export declare class DateFilterHandler extends ScalarFilterHandler<DateFilterModel, Date, IDateFilterParams> {
    readonly filterType: "date";
    protected readonly FilterModelFormatterClass: typeof DateFilterModelFormatter;
    private readonly filterTypeToRangeCache;
    constructor();
    getOrRefreshRangeCacheItem(key: ISimpleFilterModelPresetType, rangeFn: (s: Date, e: Date) => [Date, Date]): Range;
    protected comparator(): Comparator<Date>;
    protected isValid(value: Date): boolean;
    protected evaluateNonNullValue(values: Tuple<Date>, cellValue: Date, filterModel: DateFilterModel): boolean;
}
type RelativeDateFn = (date: Date) => Date;
type RelativeRangeFn = (from: Date, to: Date) => [Date, Date];
/**
 * Spec:
 * Today                   today               [startOfToday, startOfTomorrow)
 * Yesterday               yesterday           [startOfYesterday, startOfToday)
 * Tomorrow                tomorrow            [startOfTomorrow, startOfDayAfterTomorrow)
 * This Week               thisWeek            [startOfCurrentWeek, startOfNextWeek)
 * Last Week               lastWeek            [startOfPreviousWeek, startOfCurrentWeek)
 * Next Week               nextWeek            [startOfNextWeek, startOfWeekAfterNext)
 * This Month              thisMonth           [startOfCurrentMonth, startOfNextMonth)
 * Last Month              lastMonth           [startOfPreviousMonth, startOfCurrentMonth)
 * Next Month              nextMonth           [startOfNextMonth, startOfMonthAfterNext)
 * This Quarter            thisQuarter         [startOfCurrentQuarter, startOfNextQuarter)
 * Last Quarter            lastQuarter         [startOfPreviousQuarter, startOfCurrentQuarter)
 * Next Quarter            nextQuarter         [startOfNextQuarter, startOfQuarterAfterNext)
 * This Year               thisYear            [startOfCurrentYear, startOfNextYear)
 * Last Year               lastYear            [startOfPreviousYear, startOfCurrentYear)
 * Next Year               nextYear            [startOfNextYear, startOfYearAfterNext)
 * Year to Date (YTD)      yearToDate          [startOfCurrentYear, startOfTomorrow)
 * Last 7 days             last7Days           [startOfToday − 7 days, startOfTomorrow)
 * Last 30 days            last30Days          [startOfToday − 30 days, startOfTomorrow)
 * Last 90 days            last90Days          [startOfToday − 90 days, startOfTomorrow)
 * Last 6 months           last6Months         [startOfToday − 6 months, startOfTomorrow)
 * Last 12 months          last12Months        [startOfToday − 12 months, startOfTomorrow)
 * Last 24 months          last24Months        [startOfToday − 24 months, startOfTomorrow)
 */
export declare const presetDateFilterTypeRelativeFromToMap: Record<ISimpleFilterModelPresetType | 'setStartOfDay' | 'setStartOfWeek' | 'setStartOfNextDay' | 'setStartOfNextWeek' | 'setStartOfMonth' | 'setStartOfNextMonth' | 'setStartOfQuarter' | 'setStartOfNextQuarter' | 'setStartOfYear' | 'setStartOfNextYear' | 'setPreviousDay' | 'setPreviousWeek' | 'setPreviousMonth' | 'setPreviousQuarter', RelativeRangeFn | RelativeDateFn>;
export {};
