import { IUniform } from 'three';
import { Material } from 'three';
import { ExtendedMeshDepthMaterial, Uniforms } from './SpeckleMaterial';
declare class SpeckleDepthMaterial extends ExtendedMeshDepthMaterial {
    private static readonly matBuff;
    private static readonly vecBuff0;
    private static readonly vecBuff1;
    private static readonly vecBuff2;
    protected get vertexProgram(): string;
    protected get fragmentProgram(): string;
    protected get baseUniforms(): {
        [uniform: string]: IUniform;
    };
    protected get uniformsDef(): Uniforms;
    constructor(parameters: any, defines?: any[]);
    /** We need a unique key per program */
    customProgramCacheKey(): string;
    copy(source: any): this;
    fastCopy(from: Material, to: Material): void;
    /** Another note here, this will NOT get called by three when rendering shadowmaps. We update the uniforms manually
     * inside SpeckleRenderer for shadowmaps
     */
    onBeforeRender(_this: any, scene: any, camera: any, geometry: any, object: any, group: any): void;
}
export default SpeckleDepthMaterial;
