import { Shader } from 'three'; import { MaterialConstructor } from './types/index'; import { Uniforms } from './types/internal'; declare function createMaterial(baseMaterial?: MaterialConstructor, uniforms?: Uniforms, onBeforeCompile?: (shader: Shader) => void): { new (parameters?: {}): { [key: string]: any; onBeforeCompile(shader: Shader): void; alphaTest: number; blendDst: import("three").BlendingDstFactor; blendDstAlpha: number | null; blendEquation: import("three").BlendingEquation; blendEquationAlpha: number | null; blending: import("three").Blending; blendSrc: import("three").BlendingSrcFactor | import("three").BlendingDstFactor; blendSrcAlpha: number | null; clipIntersection: boolean; clippingPlanes: any; clipShadows: boolean; colorWrite: boolean; defines: { [key: string]: any; } | undefined; depthFunc: import("three").DepthModes; depthTest: boolean; depthWrite: boolean; fog: boolean; id: number; stencilWrite: boolean; stencilFunc: import("three").StencilFunc; stencilRef: number; stencilWriteMask: number; stencilFuncMask: number; stencilFail: import("three").StencilOp; stencilZFail: import("three").StencilOp; stencilZPass: import("three").StencilOp; readonly isMaterial: true; name: string; needsUpdate: boolean; opacity: number; polygonOffset: boolean; polygonOffsetFactor: number; polygonOffsetUnits: number; precision: "highp" | "mediump" | "lowp" | null; premultipliedAlpha: boolean; dithering: boolean; side: import("three").Side; shadowSide: import("three").Side; toneMapped: boolean; transparent: boolean; type: string; uuid: string; vertexColors: boolean; visible: boolean; userData: any; version: number; clone(): import("three").Material; copy(material: import("three").Material): any; dispose(): void; customProgramCacheKey(): string; setValues(values: import("three").MaterialParameters): void; toJSON(meta?: any): any; addEventListener(type: string, listener: (event: import("three").Event) => void): void; hasEventListener(type: string, listener: (event: import("three").Event) => void): boolean; removeEventListener(type: string, listener: (event: import("three").Event) => void): void; dispatchEvent(event: { [attachment: string]: any; type: string; }): void; }; }; export default createMaterial;