import { Point, Rectangle } from '@vertexvis/geometry';
import { Disposable, Listener } from '@vertexvis/utils';
import { VolumeIntersectionQueryMode } from '../../components/viewer-box-query-tool/types';
export type QueryType = 'inclusive' | 'exclusive';
export interface VolumeIntersectionQueryDetails {
    screenBounds: Rectangle.Rectangle;
    type: QueryType;
}
export declare class VolumeIntersectionQueryModel {
    private mode?;
    private startPoint?;
    private endPoint?;
    private type?;
    private dragStarted;
    private dragComplete;
    private dragCancelled;
    private screenBoundsChanged;
    constructor(mode?: VolumeIntersectionQueryMode | undefined);
    setStartPoint(point: Point.Point): void;
    setEndPoint(point: Point.Point): void;
    setMode(mode?: VolumeIntersectionQueryMode): void;
    complete(): void;
    cancel(): void;
    reset(): void;
    getScreenBounds(): Rectangle.Rectangle | undefined;
    getType(): QueryType | undefined;
    onScreenBoundsChanged(listener: Listener<VolumeIntersectionQueryDetails | undefined>): Disposable;
    onDragStarted(listener: Listener<void>): Disposable;
    onDragComplete(listener: Listener<VolumeIntersectionQueryDetails>): Disposable;
    onDragCancelled(listener: Listener<void>): Disposable;
    private getQueryDetails;
    private updateQueryType;
}
