import type { ExtractPropTypes } from 'vue';
import type Calendar from './calendar.vue';
export declare const calendarEventTextSizes: readonly ["sm", "md", "lg"];
export declare const calendarWeekdayFormats: readonly ["min", "short", "long"];
export declare const calendarWeekStartDays: readonly [0, 1];
export declare const calendarWeekColumnDateFormats: readonly ["M/D", "M月D日", "D日", "D"];
export declare const calendarFirstDayFormats: readonly ["monthDay", "dayMonth", "chineseDate"];
export declare const calendarDayTitleFormats: readonly ["YYYY-MM-DD", "YYYY/MM/DD", "YYYY年M月D日", "YYYY年MM月DD日", "M月D日 dddd", "MM/DD ddd", "DD/MM/YYYY", "ddd, MMM D, YYYY", "dddd, MMMM D"];
export declare const calendarMonthTitleFormats: readonly ["YYYY-MM", "YYYY年M月", "M月"];
export declare const calendarWeekTitleFormats: readonly ["YYYY 第W周", "YYYY年 第W周", "第W周", "W周", "YYYY/W", "W/YYYY", "MM/DD - MM/DD", "YYYY/MM/DD - MM/DD", "YYYY年M月D日-D日", "YYYY年M月D日 - M月D日", "Week W, YYYY", "YYYY-MM-DD / DD"];
export type CalendarEventTextSize = (typeof calendarEventTextSizes)[number];
export type CalendarWeekdayFormat = (typeof calendarWeekdayFormats)[number];
export type CalendarWeekStartDay = (typeof calendarWeekStartDays)[number];
export type CalendarWeekColumnDateFormat = (typeof calendarWeekColumnDateFormats)[number];
export type CalendarFirstDayPresetFormat = (typeof calendarFirstDayFormats)[number];
export type CalendarDayTitlePresetFormat = (typeof calendarDayTitleFormats)[number];
export type CalendarMonthTitlePresetFormat = (typeof calendarMonthTitleFormats)[number];
export type CalendarWeekTitlePresetFormat = (typeof calendarWeekTitleFormats)[number];
export type CalendarFirstDayFormat = string;
export type CalendarDayTitleFormat = string;
export type CalendarMonthTitleFormat = string;
export type CalendarWeekTitleFormat = string;
export interface CalendarEventDisplayField {
    label?: string;
    key: string;
    type?: string;
    props?: Record<string, any>;
    colProps?: Record<string, any>;
    style?: Record<string, any>;
    on?: Record<string, (...args: any[]) => void>;
    editComponent?: {
        type?: string;
        label?: string;
        props?: Record<string, any>;
        colProps?: Record<string, any>;
        spanCol?: number;
        [key: string]: any;
    };
    children?: CalendarEventDisplayField[];
}
/**
 * 日期组配置：将一条原始记录的多组日期字段（如计划/实际）展开为多条派生日程。
 * 详见「日期组功能档案」。
 */
export interface CalendarDateGroup {
    /** 日期组唯一标识，参与复合事件 ID 生成（`${rawRecordId}_${id}`） */
    id: string;
    /** 原始记录中「开始时间」对应的字段名 */
    startField: string;
    /** 「结束时间」字段名（缺省时事件退化为单点，end = start） */
    endField?: string;
    /** 是否启用（默认 true，`enabled !== false` 视为启用） */
    enabled?: boolean;
    /** 标签文字（旧字段，作为 tag 的兜底） */
    labelText?: string;
    /** 标签颜色（旧字段，作为 eventColor 的兜底） */
    labelColor?: string;
    /** 标签文本（新字段，优先级高于 labelText） */
    tag?: string;
    /** 标签文本（兼容写法） */
    tagText?: string;
    /** 标签背景色 */
    tagColor?: string;
    /** 日程统一色调（同时影响左侧边框 + 浅色背景），缺省回退到 labelColor */
    eventColor?: string;
    /** 事件背景色，优先级高于 eventColor */
    backgroundColor?: string;
    /** 事件边框色，优先级高于 eventColor */
    borderColor?: string;
    /** 事件文字颜色 */
    color?: string;
    [key: string]: any;
}
export type CalendarView = 'month' | 'week' | 'day';
export declare const defaultCalendarFieldComponents: Record<string, any>;
export interface CalendarEvent {
    id?: string | number;
    title?: string;
    start: string | Date;
    end?: string | Date;
    /** 事件背景色，优先级高于 eventColor */
    backgroundColor?: string;
    /** 事件左侧边框颜色，优先级高于 eventColor */
    borderColor?: string;
    /** 事件文字颜色 */
    color?: string;
    /** 统一色调：同时设置左侧边框色与浅色背景（backgroundColor/borderColor 会覆盖此值） */
    eventColor?: string;
    /** 标题前显示的标签文本 */
    tag?: string;
    /** 标签背景颜色 */
    tagColor?: string;
    content?: string;
    class?: string;
    allDay?: boolean;
    _eid?: string;
    split?: string | number;
    /** 派生事件指向的原始记录 ID（日期组展开时写入） */
    rawRecordId?: string;
    /** 派生事件所属日期组 ID（日期组展开时写入） */
    _dateGroupId?: string;
    [key: string]: any;
}
export interface CalendarCellClickRaw {
    date: Date;
    split?: string | number;
    [key: string]: any;
}
export interface CalendarSelectRaw {
    start: Date;
    end: Date;
    split?: string | number;
}
export interface CalendarEventClickRaw {
    event: CalendarEvent;
    nativeEvent?: Event;
}
export interface CalendarEventContextMenuRaw {
    event: CalendarEvent;
    nativeEvent: MouseEvent;
}
export interface CalendarEventDropRaw {
    event: CalendarEvent;
    originalEvent?: CalendarEvent;
    external?: boolean;
}
export interface CalendarEventResizeRaw {
    event: CalendarEvent;
    originalEvent?: CalendarEvent;
}
export interface CalendarEventEditRaw {
    event: CalendarEvent;
    originalEvent?: CalendarEvent;
    isCreate?: boolean;
}
export interface CalendarEventDeleteRaw {
    event: CalendarEvent;
}
export interface CalendarDatesChangeRaw {
    view: 'month' | 'week' | 'day';
    startDate: Date;
    endDate: Date;
    firstCellDate?: Date;
    lastCellDate?: Date;
    events?: CalendarEvent[];
}
export declare const calendarProps: {
    readonly modelValue: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<CalendarEvent[]>, unknown, unknown, () => any[], boolean>;
    readonly view: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<CalendarView>, unknown, unknown, "month", boolean>;
    readonly currentDate: {
        readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<import("vue").PropType<string | Date>, unknown, unknown>>;
        readonly required: false;
        readonly validator: (val: unknown) => boolean;
        __epPropKey: true;
    };
    readonly editableEvents: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<Partial<{
        drag: boolean;
        resize: boolean;
        delete: boolean;
        create: boolean;
        selectCreate: boolean;
    }>>, unknown, unknown, () => {}, boolean>;
    readonly selectable: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    readonly readonly: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
    readonly disableCreateInPast: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
    readonly clickOutOfMonthJump: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
    readonly allDaySlot: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
    readonly nowIndicator: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    readonly timeSlotFormat: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "HH:mm", boolean>;
    readonly dayMaxEvents: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<number | boolean>, unknown, unknown, true, boolean>;
    readonly eventsOnMonthView: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<boolean | "short">, unknown, unknown, true, boolean>;
    readonly height: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<string | number>, unknown, unknown, "auto", boolean>;
    readonly slotMinTime: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "00:00:00", boolean>;
    readonly slotMaxTime: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "24:00:00", boolean>;
    readonly slotDuration: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "00:15:00", boolean>;
    readonly timeCellHeight: import("ll-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 190, boolean>;
    readonly autoScrollToNow: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    readonly autoScrollOnlyToday: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
    readonly eventTitleKey: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "title", boolean>;
    readonly eventDescriptionKey: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "content", boolean>;
    readonly eventImageKey: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
    readonly eventMetaFields: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<CalendarEventDisplayField[]>, unknown, unknown, () => any[], boolean>;
    readonly eventDisplayFields: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<CalendarEventDisplayField[]>, unknown, unknown, () => any[], boolean>;
    readonly components: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<Record<string, any>>, unknown, unknown, () => {}, boolean>;
    readonly eventMaxMetaCount: import("ll-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 2, boolean>;
    readonly eventTextSize: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<"sm" | "md" | "lg">, "sm" | "md" | "lg", unknown, "md", boolean>;
    readonly weekdayFormat: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<"min" | "short" | "long">, "min" | "short" | "long", unknown, "long", boolean>;
    readonly weekStartDay: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<0 | 1>, 0 | 1, unknown, 0, boolean>;
    readonly weekColumnDateFormat: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<"D" | "M/D" | "M月D日" | "D日">, "D" | "M/D" | "M月D日" | "D日", unknown, "D", boolean>;
    readonly firstDayFormat: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<string>, unknown, unknown, "chineseDate", boolean>;
    readonly monthTitleFormat: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<string>, unknown, unknown, "YYYY-MM", boolean>;
    readonly weekTitleFormat: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<string>, unknown, unknown, "YYYY 第W周", boolean>;
    readonly dayTitleFormat: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<string>, unknown, unknown, "YYYY-MM-DD", boolean>;
    readonly showLunar: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
    readonly dateGroups: import("ll-plus/es/utils").EpPropFinalized<import("vue").PropType<CalendarDateGroup[]>, unknown, unknown, () => any[], boolean>;
    readonly dateGroupTitleFormat: import("ll-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
};
export type CalendarProps = ExtractPropTypes<typeof calendarProps>;
export type CalendarInstance = InstanceType<typeof Calendar>;
export interface CalendarChangeContext {
    events: CalendarEvent[];
}
export interface CalendarDateClickContext extends CalendarChangeContext {
    raw: CalendarCellClickRaw;
}
export interface CalendarSelectContext extends CalendarChangeContext {
    raw: CalendarSelectRaw;
}
export interface CalendarEventClickContext extends CalendarChangeContext {
    raw: CalendarEventClickRaw;
    event: CalendarEvent;
}
export interface CalendarEventDropContext extends CalendarChangeContext {
    raw: CalendarEventDropRaw;
    event: CalendarEvent;
}
export interface CalendarEventContextMenuContext extends CalendarChangeContext {
    raw: CalendarEventContextMenuRaw;
    event: CalendarEvent;
}
export interface CalendarEventResizeContext extends CalendarChangeContext {
    raw: CalendarEventResizeRaw;
    event: CalendarEvent;
}
export interface CalendarEventEditContext extends CalendarChangeContext {
    raw: CalendarEventEditRaw;
    event: CalendarEvent;
}
export interface CalendarEventDeleteContext extends CalendarChangeContext {
    raw: CalendarEventDeleteRaw;
    event: CalendarEvent;
}
export interface CalendarDatesChangeContext extends CalendarChangeContext {
    raw: CalendarDatesChangeRaw;
}
export declare function normalizeCalendarEvent(event: CalendarEvent): CalendarEvent;
export declare function normalizeCalendarEvents(events?: CalendarEvent[]): CalendarEvent[];
export declare const titleEnum: {
    day: string;
    week: string;
    month: string;
};
