import { default as CxPopup } from '../../../../../atoms/src/components/popup/popup.ts';
import { default as CxResizeObserver } from '../../../../../atoms/src/components/resize-observer/resize-observer.ts';
import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
import { nothing } from 'lit';

export type CxVideoEditorTimelineScaleChangeEvent = CustomEvent<{
    scaleFactor: number;
}>;
declare global {
    interface GlobalEventHandlersEventMap {
        'cx-video-editor-timeline-scale-change': CxVideoEditorTimelineScaleChangeEvent;
    }
}
export default class CxVideoEditorTimeline extends CortexElement {
    static readonly styles: import('lit').CSSResult[];
    static readonly dependencies: {
        'cx-popup': typeof CxPopup;
        'cx-resize-observer': typeof CxResizeObserver;
    };
    timeline: HTMLDivElement;
    canvas: HTMLCanvasElement;
    scroller: HTMLDivElement;
    timeMark: HTMLDivElement;
    cursor: HTMLDivElement;
    cursorPopup: CxPopup;
    duration: number;
    currentTime: number;
    hoveredTime: number;
    isHovering: boolean;
    scaleFactor: number;
    /** The width of each second in pixels */
    scale: number;
    isScrolling: boolean;
    isDragging: boolean;
    scrollResumeTimeout: Timer | null;
    private lastScrollLeft;
    constructor();
    runFirstUpdated(): void;
    runConnectedCallback(): void;
    disconnectedCallback(): void;
    private updateTime;
    updateMarks(): void;
    updateTimeMark(): Promise<void>;
    updateCursor(): void;
    handleDurationChange(): Promise<void>;
    handleCurrentTimeChange(): Promise<void>;
    scrollToTimeMark(): Promise<void>;
    handleScaleFactorChange(): Promise<void>;
    private handleScroll;
    private handleScrollerMouseDown;
    private handleScrollerMouseUp;
    private handleCanvasMouseDown;
    private handleCanvasMouseUp;
    private handleCanvasMouseMove;
    private handleTimelineWheel;
    debouncedUpdateScaleFactor(event: WheelEvent): Promise<void>;
    handleCanvasMouseEnter(): void;
    handleCanvasMouseLeave(): void;
    handleResize(): void;
    render(): import('lit').TemplateResult<1> | typeof nothing;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-video-editor-timeline': CxVideoEditorTimeline;
    }
}
