import { IVimElement } from "../shared/vim";
import { VisibilityState } from "./visibility";
import { Vim } from "./vim";
import * as THREE from "three";
/**
 * Represents a single 3D element within a `Vim` model.
 * Provides access to per-instance state, color, and bounding box.
 */
export declare class Element3D implements IVimElement {
    /**
     * The parent `Vim` instance this element belongs to.
     */
    readonly vim: Vim;
    /**
     * The internal instance index within the `Vim` model.
     */
    readonly element: number;
    /**
     * The unique handle of the parent `Vim` model.
     */
    get vimHandle(): number;
    /**
     * Creates a new `Element3D` instance.
     * @param vim - The parent `Vim` model.
     * @param element - The internal instance index.
     */
    constructor(vim: Vim, element: number);
    /**
     * Gets or sets the display state of the element (e.g., visible, hidden).
     */
    get state(): VisibilityState;
    set state(state: VisibilityState);
    /**
     * Gets or sets the color override of the element.
     */
    get color(): THREE.Color | undefined;
    set color(color: THREE.Color | undefined);
    /**
     * Computes and returns the bounding box of the element.
     * Returns undefined if the element is abstract.
     * @returns A promise resolving to the element's bounding box.
     */
    getBoundingBox(): Promise<THREE.Box3 | undefined>;
}
