import { BinaryIO } from '../common/BinaryIO.js';
import { type ArxColor } from '../common/Color.js';
import type { ArxRotation, ArxVector3 } from '../common/types.js';
/**
 * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/scene/LevelFormat.h#L132
 */
export type ArxFog = {
    position: ArxVector3;
    color: ArxColor;
    size: number;
    /**
     * Either 0 = ? or 1 = FOG_DIRECTIONAL
     */
    special: number;
    scale: number;
    /**
     * A normal vector, all axis are between -1 and 1
     */
    move: ArxVector3;
    orientation: ArxRotation;
    /**
     * Movement speed of fog particles: `move` * (`speed` * 0.1)
     */
    speed: number;
    /**
     * Particle rotation between 0 (stationary) and 1 (rotating as fast as the FPS allows)
     */
    rotateSpeed: number;
    /**
     * How long each particle lives (fade in -> show -> fade out) in milliseconds
     */
    toLive: number;
    /**
     * Whether to draw new fog particles is checked by creating a random number between 0 and 2000.
     * If that random number is < frequency then a new particle is drawn.
     *
     * Having the frequency set to 2000 or above means spawning fog particles on every frame.
     */
    frequency: number;
};
export declare class Fog {
    static readFrom(binary: BinaryIO<ArrayBufferLike>): ArxFog;
    static accumulateFrom(fog: ArxFog): ArrayBuffer;
    static sizeOf(): number;
}
