import type { CalendarView } from '../Types/CalendarView';
import type { IEventDetail } from '@breadstone/mosaik-elements';
/**
 * Represents a calendar date with metadata.
 *
 * @public
 */
export interface ICalendarDate {
    /**
     * The date value.
     */
    date: Date;
    /**
     * Whether the date is from an adjacent month.
     */
    isAdjacent?: boolean;
    /**
     * Whether the date is blacked out (disabled).
     */
    isBlackout?: boolean;
    /**
     * Whether the date is special (holiday, etc.).
     */
    isSpecial?: boolean;
    /**
     * Whether the date is today.
     */
    isToday?: boolean;
    /**
     * Whether the date is a weekend day.
     */
    isWeekend?: boolean;
}
/**
 * Represents the event detail for date changed events.
 *
 * @public
 */
export interface IDateChangedEventDetail extends IEventDetail {
    /**
     * The selected date.
     */
    readonly value?: ICalendarDate;
    /**
     * The selected dates (for multi-select).
     */
    readonly values?: ReadonlyArray<ICalendarDate>;
}
/**
 * Event fired when calendar date changes.
 *
 * @public
 */
export type DateChangedEvent = CustomEvent<IDateChangedEventDetail>;
/**
 * Represents the event detail for calendar view changed events.
 *
 * @public
 */
export interface ICalendarViewChangedEventDetail extends IEventDetail {
    /**
     * The new calendar view.
     */
    readonly view: CalendarView;
}
/**
 * Event fired when calendar view changes.
 *
 * @public
 */
export type CalendarViewChangedEvent = CustomEvent<ICalendarViewChangedEventDetail>;
/**
 * Represents the event detail for calendar display changed events.
 *
 * @public
 */
export interface ICalendarDisplayChangedEventDetail extends IEventDetail {
    /**
     * The display mode.
     */
    readonly display: 'days' | 'months' | 'years';
}
/**
 * Event fired when calendar display mode changes.
 *
 * @public
 */
export type CalendarDisplayChangedEvent = CustomEvent<ICalendarDisplayChangedEventDetail>;
declare global {
    interface HTMLElementEventMap {
        dateChanged: DateChangedEvent;
        calendarViewChanged: CalendarViewChangedEvent;
        calendarDisplayChanged: CalendarDisplayChangedEvent;
    }
}
//# sourceMappingURL=CalendarEvents.d.ts.map