import { CacheService } from './cache.js';
export interface WeatherStation {
    id: string;
    deviceId: string;
    name: string;
    labelLocation?: {
        latitude: number;
        longitude: number;
    };
    location?: {
        latitude: number;
        longitude: number;
    };
}
export interface WeatherReading {
    timestamp: string;
    data: Array<{
        stationId: string;
        value: number;
    }>;
}
export interface WeatherData {
    stations: WeatherStation[];
    readings: WeatherReading[];
    readingType: string;
    readingUnit: string;
}
export interface WeatherConditions {
    temperature: number;
    rainfall: number;
    humidity: number;
    windSpeed: number;
    windDirection: number;
    location: {
        latitude: number;
        longitude: number;
    };
    timestamp: string;
}
export interface WeatherAdvisory {
    severity: 'low' | 'medium' | 'high';
    type: 'rain' | 'heat' | 'wind' | 'humidity';
    message: string;
    routingImpact: {
        walkingTimeMultiplier: number;
        preferredModes: string[];
        avoidedAreas: string[];
    };
}
export declare class WeatherService {
    private cache;
    private timeout;
    private client;
    private readonly baseUrl;
    constructor(cache: CacheService, timeout?: number);
    private setupInterceptors;
    getRainfall(date?: string): Promise<WeatherData>;
    getAirTemperature(date?: string): Promise<WeatherData>;
    getRelativeHumidity(date?: string): Promise<WeatherData>;
    getWindSpeed(date?: string): Promise<WeatherData>;
    getWindDirection(date?: string): Promise<WeatherData>;
    getWeatherConditionsForLocation(latitude: number, longitude: number): Promise<WeatherConditions>;
    private getAllWeatherData;
    private processWeatherData;
    private getDefaultWeatherConditions;
    generateWeatherAdvisory(conditions: WeatherConditions): WeatherAdvisory[];
    private getStationCoordinates;
    private findNearestStation;
    private getLatestReading;
    private calculateDistance;
}
