import { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';
import { JwtProvider } from '../grpc';
import { MeasurementEntity } from './entities';
import { MeasurementModel } from './model';
import { MeasurementOutcome } from './outcomes';
/**
 * The `MeasurementController` is responsible for performing measurements of
 * registered entities, and updating the model with their measurement results.
 */
export declare class MeasurementController {
    private model;
    private client;
    private jwtProvider;
    private deviceId;
    private outcome;
    private debugLogs;
    constructor(model: MeasurementModel, client: SceneViewAPIClient, jwtProvider: JwtProvider, deviceId: string | undefined);
    /**
     * Registers an entity to measure and performs a measurement if this entity
     * has not been previously registered.
     *
     * @param entity The entity to measure.
     * @returns A promise that resolves with the results after registering this
     * entity.
     */
    addEntity(entity: MeasurementEntity): Promise<MeasurementOutcome | undefined>;
    /**
     * Clears all entities and returns a promise that resolves with an empty list
     * of measurement results.
     */
    clearEntities(): Promise<MeasurementOutcome | undefined>;
    /**
     * Deregisters an entity and performs a measurement if this entity was
     * removed.
     *
     * @param entity The entity to remove.
     * @returns A promise that resolves with the results after removing this
     * entity.
     */
    removeEntity(entity: MeasurementEntity): Promise<MeasurementOutcome | undefined>;
    /**
     * Registers a set of entities and performs a measurement
     *
     * @param entities The entities to measure.
     * @returns A promise that resolves with the results after registering these
     * entities.
     */
    setEntities(entities: Set<MeasurementEntity>): Promise<MeasurementOutcome | undefined>;
    setDebugLogs(debugLogs: boolean): void;
    private performMeasurement;
    private measureAndUpdateModel;
    private measureEntities;
    private highlightEntities;
    private log;
}
