import VizWorkspaceElement from '../elements/VizWorkspaceElement.js';
import { TouchMoveResult } from './TouchSupport.js';
declare const xValue: unique symbol;
declare const yValue: unique symbol;
/**
 * A class that adds gestures support for the visualization workspace.
 * It controls the scrolling of the workspace canvas.
 */
export declare class WorkspaceGestures {
    workspace: VizWorkspaceElement;
    [xValue]?: number;
    [yValue]?: number;
    /**
     * @return value The x-axis position value
     */
    get left(): number | null;
    /**
     * @param value The x-axis position value
     */
    set left(value: number | null);
    /**
     * @returns value The y-axis position value
     */
    get top(): number | null;
    /**
     * @param value The y-axis position value
     */
    set top(value: number | null);
    constructor(workspace: VizWorkspaceElement);
    connect(): void;
    disconnect(): void;
    /**
     * An event handler for the mouse wheel action.
     * Zooms in/out the workspace.
     */
    wheelHandler(e: WheelEvent): void;
    /**
     * Zooms in/out the workspace.
     */
    handleZoomEvent(e: WheelEvent): void;
    updateScale(): void;
    /**
     * @returns true when there is an element that is draggable in the event's path.
     */
    hasDraggable(e: TouchEvent): boolean;
    touchstartHandler(e: TouchEvent): void;
    touchmoveHandler(e: TouchEvent): void;
    touchendHandler(e: TouchEvent): void;
    /**
     * Dispatches the `scroll` event on the workspace.
     */
    notifyScroll(): void;
    /**
     * Handles scrolling from a touch event
     */
    zoomFromTouch(moves: TouchMoveResult[]): Promise<void>;
    /**
     * Scrolls the current viewport to a given location.
     * @param forward Defines whether to scroll forward or backward.
     * For the `x` (the `left` value) axis it means going right when true and going left when false.
     * For the `y` (the `top` value) axis this means going down when true and up when false.
     * @param axis Scroll axis. Either `x` or `y`.
     */
    scroll(forward: boolean, axis: 'top' | 'left'): void;
    /**
     * Scrolls the view if the position defined by `x` and `y` arguments requires
     * the view to be moved.
     *
     * @param x The x coordinate of the point
     * @param y The y coordinate of the point
     * @returns true if the workspace was moved
     */
    scrollIfNeeded(x: number, y: number): boolean;
    /**
     * Scrolls the element by the given amount.
     * @param xCoordOrOptions The horizontal pixel value that you want to scroll by
     * or the scroll options. When passed value is the `ScrollToOptions` interface then
     * the second argument is ignored.
     * @param yCoord The vertical pixel value that you want to scroll by.
     */
    scrollBy(xCoordOrOptions: number | ScrollToOptions, yCoord?: number): void;
    /**
     * Scrolls to a particular set of coordinates inside the element.
     *
     * @param xCoordOrOptions The pixel along the horizontal axis of the element
     * that you want displayed in the upper left. When passed value is the `ScrollToOptions` interface then
     * the second argument is ignored.
     * @param yCoord The pixel along the vertical axis of the element that you want displayed in the upper left.
     */
    scrollTo(xCoordOrOptions: number | ScrollToOptions, yCoord?: number): void;
    /**
     * Scrolls from the event values.
     */
    scrollFromEvent(e: WheelEvent): void;
    /**
     * Handles scrolling from a touch event
     */
    scrollFromTouch(move: TouchMoveResult): void;
    /**
     * Reads the `x` and `y` point from the parameters that can be just a `xy` pair
     * or arguments or a value of the `ScrollToOptions` interface.
     *
     * @param xCoordOrOptions The horizontal pixel value or the scroll options.
     * When passed value is the `ScrollToOptions` interface then the second argument is ignored.
     * @param yCoord The vertical pixel value
     *
     * @returns A point of the X and Y read from the options with default values.
     */
    getScrollOptionsSafe(xCoordOrOptions: ScrollToOptions | number, yCoord?: number): number[];
    /**
     * Reads current left and top values and returns the numbers, even when not defined.
     *
     * @returns A point of the left and top position of the workspace.
     */
    getXYSafe(): number[];
    clickHandler(e: PointerEvent): void;
}
export {};
//# sourceMappingURL=WorkspaceGestures.d.ts.map