type MouseDragEvent = MouseEvent;
type HandlerNative<E = MouseEvent> = (e: E) => void;
type Handler = (e: MouseDragEvent) => void;
type On = (handler: Handler) => MouseDrag;
export type MouseDragEventHandler = (e: MouseDragEvent) => void;
/**
 * ## Класс для отслеживания эффекта перетаскивания мышкой
 *
 * _Публичный метод `handleMouseUp` нельзя использовать!_
 *
 * ### Начало прослушивания и добавление обработчиков:
 * ```
 *   MouseDrag.listen(HTMLElement_1)
 *     .onMouseDragStart(start)
 *     .onMouseDragMove(move)
 *     .onMouseDragLeave(leave)
 *     .onMouseDragEnd(end);
 *
 * - - ИЛИ - -
 *
 *  const mouseDrag_1 = MouseDrag.listen(HTMLElement)...
 * ```
 *
 * ### Остановка прослушивания:
 * ```
 *   MouseDrag.stop(HTMLElement_1)
 *
 * - - ИЛИ - -
 *
 *   mouseDrag_1.stop();
 * ```
 */
export declare class MouseDrag {
    static readonly RADIUS: number;
    static listen: (elem: HTMLElement) => MouseDrag;
    static stop: (elem: HTMLElement | null) => void;
    mouseDragStartEvent?: MouseDragEvent;
    private clicked;
    private dragging;
    private x1?;
    private y1?;
    private elem;
    constructor(elem: HTMLElement);
    stop: () => void;
    onMouseDragStart: On;
    onMouseDragMove: On;
    onMouseDragLeave: On;
    onMouseDragEnd: On;
    handleMouseUp: HandlerNative;
    private on;
    private handleMouseDown;
    private handleMouseMove;
    private handleMouseLeave;
    private getLength;
    private createEvent;
    private dispatchEvent;
}
export {};
