import { DataSet as DataSetType } from '../DataSet/types';
import { Field } from '../AdditionalFilter/types';
import { QueryAttributes } from '../QueryAttributes/types';
import { TextOverride } from '../Translations/types';
import Joi from '@vizzly/joi';
export declare type RelativeDate = {
    unit: DurationType | null;
    value: number | null;
    timeFrame: TimeframeType | null;
};
export declare const defaultDurationOptions: (textOverride?: TextOverride | undefined) => {
    minutes: {
        description: string;
        formatter: (currentDate: Date, value: number) => void;
    };
    hours: {
        description: string;
        formatter: (currentDate: Date, value: number) => void;
    };
    days: {
        description: string;
        formatter: (currentDate: Date, value: number) => void;
    };
    weeks: {
        description: string;
        formatter: (currentDate: Date, value: number) => void;
    };
    months: {
        description: string;
        formatter: (currentDate: Date, value: number) => void;
    };
    years: {
        description: string;
        formatter: (currentDate: Date, value: number) => void;
    };
};
declare type DurationOptions = ReturnType<typeof defaultDurationOptions>;
export declare type DurationType = keyof DurationOptions;
export declare const defaultTimeframeOptions: (textOverride?: TextOverride | undefined) => {
    future: {
        description: string;
    };
    past: {
        description: string;
    };
};
declare type TimeframeOptions = ReturnType<typeof defaultTimeframeOptions>;
export declare type TimeframeType = keyof TimeframeOptions;
export declare const relativeSchema: Joi.ObjectSchema<any>;
export declare function isRelative(value: any): boolean;
export declare function isRelativeDateDefined(value: RelativeDate): boolean;
export declare const init: () => RelativeDate;
export declare const calculateRelativeDate: (relativeDate: RelativeDate, startDate?: Date | undefined) => Date;
export declare const buildRelativeRange: (relativeFilters: QueryAttributes.Filter[][], dataSet: DataSetType, appliesToFields?: Field[] | undefined) => QueryAttributes.Filter[][];
export {};
