import VizWorkspaceElement from '../../elements/VizWorkspaceElement.js';
import { Point } from '../../lib/Point.js';
export declare const mouseDownHandler: unique symbol;
export declare const mouseUpHandler: unique symbol;
export declare const mouseMoveHandler: unique symbol;
export declare const connectedValue: unique symbol;
/**
 * A plugin that adds support for a group selection via pointer device on the visualization workspace.
 *
 * This plugin draws a selection rectangle from the starting position until the pointer is released.
 * Each selectable element that is inside the rectangle is selected.
 *
 * After the modeling workspace is created create instance of this class and call `connect()` function
 * to start listening for the events. Call `disconnect()` when the workspace is no longer in use.
 */
export declare class GroupSelection {
    target: VizWorkspaceElement;
    [connectedValue]: boolean;
    /**
     * @returns True when the plug-in is listening for the input events.
     */
    get connected(): boolean;
    /**
     * Whether a selection is currently being made.
     */
    selecting: boolean;
    /**
     * The element that is being rendered as a selection box.
     */
    selectionZone: HTMLDivElement | null;
    /**
     * The click start point
     */
    startPoint: Point | null;
    /**
     * The position delta between the start and the current pointer position.
     */
    delta: Point | null;
    /**
     * @param target The target workspace element.
     */
    constructor(target: VizWorkspaceElement);
    connect(): void;
    disconnect(): void;
    reset(): void;
    [mouseDownHandler](e: MouseEvent): void;
    [mouseMoveHandler](e: MouseEvent): void;
    [mouseUpHandler](e: MouseEvent): void;
    /**
     * Removes the selection rectangle from the workspace
     */
    clearWorkspace(): void;
    /**
     * Handles the drop event on one of the children.
     * @returns coordinates of the click on the workspace as it would be
     * not scaled.
     */
    pointFromEvent(e: MouseEvent): Point;
    /**
     * Adds a selection box in the place of the click.
     * @param position The starting position of the element.
     */
    appendSelectionZone(position: Point): void;
    /**
     * Moves the workspace if needed.
     */
    detectEdges(e: MouseEvent): void;
    /**
     * Redraws the selection rectangle to current point
     * @param {Point} current
     */
    updateSelectionSize(current: Point): void;
    detectSelected(): void;
    /**
     * Reads scaled selection rectangle
     * @return A DOMRect object for the selection rectangle
     */
    getSelectionRect(): DOMRect;
    /**
     * @param node The node to read the style property from.
     * @param prop The name of the css property to read
     * @returns The value of the property or 0 if not found.
     */
    getSafeStyleValue(node: HTMLElement, prop: string): number;
    /**
     * Tests whether a current node collides with the selection rectangle.
     * @param selectionRect The selection computed rectangle
     * @param rect The Rect of the target element.
     * @returns True if the selection rectangle collides with `node`
     */
    collide(selectionRect: DOMRect, rect: DOMRect): boolean;
}
//# sourceMappingURL=GroupSelection.d.ts.map