/**
 * Clase principal de la API de AEMET
 */
import { AemetOptions, SimpleForecastResponse, ForecastResponse, ClimateValuesParams, WeatherStation, ClimateValuesResponse } from './lib/types';
/**
 * Cliente para la API de AEMET (Agencia Estatal de Meteorología)
 */
export declare class Aemet {
    private apiKey;
    private baseUrl;
    private timeout;
    private provinciaIndex;
    /**
     * Inicializa un nuevo cliente de AEMET
     * @param apiKey - Clave API para acceder a la API de AEMET
     * @param options - Opciones adicionales
     */
    constructor(apiKey: string, options?: AemetOptions);
    /**
     * Obtener la predicción simplificada para un municipio
     * @param municipalityCode - Código INE del municipio (5 dígitos)
     * @returns Predicción simplificada para los próximos 3 días
     */
    getSimpleForecast(municipalityCode: string): Promise<SimpleForecastResponse>;
    /**
     * Obtener la predicción completa para un municipio
     * @param municipalityCode - Código INE del municipio (5 dígitos)
     * @returns Predicción completa con los datos crudos
     */
    getForecast(municipalityCode: string): Promise<ForecastResponse>;
    /**
     * Obtener la lista de municipios disponibles
     * @returns Lista de municipios con sus códigos
     */
    getMunicipalities(): Promise<any[]>;
    /**
     * Obtener la lista de provincias disponibles
     * @returns Lista de provincias
     */
    getProvinces(): Promise<any[]>;
    /**
     * Obtener avisos meteorológicos para el día actual
     * @returns Avisos meteorológicos para hoy
     */
    getAlertsToday(): Promise<any>;
    /**
     * Obtener avisos meteorológicos para el día siguiente
     * @returns Avisos meteorológicos para mañana
     */
    getAlertsTomorrow(): Promise<any>;
    /**
     * Método privado para extraer la predicción de un día específico
     * @param data - Datos de la predicción completa
     * @param dayOffset - Desplazamiento del día (0 para hoy, 1 para mañana, etc.)
     * @returns Predicción simplificada para el día
     */
    private extractDayForecast;
    /**
     * Método privado para obtener el estado del cielo predominante durante el día
     * @param skyStates - Array de estados del cielo
     * @returns Valor del estado del cielo predominante
     */
    private getPredominantSkyState;
    /**
     * Obtener todas las estaciones meteorológicas disponibles
     * @returns Lista de estaciones meteorológicas
     */
    getWeatherStations(): Promise<WeatherStation[]>;
    /**
     * Normaliza coordenadas desde formato AEMET (ej: "394924N") a decimales
     * @param coord - Coordenada en formato AEMET
     * @returns - Coordenada en formato decimal
     */
    private normalizeCoordinate;
    /**
     * Busca estaciones por nombre o provincia
     * @param query - Texto a buscar en el nombre o provincia de la estación
     * @returns Lista de estaciones filtradas
     */
    searchWeatherStations(query: string): Promise<WeatherStation[]>;
    /**
     * Obtener valores climatológicos diarios para una estación y período específicos
     * @param params - Parámetros para obtener valores climatológicos
     * @returns Valores climatológicos diarios
     */
    getClimateValues(params: ClimateValuesParams): Promise<ClimateValuesResponse>;
    /**
     * Obtener resumen climatológico para una estación y período
     * @param params - Parámetros para obtener valores climatológicos
     * @provincia - Nombre de la provincia autónoma para filtrar estaciones
     * @returns Resumen estadístico de los valores climatológicos
     */
    getClimateSummaryByProvincia(params: ClimateValuesParams, provincia: string): Promise<any>;
    private calculateWindDirectionAverage;
    /**
     * Método auxiliar para calcular la media de un array de números
     * @param values - Array de valores numéricos
     * @returns Media aritmética o 0 si no hay valores
     */
    private calculateAverage;
    /**
     * Método auxiliar para calcular la suma de un array de números
     * @param values - Array de valores numéricos
     * @returns Suma total o 0 si no hay valores
     */
    private calculateSum;
    private normalizeProvince;
}
export { AemetOptions };
