import { Constructor } from '../../../../types/GlobalTypes';
import { NodeParamsConfig } from '../../utils/params/ParamsConfig';
import { TypedMatNode } from '../_Base';
import { Object3D, Group, Scene, Camera, BufferGeometry, Material, ShaderMaterial, WebGLRenderer } from 'three';
export declare function VolumeParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param color */
        color: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.COLOR>;
        /** @param stepSize. The smaller the value the more step the shader will make */
        stepSize: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param volume density */
        density: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param volume shadow density */
        shadowDensity: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param this volume material currently can only use a single white light, whose direction is defined by this parameter */
        lightDir: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.VECTOR3>;
    };
} & TBase;
declare class VolumeMaterial extends Material {
}
declare const VolumeParamsConfig_base: {
    new (...args: any[]): {
        /** @param color */
        color: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.COLOR>;
        /** @param stepSize. The smaller the value the more step the shader will make */
        stepSize: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param volume density */
        density: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param volume shadow density */
        shadowDensity: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param this volume material currently can only use a single white light, whose direction is defined by this parameter */
        lightDir: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.VECTOR3>;
    };
} & typeof NodeParamsConfig;
declare class VolumeParamsConfig extends VolumeParamsConfig_base {
}
declare abstract class VolumeMatNode extends TypedMatNode<VolumeMaterial, VolumeParamsConfig> {
}
export declare class VolumeController {
    private node;
    constructor(node: VolumeMatNode);
    private static _objectBbox;
    static renderHook(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material, group: Group | null, object: Object3D): void;
    updateUniformsFromParams(material: ShaderMaterial): void;
}
export {};
