import { CustomEventConfig } from './lib/monitors/custom-event-monitor';
import { MonitorConfig } from './lib/types';
import { MongoClient } from 'mongodb';
export declare class TrafficMonitor {
    private readonly mqttHandler;
    private readonly eventBatcher;
    private readonly mongoMonitor;
    private readonly customMonitor;
    private readonly config;
    constructor(config: MonitorConfig);
    connect(): Promise<void>;
    wrapMongoClient(mongoClient: MongoClient): MongoClient;
    expressMiddleware(): (req: import("express").Request, res: import("express").Response, next: import("express").NextFunction) => void;
    /**
     * Registriert ein neues Custom Event
     */
    registerCustomEvent(config: CustomEventConfig): void;
    /**
     * Löst ein registriertes Custom Event aus
     */
    triggerCustomEvent(eventName: string, data?: Record<string, unknown>, durationMs?: number): Promise<void>;
    /**
     * Entfernt ein registriertes Custom Event
     */
    unregisterCustomEvent(eventName: string): void;
    /**
     * Gibt alle registrierten Custom Events zurück
     */
    getRegisteredCustomEvents(): CustomEventConfig[];
    disconnect(): Promise<void>;
}
export * from './lib/types';
export { CustomEventConfig } from './lib/monitors/custom-event-monitor';
