import { Constructor } from '../../../../../types/GlobalTypes';
import { NodeParamsConfig } from '../../../utils/params/ParamsConfig';
import { Fog } from 'three';
import { FogExp2 } from 'three';
import { ParamsValueAccessorType } from '../../../utils/params/ParamsValueAccessor';
import { RootManagerNode } from '../../Root';
export declare enum FogType {
    LINEAR = "linear",
    EXPONENTIAL = "exponential"
}
export declare const FOG_TYPES: FogType[];
export declare function SceneFogParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param toggle on to use fog */
        useFog: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.BOOLEAN>;
        /** @param fog type */
        fogType: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.INTEGER>;
        /** @param fog color */
        fogColor: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.COLOR>;
        /** @param fog near */
        fogNear: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.FLOAT>;
        /** @param fog far */
        fogFar: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.FLOAT>;
        /** @param fog density */
        fogDensity: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.FLOAT>;
    };
} & TBase;
declare const SceneFogParamsConfig_base: {
    new (...args: any[]): {
        /** @param toggle on to use fog */
        useFog: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.BOOLEAN>;
        /** @param fog type */
        fogType: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.INTEGER>;
        /** @param fog color */
        fogColor: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.COLOR>;
        /** @param fog near */
        fogNear: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.FLOAT>;
        /** @param fog far */
        fogFar: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.FLOAT>;
        /** @param fog density */
        fogDensity: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../index_all").ParamType.FLOAT>;
    };
} & typeof NodeParamsConfig;
declare class SceneFogParamsConfig extends SceneFogParamsConfig_base {
}
export declare class SceneFogController {
    protected node: RootManagerNode;
    constructor(node: RootManagerNode);
    private _fog;
    private _fogExp2;
    update(): Promise<void>;
    fog2(pv: ParamsValueAccessorType<SceneFogParamsConfig>): Fog;
    fogExp2(pv: ParamsValueAccessorType<SceneFogParamsConfig>): FogExp2;
    static update(node: RootManagerNode): Promise<void>;
}
export {};
