import { Constructor } from '../../../../types/GlobalTypes';
import { BaseController, MaterialTexturesRecord, SetParamsTextureNodesRecord } from './_BaseController';
import { TypedMatNode } from '../_Base';
import type { PointsMaterial, ShaderMaterial, MeshStandardMaterial, MeshPhysicalMaterial, MeshPhongMaterial, MeshLambertMaterial, MeshBasicMaterial, MeshToonMaterial } from 'three';
import { NodeParamsConfig } from '../../utils/params/ParamsConfig';
export interface UniformFogControllers {
    uniformFog: UniformFogController;
}
export declare function FogParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param toggle on if you have a fog in the scene and the material should be affected by it */
        useFog: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
    };
} & TBase;
declare const FogUniformsParamsConfig_base: {
    new (...args: any[]): {
        /** @param toggle on if you have a fog in the scene and the material should be affected by it */
        useFog: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
    };
} & typeof NodeParamsConfig;
declare class FogUniformsParamsConfig extends FogUniformsParamsConfig_base {
}
type FoggableUniformsMaterial = ShaderMaterial | PointsMaterial | MeshStandardMaterial | MeshPhysicalMaterial | MeshPhongMaterial | MeshLambertMaterial | MeshBasicMaterial | MeshToonMaterial;
declare abstract class FogUniformsMatNode extends TypedMatNode<FoggableUniformsMaterial, FogUniformsParamsConfig> {
    controllers: UniformFogControllers;
}
export declare class UniformFogController extends BaseController {
    protected node: FogUniformsMatNode;
    constructor(node: FogUniformsMatNode);
    static update(node: FogUniformsMatNode): Promise<void>;
    updateMaterial(material: FoggableUniformsMaterial): void;
    getTextures(material: FoggableUniformsMaterial, record: MaterialTexturesRecord): void;
    setParamsFromMaterial(material: FoggableUniformsMaterial, record: SetParamsTextureNodesRecord): void;
}
export {};
