import { Point, Vector3 } from '@vertexvis/geometry'; import { Color } from '@vertexvis/utils'; import { Pin, PinModel, PinStyleAttributes, ViewerPinToolMode, ViewerPinToolType } from './model'; export interface Draggable { id: string; lastPoint?: Point.Point; } /** * The `PinController` is responsible for adding pin entities to the viewer canvas */ export declare class PinController { private model; private mode; private type; private styleAttributes; private draggable?; constructor(model: PinModel, mode?: ViewerPinToolMode, type?: ViewerPinToolType, styleAttributes?: PinStyleAttributes | undefined); /** * Registers an entity to place on the canvas and places the pin on the associated part. * * @param pin The pin entity * @returns A void promise */ addPin(pin: Pin): void; /** * Clears all entities and returns a promise that resolves with an empty list * of pin results. */ clearPins(): void; /** * Deregisters an entity and performs a pin if this entity was * removed. * * @param entity The entity to remove. * @returns A promise that resolves with the results after removing this * entity. */ removePin(pin: Pin): void; /** * Registers a set of entities and adds a pin * * @param entities The pin entities to draw. * @returns A promise that resolves with the results after registering these * entities. */ setPins(pins: Set): void; /** * Sets the set of entities to be placed with the model. * * @param pin A pin to set * @returns `true` if the entity has been added. */ setPin(pin: Pin): void; /** * Updates an existing pin * @param pin A pin to set * @returns `true` if the entity has been updated, false otherwise */ updatePin(pin: Pin): void; /** * Tells the controller which pin is selected in the model * @param pinId */ setSelectedPinId(pinId?: string): void; getToolMode(): ViewerPinToolMode; getToolType(): ViewerPinToolType; setToolMode(mode: ViewerPinToolMode): void; setToolType(type: ViewerPinToolType): void; getDraggable(): Draggable | undefined; setDraggable(draggable: Draggable | undefined): void; setPrimaryColor(color?: Color.Color | string): void; setAccentColor(color?: Color.Color | string): void; getStyleAttributes(): PinStyleAttributes | undefined; updateDraggable(draggable: Draggable, worldPosition: Vector3.Vector3, partId?: string): void; }