import { EventEmitter } from 'events';
import type { SessionBlock, Settings } from '../types/index.js';
import type { MonitoringData } from '../types/monitoring.js';
export interface OrchestratorEvents {
    'data-update': (data: MonitoringData) => void;
    'session-change': (event: 'started' | 'ended', sessionId: string, session?: SessionBlock) => void;
    'error': (error: Error) => void;
    'warning': (message: string) => void;
    'info': (message: string) => void;
}
export declare class MonitoringOrchestrator extends EventEmitter {
    private updateInterval;
    private dataReader;
    private sessionAnalyzer;
    private settings;
    private monitoring;
    private updateTimer;
    private lastValidData;
    private currentSessionId;
    private sessionCount;
    private dataCache;
    private cacheTTL;
    constructor(options?: {
        updateInterval?: number;
        dataPath?: string;
        cacheTTL?: number;
    });
    setSettings(settings: Settings): void;
    start(): void;
    stop(): void;
    forceRefresh(): Promise<MonitoringData | null>;
    getLastData(): MonitoringData | null;
    waitForInitialData(timeout?: number): Promise<boolean>;
    private scheduleNextUpdate;
    private fetchAndProcessData;
    private processBlocks;
    private checkSessionChanges;
    private calculateTokenLimit;
    emit<K extends keyof OrchestratorEvents>(event: K, ...args: Parameters<OrchestratorEvents[K]>): boolean;
    on<K extends keyof OrchestratorEvents>(event: K, listener: OrchestratorEvents[K]): this;
    once<K extends keyof OrchestratorEvents>(event: K, listener: OrchestratorEvents[K]): this;
    off<K extends keyof OrchestratorEvents>(event: K, listener: OrchestratorEvents[K]): this;
}
//# sourceMappingURL=orchestrator.d.ts.map