import { IElement } from 'vim-format';
import { ElementParameter } from 'vim-format/dist/vimHelpers';
import { Vim } from '../../../vim-loader/vim';
import { Viewer } from '../../viewer';
import * as THREE from 'three';
import { IObject, ObjectType } from '../../../vim-loader/objectInterface';
/**
 * Marker gizmo that display an interactive sphere at a 3D positions
 * Marker gizmos are still under development.
 */
export declare class GizmoMarker implements IObject {
    readonly type: ObjectType;
    private _viewer;
    private _mesh;
    private _loaded;
    /**
     * The vim object from which this object came from.
     */
    vim: Vim | undefined;
    /**
     * The bim element index associated with this object.
     */
    element: number | undefined;
    /**
     * The geometry instances  associated with this object.
     */
    instances: number[] | undefined;
    private _outlineAttribute;
    private _visibleAttribute;
    private _coloredAttribute;
    private _focusedAttribute;
    private _colorAttribute;
    constructor(viewer: Viewer);
    /** Sets the position of the marker in the 3d scene */
    set position(value: THREE.Vector3);
    get position(): THREE.Vector3;
    /**
     *  Adds this marker to the renderer
     */
    load(): void;
    /**
     * Removes this marker from the renderer.
     */
    unload(): void;
    /**
    * Always false
    */
    get hasMesh(): boolean;
    /**
     * Applies a color override instead of outlines.
     */
    get outline(): boolean;
    set outline(value: boolean);
    /**
     * Enlarges the gizmo to indicate focus.
     */
    get focused(): boolean;
    set focused(value: boolean);
    /**
     * Determines if the gizmo will be rendered.
     */
    get visible(): boolean;
    set visible(value: boolean);
    get color(): THREE.Color;
    set color(color: THREE.Color);
    getBimElement(): Promise<IElement>;
    getBimParameters(): Promise<ElementParameter[]>;
    get elementId(): any;
    /**
      * Retrieves the bounding box of the object from cache or computes it if needed.
      * Returns a unit box arount the marker position.
      * @returns {THREE.Box3 | undefined} The bounding box of the object.
      */
    getBoundingBox(): THREE.Box3;
    /**
    * Retrieves the center position of this object.
    * @param {THREE.Vector3} [target=new THREE.Vector3()] Optional parameter specifying where to copy the center position data.
    * A new instance is created if none is provided.
    * @returns {THREE.Vector3 | undefined} The center position of the object.
    */
    getCenter(target?: THREE.Vector3): THREE.Vector3;
}
