import type { CalendarProjection, RecordId, Rect, Viewport } from '@univerjs/core';
export type CalendarLayoutMode = 'day' | 'week' | 'month';
export interface ICalendarLayoutOptions {
    anchorMs?: number;
    nowMs?: number;
    draftEvent?: ICalendarDraftEvent | null;
    timeScrollY?: number;
    allDayScrollY?: number;
}
export interface ICalendarDraftEvent {
    id: string;
    title: string;
    startMs: number;
    endMs?: number;
    color?: string;
}
export interface ICalendarLayoutColumn {
    key: string;
    label: string;
    dateLabel: string;
    startMs: number;
    endMs: number;
    rect: Rect;
    headerRect: Rect;
    isToday: boolean;
}
export interface ICalendarLayoutEvent {
    recordId: RecordId;
    title: string;
    color: string;
    rect: Rect;
    columnKey: string;
    allDay: boolean;
    continuesBefore?: boolean;
    continuesAfter?: boolean;
}
export interface ICalendarLayoutMore {
    key: string;
    dateMs: number;
    count: number;
    rect: Rect;
    items: ICalendarLayoutMoreItem[];
}
export interface ICalendarLayoutMoreItem {
    recordId: RecordId;
    title: string;
    color: string;
    continuesBefore?: boolean;
    continuesAfter?: boolean;
}
export interface ICalendarTempLayoutEvent {
    id: string;
    title: string;
    color: string;
    rect: Rect;
    rects?: Rect[];
}
export interface ICalendarCurrentTimeIndicator {
    y: number;
    dotX: number;
    lineStartX: number;
    lineEndX: number;
    columnKey: string;
}
export interface ICalendarLayout {
    mode: CalendarLayoutMode;
    headerHeight: number;
    contentRect: Rect;
    dayHeaderRect?: Rect;
    allDayRect?: Rect;
    timeBodyRect?: Rect;
    allDayContentHeight?: number;
    timeContentHeight?: number;
    timeScaleHeight?: number;
    timeTopPadding?: number;
    timeBottomPadding?: number;
    title: string;
    columns: ICalendarLayoutColumn[];
    timeSlots: Array<{
        label: string;
        y: number;
    }>;
    events: ICalendarLayoutEvent[];
    moreEvents: ICalendarLayoutMore[];
    currentTimeIndicator?: ICalendarCurrentTimeIndicator;
    tempEvent?: ICalendarTempLayoutEvent;
}
export declare function buildCalendarLayout(projection: CalendarProjection, viewport: Viewport, options?: ICalendarLayoutOptions): ICalendarLayout;
