export declare const canScrollTimelineIntoDirection: () => {
    canScrollRight: boolean;
    canScrollLeft: boolean;
};
export declare const getFrameWhileScrollingLeft: ({ durationInFrames, width, }: {
    durationInFrames: number;
    width: number;
}) => number;
export declare const isCursorInViewport: ({ frame, durationInFrames, }: {
    frame: number;
    durationInFrames: number;
}) => boolean;
export declare const ensureFrameIsInViewport: ({ direction, durationInFrames, frame, }: {
    direction: "center" | "fit-left" | "fit-right" | "page-left" | "page-right";
    durationInFrames: number;
    frame: number;
}) => void;
export declare const scrollToTimelineXOffset: (scrollPos: number) => void;
export declare const getScrollPositionForCursorOnLeftEdge: ({ nextFrame, durationInFrames, }: {
    nextFrame: number;
    durationInFrames: number;
}) => number;
export declare const getScrollPositionForCursorOnRightEdge: ({ nextFrame, durationInFrames, }: {
    nextFrame: number;
    durationInFrames: number;
}) => number;
export declare const getFrameIncrementFromWidth: (durationInFrames: number, width: number) => number;
export declare const getFrameWhileScrollingRight: ({ durationInFrames, width, }: {
    durationInFrames: number;
    width: number;
}) => number;
export declare const getFrameFromX: ({ clientX, durationInFrames, width, extrapolate, }: {
    clientX: number;
    durationInFrames: number;
    width: number;
    extrapolate: "clamp" | "extend";
}) => number;
/**
 * Horizontal position inside the scrollable timeline content (0 … scrollWidth)
 * for a viewport `clientX`, so pinch-anchoring matches the pointer (not a
 * rounded frame index).
 */
export declare const viewportClientXToScrollContentX: ({ clientX, scrollEl, }: {
    clientX: number;
    scrollEl: HTMLDivElement;
}) => number;
export declare const zoomAndPreserveCursor: ({ oldZoom, newZoom, currentFrame, currentDurationInFrames, anchorFrame, anchorContentX, }: {
    oldZoom: number;
    newZoom: number;
    currentFrame: number;
    currentDurationInFrames: number;
    anchorFrame: number | null;
    /** Prefer this over `anchorFrame` when not null (subpixel-accurate anchor). */
    anchorContentX: number | null;
}) => void;
