import type { LandscapeDefinition, LandscapeLayerConfig, TerrainStyle } from "./landscape-types";
import { type TerrainTileFetcher } from "./terrain-style";
import { type TrafficTileFetcher } from "./traffic-overlay";
import type { ViralViewerApi } from "../../viral-viewer-api";
export declare class ViralLandscape {
    private _viewer;
    private _terrainTileFetchers;
    private _trafficFetcher;
    private _terrainTextureCache;
    constructor(_viewer: ViralViewerApi);
    private _getLandscapeGroup;
    /**
     * Get the current landscape definition (center, radius, layers, etc.).
     * Returns null if no landscape exists.
     */
    getDefinition(): LandscapeDefinition | null;
    /**
     * Get the current landscape layer configurations.
     * Returns null if no landscape exists.
     */
    getLayers(): LandscapeLayerConfig[] | null;
    /**
     * Toggle visibility of a landscape layer.
     */
    setLayerVisible(layerType: LandscapeLayerConfig["type"], visible: boolean): void;
    /**
     * Change color of a landscape layer.
     * @param color Hex color number, e.g. 0x4caf50
     */
    setLayerColor(layerType: LandscapeLayerConfig["type"], color: number): void;
    /**
     * Toggle contour lines visibility.
     */
    setContourLinesVisible(visible: boolean): void;
    /**
     * Change contour lines color.
     * @param color Hex color number, e.g. 0x000000
     */
    setContourLinesColor(color: number): void;
    /**
     * Register a tile fetcher for terrain texture styles (satellite, map, light).
     * Must be set before calling setTerrainStyle with that style.
     */
    setTerrainTileFetcher(style: "satellite" | "map" | "light", fetcher: TerrainTileFetcher): void;
    /**
     * Apply a terrain style to the landscape.
     */
    setTerrainStyle(style: TerrainStyle): Promise<void>;
    /**
     * Register a traffic tile fetcher. Enables traffic overlay functionality.
     */
    setTrafficTileFetcher(fetcher: TrafficTileFetcher): void;
    /**
     * Toggle the traffic overlay on/off.
     * @param visible true to fetch and show, false to hide
     */
    setTrafficVisible(visible: boolean): Promise<void>;
    /**
     * Enable or disable animated water ripple effect on the water layer.
     * When enabled, the water surface gets time-based vertex displacement each frame.
     */
    setWaterEffect(enabled: boolean): void;
    setWaterColor(color: number): void;
    setWaterDistortionScale(scale: number): void;
    setWaterSize(size: number): void;
    setVehicles(enabled: boolean, count?: number): void;
    setNightMode(enabled: boolean): void;
    setNightColor(color: number): void;
    setNightIntensity(intensity: number): void;
    private _getWaterMesh;
    /**
     * Open the map picker modal (for regenerating the landscape).
     */
    showMapPicker(): void;
    dispose(): void;
}
