import type { DayOfWeek, ISODateString } from '../../utils/dateTypes';
import { type PlainDate } from '../../utils/plainDate';
/**
 * Represents a single day in the calendar grid.
 */
export interface CalendarDay {
    /** The PlainDate for this day */
    date: PlainDate;
    /** ISO date string (YYYY-MM-DD) */
    iso: ISODateString;
    /** Whether this day is outside the current month */
    isOutside: boolean;
    /** The day number (1-31) */
    dayNumber: number;
}
/**
 * Configuration for calendar days generation
 */
export interface UseCalendarDaysOptions {
    /** The year to generate days for */
    year: number;
    /** The month (1-based: 1 = January, 12 = December) */
    month: number;
    /** First day of week (0=Sunday through 6=Saturday) */
    weekStartsOn?: DayOfWeek;
    /** Use variable rows per month vs. fixed 6-row grid */
    hasVariableRowCount?: boolean;
}
/**
 * Return type for useCalendarDays hook
 */
export interface UseCalendarDaysReturn {
    /** All days in the grid (includes outside days) */
    days: CalendarDay[];
    /** Days grouped into weeks */
    weeks: CalendarDay[][];
    /** Localized day names for the header */
    dayNames: string[];
    /** Total number of cells in the grid */
    totalCells: number;
}
/**
 * Hook for generating calendar day grids.
 *
 * Calculates all the days to display for a given month, including
 * days from adjacent months to fill the grid.
 *
 * @example
 * ```
 * const {days, weeks, dayNames} = useCalendarDays({
 *   year: 2026,
 *   month: 1, // January (1-based)
 *   weekStartsOn: 0, // Sunday
 * });
 * // days[i].date is a PlainDate { year, month (1-based), day }
 * ```
 */
export declare function useCalendarDays(options: UseCalendarDaysOptions): UseCalendarDaysReturn;
//# sourceMappingURL=useCalendarDays.d.ts.map