import { Point } from '@vertexvis/geometry'; import { StreamRequestError } from '@vertexvis/stream-api'; import { Disposable, Listener } from '@vertexvis/utils'; import { SceneItemOperationsBuilder, TerminalItemOperationBuilder } from '../scenes'; import { SceneElementQueryExecutor } from '../scenes/queries'; import { VolumeIntersectionQueryModel } from './model'; export type OperationTransform = (builder: SceneItemOperationsBuilder) => TerminalItemOperationBuilder; export type AdditionalTransform = (executor: SceneElementQueryExecutor) => TerminalItemOperationBuilder; export interface CompleteExecutionDetails { aborted: boolean; } export declare class VolumeIntersectionQueryController { private model; private viewer; private previousViewerCameraControls?; private operationTransform; private additionalTransforms; private operationInFlight; private operationAborted; private executeStarted; private executeComplete; private executeAborted; constructor(model: VolumeIntersectionQueryModel, viewer: HTMLVertexViewerElement); setStartPoint(point: Point.Point): void; setEndPoint(point: Point.Point): void; /** * Updates the operation that will be applied based on the volume intersection * query. Defaults to `(builder) => builder.select()`, which will select any * of the results of the query. */ setOperationTransform(operationTransform: OperationTransform): void; /** * Updates any additional operations that should be performed independent of * the volume intersection query. This can be used to perform an operation on * the entirety of the scene prior to the operation on the result of the * volume intersection query. * Defaults to `[(op) => op.items.where((q) => q.all()).deselect()]`, which will * clear any prior selection before the default selection. */ setAdditionalTransforms(additionalTransforms: AdditionalTransform[]): void; onExecuteStarted(listener: Listener): Disposable; onExecuteComplete(listener: Listener): Disposable; onExecuteAborted(listener: Listener): Disposable; execute(): Promise; }