import { Constructor } from '../../../../types/GlobalTypes';
import { TypedMatNode } from '../_Base';
import { BaseTextureMapController } from './_BaseTextureController';
import { NodeParamsConfig } from '../../utils/params/ParamsConfig';
import { MeshBasicMaterial, MeshPhongMaterial, MeshLambertMaterial, MeshStandardMaterial, MeshPhysicalMaterial, MeshToonMaterial } from 'three';
import { MaterialTexturesRecord, SetParamsTextureNodesRecord } from './_BaseController';
export declare function LightMapParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param toggle if you want to use a light map */
        useLightMap: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param specify the light map COP node */
        lightMap: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.NODE_PATH>;
        /** @param light. When set to 0, reflections from environment maps will be very sharp, or blurred when 1. Any value between 0 and 1 can help modulate this. */
        lightMapIntensity: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
    };
} & TBase;
type TextureLightMapCurrentMaterial = MeshBasicMaterial | MeshLambertMaterial | MeshStandardMaterial | MeshPhysicalMaterial | MeshToonMaterial | MeshPhongMaterial;
declare const TextureLightMapParamsConfig_base: {
    new (...args: any[]): {
        /** @param toggle if you want to use a light map */
        useLightMap: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param specify the light map COP node */
        lightMap: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.NODE_PATH>;
        /** @param light. When set to 0, reflections from environment maps will be very sharp, or blurred when 1. Any value between 0 and 1 can help modulate this. */
        lightMapIntensity: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
    };
} & typeof NodeParamsConfig;
declare class TextureLightMapParamsConfig extends TextureLightMapParamsConfig_base {
}
export interface TextureLightMapControllers {
    lightMap: TextureLightMapController;
}
declare abstract class TextureLightMapMatNode extends TypedMatNode<TextureLightMapCurrentMaterial, TextureLightMapParamsConfig> {
    controllers: TextureLightMapControllers;
    material(): Promise<TextureLightMapCurrentMaterial | undefined>;
}
export declare class TextureLightMapController extends BaseTextureMapController {
    protected node: TextureLightMapMatNode;
    constructor(node: TextureLightMapMatNode);
    initializeNode(): void;
    static update(node: TextureLightMapMatNode): Promise<void>;
    update(): Promise<void>;
    updateMaterial(material: TextureLightMapCurrentMaterial): Promise<void>;
    getTextures(material: TextureLightMapCurrentMaterial, record: MaterialTexturesRecord): void;
    setParamsFromMaterial(material: TextureLightMapCurrentMaterial, record: SetParamsTextureNodesRecord): void;
}
export {};
