import { EventEmitter, h } from '../../stencil-public-runtime';
import { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller';
import { VolumeIntersectionQueryModel } from '../../lib/volume-intersection/model';
import { VolumeIntersectionQueryMode, VolumeIntersectionQueryType } from './types';
/**
 * The `ViewerBoxQueryTool` allows for the drawing of a "box" on screen to represent
 * a query for items in a specific area of the viewer. This tool then allows for an
 * operation to be performed on the items contained (exclusive) by the box or both
 * contained by and intersecting with (inclusive) the box.
 */
export declare class ViewerBoxQueryTool {
    /**
     * The viewer that this component is bound to. This is automatically assigned
     * if added to the light-dom of a parent viewer element.
     */
    viewer?: HTMLVertexViewerElement;
    /**
     * The controller that is responsible for performing operations using the
     * volume intersection query defined by the drawn box and updating the model.
     */
    controller?: VolumeIntersectionQueryController;
    /**
     * The model that contains the points representing the corners of the box
     * displayed on screen, the type of the query to be performed, and methods
     * for setting these values.
     */
    model?: VolumeIntersectionQueryModel;
    /**
     * The default operation to perform when a drag has completed and the intersection
     * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`.
     *
     * `clearAndSelect` will clear all existing selection, and select the results of the query.
     * `select` will maintain existing selection, and select the results of the query.
     * `deselect` will maintain existing selection, and deselect the results of the query.
     *
     * The operation behavior for this intersection query tool can also be changed by
     * providing a custom implementation of the `VolumeIntersectionQueryController`, or
     * by using the `setOperationTransform` method of the default controller.
     */
    operationType: VolumeIntersectionQueryType;
    /**
     * An optional value to specify a singular mode of intersection query. This value
     * defaults to `undefined`, which will indicate that both `exclusive` and `inclusive`
     * queries should be made, with `inclusive` being represented by a left to right
     * drag behavior and `exclusive` being represented by a right to left drag.
     *
     * Setting this value to `inclusive` will cause dragging left to right and left to right
     * to result in an `inclusive` query, and the box will only be styled for `inclusive` queries.
     *
     * Setting this value to `exclusive` will cause dragging left to right and left to right
     * to result in an `exclusive` query, and the box will only be styled for `exclusive` queries.
     */
    mode?: VolumeIntersectionQueryMode;
    private details?;
    /**
     * Event emitted when the `VolumeIntersectionQueryController` associated with this tool changes.
     */
    controllerChanged: EventEmitter<VolumeIntersectionQueryController>;
    private hostEl;
    private interactionHandler?;
    private interactionHandlerDisposable?;
    private operationStartedDisposable?;
    private operationCompleteDisposable?;
    private screenBoundsChangedDisposable?;
    constructor();
    componentWillLoad(): void;
    disconnectedCallback(): void;
    /**
     * @ignore
     */
    protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void;
    /**
     * @ignore
     */
    protected handleDefaultOperationChange(updatedOperationType: VolumeIntersectionQueryType): void;
    /**
     * @ignore
     */
    protected handleModeChange(updatedMode?: VolumeIntersectionQueryMode): void;
    /**
     * @ignore
     */
    protected handleControllerChange(controller?: VolumeIntersectionQueryController): void;
    /**
     * @ignore
     */
    protected render(): h.JSX.IntrinsicElements;
    private handleScreenBoundsChanged;
    private handleExecuteStarted;
    private handleExecuteComplete;
    private registerInteractionHandler;
    private deregisterInteractionHandler;
    private updateTypeAttribute;
    private setDefaultClearAndSelectOperation;
    private setDefaultSelectOperation;
    private setDefaultDeselectOperation;
}
