import { DateLocaleData } from '../components/calcite-date-picker/utils';
export interface HoverRange {
    focused: "end" | "start";
    start: Date;
    end: Date;
}
/**
 * Check if date is within a min and max
 *
 * @param date
 * @param min
 * @param max
 */
export declare function inRange(date: Date, min?: Date | string, max?: Date | string): boolean;
/**
 * Ensures date is within range,
 * returns min or max if out of bounds
 *
 * @param date
 * @param min
 * @param max
 */
export declare function dateFromRange(date?: any, min?: Date | string, max?: Date | string): Date | null;
/**
 * Parse an iso8601 string (YYYY-mm-dd) into a valid date.
 * TODO: handle time when time of day UI is added
 *
 * @param iso8601
 * @param isEndDate
 */
export declare function dateFromISO(iso8601: string | Date, isEndDate?: boolean): Date | null;
/**
 * Parse a localized date string into a valid Date.
 * return false if date is invalid, or out of range
 *
 * @param value
 * @param localeData
 */
export declare function dateFromLocalizedString(value: string, localeData: DateLocaleData): Date;
export declare function parseCalendarYear(year: number, localeData: DateLocaleData): number;
export declare function formatCalendarYear(year: number, localeData: DateLocaleData): number;
/**
 * Retrieve day, month, and year strings from a localized string
 *
 * @param string
 * @param localeData
 */
export declare function datePartsFromLocalizedString(string: string, localeData: DateLocaleData): {
    day: string;
    month: string;
    year: string;
};
/**
 * Return the date portion in local time of a Date object in ISO 8601 format (YYYY-MM-DD)
 *
 * @param date
 */
export declare function dateToISO(date?: Date): string;
/**
 * Retrieve day, month, and year strings from a ISO string (YYYY-mm-dd)
 *
 * @param string
 * @param isoDate
 */
export declare function datePartsFromISO(isoDate: string): {
    day: string;
    month: string;
    year: string;
};
/**
 * Check if two dates are the same day, month, year
 *
 * @param d1
 * @param d2
 */
export declare function sameDate(d1: Date, d2: Date): boolean;
/**
 * Get a date one month in the past
 *
 * @param date
 */
export declare function prevMonth(date: Date): Date;
/**
 * Get active date in a given month.
 *
 * @param date
 * @param month
 */
export declare function getDateInMonth(date: Date, month: number): Date;
/**
 * Get First Valid date in a month.
 *
 * @param date
 * @param min
 * @param max
 */
export declare function getFirstValidDateInMonth(date: Date, min: Date, max: Date): Date;
/**
 * Get a date one month in the future
 *
 * @param date
 */
export declare function nextMonth(date: Date): Date;
/**
 * Parse numeric units for day, month, and year from a localized string
 * month starts at 0 (can pass to date constructor)
 * can return values as number or string
 *
 * @param string
 * @param localeData
 */
export declare function parseDateString(string: string, localeData: DateLocaleData): {
    day: number;
    month: number;
    year: number;
};
type unitOrderSignifier = "m" | "d" | "y";
/**
 * Based on the unitOrder string, find order of month, day, and year for locale
 *
 * @param unitOrder
 */
export declare function getOrder(unitOrder: string): unitOrderSignifier[];
/**
 * Get number of days between two dates
 *
 * @param date1
 * @param date2
 */
export declare function getDaysDiff(date1: Date, date2: Date): number;
/**
 * Set time of the day to the end.
 *
 * @param {Date} date Date.
 * @returns {Date} Date with time set to end of day .
 */
export declare function setEndOfDay(date: Date): Date;
/**
 * Returns true if two dates have same month and year.
 *
 * @param date1
 * @param date2
 * @returns {boolean}
 */
export declare function hasSameMonthAndYear(date1: Date, date2: Date): boolean;
export {};
