import LngLat from '../../geo/lng_lat';
import type Map from '../map';
import type HandlerManager from '../handler_manager';
import type Point from '../../util/point';
/**
 * The `ScrollZoomHandler` allows the user to zoom the map by scrolling.
 */
declare class ScrollZoomHandler {
    _map: Map;
    _el: HTMLElement;
    _enabled: boolean;
    _active: boolean;
    _zooming: boolean;
    _aroundCenter: boolean;
    _around: LngLat;
    _aroundPoint: Point;
    _type: 'wheel' | 'trackpad' | null;
    _lastValue: number;
    _timeout: ReturnType<typeof setTimeout> | undefined | null;
    _finishTimeout: ReturnType<typeof setTimeout> | undefined | null;
    _lastWheelEvent: any;
    _lastWheelEventTime: number;
    _startZoom: number | undefined | null;
    _targetZoom: number | undefined | null;
    _delta: number;
    _easing: ((a: number) => number) | undefined | null;
    _prevEase: {
        start: number;
        duration: number;
        easing: (_: number) => number;
    } | undefined | null;
    _frameId: boolean | undefined | null;
    _handler: HandlerManager;
    _defaultZoomRate: number;
    _wheelZoomRate: number;
    /**
     * @private
     */
    constructor(map: Map, handler: HandlerManager);
    /**
     * Set the zoom rate of a trackpad
     * @param {number} [zoomRate=1/100] The rate used to scale trackpad movement to a zoom value.
     * @example
     * // Speed up trackpad zoom
     * map.scrollZoom.setZoomRate(1/25);
     */
    setZoomRate(zoomRate: number): void;
    /**
    * Set the zoom rate of a mouse wheel
    * @param {number} [wheelZoomRate=1/450] The rate used to scale mouse wheel movement to a zoom value.
    * @example
    * // Slow down zoom of mouse wheel
    * map.scrollZoom.setWheelZoomRate(1/600);
    */
    setWheelZoomRate(wheelZoomRate: number): void;
    /**
     * Returns a Boolean indicating whether the "scroll to zoom" interaction is enabled.
     *
     * @returns {boolean} `true` if the "scroll to zoom" interaction is enabled.
     */
    isEnabled(): boolean;
    isActive(): boolean;
    isZooming(): boolean;
    /**
     * Enables the "scroll to zoom" interaction.
     *
     * @param {Object} [options] Options object.
     * @param {string} [options.around] If "center" is passed, map will zoom around center of map
     *
     * @example
     *   map.scrollZoom.enable();
     * @example
     *  map.scrollZoom.enable({ around: 'center' })
     */
    enable(options?: any): void;
    /**
     * Disables the "scroll to zoom" interaction.
     *
     * @example
     *   map.scrollZoom.disable();
     */
    disable(): void;
    wheel(e: WheelEvent): void;
    _onTimeout(initialEvent: any): void;
    _start(e: any): void;
    renderFrame(): {
        noInertia: boolean;
        needsRenderFrame: boolean;
        zoomDelta: number;
        around: Point;
        originalEvent: any;
    };
    _smoothOutEasing(duration: number): (t: number) => number;
    reset(): void;
}
export default ScrollZoomHandler;
//# sourceMappingURL=scroll_zoom.d.ts.map