import type { Gantt } from '../Gantt';
import type { IZoomScale } from '../ts-types/zoom-scale';
import type { ITimelineScale } from '../ts-types/gantt-engine';
import { DataZoomIntegration, type DataZoomConfig } from './DataZoomIntegration';
export declare class ZoomScaleManager {
    private readonly gantt;
    readonly config: IZoomScale;
    private currentLevelIndex;
    private levelBoundaries;
    private globalMinMillisecondsPerPixel;
    private globalMaxMillisecondsPerPixel;
    private dataZoomIntegration;
    constructor(gantt: Gantt, config: IZoomScale);
    private initializeZoomLimits;
    private initializeDataZoomIfNeeded;
    handleTableWidthChange(): void;
    private sortLevelsByCoarseness;
    private calculateGlobalMillisecondsPerPixelRange;
    private calculateLevelBoundaries;
    updateZoomLimits(): void;
    getGlobalMinMillisecondsPerPixel(): number;
    getGlobalMaxMillisecondsPerPixel(): number;
    private calculateInitialMillisecondsPerPixel;
    private initializeWithMillisecondsPerPixel;
    private setInitialLevel;
    findOptimalLevel(millisecondsPerPixel: number): number;
    switchToLevel(levelIndex: number): boolean;
    findMinTimeUnit(scales: ITimelineScale[]): ITimelineScale;
    private getUnitMilliseconds;
    private getMinColWidthForUnit;
    getCurrentLevel(): number;
    getInitialMillisecondsPerPixel(): number;
    getCurrentZoomState(): {
        minUnit: "year" | "month" | "quarter" | "week" | "day" | "hour" | "minute" | "second";
        step: number;
        levelNum: number;
        currentColWidth: number;
    };
    setZoomPosition(params: {
        minUnit?: string;
        step?: number;
        levelNum?: number;
        colWidth?: number;
    }): boolean;
    private findLevelByMinUnit;
    zoomIn(factor?: number, center?: boolean, centerX?: number): void;
    zoomOut(factor?: number, center?: boolean, centerX?: number): void;
    zoomByPercentage(percentage: number, center?: boolean, centerX?: number): void;
    getDataZoomIntegration(): DataZoomIntegration | null;
    createDataZoomIntegration(config: DataZoomConfig): DataZoomIntegration;
    destroyDataZoomIntegration(): void;
    updateDataZoomResponsive(): void;
    recalculateTimeScale(): void;
    zoomByFactor(factor: number, keepCenter?: boolean, centerX?: number): void;
}
