/**
 * Calendar grid helpers — pure date math.
 *
 * No items. No timezones beyond the runtime locale. No domain.
 * Use these to lay out month/week views; group items into the resulting
 * cells with `groupItemsByDate` from `./group`.
 */
export type WeekStart = 'sunday' | 'monday';
export declare const DAY_NAMES: readonly ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
export declare const MONTH_NAMES: readonly ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
/**
 * Convention default: maximum events to show per calendar day before a
 * "+N more" overflow indicator. Renderers may override.
 */
export declare const MAX_EVENTS_PER_DAY = 3;
/** Format a date as YYYY-MM-DD using the runtime's local timezone. */
export declare function formatDateKey(date: Date): string;
/**
 * True when `date` and `now` are the same local calendar day.
 * `now` defaults to `new Date()` so casual callers don't need to thread it,
 * but tests and snapshot-rendering should pass an explicit value.
 */
export declare function isToday(date: Date, now?: Date): boolean;
/** True when two dates fall on the same local calendar day. */
export declare function isSameLocalDay(left: Date, right: Date): boolean;
export declare function getStartOfMonth(date: Date): Date;
export declare function getEndOfMonth(date: Date): Date;
/**
 * Add (or subtract) months to a date, clamping the day-of-month to the
 * target month's last day. Avoids JS Date overflow (Jan 29 + 1 month → Mar 1
 * in non-leap years).
 */
export declare function addMonths(date: Date, months: number): Date;
/**
 * Get an inclusive 3-month window around `date`, returned as ISO strings
 * with UTC midnight bounds. Suitable for prefetching event windows when
 * the consumer handles timezone conversion downstream.
 */
export declare function getThreeMonthRange(date: Date): {
    from: string;
    to: string;
};
/**
 * Build the calendar days for a month view. Returns 42 dates (6 rows × 7
 * days) including padding from prior/next months for a stable grid.
 */
export declare function getMonthCalendarDays(year: number, month: number, startOfWeek: WeekStart): Date[];
/** Build the 7 dates of the week containing `baseDate`. */
export declare function getWeekCalendarDays(baseDate: Date, startOfWeek: WeekStart): Date[];
/**
 * Day-name labels reordered for the chosen week start. Pass a custom
 * `dayNames` array (length 7, Sunday-first) to localize.
 */
export declare function getOrderedDayNames(startOfWeek: WeekStart, dayNames?: readonly string[]): string[];
/**
 * Header title for a calendar view.
 *   - month: "January 2025"
 *   - week:  "January 5 - 11, 2025" or "December 30 - January 5, 2025"
 */
export declare function formatCalendarTitle(viewDate: Date, view: 'month' | 'week', days: Date[], monthNames?: readonly string[]): string;
