/** * Fire weather utility functions for interpreting fire danger indices */ /** * Haines Index category information * The Haines Index measures atmospheric stability and dryness that affect fire growth potential * Scale: 2-6 (Low, Moderate, High fire growth potential) */ export interface HainesCategory { level: string; description: string; fireGrowthPotential: string; color: string; } /** * Get Haines Index category * Haines Index: 2-6 scale measuring atmospheric contribution to fire growth * - Low elevation (< 3,000 ft): 2-3 = Low, 4 = Moderate, 5-6 = High * - Mid elevation (3,000-10,000 ft): Same scale * - High elevation (> 10,000 ft): Same scale * * The ladder is contiguous (`<= 3` / `<= 4` / `<= 5` / else) so a non-integer * value bands into the rung it falls within rather than falling through to * the top rung. */ export declare function getHainesCategory(hainesValue: number): HainesCategory; /** * Get grassland fire danger category * Scale: 1-4 (Low, Moderate, High, Very High) * * The ladder is contiguous (`<= 1` / `<= 2` / `<= 3` / else) so a non-integer * value bands into the rung it falls within rather than falling through to * the top rung. */ export declare function getGrasslandFireDangerCategory(value: number): { level: string; description: string; color: string; }; /** * Get red flag threat index category * Indicates potential for Red Flag Warning conditions */ export declare function getRedFlagCategory(value: number): { level: string; description: string; color: string; }; /** * Get current fire weather value from gridpoint data series * Returns the value for the current time period */ export declare function getCurrentFireWeatherValue(dataSeries: { values: Array<{ validTime: string; value: number; }>; } | undefined): number | null; /** * Format mixing height value * Mixing height indicates how high smoke and pollutants can rise * Higher is generally better for smoke dispersion */ export declare function formatMixingHeight(heightFt: number | null): string; /** * Interpret transport wind speed for fire behavior * Transport winds carry smoke and can influence fire spread */ export declare function interpretTransportWind(speedMph: number | null): string; /** * Fire weather context information for when indices aren't available */ export interface FireWeatherContext { hasIndices: boolean; reason: string; seasonalRisk: 'Low' | 'Moderate' | 'Elevated' | 'High'; explanatoryText: string; } /** * Determine fire weather context and why indices may not be available * Provides user-friendly explanations for missing fire weather data */ export declare function getFireWeatherContext(latitude: number, longitude: number, timestamp: string, hainesValue: number | null, grasslandValue: number | null, redFlagValue: number | null, humidity?: number | null): FireWeatherContext; /** * Calculate the Fosberg Fire Weather Index (FFWI) from surface observations. * * Reference: Fosberg, M.A. (1978), "Weather in wildland fire management: the * fire weather index," as implemented in NWS/WFAS (Wildland Fire Assessment * System) documentation. This is the standard surface-inputs formulation: * * 1. Equilibrium moisture content (EMC, `m`) from relative humidity and * temperature, via a three-branch piecewise fit: * - RH < 10: m = 0.03229 + 0.281073*RH - 0.000578*RH*T * - 10 <= RH <= 50: m = 2.22749 + 0.160107*RH - 0.014784*T * - RH > 50: m = 21.0606 + 0.005565*RH^2 - 0.00035*RH*T - 0.483199*RH * 2. Moisture damping coefficient: * eta = 1 - 2*(m/30) + 1.5*(m/30)^2 - 0.5*(m/30)^3, clamped to >= 0. * 3. FFWI = eta * sqrt(1 + U^2) / 0.3002, clamped to the published 0-100 * range (U is sustained wind speed in mph). * * This is a pure math transcription with no input range validation — the * caller is expected to pass sane meteorological values. Any non-finite * input (NaN or +/-Infinity, in tempF, rhPercent, or windMph) returns `NaN`; * callers must check `Number.isFinite()` on the result before rendering it * and fall back to an "unavailable" message rather than surfacing NaN. * * @param tempF Temperature in degrees Fahrenheit * @param rhPercent Relative humidity as a percentage (0-100 in normal use) * @param windMph Sustained wind speed in miles per hour * @returns FFWI on a 0-100 scale, or NaN if any input is non-finite */ export declare function calculateFosbergIndex(tempF: number, rhPercent: number, windMph: number): number; /** * Get Fosberg Fire Weather Index (FFWI) category. * * Band boundaries (`< 25` Low, `25-39` Moderate, `40-49` High, `>= 50` * Extreme) are a **project heuristic**, not an agency-published scale — * published FFWI usage generally treats values >= 50 as significant fire * weather, but there is no single universally standardized banding below * that threshold. Disclose this derivation to users alongside the number. */ export declare function getFosbergCategory(ffwi: number): { level: string; description: string; color: string; }; /** * Describe vapour-pressure deficit (VPD) drying power for a fire-weather * dryness-context line. * * Bands (`< 1` low, `1-2` moderate, `2-3` high, `> 3` extreme kPa) are a * **project heuristic** for narrating drying power, not an agency scale. */ export declare function describeVpd(kPa: number): string; /** * Describe topsoil (0-1 cm) volumetric moisture content for a fire-weather * dryness-context line. * * Bands (`< 0.1` very dry, `0.1-0.2` dry, `0.2-0.3` moist, `> 0.3` wet * m^3/m^3) are a **project heuristic**, not an agency scale. */ export declare function describeTopsoilMoisture(m3m3: number): string; //# sourceMappingURL=fireWeather.d.ts.map