import { Material, type IUniform, Vector2, type MeshBasicMaterialParameters, Scene, Camera, BufferGeometry, Object3D } from 'three'; import { ExtendedMeshBasicMaterial, type Uniforms } from './SpeckleMaterial.js'; import type { SpeckleWebGLRenderer } from '../objects/SpeckleWebGLRenderer.js'; export type BillboardingType = 'world' | 'screen'; declare class SpeckleBasicMaterial extends ExtendedMeshBasicMaterial { protected _billboardPixelSize: Vector2; protected _billboardPixelOffset: Vector2; protected get vertexProgram(): string; protected get fragmentProgram(): string; protected get baseUniforms(): { [uniform: string]: IUniform; }; protected get uniformsDef(): Uniforms; get billboardPixelSize(): Vector2; set billboardPixelSize(value: Vector2); get billboardPixeOffset(): Vector2; set billboardPixelOffset(value: Vector2); constructor(parameters: MeshBasicMaterialParameters, defines?: string[]); /** We need a unique key per program */ customProgramCacheKey(): string; copy(source: Material): this; fastCopy(from: Material, to: Material): void; setBillboarding(type: BillboardingType | null): void; /** Called by three.js render loop */ onBeforeRender(_this: SpeckleWebGLRenderer, _scene: Scene, camera: Camera, _geometry: BufferGeometry, object: Object3D): void; } export default SpeckleBasicMaterial;