import type { ICancelEventDetail, IEventDetail } from '@breadstone/mosaik-elements';
/**
 * Trigger type for event activation.
 *
 * @public
 */
export type SchedulerEventActivateTrigger = 'click' | 'keyboard';
/**
 * Event detail for before-event-activate events.
 *
 * @public
 */
export interface ISchedulerBeforeEventActivateEventDetail extends ICancelEventDetail {
    /**
     * The key of the event being activated.
     */
    readonly eventKey: string;
    /**
     * The trigger that caused the activation.
     */
    readonly trigger: SchedulerEventActivateTrigger;
}
/**
 * Event fired before an event is activated.
 * Can be canceled by setting `cancel: true` in the event detail.
 *
 * @public
 */
export type SchedulerBeforeEventActivateEvent = CustomEvent<ISchedulerBeforeEventActivateEventDetail>;
/**
 * Event detail for event-activate events.
 *
 * @public
 */
export interface ISchedulerEventActivateEventDetail extends IEventDetail {
    /**
     * The key of the event that was activated.
     */
    readonly eventKey: string;
    /**
     * The trigger that caused the activation.
     */
    readonly trigger: SchedulerEventActivateTrigger;
}
/**
 * Event fired when an event has been activated.
 *
 * @public
 */
export type SchedulerEventActivateEvent = CustomEvent<ISchedulerEventActivateEventDetail>;
/**
 * Event detail for before-select-range events.
 *
 * @public
 */
export interface ISchedulerBeforeSelectRangeEventDetail extends ICancelEventDetail {
    /**
     * The start date-time of the selection.
     */
    readonly start: Date;
    /**
     * The end date-time of the selection.
     */
    readonly end: Date;
    /**
     * The key of the day column where selection occurred.
     */
    readonly dayKey: string;
    /**
     * Whether the selection is in the all-day area.
     */
    readonly isAllDay: boolean;
}
/**
 * Event fired before a range is selected in the grid.
 * Can be canceled by setting `cancel: true` in the event detail.
 *
 * @public
 */
export type SchedulerBeforeSelectRangeEvent = CustomEvent<ISchedulerBeforeSelectRangeEventDetail>;
/**
 * Event detail for select-range events.
 *
 * @public
 */
export interface ISchedulerSelectRangeEventDetail extends IEventDetail {
    /**
     * The start date-time of the selection.
     */
    readonly start: Date;
    /**
     * The end date-time of the selection.
     */
    readonly end: Date;
    /**
     * The key of the day column where selection occurred.
     */
    readonly dayKey: string;
    /**
     * Whether the selection is in the all-day area.
     */
    readonly isAllDay: boolean;
}
/**
 * Event fired when a range has been selected in the grid.
 *
 * @public
 */
export type SchedulerSelectRangeEvent = CustomEvent<ISchedulerSelectRangeEventDetail>;
/**
 * Event detail for range-change events.
 *
 * @public
 */
export interface ISchedulerRangeChangeEventDetail extends IEventDetail {
    /**
     * The start date of the visible range.
     */
    readonly startDate: Date;
    /**
     * The number of visible days.
     */
    readonly days: number;
}
/**
 * Event fired when the visible range changes.
 *
 * @public
 */
export type SchedulerRangeChangeEvent = CustomEvent<ISchedulerRangeChangeEventDetail>;
/**
 * Event detail for scheduler-event-change events.
 *
 * @public
 */
export interface ISchedulerEventChangeEventDetail extends IEventDetail {
    /**
     * The key of the event that changed.
     */
    readonly eventKey: string;
    /**
     * The property that changed.
     */
    readonly property: 'start' | 'end';
    /**
     * The previous value.
     */
    readonly previousValue: Date;
    /**
     * The new value.
     */
    readonly newValue: Date;
}
/**
 * Event fired when a scheduler event's time properties change.
 * This event bubbles up from mosaik-scheduler-event elements.
 *
 * @public
 */
export type SchedulerEventChangeEvent = CustomEvent<ISchedulerEventChangeEventDetail>;
declare global {
    interface HTMLElementEventMap {
        schedulerBeforeEventActivate: SchedulerBeforeEventActivateEvent;
        schedulerEventActivate: SchedulerEventActivateEvent;
        schedulerBeforeSelectRange: SchedulerBeforeSelectRangeEvent;
        schedulerSelectRange: SchedulerSelectRangeEvent;
        schedulerRangeChange: SchedulerRangeChangeEvent;
        schedulerEventChange: SchedulerEventChangeEvent;
    }
}
//# sourceMappingURL=SchedulerEvents.d.ts.map