import { JSX } from '../../stencil-public-runtime';
import { Color } from '@vertexvis/utils';
import { PinController } from '../../lib/pins/controller';
import { PinModel, ViewerPinToolMode, ViewerPinToolType } from '../../lib/pins/model';
export declare class ViewerPinTool {
    /**
     * The controller that is responsible for drawing pins and updating the model
     */
    pinController?: PinController;
    /**
     * The model that contains the entities and outcomes from performing pin annotations
     */
    pinModel: PinModel;
    /**
     * 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 type of pin.
     *
     * This property will automatically be set.
     */
    tool: ViewerPinToolType;
    /**
     * The mode of the pin tool
     */
    mode: ViewerPinToolMode;
    /**
     * The primary color for new pins. Setting this will override the primary template color, and will be used for any new
     * pins created with this `vertex-viewer-pin-tool`. This styling applies to pin anchors, and borders, etc.
     */
    primaryColor: Color.Color | string | undefined;
    /**
     * The accent color for new pins. Setting this will override the accent template color, and will be used for any new
     * pins created with this `vertex-viewer-pin-tool`. This styling applies to some background colors, etc
     */
    accentColor: Color.Color | string | undefined;
    private hostEl;
    private pins;
    private selectedPinId?;
    private elementBounds?;
    private projectionViewMatrix?;
    private registeredInteractionHandler?;
    private onEntitiesChangedHandler?;
    private onEntityAddedHandler?;
    private resizeObserver?;
    private stateMap;
    /**
     * @ignore
     */
    protected watchModeChange(): void;
    /**
     * @ignore
     */
    protected watchTypeChange(): void;
    /**
     * @ignore
     */
    protected watchAccentColorChange(): void;
    /**
     * @ignore
     */
    protected watchPrimaryColorChange(): void;
    /**
     * @ignore
     */
    protected watchPinsChange(): void;
    /**
     * @ignore
     */
    protected connectedCallback(): void;
    /**
     * @ignore
     */
    protected componentWillLoad(): void;
    protected componentDidLoad(): void;
    /**
     * @ignore
     */
    protected disconnectedCallback(): void;
    /**
     * @ignore
     */
    protected handleViewerChanged(newViewer?: HTMLVertexViewerElement, oldViewer?: HTMLVertexViewerElement): void;
    private handleSetProjectionMatrix;
    protected render(): JSX.Element;
    private setupController;
    private clearInteractionHandler;
    private setupInteractionHandler;
    private clearModelListeners;
    private updateViewport;
    private setDepthBuffers;
    private resetDepthBuffers;
    private setFeatureMaps;
    private resetFeatureMaps;
    private setCameraAndKeyboardControls;
    private resetCameraAndKeyboardControls;
}
