/**
 * Get the month names for a given locale and format.
 *
 * Reference: https://www.abeautifulsite.net/posts/getting-localized-month-and-day-names-in-the-browser/
 */
export declare function getMonthNames(locale?: string, format?: 'long' | 'numeric' | '2-digit' | 'short' | 'narrow'): string[];
export declare const monthNames: string[];
export declare function getDayLabels(locale?: string): string[];
export declare const daysOfWeek: string[];
export interface Day {
    /** The full Date object for the day. */
    date: Date;
    /** The numeric day of the month (1-31). */
    dayOfMonth: number;
    /** Whether the day falls on a weekend (Saturday or Sunday). */
    isWeekendDay: boolean;
    /** Whether the day belongs to the previous month. */
    isPreviousMonth: boolean;
    /** Whether the day belongs to the next month. */
    isNextMonth: boolean;
    /** Whether the day is today. */
    isToday: boolean;
    /** The day formatted as a string using the configured format. */
    formattedDate: string;
}
export interface DayOptions {
    /** Date format string used to format the day. */
    format: string;
}
export declare function getWeeks(date: Date, options?: DayOptions): Day[][];
/**
 * Get attributes for the day:
 * - isActive: if the day is within the selected range
 * - isRangeStart: if the day is the start of the range
 * - isRangeEnd: if the day is the end of the range
 *
 * "Range" here refers to a selection OR a selected date to hovered date.
 */
export declare function getDayAttributes(day: Date, current: Date | [Date, Date] | [Date, undefined] | [undefined, undefined] | undefined, hover: Date, isRange: boolean): {
    isActive: boolean;
    isRangeStart: boolean;
    isRangeEnd: boolean;
};
/**
 * Get whether the space below the current day is empty or not
 */
export declare function isNextWeekEmpty(day: Date, range: [Date, Date], hideNextMonth: boolean): boolean;
/**
 * Get whether the space above the current day is empty or not
 */
export declare function isPreviousWeekEmpty(day: Date, range: [Date, Date], hidePrevMonth: boolean): boolean;
/**
 * Update the time or date based on the current date and the range start.
 *
 * @param currentDate - The current date or range.
 * @param newDate - The new date to update.
 * @param isRange - Whether the current date is a range.
 * @param rangeStart - Whether the current date is the start of the range.
 * @returns The updated date.
 */
export declare function updateDateTime(currentDate: Date | [Date, Date], newDate: Date, isRange?: boolean, rangeStart?: boolean): Date;
/**
 * Check if a preset is active
 * @param presetValue - The preset value to check
 * @param value - The value to check against
 * @returns True if the preset is active, false otherwise
 */
export declare const isPresetActive: (presetValue: Date | [Date, Date], value: Date | [Date, Date], includeTime?: boolean) => boolean;
