import { AgroClimateIndices, AgriculturalRecommendations, ApiRequestOptions, DailyWeatherData, MeteoParam, SpanishRegion } from './types';
/**
 * Cliente para la API de NASA POWER
 */
export declare class NasaPowerClient {
    private readonly apiBaseUrl;
    private readonly axiosInstance;
    /**
     * Constructor
     */
    constructor();
    /**
     * Obtiene datos meteorológicos para una ubicación específica
     * @param options Opciones de la petición
     * @returns Promesa con los datos meteorológicos
     */
    getWeatherData(options: ApiRequestOptions): Promise<DailyWeatherData[]>;
    /**
     * Obtiene datos meteorológicos para una región de España
     * @param region Región española
     * @param startDate Fecha de inicio (YYYYMMDD)
     * @param endDate Fecha de fin (YYYYMMDD)
     * @param parameters Parámetros meteorológicos a obtener
     * @returns Promesa con los datos meteorológicos
     */
    getWeatherDataForSpanishRegion(region: SpanishRegion, startDate: string, endDate: string, parameters?: MeteoParam[]): Promise<DailyWeatherData[]>;
    /**
     * Obtiene datos agroclimáticos completos para una región de España
     * @param region Región española
     * @param startDate Fecha de inicio (YYYYMMDD)
     * @param endDate Fecha de fin (YYYYMMDD)
     * @returns Datos meteorológicos con índices agroclimáticos y recomendaciones
     */
    getAgriculturalData(region: SpanishRegion, startDate: string, endDate: string): Promise<{
        weatherData: DailyWeatherData[];
        indices: AgroClimateIndices[];
        recommendations: AgriculturalRecommendations[];
    }>;
    /**
     * Comprueba si está lloviendo en una región española
     * @param region Región española
     * @returns Promesa que indica si está lloviendo (true) o no (false)
     */
    isRaining(region: SpanishRegion): Promise<boolean>;
    /**
     * Determina si es adecuado regar los cultivos
     * @param region Región española
     * @returns Información sobre necesidad de riego
     */
    shouldIrrigate(region: SpanishRegion): Promise<{
        shouldIrrigate: boolean | 'no definido';
        reason: string;
        recommendedAmount?: number;
    }>;
    /**
     * Comprueba el riesgo de heladas para los cultivos
     * @param region Región española
     * @returns Información sobre riesgo de heladas
     */
    checkFrostRisk(region: SpanishRegion): Promise<{
        riskLevel: 'bajo' | 'medio' | 'alto' | 'no definido';
        message: string;
    }>;
    /**
     * Verifica condiciones óptimas para siembra
     * @param region Región española
     * @returns Información sobre condiciones de siembra
     */
    checkPlantingConditions(region: SpanishRegion): Promise<{
        isOptimal: boolean | 'no definido';
        message: string;
        details: {
            soilMoisture?: number;
            soilTemperature?: number;
            rain?: number;
            forecastRain?: boolean;
        };
    }>;
    /**
     * Realiza una petición a la API de NASA POWER
     * @param options Opciones de la petición
     * @returns Promesa con la respuesta de la API
     * @private
     */
    private makeApiRequest;
    /**
     * Procesa la respuesta de la API y la convierte en un formato más amigable
     * @param response Respuesta de la API
     * @returns Datos meteorológicos procesados
     * @private
     */
    private processApiResponse;
    /**
     * Calcula índices agroclimáticos basados en datos meteorológicos
     * @param data Datos meteorológicos diarios
     * @returns Índices agroclimáticos
     * @private
     */
    private calculateAgroClimateIndices;
    /**
     * Genera recomendaciones agrícolas basadas en datos meteorológicos e índices
     * @param data Datos meteorológicos diarios
     * @param indices Índices agroclimáticos
     * @returns Recomendaciones agrícolas
     * @private
     */
    private generateRecommendations;
    /**
     * Formatea una fecha al formato YYYYMMDD
     * @param date Fecha a formatear
     * @returns Fecha formateada
     * @private
     */
    private formatDate;
}
