import { ComparisonInterval } from '../models/ComparisonInterval';
import { DateInputFormat } from '../models/DateInputFormat';
import { DateInterval } from '../models/DateInterval';
import { SimpleDate } from '../models/SimpleDate';
export declare const dateTimeFormats: readonly ["dateTimeFullMonthFormat", "dateTimeVeryLongFormat", "dateTimeLongFormat", "dateTimeMediumFormat", "dateMediumLongFormat", "dateMediumFormat", "timeFormat", "shortTimeFormat", "dateFormat", "yearMonthFormat", "yearMonthLongFormat", "twoDigitsFormat"];
export type DateTimeFormat = (typeof dateTimeFormats)[number];
export declare function formatDate(date: Date, locale: string, timezone: string, format?: DateTimeFormat): string;
export declare function getWeekDayNamesForLocale(locale: string, format?: 'long' | 'short' | 'narrow', timezone?: string): string[];
/**
 * Return a string representing a date in the format for the supplied locale.
 * For example, if the locale is 'en-US' and the returned value is `"MM/DD/YYYY"`,
 * and for locale 'es' the returned value is `"DD/MM/YYYY"`.
 *
 * All formats always have a 'DD' component representing the day of the month,
 * and a 'MM' component representing the month, and a 'YYYY' component representing
 * the year.
 */
export declare function getDateInputFormatForLocale(locale: string): DateInputFormat;
/**
 * Return a Date object representing the supplied string date for a locale and timezone.
 * Supplied string date must be in the format returned by `getDateFormatForLocale(locale)`.
 *
 * If the supplied string date is invalid, the returned date will be invalid.
 */
export declare function parseDateForLocale(dateString: string, locale: string, timezone: string): Date;
export declare function getDatesFromDateInterval(interval: Exclude<DateInterval, 'custom'>, maxSelectableDays: number, timezone: string, options?: {
    includeTime: boolean;
}): {
    startDate: Date;
    endDate: Date;
};
export declare function getComparisonInterval(comparisonInterval: Exclude<ComparisonInterval, 'custom'>, startSimpleDate: SimpleDate, endSimpleDate: SimpleDate, timezone: string, minDate: Date): {
    comparisonStartDate: Date;
    comparisonEndDate: Date;
};
/**
 * Return true if first simpleDate is after the second simpleDate.
 */
export declare function isAfterSimpleDate(d1: SimpleDate | null, d2: SimpleDate | null): boolean;
/**
 * Return true if all simpleDate are exactly the same.
 */
export declare function areSameSimpleDate(...simpleDates: (SimpleDate | null)[]): boolean;
/**
 * Return a SimpleDate representing the supplied date in the supplied timezone
 */
export declare function dateToSimpleDate(date: Date | null | undefined, timezone: string): SimpleDate | null;
export declare function getDisplayEndDate(date: Date, timezone: string, includeTime: boolean): Date;
/**
 * Return a date applying a time
 */
export declare function applyTimeToDate(date: Date, time?: Date): Date;
