import { StyleValue } from 'vue';
import { default as CalendarView } from './Calendar/CalendarView.vue';
import { default as ResourceUsageView } from './ResourceUsage/ResourceUsageView.vue';
import { Task } from '../models/classes/Task';
import { Milestone } from '../models/classes/Milestone';
import { Resource, ResourceTypeOption } from '../models/classes/Resource';
import { ToolbarConfig } from '../models/configs/ToolbarConfig';
import { TaskListConfig } from '../models/configs/TaskListConfig';
import { ResourceListConfig } from '../models/configs/ResourceListConfig';
import { TaskBarConfig, LinkConfig } from '../models/configs/TaskBarConfig';
import { TimelineScale } from '../models/types/TimelineScale';
interface Props {
    tasks?: Task[];
    milestones?: Task[];
    resources?: Resource[];
    viewMode?: 'task' | 'resource' | 'calendar' | 'resource-usage';
    availableViewModes?: Array<'task' | 'resource' | 'calendar' | 'resource-usage'>;
    useDefaultDrawer?: boolean;
    useDefaultMilestoneDialog?: boolean;
    toolbarConfig?: ToolbarConfig;
    showToolbar?: boolean;
    onTodayLocate?: () => void;
    onExportCsv?: () => boolean | void;
    onExportPdf?: () => void;
    onLanguageChange?: (lang: 'zh-CN' | 'en-US') => void;
    onThemeChange?: (isDark: boolean) => void;
    onFullscreenChange?: (isFullscreen: boolean) => void;
    onSettingsConfirm?: (type: 'theme' | 'language', value: string | boolean) => Promise<boolean> | boolean;
    onExpandAll?: () => void;
    onCollapseAll?: () => void;
    /**
     * 自定义多语言（国际化）配置，支持多语言扩展。
     * 例如：
     * localeMessages={{
     *   'zh-CN': { department: '部门', departmentCode: '部门编号' },
     *   'en-US': { department: 'Department', departmentCode: 'Department Code' }
     * }}
     * 支持嵌套对象（如 csvHeaders、taskTypeMap 等）。
     * 仅在组件初始化时合并，运行时变更会自动响应。
     */
    localeMessages?: Partial<{
        'zh-CN'?: Partial<import('../composables/useI18n').Messages['zh-CN']>;
        'en-US'?: Partial<import('../composables/useI18n').Messages['en-US']>;
    }>;
    workingHours?: {
        morning?: {
            start: number;
            end: number;
        };
        afternoon?: {
            start: number;
            end: number;
        };
    };
    taskListConfig?: TaskListConfig;
    resourceListConfig?: ResourceListConfig;
    calendarProps?: Partial<InstanceType<typeof CalendarView>['$props']>;
    resourceUsageProps?: Partial<InstanceType<typeof ResourceUsageView>['$props']>;
    taskListColumnRenderMode?: 'default' | 'declarative';
    taskBarConfig?: TaskBarConfig;
    autoSortByStartDate?: boolean;
    allowDragAndResize?: boolean;
    enableTaskRowMove?: boolean;
    assigneeOptions?: Array<{
        key?: string | number;
        value: string | number;
        label: string;
    }>;
    resourceTypeOptions?: ResourceTypeOption[];
    showResourceTypeOption?: boolean;
    taskListRowClassName?: string | ((row: Task, rowIndex: number) => string);
    taskListRowStyle?: StyleValue | ((row: Task, rowIndex: number) => StyleValue);
    enableTaskListContextMenu?: boolean;
    enableTaskBarContextMenu?: boolean;
    enableLinkAnchor?: boolean;
    enableTaskBarTooltip?: boolean;
    enableMilestoneTooltip?: boolean;
    milestoneLabelPosition?: 'left' | 'top' | 'right' | 'bottom';
    showActualTaskbar?: boolean;
    showConflicts?: boolean;
    showTaskbarTab?: boolean;
    taskbarDescFixed?: boolean;
    pendingTaskBackgroundColor?: string;
    delayTaskBackgroundColor?: string;
    completeTaskBackgroundColor?: string;
    ongoingTaskBackgroundColor?: string;
    fullscreen?: boolean;
    expandAll?: boolean;
    locale?: 'zh-CN' | 'en-US';
    timeScale?: TimelineScale;
    theme?: 'light' | 'dark';
    /**
     * 是否允许 TaskList 展开/收起功能（默认为 true）
     * 当设置为 false 时，TaskList 面板强制隐藏，SplitterBar 及折叠按钮同步隐藏，仅展示 Timeline 区域
     * taskListVisible 在此情况下失效
     */
    enableTaskListCollapsible?: boolean;
    /**
     * TaskList 可见状态（响应式），默认为 true
     * 仅当 enableTaskListCollapsible=true 时有效
     * 可通过 prop 传入或通过 defineExpose 暴露的方法控制
     */
    taskListVisible?: boolean;
    /**
     * 是否允许点击遮罩层关闭 TaskDrawer，默认为 true（保持原有行为）
     * 设置为 false 可防止 TaskDrawer 在失去焦点（点击遮罩区域）时自动关闭
     * 仅在 useDefaultDrawer=true 时有效
     */
    enableTaskDrawerAutoClose?: boolean;
    /**
     * 自定义各刻度配置，支持覆盖 cellWidth / preBuffer / sufBuffer / formatter。
     * 仅需传入需要覆盖的刻度，未传入的刻度继续使用内置默认值。
     * formatter.primary / formatter.secondary 为格式化字符串，支持 token：
     * yyyy / MM / M / dd / d / HH / mm / Q / W
     */
    scaleConfigs?: Partial<Record<TimelineScale, Partial<{
        cellWidth: number;
        preBuffer: number;
        sufBuffer: number;
        formatter: {
            primary: string;
            secondary?: string;
        };
    }>>>;
    /**
     * 任务行高度（px），同时影响 Timeline 和 TaskList 行高，默认 51px。
     * 最小值为 40，否则 TaskBar 可能溢出行高。
     */
    rowHeight?: number;
    /**
     * 父级任务自动调度（默认为 true）
     * true：父级 TaskBar 自动跟随子任务最早开始/最晚结束日期
     * false：父级 TaskBar 保持自身设定日期；子任务溢出时显示2px红色指示条
     */
    enableParentTaskAutoSchedule?: boolean;
    /**
     * 资源视图车道堆叠模式（默认为 true）v1.12.0
     * true：启用贪心车道堆叠——时间不重叠的任务共享同一行，最大化空间利用率
     * false：禁用堆叠——每个任务独占一行，适合任务密集、需要清晰辨识的场景
     */
    enableResourceLaneStacking?: boolean;
    /** R1: 连线样式配置 */
    linkConfig?: LinkConfig;
}
declare var __VLS_38: {}, __VLS_55: {}, __VLS_57: {
    isRowContent: boolean;
    task: Task;
    level: number;
    indent: string;
    isHovered: boolean;
    hoveredTaskId: number | string | null;
    isParent: boolean;
    hasChildren: boolean;
    collapsed: boolean;
    formattedTimer: string;
    timerRunning: boolean;
    timerElapsed: number;
    isOvertime: number | boolean | undefined;
    overdueDays: number;
    overtimeText: string;
    overdueText: string;
    daysText: string;
    progressClass: string;
    type?: string;
}, __VLS_80: {
    type: string;
    task: Task;
    status: import('./TaskBar.vue').TaskStatus;
    statusType: string;
    isParent?: boolean;
    progress: number;
    currentTimeScale?: TimelineScale;
    rowHeight: number;
    dayWidth: number;
}, __VLS_82: {
    task: any;
    taskStatus: {
        color: string;
        label: string;
        type?: string | undefined;
    };
    resourcePercent: number;
}, __VLS_84: {
    milestone: {
        id?: number | undefined;
        name: string;
        startDate: string;
        endDate?: string | undefined;
        assignee?: string | string[] | undefined;
        assigneeName?: string | string[] | undefined;
        avatar?: string | string[] | undefined;
        type: string;
        icon?: string | undefined;
        description?: string | undefined;
    } | null;
}, __VLS_86: {
    milestone: Milestone;
    task: Task;
    rowHeight: number;
    dayWidth: number;
    currentTimeScale?: TimelineScale | null;
    labelPosition: "right" | "left" | "top" | "bottom";
};
type __VLS_Slots = {} & {
    default?: (props: typeof __VLS_38) => any;
} & {
    default?: (props: typeof __VLS_55) => any;
} & {
    'custom-task-content'?: (props: typeof __VLS_57) => any;
} & {
    'custom-task-content'?: (props: typeof __VLS_80) => any;
} & {
    'taskbar-tooltip'?: (props: typeof __VLS_82) => any;
} & {
    'milestone-tooltip'?: (props: typeof __VLS_84) => any;
} & {
    'custom-milestone-content'?: (props: typeof __VLS_86) => any;
};
declare const __VLS_component: import('vue').DefineComponent<Props, {
    enterFullscreen: () => void;
    exitFullscreen: () => void;
    toggleFullscreen: () => void;
    isFullscreen: () => boolean;
    expandAll: () => void;
    collapseAll: () => void;
    toggleExpandAll: () => void;
    isExpandAll: () => boolean;
    scrollToToday: () => void;
    scrollToTask: (taskId: string | number) => void;
    scrollToDate: (date: Date | string) => void;
    setLocale: (locale: "zh-CN" | "en-US") => void;
    currentLocale: () => string;
    setTimeScale: (scale?: TimelineScale) => void;
    zoomIn: () => void;
    zoomOut: () => void;
    currentScale: () => string;
    setTheme: (mode?: "light" | "dark") => void;
    currentTheme: () => string;
    /** 获取 TaskList 当前可见状态 */
    getTaskListVisible: () => boolean;
    /**
     * 设置 TaskList 可见状态（仅在 enableTaskListCollapsible=true 时生效）
     * @param visible true=展开，false=收起
     */
    setTaskListVisible: (visible: boolean) => void;
    /** 切换 TaskList 展开/收起（仅在 enableTaskListCollapsible=true 时生效，带动画） */
    toggleTaskList: () => void;
    /**
     * 动态设置连线样式配置（与 props.linkConfig 合并，运行时调用优先级更高）
     * @example ganttRef.value.setLinkConfig({ type: 'orthogonal', color: '#ff0000' })
     */
    setLinkConfig: (config: Partial<LinkConfig>) => void;
    /**
     * 获取当前生效的完整连线配置（合并 DEFAULT + props + setLinkConfig）
     */
    getLinkConfig: () => Required<LinkConfig>;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    "add-predecessor": (...args: any[]) => void;
    "add-successor": (...args: any[]) => void;
    "task-updated": (...args: any[]) => void;
    "task-added": (...args: any[]) => void;
    "milestone-icon-changed": (...args: any[]) => void;
    "task-collapse-change": (...args: any[]) => void;
    "task-row-moved": (...args: any[]) => void;
    "milestone-double-click": (...args: any[]) => void;
    "predecessor-added": (...args: any[]) => void;
    "successor-added": (...args: any[]) => void;
    "link-deleted": (...args: any[]) => void;
    "resource-drag-end": (...args: any[]) => void;
    "taskbar-drag-end": (...args: any[]) => void;
    "taskbar-resize-end": (...args: any[]) => void;
    "milestone-drag-end": (...args: any[]) => void;
    "add-task": (...args: any[]) => void;
    "add-milestone": (...args: any[]) => void;
    "task-click": (...args: any[]) => void;
    "task-double-click": (...args: any[]) => void;
    "timer-started": (...args: any[]) => void;
    "timer-stopped": (...args: any[]) => void;
    "task-deleted": (...args: any[]) => void;
    "view-mode-changed": (...args: any[]) => void;
    "milestone-saved": (...args: any[]) => void;
    "milestone-deleted": (...args: any[]) => void;
    "taskbar-resource-change": (...args: any[]) => void;
    "calendar-selection-complete": (...args: any[]) => void;
    "calendar-selection-cancel": (...args: any[]) => void;
    "calendar-resource-change": (...args: any[]) => void;
    "calendar-view-change": (...args: any[]) => void;
    "calendar-date-change": (...args: any[]) => void;
    "calendar-task-click": (...args: any[]) => void;
    "calendar-task-move": (...args: any[]) => void;
    "resource-usage-scale-change": (...args: any[]) => void;
    "resource-usage-cell-click": (...args: any[]) => void;
    "resource-usage-cell-hover": (...args: any[]) => void;
    "resource-usage-overload-detected": (...args: any[]) => void;
    "resource-usage-task-detail-click": (...args: any[]) => void;
}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
    "onAdd-predecessor"?: ((...args: any[]) => any) | undefined;
    "onAdd-successor"?: ((...args: any[]) => any) | undefined;
    "onTask-updated"?: ((...args: any[]) => any) | undefined;
    "onTask-added"?: ((...args: any[]) => any) | undefined;
    "onMilestone-icon-changed"?: ((...args: any[]) => any) | undefined;
    "onTask-collapse-change"?: ((...args: any[]) => any) | undefined;
    "onTask-row-moved"?: ((...args: any[]) => any) | undefined;
    "onMilestone-double-click"?: ((...args: any[]) => any) | undefined;
    "onPredecessor-added"?: ((...args: any[]) => any) | undefined;
    "onSuccessor-added"?: ((...args: any[]) => any) | undefined;
    "onLink-deleted"?: ((...args: any[]) => any) | undefined;
    "onResource-drag-end"?: ((...args: any[]) => any) | undefined;
    "onTaskbar-drag-end"?: ((...args: any[]) => any) | undefined;
    "onTaskbar-resize-end"?: ((...args: any[]) => any) | undefined;
    "onMilestone-drag-end"?: ((...args: any[]) => any) | undefined;
    "onAdd-task"?: ((...args: any[]) => any) | undefined;
    "onAdd-milestone"?: ((...args: any[]) => any) | undefined;
    "onTask-click"?: ((...args: any[]) => any) | undefined;
    "onTask-double-click"?: ((...args: any[]) => any) | undefined;
    "onTimer-started"?: ((...args: any[]) => any) | undefined;
    "onTimer-stopped"?: ((...args: any[]) => any) | undefined;
    "onTask-deleted"?: ((...args: any[]) => any) | undefined;
    "onView-mode-changed"?: ((...args: any[]) => any) | undefined;
    "onMilestone-saved"?: ((...args: any[]) => any) | undefined;
    "onMilestone-deleted"?: ((...args: any[]) => any) | undefined;
    "onTaskbar-resource-change"?: ((...args: any[]) => any) | undefined;
    "onCalendar-selection-complete"?: ((...args: any[]) => any) | undefined;
    "onCalendar-selection-cancel"?: ((...args: any[]) => any) | undefined;
    "onCalendar-resource-change"?: ((...args: any[]) => any) | undefined;
    "onCalendar-view-change"?: ((...args: any[]) => any) | undefined;
    "onCalendar-date-change"?: ((...args: any[]) => any) | undefined;
    "onCalendar-task-click"?: ((...args: any[]) => any) | undefined;
    "onCalendar-task-move"?: ((...args: any[]) => any) | undefined;
    "onResource-usage-scale-change"?: ((...args: any[]) => any) | undefined;
    "onResource-usage-cell-click"?: ((...args: any[]) => any) | undefined;
    "onResource-usage-cell-hover"?: ((...args: any[]) => any) | undefined;
    "onResource-usage-overload-detected"?: ((...args: any[]) => any) | undefined;
    "onResource-usage-task-detail-click"?: ((...args: any[]) => any) | undefined;
}>, {
    expandAll: boolean;
    fullscreen: boolean;
    taskListConfig: TaskListConfig;
    taskBarConfig: TaskBarConfig;
    locale: "zh-CN" | "en-US";
    tasks: Task[];
    resources: Resource[];
    taskListRowClassName: string | ((row: Task, rowIndex: number) => string);
    taskListRowStyle: string | false | import('vue').CSSProperties | StyleValue[] | ((row: Task, rowIndex: number) => StyleValue) | null;
    viewMode: "task" | "resource" | "calendar" | "resource-usage";
    rowHeight: number;
    enableParentTaskAutoSchedule: boolean;
    useDefaultDrawer: boolean;
    taskListColumnRenderMode: "default" | "declarative";
    enableTaskRowMove: boolean;
    allowDragAndResize: boolean;
    showActualTaskbar: boolean;
    enableTaskBarTooltip: boolean;
    enableLinkAnchor: boolean;
    showTaskbarTab: boolean;
    milestones: Task[];
    useDefaultMilestoneDialog: boolean;
    workingHours: {
        morning?: {
            start: number;
            end: number;
        };
        afternoon?: {
            start: number;
            end: number;
        };
    };
    enableMilestoneTooltip: boolean;
    milestoneLabelPosition: "left" | "top" | "right" | "bottom";
    scaleConfigs: Partial<Record<TimelineScale, Partial<{
        cellWidth: number;
        preBuffer: number;
        sufBuffer: number;
        formatter: {
            primary: string;
            secondary?: string;
        };
    }>>>;
    showConflicts: boolean;
    timeScale: TimelineScale;
    theme: "light" | "dark";
    onTodayLocate: () => void;
    onExportCsv: () => boolean | void;
    onExportPdf: () => void;
    onLanguageChange: (lang: "zh-CN" | "en-US") => void;
    onThemeChange: (isDark: boolean) => void;
    onFullscreenChange: (isFullscreen: boolean) => void;
    onExpandAll: () => void;
    onCollapseAll: () => void;
    onSettingsConfirm: (type: "theme" | "language", value: string | boolean) => Promise<boolean> | boolean;
    assigneeOptions: Array<{
        key?: string | number;
        value: string | number;
        label: string;
    }>;
    resourceTypeOptions: ResourceTypeOption[];
    showResourceTypeOption: boolean;
    resourceListConfig: ResourceListConfig;
    toolbarConfig: ToolbarConfig;
    showToolbar: boolean;
    localeMessages: Partial<{
        "zh-CN"?: Partial<import('../composables/useI18n').Messages["zh-CN"]>;
        "en-US"?: Partial<import('../composables/useI18n').Messages["en-US"]>;
    }>;
    autoSortByStartDate: boolean;
    enableTaskListContextMenu: boolean;
    enableTaskBarContextMenu: boolean;
    taskbarDescFixed: boolean;
    enableTaskListCollapsible: boolean;
    taskListVisible: boolean;
    enableTaskDrawerAutoClose: boolean;
    enableResourceLaneStacking: boolean;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
export default _default;
type __VLS_WithSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
