import { type Tick, type TickLabelFormatter } from './utils/ticks';
import type { EventPoint, TimeRange, TimestampRange, VideoSegment, ZoomState } from './types';
type UseVideoTimelineParams = {
    totalSeconds: number;
    enableWheelZoom: boolean;
    autoZoomOnSelection: boolean;
    tickLabelFormatter: TickLabelFormatter;
    clearSelectionOnEventClick: boolean;
    isLive?: boolean;
    date: Date;
    windowStart?: Date;
    onChangePeriod?: (period: TimestampRange) => void;
    segments: VideoSegment[];
    events: EventPoint[];
    fps?: number;
    maxMajorStep?: number;
    enableRangeSelect?: boolean;
    maxTime?: number;
    liveWindowSeconds?: number;
    disablePlayheadDrag?: boolean;
    startTime?: number;
};
export declare function useVideoTimeline(params: UseVideoTimelineParams): {
    viewportRef: import("react").RefObject<HTMLDivElement | null>;
    width: number;
    axisLeft: number;
    axisWidth: number;
    totalSeconds: number;
    zoom: ZoomState;
    setZoom: import("react").Dispatch<import("react").SetStateAction<ZoomState>>;
    isLive: boolean;
    setIsLive: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    currentTime: number;
    selectedRange: TimeRange | null;
    setSelectedRange: import("react").Dispatch<import("react").SetStateAction<TimeRange | null>>;
    videoSegments: VideoSegment[];
    events: EventPoint[];
    view: {
        start: number;
        end: number;
        seconds: number;
    };
    ticks: Tick[];
    hoverTime: number | null;
    onWheel: (event: React.WheelEvent) => void;
    onPointerDownScrub: (event: React.PointerEvent) => void;
    onPointerDownSelect: (event: React.PointerEvent) => void;
    onPointerMove: (event: React.PointerEvent) => void;
    onPointerUp: (event: React.PointerEvent) => void;
    onTimelineMouseMove: (event: React.MouseEvent) => void;
    onTimelineMouseLeave: () => void;
    onClickSegment: (time: number, _segment: VideoSegment) => void;
    onClickEvent: (time: number) => void;
    resetView: () => void;
    goLive: () => void;
};
export {};
