import { Scenegraph } from './scenegraph/scenegraph';
import type { ITaskBarStyle, GanttConstructorOptions, IGrid, ITimelineHeaderStyle, IMarkLine, ITaskBarLabelText, ITaskBarLabelTextStyle, IScrollStyle, IFrameStyle, ITableColumnsDefine, ITaskBarCustomLayout, ITimelineDateInfo, ITimelineScale, ILineStyle, ITaskCreationCustomLayout, ITaskLink, ITaskBarSelectedStyle, ITaskBarHoverStyle, ITaskLinkSelectedStyle, IPointStyle, TaskBarInteractionArgumentType, IEventOptions, IMilestoneStyle, IKeyboardOptions, IMarkLineCreateOptions } from './ts-types';
import { TasksShowMode } from './ts-types';
import type { ListTableConstructorOptions } from '@visactor/vtable';
import { ListTable } from '@visactor/vtable';
import { EventManager } from './event/event-manager';
import { StateManager } from './state/state-manager';
import { EventTarget } from './event/EventTarget';
import { DataSource } from './data/DataSource';
import { PluginManager } from './plugins/plugin-manager';
import { ZoomScaleManager } from './zoom-scale';
export declare function createRootElement(padding: any, className?: string): HTMLElement;
export declare class Gantt extends EventTarget {
    options: GanttConstructorOptions;
    container: HTMLElement;
    tableNoFrameWidth: number;
    tableNoFrameHeight: number;
    tableX: number;
    tableY: number;
    scenegraph: Scenegraph;
    stateManager: StateManager;
    eventManager: EventManager;
    taskListTableInstance?: ListTable;
    canvas: HTMLCanvasElement;
    element: HTMLElement;
    verticalSplitResizeLine: HTMLDivElement;
    horizontalSplitLine: HTMLDivElement;
    context: CanvasRenderingContext2D;
    timeLineHeaderLevel: number;
    itemCount: number;
    drawHeight: number;
    headerHeight: number;
    gridHeight: number;
    pluginManager: PluginManager;
    parsedOptions: {
        timeLineHeaderRowHeights: number[];
        rowHeight: number;
        timelineColWidth: number;
        scrollStyle: IScrollStyle;
        timelineHeaderVerticalLineStyle: ILineStyle;
        timelineHeaderHorizontalLineStyle: ILineStyle;
        timelineHeaderBackgroundColor: string;
        timelineHeaderStyles: ITimelineHeaderStyle[];
        sortedTimelineScales: (ITimelineScale & {
            timelineDates?: ITimelineDateInfo[];
        })[];
        reverseSortedTimelineScales: (ITimelineScale & {
            timelineDates?: ITimelineDateInfo[];
        })[];
        timeScaleIncludeHour: boolean;
        grid: IGrid;
        taskBarStyle: ITaskBarStyle | ((interactionArgs: TaskBarInteractionArgumentType) => ITaskBarStyle);
        taskBarMilestoneStyle: IMilestoneStyle;
        projectBarStyle: ITaskBarStyle | ((interactionArgs: TaskBarInteractionArgumentType) => ITaskBarStyle);
        baselineStyle: ITaskBarStyle | ((interactionArgs: TaskBarInteractionArgumentType) => ITaskBarStyle);
        taskBarMilestoneHypotenuse: number;
        taskBarHoverStyle: ITaskBarHoverStyle;
        taskBarSelectedStyle: ITaskBarSelectedStyle;
        taskBarSelectable: boolean;
        taskBarLabelText: ITaskBarLabelText;
        taskBarMoveable: boolean | ((interactionArgs: TaskBarInteractionArgumentType) => boolean);
        moveTaskBarToExtendDateRange: boolean;
        taskBarResizable: boolean | [boolean, boolean] | ((interactionArgs: TaskBarInteractionArgumentType) => boolean | [boolean, boolean]);
        taskBarProgressAdjustable: boolean | ((interactionArgs: TaskBarInteractionArgumentType) => boolean);
        taskBarDragOrder: boolean;
        taskBarLabelStyle: ITaskBarLabelTextStyle;
        taskBarCustomLayout: ITaskBarCustomLayout;
        taskBarCreatable: boolean | ((interactionArgs: TaskBarInteractionArgumentType) => boolean);
        taskBarCreationButtonStyle: ILineStyle & {
            cornerRadius?: number;
            backgroundColor?: string;
        };
        taskBarCreationCustomLayout: ITaskCreationCustomLayout;
        taskBarCreationMaxWidth: number;
        taskBarCreationMinWidth: number;
        outerFrameStyle: IFrameStyle;
        pixelRatio: number;
        tasksShowMode: TasksShowMode;
        projectSubTasksExpandable: boolean;
        taskBarClip: boolean;
        taskBarLocateIcon: boolean;
        startDateField: string;
        endDateField: string;
        progressField: string;
        baselineStartDateField: string;
        baselineEndDateField: string;
        baselinePosition: 'top' | 'bottom' | 'overlap';
        minDate: Date;
        maxDate: Date;
        _minDateTime: number;
        _maxDateTime: number;
        markLine: IMarkLine[];
        scrollToMarkLineDate: Date;
        horizontalSplitLine: ILineStyle;
        verticalSplitLine: ILineStyle;
        verticalSplitLineHighlight: ILineStyle;
        verticalSplitLineMoveable?: boolean;
        overscrollBehavior: 'auto' | 'none';
        dateFormat?: 'yyyy-mm-dd' | 'dd-mm-yyyy' | 'mm/dd/yyyy' | 'yyyy/mm/dd' | 'dd/mm/yyyy' | 'yyyy.mm.dd' | 'dd.mm.yyyy' | 'mm.dd.yyyy';
        taskKeyField: string;
        dependencyLinks?: ITaskLink[];
        dependencyLinkCreatable: boolean;
        dependencyLinkSelectable: boolean;
        dependencyLinkDeletable: boolean;
        dependencyLinkLineStyle: ILineStyle;
        dependencyLinkSelectedLineStyle: ITaskLinkSelectedStyle;
        dependencyLinkLineCreatePointStyle: IPointStyle;
        dependencyLinkLineCreatingPointStyle: IPointStyle;
        dependencyLinkLineCreatingStyle?: ILineStyle;
        dependencyLinkDistanceToTaskBar?: number;
        underlayBackgroundColor: string;
        eventOptions: IEventOptions;
        keyboardOptions: IKeyboardOptions;
        markLineCreateOptions: IMarkLineCreateOptions;
        zoom?: {
            minMillisecondsPerPixel?: number;
            maxMillisecondsPerPixel?: number;
            step?: number;
        };
    };
    private millisecondsPerPixel;
    zoomScaleManager?: ZoomScaleManager;
    private _timelineColWidths;
    private _timelineColX;
    private _timelineColStartTimes;
    private _timelineColEndTimes;
    recalculateTimeScale(): void;
    zoomByFactor(factor: number, keepCenter?: boolean, centerX?: number): void;
    taskTableWidth: number;
    taskTableColumns: ITableColumnsDefine;
    records: any[];
    data: DataSource;
    constructor(container: HTMLElement, options: GanttConstructorOptions);
    renderTaskBarsTable(): void;
    _updateSize(): void;
    _updateListTableSize(taskListTableInstance: ListTable): void;
    _generateListTable(): void;
    _generateListTableOptions(): ListTableConstructorOptions;
    getElement(): HTMLElement;
    getContainer(): HTMLElement;
    _sortScales(): void;
    _generateTimeLineDateMap(): void;
    private _rebuildTimelineColXMap;
    getXByTime(time: number): number;
    getDateIndexByTime(time: number): number;
    getDateIndexByX(x: number): number;
    getRowHeightByIndex(index: number): number;
    getRowsHeightByIndex(startIndex: number, endIndex: number): number;
    getAllRowsHeight(): number;
    getAllHeaderRowsHeight(): number;
    getAllDateColsWidth(): number;
    getAllTaskBarsHeight(): number;
    getRecordIndexByTaskShowIndex(showIndex: number): number | number[];
    getTaskShowIndexByRecordIndex(index: number | number[]): number;
    getRecordByIndex(taskShowIndex: number, sub_task_index?: number | number[]): any;
    _refreshTaskBar(taskShowIndex: number, sub_task_index?: number): void;
    _updateRecordToListTable(record: any, index: number | number[]): void;
    getTaskInfoByTaskListIndex(taskShowIndex: number, sub_task_index?: number | number[]): {
        taskRecord: any;
        taskDays: number;
        startDate: Date;
        endDate: Date;
        progress: number;
    };
    getBaselineInfoByTaskListIndex(taskShowIndex: number, sub_task_index?: number | number[]): {
        baselineStartDate: Date | null;
        baselineEndDate: Date | null;
        baselineDays: number;
    };
    _updateStartDateToTaskRecord(startDate: Date, index: number, sub_task_index?: number | number[]): void;
    _updateEndDateToTaskRecord(endDate: Date, index: number, sub_task_index?: number): void;
    _updateStartEndDateToTaskRecord(startDate: Date, endDate: Date, index: number, sub_task_index?: number): void;
    _updateProgressToTaskRecord(progress: number, index: number, sub_task_index?: number): void;
    _dragOrderTaskRecord(source_index: number, source_sub_task_index: number, target_index: number, target_sub_task_index: number): void;
    updateTaskRecord(record: any, task_index: number | number[]): void;
    updateTaskRecord(record: any, task_index: number, sub_task_index: number): void;
    setPixelRatio(pixelRatio: number): void;
    updateTasksShowMode(tasksShowMode: TasksShowMode): void;
    _resize(): void;
    _syncPropsFromTable(): void;
    private hasDataZoom;
    private getDataZoomHeight;
    getContext(): CanvasRenderingContext2D;
    release(): void;
    updateOption(options: GanttConstructorOptions): void;
    setRecords(records: any[]): void;
    updateScales(scales: ITimelineScale[]): void;
    updateDateRange(minDate: string, maxDate: string): void;
    updateMarkLine(markLine: IMarkLine[]): void;
    addMarkLine(markLine: IMarkLine): void;
    updateCurrentMarkLine(markLine: IMarkLine): void;
    _scrollToMarkLine(): void;
    scrollToMarkLine(date: Date): void;
    addLink(link: ITaskLink): void;
    deleteLink(link: ITaskLink): void;
    get scrollTop(): number;
    set scrollTop(value: number);
    get scrollLeft(): number;
    set scrollLeft(value: number);
    getTaskBarRelativeRect(index: number): {
        left: number;
        top: number;
        width: number;
        height: number;
    };
    getDateColWidth(dateIndex: number): number;
    getDateColsWidth(startDateIndex: number, endDateIndex: number): number;
    getDateRangeByIndex(index: number): {
        startDate: Date;
        endDate: Date;
    };
    parseTimeFormat(date: string): string;
    getTaskBarStyle(task_index: number, sub_task_index?: number | number[]): ITaskBarStyle;
    getBaselineStyle(task_index: number, sub_task_index?: number | number[]): ITaskBarStyle;
    formatDate(date: Date | string, format: string): string;
    getCurrentMillisecondsPerPixel(): number;
    setMillisecondsPerPixel(millisecondsPerPixel: number): void;
    getCurrentZoomScaleLevel(): number;
}
