import type { IUniform, Material } from "three";
export type OnBeforeCompile = Material["onBeforeCompile"];
export type RecordToUniforms<U extends Record<string, any>> = {
    [K in keyof U]: IUniform<U[K]>;
};
export type ModifiedMaterial<M extends Material, U extends Record<string, any>> = M & {
    uniforms: RecordToUniforms<U>;
} & U;
export declare function addUniforms<U extends Record<string, any>>(shaderUniforms: Record<string, IUniform<any>>, uniforms: U): Record<string, IUniform<any>>;
export declare function addUniformPropertiesOnMaterial<M extends Material, U extends Record<string, any>>(material: M, uniforms: U, shaderUniforms?: Record<string, IUniform<any>>): ModifiedMaterial<M, U>;
/**
 * 创建 onBeforeCompile 函数
 * @param mender
 * @param uniforms
 * @returns
 */
export declare function createOnBeforeCompile<U extends Record<string, any>>(mender: OnBeforeCompile, uniforms?: U, material?: Material): (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
export declare const minFun_Regex: RegExp;
//# sourceMappingURL=onBeforeCompile.d.ts.map