import { AllDayVisibility } from '../../../../Types/AllDayVisibility';
import { SchedulerView } from '../../../../Types/SchedulerView';
import { IAllDayEvent } from '../models/IAllDayEvent';
import { IPositionedEvent } from '../models/IPositionedEvent';
import { SchedulerViewBaseElement } from './Abstracts/SchedulerViewBaseElement';
import { ISchedulerTimeGridViewElementProps } from './ISchedulerTimeGridViewElementProps';
/**
 * Scheduler TimeGrid View - A time grid view with configurable day columns.
 *
 * @description
 * The TimeGrid view displays events in a time-based grid layout with columns representing days.
 * It supports day view (single column), work week view (5 columns), and week view (7 columns).
 * Events are positioned vertically based on their time and horizontally based on overlap detection.
 *
 * @name Scheduler TimeGrid View
 * @element mosaik-scheduler-time-grid-view
 * @category Scheduler
 *
 * @slot - Default slot for event content
 *
 * @csspart container - The main container
 * @csspart header - The header row with day labels
 * @csspart header-columns - Container for day header cells
 * @csspart header-spacer - Spacer aligned with timescale width
 * @csspart header-cell - Individual day header cells
 * @csspart header-weekday - The weekday name in the header
 * @csspart header-day - The day number in the header
 * @csspart all-day-panel - The all-day events panel
 * @csspart all-day-label - The "All day" label
 * @csspart all-day-row - Container for all-day cells
 * @csspart all-day-cell - Individual all-day cells per day
 * @csspart all-day-events - Container for all-day event chips
 * @csspart all-day-event - Individual all-day event chip
 * @csspart body - The scrollable body area
 * @csspart timescale - The time labels on the left
 * @csspart grid-wrapper - Container for grid and appointments overlay
 * @csspart grid - The time slot grid
 * @csspart grid-row - A single row in the grid
 * @csspart grid-cell - Individual grid cells
 * @csspart appointments - Overlay container for positioned events
 * @csspart appointment-column - Column container for events of a day
 * @csspart event - Individual event items
 * @csspart indicator - The now indicator
 *
 * @cssprop {Color} --scheduler-time-grid-view-background-color - Background color of the view
 * @cssprop {Color} --scheduler-time-grid-view-border-color - Border color
 * @cssprop {String} --scheduler-time-grid-view-border-radius - Border radius
 * @cssprop {String} --scheduler-time-grid-view-border-style - Border style
 * @cssprop {String} --scheduler-time-grid-view-border-width - Border width
 * @cssprop {Color} --scheduler-time-grid-view-cell-border-color - Border color for time cells
 * @cssprop {String} --scheduler-time-grid-view-cell-border-radius - Border radius for time cells
 * @cssprop {String} --scheduler-time-grid-view-cell-border-style - Border style for time cells
 * @cssprop {String} --scheduler-time-grid-view-cell-border-width - Border width for time cells
 * @cssprop {String} --scheduler-time-grid-view-cell-height - Height of time slot cells
 * @cssprop {String} --scheduler-time-grid-view-column-min-width - Minimum width of day columns
 * @cssprop {Color} --scheduler-time-grid-view-foreground-color - Foreground/text color
 * @cssprop {String} --scheduler-time-grid-view-gap - Gap between elements
 * @cssprop {String} --scheduler-time-grid-view-header-cell-padding-bottom - Bottom padding for header cells
 * @cssprop {String} --scheduler-time-grid-view-header-cell-padding-left - Left padding for header cells
 * @cssprop {String} --scheduler-time-grid-view-header-cell-padding-right - Right padding for header cells
 * @cssprop {String} --scheduler-time-grid-view-header-cell-padding-top - Top padding for header cells
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-family - Font family for day number in header
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-letter-spacing - Letter spacing for day number
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-line-height - Line height for day number
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-size - Font size for day number
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-text-decoration - Text decoration for day number
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-text-transform - Text transform for day number
 * @cssprop {String} --scheduler-time-grid-view-header-day-font-weight - Font weight for day number
 * @cssprop {String} --scheduler-time-grid-view-header-font-family - Font family for header
 * @cssprop {String} --scheduler-time-grid-view-header-font-letter-spacing - Letter spacing for header
 * @cssprop {String} --scheduler-time-grid-view-header-font-line-height - Line height for header
 * @cssprop {String} --scheduler-time-grid-view-header-font-size - Font size for header
 * @cssprop {String} --scheduler-time-grid-view-header-font-text-decoration - Text decoration for header
 * @cssprop {String} --scheduler-time-grid-view-header-font-text-transform - Text transform for header
 * @cssprop {String} --scheduler-time-grid-view-header-font-weight - Font weight for header
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-family - Font family for weekday labels
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-letter-spacing - Letter spacing for weekday labels
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-line-height - Line height for weekday labels
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-size - Font size for weekday labels
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-text-decoration - Text decoration for weekday labels
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-text-transform - Text transform for weekday labels
 * @cssprop {String} --scheduler-time-grid-view-header-weekday-font-weight - Font weight for weekday labels
 * @cssprop {Color} --scheduler-time-grid-view-hour-border-color - Border color for hour boundaries
 * @cssprop {String} --scheduler-time-grid-view-hour-border-radius - Border radius for hour boundaries
 * @cssprop {String} --scheduler-time-grid-view-hour-border-style - Border style for hour boundaries
 * @cssprop {String} --scheduler-time-grid-view-hour-border-width - Border width for hour boundaries
 * @cssprop {String} --scheduler-time-grid-view-padding-bottom - Bottom padding
 * @cssprop {String} --scheduler-time-grid-view-padding-left - Left padding
 * @cssprop {String} --scheduler-time-grid-view-padding-right - Right padding
 * @cssprop {String} --scheduler-time-grid-view-padding-top - Top padding
 * @cssprop {String} --scheduler-time-grid-view-timescale-width - Width of the timescale column
 * @cssprop {Color} --scheduler-time-grid-view-today-background-color - Background color for today's column
 * @cssprop {String} --scheduler-time-grid-view-transition-duration - Duration for transitions
 * @cssprop {String} --scheduler-time-grid-view-transition-mode - Timing function for transitions
 * @cssprop {String} --scheduler-time-grid-view-transition-property - CSS properties to transition
 *
 * @public
 */
export declare class SchedulerTimeGridViewElement extends SchedulerViewBaseElement implements ISchedulerTimeGridViewElementProps {
    private _days;
    private _hourStart;
    private _hourEnd;
    private _stepMinutes;
    private _allDayVisibility;
    private _visibleDates;
    private _eventsByDay;
    private _allDayEventsByDay;
    private _nowIndicatorIntervalId;
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets the layout mode for this view.
     *
     * @public
     * @override
     * @readonly
     */
    get view(): SchedulerView;
    /**
     * Gets or sets the number of days to display.
     *
     * @public
     * @attr
     */
    get days(): number;
    set days(value: number);
    /**
     * Gets or sets the start hour of the time range.
     *
     * @public
     * @attr
     */
    get hourStart(): number;
    set hourStart(value: number);
    /**
     * Gets or sets the end hour of the time range.
     *
     * @public
     * @attr
     */
    get hourEnd(): number;
    set hourEnd(value: number);
    /**
     * Gets or sets the step interval in minutes.
     *
     * @public
     * @attr
     */
    get stepMinutes(): number;
    set stepMinutes(value: number);
    /**
     * Gets or sets the visibility mode for all-day events.
     *
     * @public
     * @attr
     */
    get allDayVisibility(): AllDayVisibility;
    set allDayVisibility(value: AllDayVisibility);
    /**
     * Gets the visible dates array.
     *
     * @public
     * @readonly
     */
    get visibleDates(): Array<Date>;
    /**
     * Gets the events organized by day.
     *
     * @public
     * @readonly
     */
    get eventsByDay(): Map<string, Array<IPositionedEvent>>;
    /**
     * Gets the time slots for rendering the grid.
     *
     * @public
     * @readonly
     */
    get timeSlots(): Array<{
        time: string;
        label: string;
        isHour: boolean;
        isLastOfHour: boolean;
    }>;
    /**
     * Returns whether there are any all-day events.
     *
     * @public
     * @readonly
     */
    get hasAllDayEvents(): boolean;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Gets events for a specific day.
     *
     * @public
     * @param dayKey - The day key (YYYY-MM-DD).
     * @returns Array of positioned events for that day.
     */
    getEventsForDay(dayKey: string): Array<IPositionedEvent>;
    /**
     * Gets all all-day events across all visible days.
     *
     * @public
     * @returns Array of all all-day events.
     */
    getAllDayEvents(): Array<IAllDayEvent>;
    /**
     * Calculates the now indicator top position as percentage.
     *
     * @public
     * @returns The top position percentage (0-100), or -1 if outside visible range.
     */
    getNowIndicatorTop(): number;
    protected onDateChanged(): void;
    protected onEventChanged(): void;
    private updateVisibleDates;
    private positionEvents;
    private calculateEventLanes;
    private startNowIndicatorSync;
    private stopNowIndicatorSync;
}
/**
 * @public
 */
export declare namespace SchedulerTimeGridViewElement {
    type Props = ISchedulerTimeGridViewElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-scheduler-time-grid-view': SchedulerTimeGridViewElement;
    }
}
//# sourceMappingURL=SchedulerTimeGridViewElement.d.ts.map