import { Light } from "../../../DatabaseServices/Lights/Light";
import { TemplateRecord } from "../../../DatabaseServices/Template/TemplateRecord";
import { IConfigOption } from "../../Components/Board/UserConfigComponent";
import { IConfigStore } from "../BoardStore";
import { AnyObject, RightPlaneLightOption } from "../OptionInterface/IOptionInterface";
import { PointLightOption, RectAreaLightOption, SpotLightOption } from "../OptionInterface/LightConfigOption";
export interface LightModalState {
    x?: string;
    y?: string;
    z?: string;
    Intensity?: string;
    Distance?: string;
    Decay?: string;
    Angle?: string;
    Penumbra?: string;
    Width?: string;
    Height?: string;
    Color?: string;
    GroundColor?: string;
    Elevation?: string;
    Rotation?: string;
    AutoExposure?: boolean;
    ExposureCompensation?: string;
    LightIndirectLightingIntensity?: string;
    IndirectLightingIntensity?: string;
    InnerConeAngle?: string;
    OuterConeAngle?: string;
    SourceRadius?: string;
    SoftSourceRadius?: string;
    SourceLength?: string;
    SpecularScale?: string;
    Temperature?: string;
    AttenuationRadius?: string;
    BarnDoorAngle?: string;
    BarnDoorLength?: string;
    ShowHelper?: boolean;
    CaseShadow?: boolean;
}
export declare enum ETime {
    Default = "\u9ED8\u8BA4",
    Morning = "\u4E0A\u5348",
    Noon = "\u4E2D\u5348",
    Afternoon = "\u4E0B\u5348",
    Evening = "\u508D\u665A"
}
export declare class LightStore implements IConfigStore {
    configName: string;
    configsNames: string[];
    InitOption: () => void;
    SaveConfig: () => IConfigOption<AnyObject>;
    UpdateOption: Function;
    HasInvailValue?: () => string;
    EditorTemplate?: TemplateRecord;
    InitConfigs?: () => {
        [key: string]: IConfigOption<AnyObject>;
    };
    GetOtherConfig?: (conf: any) => AnyObject;
    HandleImportConfig?: (conf: any) => void;
    IsDrawLight: boolean;
    ShowAmbientLight: boolean;
    ShowSunLight: boolean;
    ShowHemiLight: boolean;
    ShowExposure: boolean;
    currentSelectEnt: Light;
    title: string;
    pars: [string, string][];
    lightData: LightModalState;
    ambientLightData: {
        Color: string;
        Intensity: string;
    };
    hemisphereLightData: {
        GroundColor: string;
        Color: string;
        Intensity: string;
        ExposureCompensation: string;
        AutoExposure: boolean;
        IndirectLightingIntensity: string;
    };
    sunLightData: {
        Intensity: string;
        IndirectLightingIntensity: string;
        time: ETime;
        CaseShadow: boolean;
        Elevation: string;
        Rotation: string;
    };
    constructor();
    private static _SingleInstance;
    static GetInstance(): LightStore;
    InitSunLightData(): void;
    InitLightData(light: Light): this;
    private WatchLightEvent;
}
export declare class PointLightStore implements IConfigStore {
    configName: string;
    m_Option: PointLightOption;
    configsNames: string[];
    lightStore: LightStore;
    InitOption(): void;
    InitConfigs(): {
        [key: string]: IConfigOption<AnyObject>;
    };
    SaveConfig(): IConfigOption<AnyObject>;
    UpdateOption(cof: IConfigOption<PointLightOption>): Promise<void>;
    private updatePointLight;
    private static _SingleInstance;
    static GetInstance(): PointLightStore;
}
export declare class SpotLightStore implements IConfigStore {
    configName: string;
    m_Option: SpotLightOption;
    configsNames: string[];
    lightStore: LightStore;
    InitOption(): void;
    InitConfigs(): {
        [key: string]: IConfigOption<AnyObject>;
    };
    SaveConfig(): IConfigOption<AnyObject>;
    UpdateOption(cof: IConfigOption<SpotLightOption>): Promise<void>;
    private updateSpotLight;
    private static _SingleInstance;
    static GetInstance(): SpotLightStore;
}
export declare class RectAreaLightStore implements IConfigStore {
    configName: string;
    m_Option: RectAreaLightOption;
    configsNames: string[];
    lightStore: LightStore;
    isLockWidth: boolean;
    isLockHeight: boolean;
    InitOption(): void;
    InitConfigs(): {
        [key: string]: IConfigOption<AnyObject>;
    };
    SaveConfig(): IConfigOption<AnyObject>;
    UpdateOption(cof: IConfigOption<RectAreaLightOption>): Promise<void>;
    private updateRectAreaLight;
    private static _SingleInstance;
    static GetInstance(): RectAreaLightStore;
}
export declare class RightPlaneLightStore implements IConfigStore {
    configName: string;
    m_Option: RightPlaneLightOption;
    configsNames: string[];
    InitOption(): void;
    InitConfigs(): {
        [key: string]: IConfigOption<AnyObject>;
    };
    SaveConfig(): IConfigOption<AnyObject>;
    UpdateOption(cof: IConfigOption<RightPlaneLightOption>): Promise<void>;
    private static _SingleInstance;
    static GetInstance(): RightPlaneLightStore;
}
//# sourceMappingURL=LightStore.d.ts.map