import { type IUniform, Material, MeshBasicMaterial, MeshDepthMaterial, MeshNormalMaterial, MeshStandardMaterial, PointsMaterial, type Shader, MeshMatcapMaterial } from 'three'; import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js'; import { StencilOutlineType } from '../../IViewer.js'; import { type MaterialOptions } from './MaterialOptions.js'; declare class SpeckleUserData { [k: string]: unknown; toJSON(): {}; } export type Uniforms = Record; export declare class SpeckleMaterial { protected _internalUniforms: Shader; protected _stencilOutline: StencilOutlineType; needsCopy: boolean; protected get speckleUserData(): SpeckleUserData; protected set speckleUserData(value: SpeckleUserData); protected get speckleDefines(): Record | undefined; protected set speckleDefines(value: Record | undefined); protected get vertexProgram(): string; protected get fragmentProgram(): string; protected get uniformsDef(): Uniforms; protected get baseUniforms(): { [uniform: string]: IUniform; }; protected set stencilOutline(value: StencilOutlineType); protected set pointSize(value: number); protected init(defines?: Array): void; protected setUniforms(def: Uniforms): void; protected setDefines(defines?: Array): void; protected copyUniforms(material: Material): void; protected bindUniforms(): void; protected copyFrom(source: Material): void; protected onCompile(shader: Shader): void; fastCopy(from: Material, to: Material): void; setMaterialOptions(options: MaterialOptions): void; } export declare class ExtendedMeshStandardMaterial extends MeshStandardMaterial { } export declare class ExtendedMeshBasicMaterial extends MeshBasicMaterial { } export declare class ExtendedMeshDepthMaterial extends MeshDepthMaterial { } export declare class ExtendedMeshNormalMaterial extends MeshNormalMaterial { } export declare class ExtendedMatcapMaterial extends MeshMatcapMaterial { } export declare class ExtendedLineMaterial extends LineMaterial { } export declare class ExtendedPointsMaterial extends PointsMaterial { } export interface ExtendedMeshStandardMaterial extends SpeckleMaterial { } export interface ExtendedMeshBasicMaterial extends SpeckleMaterial { } export interface ExtendedMeshDepthMaterial extends SpeckleMaterial { } export interface ExtendedMeshNormalMaterial extends SpeckleMaterial { } export interface ExtendedMatcapMaterial extends SpeckleMaterial { } export interface ExtendedLineMaterial extends SpeckleMaterial { } export interface ExtendedPointsMaterial extends SpeckleMaterial { } export declare function applyMixins(derivedCtor: any, constructors: any[]): void; export {};