import { type ComputedRef, type Ref } from 'vue';
import { type CalendarEvent, type CalendarEventDisplayField, type CalendarProps } from './calendar';
type CalendarEmit = (event: any, payload: any) => void;
type EditableConfig = {
    drag?: boolean;
    resize?: boolean;
    delete?: boolean;
    create?: boolean;
    selectCreate?: boolean;
};
export interface UseCalendarEditorOptions {
    props: Pick<CalendarProps, 'readonly' | 'eventTitleKey' | 'selectable' | 'disableCreateInPast'>;
    emit: CalendarEmit;
    defaultEventTitle: string;
    slotStepMinutes: Ref<number>;
    editableDisplayFields: ComputedRef<CalendarEventDisplayField[]>;
    internalEvents: Ref<CalendarEvent[]>;
    currentEditableEvent: ComputedRef<EditableConfig>;
    canQuickCreate: ComputedRef<boolean>;
    canSelectCreate: ComputedRef<boolean>;
    getEventIdentifier: (event?: Partial<CalendarEvent>) => string;
    commitEvents: (events: CalendarEvent[]) => void;
    patchEvent: (nextEvent: CalendarEvent, previousEvent?: CalendarEvent) => CalendarEvent[];
    canCreateAtRange: (startValue: string | Date | undefined, endValue?: string | Date) => boolean;
    calendarContainerRef?: Ref<HTMLElement | null | undefined>;
}
export declare const useCalendarEditor: (options: UseCalendarEditorOptions) => {
    editPanelRef: Ref<{
        popoverRef?: {
            value?: HTMLElement | null;
        };
        boundaryRef?: {
            value?: HTMLElement | null;
        };
    }, {
        popoverRef?: {
            value?: HTMLElement | null;
        };
        boundaryRef?: {
            value?: HTMLElement | null;
        };
    } | {
        popoverRef?: {
            value?: HTMLElement | null;
        };
        boundaryRef?: {
            value?: HTMLElement | null;
        };
    }>;
    editPopoverOpen: Ref<boolean, boolean>;
    editPresentationMode: Ref<"popover" | "drawer", "popover" | "drawer">;
    editPopoverPlacement: Ref<"top" | "bottom" | "left" | "right", "top" | "bottom" | "left" | "right">;
    createDraftEventRef: Ref<{
        [x: string]: any;
        id?: string | number;
        title?: string;
        start: string | Date;
        end?: string | Date;
        backgroundColor?: string;
        borderColor?: string;
        color?: string;
        eventColor?: string;
        tag?: string;
        tagColor?: string;
        content?: string;
        class?: string;
        allDay?: boolean;
        _eid?: string;
        split?: string | number;
        rawRecordId?: string;
        _dateGroupId?: string;
    }, CalendarEvent | {
        [x: string]: any;
        id?: string | number;
        title?: string;
        start: string | Date;
        end?: string | Date;
        backgroundColor?: string;
        borderColor?: string;
        color?: string;
        eventColor?: string;
        tag?: string;
        tagColor?: string;
        content?: string;
        class?: string;
        allDay?: boolean;
        _eid?: string;
        split?: string | number;
        rawRecordId?: string;
        _dateGroupId?: string;
    }>;
    contextMenuPanelRef: Ref<{
        menuRef?: {
            value?: HTMLElement | null;
        };
    }, {
        menuRef?: {
            value?: HTMLElement | null;
        };
    } | {
        menuRef?: {
            value?: HTMLElement | null;
        };
    }>;
    contextMenuOpen: Ref<boolean, boolean>;
    contextMenuEvent: Ref<{
        [x: string]: any;
        id?: string | number;
        title?: string;
        start: string | Date;
        end?: string | Date;
        backgroundColor?: string;
        borderColor?: string;
        color?: string;
        eventColor?: string;
        tag?: string;
        tagColor?: string;
        content?: string;
        class?: string;
        allDay?: boolean;
        _eid?: string;
        split?: string | number;
        rawRecordId?: string;
        _dateGroupId?: string;
    }, CalendarEvent | {
        [x: string]: any;
        id?: string | number;
        title?: string;
        start: string | Date;
        end?: string | Date;
        backgroundColor?: string;
        borderColor?: string;
        color?: string;
        eventColor?: string;
        tag?: string;
        tagColor?: string;
        content?: string;
        class?: string;
        allDay?: boolean;
        _eid?: string;
        split?: string | number;
        rawRecordId?: string;
        _dateGroupId?: string;
    }>;
    contextMenuStyle: Ref<Record<string, string>, Record<string, string>>;
    editPopoverStyle: Ref<Record<string, string>, Record<string, string>>;
    editBoundaryStyle: Ref<Record<string, string>, Record<string, string>>;
    editFormData: Record<string, any>;
    isCreatingEvent: ComputedRef<boolean>;
    editingEventTitle: ComputedRef<string>;
    applyEventTitle: (event: CalendarEvent, nextTitle?: string) => string;
    closeContextMenu: () => void;
    openContextMenu: (event: CalendarEvent, nativeEvent: MouseEvent) => Promise<void>;
    openEditPopover: (event: CalendarEvent, draftClassToken?: string, anchor?: unknown) => Promise<void>;
    newDraftEventIdRef: Ref<string, string>;
    clearEditingDraftToken: () => void;
    closeEditPopover: () => void;
    openCreateEventDrawer: (baseEvent?: Partial<CalendarEvent>) => void;
    handleSwitchPresentation: () => void;
    deleteEvent: (target?: CalendarEvent) => boolean;
    copyEvent: (target?: CalendarEvent) => boolean;
    handleDeleteEditEvent: () => void;
    handleMaskClose: () => void;
    handleConfirmEdit: () => void;
    handleConfirmAndAdd: () => void;
    createDraftEventAndOpenEditor: (baseEvent: CalendarEvent, fallbackSplit?: string | number) => void;
    resolveCreatedEventFromPayload: (payload: any) => CalendarEvent;
    removeCreatedDraftEvent: (event?: CalendarEvent) => void;
    handleEventDragCreate: (payload: any) => void;
};
export {};
