import React, { Component } from 'react';
type Marker = {
    start: number;
    end?: number;
    className?: string;
};
type Tooltip = {
    enabledOnHover?: boolean;
    enabledOnScrub?: boolean;
    className?: string;
    formatString?: (value: number) => string;
};
export type ScrubberProps = {
    className?: string;
    value: number;
    min: number;
    max: number;
    bufferPosition?: number;
    vertical?: boolean;
    onScrubStart?: (value: number) => void;
    onScrubEnd?: (value: number) => void;
    onScrubChange?: (value: number) => void;
    onMouseMove?: (value: number) => void;
    onMouseOver?: (value: number) => void;
    onMouseLeave?: (value: number) => void;
    tooltip?: Tooltip;
    markers?: Array<number | Marker>;
    [key: string]: any;
};
type Nullable<T> = T | null;
type ScrubberState = {
    seeking: boolean;
    mouseX: Nullable<number>;
    mouseY: Nullable<number>;
    touchId: Nullable<number>;
    touchX: Nullable<number>;
    touchY: Nullable<number>;
    hover: boolean;
};
export declare class Scrubber extends Component<ScrubberProps> {
    barRef: React.RefObject<HTMLDivElement | null>;
    state: ScrubberState;
    componentDidMount(): void;
    componentWillUnmount(): void;
    getPositionFromMouseX: () => number;
    getPositionFromMouseY: () => number;
    getPositionFromCursor: () => number;
    handleMouseOver: (e: MouseEvent) => void;
    handleMouseLeave: (e: MouseEvent) => void;
    handleMouseMove: (e: MouseEvent) => void;
    handleTouchMove: (e: TouchEvent) => void;
    handleSeekStart: (e: React.MouseEvent<HTMLDivElement>) => void;
    handleTouchStart: (e: React.TouchEvent<HTMLDivElement>) => void;
    handleSeekEnd: () => void;
    handleTouchEnd: (e: TouchEvent) => void;
    renderTooltip: () => React.JSX.Element | undefined;
    renderMarkers: () => React.JSX.Element[] | null;
    getValuePercent: (value: number) => string;
    render(): React.JSX.Element;
}
export {};
