import { Box3, BufferGeometry, Color, Object3D, Sphere, type ColorRepresentation } from 'three/webgpu'; import { BaseGroup } from '../objects'; export interface InstanceStyle { color: Color | null; colorMode: number; opacity: number; } export interface InstanceObjectOptions { boundsName?: string; } export interface InstanceIdentity { id?: string | null; kind?: string | null; name?: string | null; } export type InstanceMaterializer = () => Object3D | null; export declare const INSTANCE_COLOR_MODE_NONE = 0; export declare const INSTANCE_COLOR_MODE_OVERRIDE = 1; export declare const INSTANCE_COLOR_MODE_TINT = 2; export declare class InstanceObject extends BaseGroup { #private; isInstanceObject: boolean; type: string; instanceId: string; instanceKind: string; instanceName: string; geometry: BufferGeometry; boundingBox: Box3 | null; boundingSphere: Sphere | null; constructor(options?: InstanceObjectOptions); setInstanceIdentity(identity: InstanceIdentity): this; setInstanceBounds(bounds: Box3): this; setInstanceRenderObject(object: Object3D | null): this; getInstanceRenderObject(): Object3D | null; setInstanceMaterializer(materializer: InstanceMaterializer | null): this; hasInstanceMaterializer(materializer: InstanceMaterializer): boolean; clearInstanceMaterializer(materializer?: InstanceMaterializer): this; materialize(): Object3D | null; computeBoundingBox(): void; computeBoundingSphere(): void; getInstanceBoundingBox(target?: Box3, world?: boolean): Box3; setInstanceVisible(visible: boolean): this; setInstanceColor(color: ColorRepresentation): this; resetInstanceColor(): this; setInstanceOpacity(opacity: number): this; getInstanceColor(target?: Color): Color; hasInstanceColor(): boolean; getInstanceOpacity(): number; setInstanceHighlight(color: ColorRepresentation, opacity: number, overwrite?: boolean): this; clearInstanceHighlight(): this; getInstanceColorMode(): number; onInstanceRenderDirty(callback: () => void): () => boolean; markInstanceRenderDirty(): this; updateMatrixWorld(force?: boolean): void; updateWorldMatrix(updateParents: boolean, updateChildren: boolean): void; } export declare function isInstanceObject(object: Object3D): object is InstanceObject;