import Konva from 'konva';
import { TimelineConfig, TimeMs } from '../../core/models';
export declare class Timeline {
    private stage;
    private gridLayer;
    private config;
    private theme;
    private isDragging;
    private startDragX;
    private scrollLeft;
    private timeScaleHeight;
    private onTimeChange;
    private onZoomChange;
    private onScrollChange;
    private animationFrameId;
    private hasBoundGlobalPointerListenersForDrag;
    private isScrollbarDragging;
    private scrollbarDragStartX;
    private scrollbarDragStartScrollLeft;
    private isPointerInsideTimeline;
    private lastPointerXInTimeline;
    private readonly scrollbarHeight;
    private readonly scrollbarMargin;
    private handleGlobalPointerMove;
    private handleGlobalPointerEnd;
    private handleVisibilityChange;
    private leftPadding;
    constructor(stage: Konva.Stage, gridLayer: Konva.Layer, config: Partial<TimelineConfig>, onTimeChange: (time: TimeMs) => void, onZoomChange: (zoom: number) => void, onScrollChange: (scrollLeft: number) => void);
    private initEventListeners;
    private updatePointerPosition;
    private bindGlobalPointerListenersForDrag;
    private unbindGlobalPointerListenersForDrag;
    private isPointerSessionActive;
    private finalizePointerInteraction;
    private handlePointerMove;
    private handleZoom;
    private animateZoom;
    private animateHorizontalScroll;
    private easeOutCubic;
    private handleClick;
    private pixelToTime;
    private timeToPixel;
    setCurrentTime(time: TimeMs): void;
    setZoom(zoom: number): void;
    setDuration(duration: TimeMs): void;
    setPlayState(playState: 'playing' | 'paused'): void;
    update(): void;
    private render;
    private renderScrollbar;
    private renderTimeTicks;
    getConfig(): TimelineConfig;
    getScrollLeft(): number;
    setScrollLeft(scrollLeft: number): void;
    private getTotalDurationPixels;
    private getScrollbarThumbWidth;
    private getScrollbarThumbX;
    private jumpScrollbarToPointer;
    /**
     * 滚动到指定时间
     * @param time 目标时间（毫秒）
     */
    scrollToTime(time: TimeMs): void;
    /**
     * 滚动到指定片段
     * @param clip 目标片段
     */
    scrollToClip(clip: {
        startTime: TimeMs;
        duration: TimeMs;
    }): void;
    /**
     * 获取舞台实例
     */
    getStage(): Konva.Stage;
    /**
     * 获取网格图层
     */
    getGridLayer(): Konva.Layer;
    /**
     * 鼠标当前是否位于时间轴区域内
     */
    hasPointerInTimeline(): boolean;
    /**
     * 获取时间轴内最近一次鼠标 X 坐标（相对 stage）
     */
    getPointerXInTimeline(): number | null;
    /**
     * 调整大小
     */
    resize(_width: number, _height: number): void;
}
