import { Clock } from "three";
import type { ViralViewerApi } from "../../viral-viewer-api";
export declare class ViralAnimation {
    viralViewerApi: ViralViewerApi;
    clock: Clock;
    private _needsRender;
    private _rafId;
    private _isRainEnabled;
    private _isWaterEffectEnabled;
    private _isVehiclesEnabled;
    constructor(viralViewerApi: ViralViewerApi);
    /**
     * Request a render frame. Safe to call multiple times per frame —
     * coalesced via dirty flag. Schedules rAF only if not already scheduled.
     */
    requestRender(): void;
    /**
     * Start the animation loop. Called once during initialization.
     * Replaces the old devAnimation()/animation() unconditional loop.
     */
    start(): void;
    private _tick;
    /**
     * Determine if the animation loop should stay alive.
     * Only returns true when continuous updates are needed.
     */
    private _isAnimating;
    /**
     * Update rain particle positions. Called each tick when rain is enabled.
     */
    private _updateRainPositions;
    toggleRain(value: boolean): void;
    private _updateWaterEffect;
    toggleWaterEffect(value: boolean): void;
    private _updateVehicles;
    toggleVehicles(value: boolean, count?: number): void;
    private _getLandscapeGroup;
    dispose(): void;
}
