/**
 * Enhanced LTA Service with comprehensive API integration
 * Dynamically integrates all LTA DataMall APIs for intelligent transport planning
 */
import { LTAService } from './lta.js';
import { CacheService } from './cache.js';
import { TaxiAvailability } from '../types/transport.js';
export interface TrafficIncident {
    type: string;
    latitude: number;
    longitude: number;
    message: string;
    severity?: 'low' | 'medium' | 'high';
    affectedRoutes?: string[];
}
export interface EstimatedTravelTime {
    name: string;
    direction: number;
    farEndPoint: string;
    startPoint: string;
    endPoint: string;
    estimatedTime: number;
}
export interface BusArrivalInfo {
    busStopCode: string;
    services: Array<{
        serviceNo: string;
        operator: string;
        nextBus: {
            estimatedArrival: string;
            load: 'SEA' | 'SDA' | 'LSD';
            feature: string;
            type: 'SD' | 'DD' | 'BD';
            latitude?: string;
            longitude?: string;
        };
        nextBus2?: any;
        nextBus3?: any;
    }>;
}
export interface PassengerVolume {
    originBusStop?: string;
    destinationBusStop?: string;
    originTrainStation?: string;
    destinationTrainStation?: string;
    totalTrips: number;
    timeOfDay: string;
    dayType: 'weekday' | 'weekend';
}
export interface TrafficFlow {
    roadName: string;
    speedBand: number;
    minimumSpeed: number;
    maximumSpeed: number;
    location: {
        latitude: number;
        longitude: number;
    };
}
export interface FacilityMaintenance {
    stationCode: string;
    stationName: string;
    affectedFacilities: string[];
    startDate: string;
    endDate: string;
    description: string;
}
export interface FaultyTrafficLight {
    latitude: number;
    longitude: number;
    message: string;
}
export interface RoadWork {
    eventID: string;
    startDate: string;
    endDate: string;
    serviceDept: string;
    roadName: string;
    other: string;
}
export interface VMSSign {
    equipmentID: string;
    latitude: number;
    longitude: number;
    message: string;
}
export interface TaxiStand {
    taxiCode: string;
    latitude: number;
    longitude: number;
    bfa: string;
    ownership: string;
    type: string;
    name: string;
}
export interface RouteIntelligence {
    trafficConditions: TrafficIncident[];
    estimatedTravelTimes: EstimatedTravelTime[];
    busLoadFactors: Map<string, 'low' | 'medium' | 'high'>;
    facilityDisruptions: FacilityMaintenance[];
    passengerVolumeInsights: PassengerVolume[];
    taxiAvailability: TaxiAvailability[];
    faultyTrafficLights: FaultyTrafficLight[];
    roadWorks: RoadWork[];
    vmsSigns: VMSSign[];
    taxiStands: TaxiStand[];
    routeRecommendations: string[];
}
export declare class LTAEnhancedService extends LTAService {
    private cacheService;
    private readonly CACHE_DURATION;
    constructor(apiKey: string, cacheService: CacheService, requestTimeout?: number);
    /**
     * Make a request to LTA API (protected method access)
     */
    protected makeRequest(endpoint: string, params?: any): Promise<any>;
    /**
     * Get comprehensive route intelligence for journey planning
     */
    getRouteIntelligence(startLat: number, startLng: number, endLat: number, endLng: number, radius?: number): Promise<RouteIntelligence>;
    /**
     * Get traffic incidents in a specific area
     */
    getTrafficIncidentsInArea(startLat: number, startLng: number, endLat: number, endLng: number, radius: number): Promise<TrafficIncident[]>;
    /**
     * Get estimated travel times for expressways
     */
    getEstimatedTravelTimes(): Promise<EstimatedTravelTime[]>;
    /**
     * Get bus arrivals in a specific area
     */
    getBusArrivalsInArea(lat: number, lng: number, radius: number): Promise<BusArrivalInfo[]>;
    /**
     * Get facility maintenance information
     */
    getFacilityMaintenance(): Promise<FacilityMaintenance[]>;
    /**
     * Get passenger volume insights
     */
    getPassengerVolumeInsights(): Promise<PassengerVolume[]>;
    /**
     * Get taxi availability in area
     */
    getTaxiAvailabilityInArea(startLat: number, startLng: number, endLat: number, endLng: number): Promise<TaxiAvailability[]>;
    /**
     * Get faulty traffic lights information
     */
    getFaultyTrafficLights(): Promise<FaultyTrafficLight[]>;
    /**
     * Get road works information
     */
    getRoadWorks(): Promise<RoadWork[]>;
    /**
     * Get VMS (Variable Message Signs) information
     */
    getVMSSigns(): Promise<VMSSign[]>;
    /**
     * Get Taxi Stands information
     */
    getTaxiStands(): Promise<TaxiStand[]>;
    /**
     * Generate intelligent route recommendations
     */
    private generateRouteRecommendations;
    /**
     * Assess incident severity based on message content
     */
    private assessIncidentSeverity;
    /**
     * Extract affected routes from incident message
     */
    private extractAffectedRoutes;
    /**
     * Check if coordinates are within specified area
     */
    private isWithinArea;
    /**
     * Calculate distance between two coordinates
     */
    private calculateDistance;
    /**
     * Generate passenger volume insights based on common patterns
     */
    private generatePassengerVolumeInsights;
}
