import { Constructor } from '../../types/GlobalTypes';
import { DefaultOperationParams } from '../operations/_Base';
import { Group, Vector2, Color, SpotLight } from 'three';
import { CoreSpotLightHelperParams } from './spotlight/CoreSpotLightHelper';
import { TypedNodePathParamValue } from '../Walker';
export interface SpotLightParams extends DefaultOperationParams {
    color: Color;
    intensity: number;
    angle: number;
    penumbra: number;
    decay: number;
    distance: number;
    showHelper: boolean;
    helperSize: number;
    tmap: boolean;
    map: TypedNodePathParamValue;
    name: string;
    castShadow: boolean;
    shadowAutoUpdate: boolean;
    shadowUpdateOnNextRender: boolean;
    shadowRes: Vector2;
    shadowBias: number;
    shadowNear: number;
    shadowFar: number;
    shadowRadius: number;
    tvolumetric: boolean;
    volAttenuation: number;
    volAnglePower: number;
    raymarchingPenumbra: number;
    raymarchingShadowBiasAngle: number;
    raymarchingShadowBiasDistance: number;
}
export declare const DEFAULT_SPOT_LIGHT_PARAMS: SpotLightParams;
export declare function SpotLightParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        light: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FOLDER>;
        /** @param light color */
        color: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.COLOR>;
        /** @param light intensity */
        intensity: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param angle */
        angle: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param penumbra */
        penumbra: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param decay */
        decay: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param distance */
        distance: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param toggle on to show helper */
        showHelper: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.BOOLEAN>;
        /** @param helper size */
        helperSize: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param toggle on to show helper */
        tmap: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.BOOLEAN>;
        /** @param helper size */
        map: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.NODE_PATH>;
        /** @param light name */
        name: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.STRING>;
        shadow: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FOLDER>;
        /** @param toggle on to cast shadows */
        castShadow: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.BOOLEAN>;
        /** @param toggle off if the shadows do not need to be regenerated */
        shadowAutoUpdate: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.BOOLEAN>;
        /** @param press button to update the shadows on next render */
        shadowUpdateOnNextRender: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.BOOLEAN>;
        /** @param shadows res */
        shadowRes: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.VECTOR2>;
        /** @param shadows bias */
        shadowBias: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param shadows near */
        shadowNear: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param shadows far */
        shadowFar: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param shadows radius. This only has effect when setting the ROP/WebGLRenderer's shadowMapType to VSM */
        shadowRadius: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param display shadow on a plane behind the light */
        volumetric: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FOLDER>;
        /** @param toggle on to add a volumetric effect to the spotlight */
        tvolumetric: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.BOOLEAN>;
        /** @param volumetric attenuation */
        volAttenuation: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param volumetric angle power */
        volAnglePower: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        raymarching: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FOLDER>;
        /** @param this affects the shadows cast inside raymarchingBuilder materials */
        raymarchingPenumbra: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param shadow bias */
        raymarchingShadowBiasAngle: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
        /** @param shadow bias */
        raymarchingShadowBiasDistance: import("../../engine/nodes/utils/params/ParamsConfig").ParamTemplate<import("../../engine/index_all").ParamType.FLOAT>;
    };
} & TBase;
export interface SpotLightContainerParams extends CoreSpotLightHelperParams {
    showHelper: boolean;
    tvolumetric: boolean;
    volAnglePower: number;
    volAttenuation: number;
}
export declare class SpotLightContainer extends Group {
    readonly nodeName: string;
    private _light;
    private _target;
    matrixAutoUpdate: boolean;
    params: SpotLightContainerParams;
    constructor(params: Partial<SpotLightContainerParams>, nodeName: string);
    updateParams(params: Partial<SpotLightContainerParams>): void;
    light(): SpotLight;
    copy(source: this, recursive?: boolean): this;
    clone(recursive?: boolean): this;
    private __helper__;
    updateHelper(): void;
    private __volumetric__;
    updateVolumetric(): void;
}
