import { Reactive } from "@lincode/reactivity";
import { DirectionalLightHelper, Group, Light, PointLightHelper, SpotLightHelper } from "three";
import { RectAreaLightHelper } from "three/examples/jsm/helpers/RectAreaLightHelper";
import ILightBase from "../../interface/ILightBase";
import ObjectManager from "./ObjectManager";
export default abstract class LightBase<T extends typeof Light> extends ObjectManager<Group> implements ILightBase {
    protected lightState: Reactive<InstanceType<T> | undefined>;
    protected defaultShadowResolution: number;
    protected defaultShadowBias: number;
    protected shadowResolutionComputedState: Reactive<number | undefined>;
    protected shadowBiasComputedState: Reactive<number | undefined>;
    constructor(Light: T, Helper?: typeof DirectionalLightHelper | typeof SpotLightHelper | typeof PointLightHelper | typeof RectAreaLightHelper);
    private helperState;
    get helper(): boolean;
    set helper(val: boolean);
    private castShadowState;
    get castShadow(): boolean;
    set castShadow(val: boolean);
    private shadowResolutionState;
    get shadowResolution(): number | undefined;
    set shadowResolution(val: number | undefined);
    private shadowBiasState;
    get shadowBias(): number | undefined;
    set shadowBias(val: number | undefined);
    get color(): string;
    set color(val: string);
    get intensity(): number;
    set intensity(val: number);
}
