import { Handler } from '../../core/Handler.js';
import { Draggable } from '../../dom/Draggable.js';
import { Bounds } from '../../geometry/Bounds.js';
import type { DragEndEvent, LeafletEvent } from '../../types.js';
import type { Point } from '../../geometry/Point.js';
/** @import {DragEndEvent, LeafletEvent} from '../../types.js' */
/** @import {Point} from '../../geometry/Point.js' */
export declare class DragHandler extends Handler {
    /** @type {Draggable} */
    _draggable: Draggable;
    /** @type {Point[]} */
    _positions: Point[];
    /** @type {number[]} */
    _times: number[];
    /** @type {Bounds | null} */
    _offsetLimit: Bounds | null;
    /** @type {number} */
    _viscosity: number;
    /** @type {number} */
    _lastTime: number;
    /** @type {Point} */
    _lastPos: Point;
    addHooks(): void;
    removeHooks(): void;
    /** Returns `true` if the current or last drag moved the map, e.g. to ignore the click that ends a drag. */
    moved(): boolean | undefined;
    /** Returns `true` while the map is being dragged. */
    moving(): boolean | undefined;
    _onDown(): void;
    _onDragStart(): void;
    /** @param {LeafletEvent} e */
    _onDrag(e: LeafletEvent): void;
    /** @param {number} time */
    _prunePositions(time: number): void;
    /**
     * @param {number} value
     * @param {number} threshold
     */
    _viscousLimit(value: number, threshold: number): number;
    _onPreDragLimit(): void;
    _onPreDragWrap(): void;
    /** @param {DragEndEvent} e */
    _onDragEnd(e: DragEndEvent): void;
}
