import { default as Accessor } from '@geoscene/core/core/Accessor.js';
import { default as CloudyWeather } from '@geoscene/core/views/3d/environment/CloudyWeather.js';
import { default as FoggyWeather } from '@geoscene/core/views/3d/environment/FoggyWeather.js';
import { default as RainyWeather } from '@geoscene/core/views/3d/environment/RainyWeather.js';
import { default as SnowyWeather } from '@geoscene/core/views/3d/environment/SnowyWeather.js';
import { default as SunnyWeather } from '@geoscene/core/views/3d/environment/SunnyWeather.js';
import { default as SceneView } from '@geoscene/core/views/SceneView.js';
type WeatherState = "disabled" | "error" | "ready";
type WeatherError = "local-scene" | "no-atmosphere" | "not-visible" | "unsupported-view";
declare const weatherTypeToConstructorMap: {
    readonly sunny: typeof SunnyWeather;
    readonly cloudy: typeof CloudyWeather;
    readonly rainy: typeof RainyWeather;
    readonly snowy: typeof SnowyWeather;
    readonly foggy: typeof FoggyWeather;
};
type WeatherTypeMap = typeof weatherTypeToConstructorMap;
type WeatherInstanceMap = {
    [K in keyof WeatherTypeMap]: InstanceType<WeatherTypeMap[K]>;
};
export type WeatherType = keyof WeatherInstanceMap;
export type WeatherUnion = WeatherInstanceMap[WeatherType];
export declare const weatherTypes: WeatherType[];
export type ConstructProperties = Partial<Pick<WeatherViewModel, "view">>;
export declare class WeatherViewModel extends Accessor {
    constructor(properties?: ConstructProperties);
    initialize(): void;
    view: nullish | SceneView;
    get state(): WeatherState;
    get disabled(): boolean;
    get weatherByType(): WeatherInstanceMap;
    get error(): nullish | WeatherError;
    get current(): WeatherUnion;
    set current(value: WeatherUnion);
    private _settingWeather;
    private _weatherByType;
    private get _environment();
    setWeatherByType(type: WeatherType): void;
    setSnowCoverEnabled(value: boolean): void;
}
export {};