import { IGCEventBus } from "../Models/ViewerTypes";
/**
 * Utility class to manage the two-finger scrolling state globally.
 * This ensures that the two-finger scrolling state is isolated and won't conflict with other global variables.
 */
export declare class TwoFingerScrollState {
    private static stateNamespace;
    private static ensureNamespace;
    /**
     * Gets the two-finger scrolling state.
     * @returns {boolean} True if two-finger scrolling is active, otherwise false.
     */
    static get isTwoFingerScrolling(): boolean;
    /**
     * Sets the two-finger scrolling state.
     * @param {boolean} val - True to activate two-finger scrolling, false to deactivate.
     */
    static set isTwoFingerScrolling(val: boolean);
}
/**
 * Class representing a two-finger scrolling feature.
 * Allows the user to scroll an element using a two-finger gesture on touch devices.
 */
export declare class TwoFingerScroll {
    private element;
    private scrollSpeed;
    private initialTouchPositions;
    private isEnabled;
    disabled: boolean;
    eventBus: IGCEventBus;
    /**
     * Creates an instance of TwoFingerScroll.
     * @param {HTMLElement} element - The HTML element to apply the two-finger scrolling.
     * @param {Object} [opts] - Configuration options for two-finger scrolling.
     * @param {Object|boolean} [opts.scrollWhileEditing] - Scrolling behavior options or boolean to enable/disable.
     */
    constructor(element: HTMLElement, eventBus: IGCEventBus, opts?: {
        scrollWhileEditing: {
            eventsMode?: "Touch" | "Pointer" | "All";
            scrollSpeed: number;
        } | boolean;
    });
    /**
     * Initializes event listeners for two-finger scrolling.
     */
    private initEventListeners;
    /**
     * Removes event listeners to stop two-finger scrolling.
     */
    private removeEventListeners;
    /**
     * Handles the pointer down or touch event to track touch points.
     * @param {PointerEvent | TouchEvent} event - The event object, which could be either a pointer event or a touch event.
     */
    private onPointerDown;
    /**
     * Helper method to determine if the event is a touch event.
     * @param {Event} event - The event to check.
     * @returns {boolean} True if the event is a TouchEvent, otherwise false.
     */
    private isTouchEvent;
    /**
     * Handles the pointer move event to perform scrolling.
     * @param {PointerEvent} event - The pointer event object.
     */
    private onPointerMove;
    /**
     * Handles the pointer up event to stop tracking touch points.
     * @param {PointerEvent} event - The pointer event object.
     */
    private onPointerUp;
    /**
     * Enables two-finger scrolling functionality.
     */
    enable(): void;
    /**
     * Disables two-finger scrolling functionality.
     */
    disable(): void;
    /**
     * Completely removes all event listeners and disables two-finger scrolling.
     */
    dispose(): void;
}
