import { Object3D } from 'three/webgpu'; import { BaseGroup } from '../objects'; import { InstanceObject } from '../instances/InstanceObject'; export interface InstanceCullingOptions { enabled?: boolean; frustum?: boolean; minScreenRadius?: number; } export interface ModelInstancedLayerOptions { name?: string; instanceKind?: string; getHitUserData?: (instance: T, renderIndex: number) => Record; } export declare class ModelInstancedLayer extends BaseGroup { #private; isModelInstancedLayer: boolean; type: string; constructor(options?: ModelInstancedLayerOptions); get instanceKind(): string; getInstances(): T[]; getInstanceById(id: string): T | undefined; hasInstance(id: string): boolean; getInstanceCulling(): { enabled: boolean; frustum: boolean; minScreenRadius: number; }; setInstanceCulling(options?: InstanceCullingOptions): this; setInstanceVisible(visible: boolean): this; setInstanceColor(color: Parameters[0]): this; resetInstanceColor(): this; setInstanceOpacity(opacity: number): this; setInstanceHighlight(color: Parameters[0], opacity: number, overwrite?: boolean): this; clearInstanceHighlight(): this; reserveBatch(url: string, template: Object3D, capacity: number): boolean; addInstance(url: string, template: Object3D, instance: T): boolean; addInstances(url: string, template: Object3D, instances: T[]): boolean; removeInstance(instanceOrId: T | string): boolean; removeInstances(instancesOrIds: Iterable | T | string): number; removeBatch(url: string): boolean; clearBatches(): this; }