import { Constructor } from '../../../../../types/GlobalTypes';
import { MeshBasicMaterial } from 'three/src/materials/MeshBasicMaterial';
import { NodeParamsConfig } from '../../../utils/params/ParamsConfig';
import { TypedObjNode } from '../../_Base';
import { Group } from 'three/src/objects/Group';
import { Light } from 'three/src/lights/Light';
import { Object3D } from 'three/src/core/Object3D';
import { FlagsControllerD } from '../../../utils/FlagsController';
export declare function BaseLightHelperParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        showHelper: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../poly/ParamType").ParamType.BOOLEAN>;
    };
} & TBase;
declare const BaseLightHelperParamsConfig_base: {
    new (...args: any[]): {
        showHelper: import("../../../utils/params/ParamsConfig").ParamTemplate<import("../../../../poly/ParamType").ParamType.BOOLEAN>;
    };
} & typeof NodeParamsConfig;
declare class BaseLightHelperParamsConfig extends BaseLightHelperParamsConfig_base {
}
export declare abstract class BaseLightHelperObjNode<L extends Light> extends TypedObjNode<Group, BaseLightHelperParamsConfig> {
    readonly flags: FlagsControllerD;
    abstract get light(): L;
}
export declare abstract class BaseLightHelper<O extends Object3D, L extends Light, N extends BaseLightHelperObjNode<L>> {
    protected node: N;
    private _name;
    protected _object: O;
    protected _material: MeshBasicMaterial;
    constructor(node: N, _name: string);
    build(): void;
    protected abstract createObject(): O;
    protected abstract buildHelper(): void;
    get object(): O;
    abstract update(): void;
}
export {};
