import { IVimElement } from "../shared/vim";
import { NodeState } from "./nodeState";
import { Box3, RGBA32 } from "./rpcTypes";
import { Vim } from "./vim";
/**
 * 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 instance: number;
    /**
     * The unique handle of the parent `Vim` model.
     */
    get vimHandle(): number;
    /**
     * Creates a new `Element3D` instance.
     * @param vim - The parent `Vim` model.
     * @param instance - The internal instance index.
     */
    constructor(vim: Vim, instance: number);
    /**
     * Gets or sets the display state of the element (e.g., visible, hidden).
     */
    get state(): NodeState;
    set state(state: NodeState);
    /**
     * Gets or sets the color override of the element.
     */
    get color(): RGBA32 | undefined;
    set color(color: RGBA32 | 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<Box3 | undefined>;
}
