import { EventEmitter } from 'events';
import { BaseComponent } from './base.component';
import { ComponentConfig, StreamMetrics } from '../types/monitoring';
export interface StreamMetricsPanelConfig extends ComponentConfig {
    refreshInterval: number;
    maxDataPoints: number;
    channels: string[];
    alertThresholds: {
        bitrate: {
            min: number;
            max: number;
        };
        fps: {
            min: number;
            max: number;
        };
        viewerCount: {
            max: number;
        };
    };
    chartStyle: {
        lineColors: string[];
        backgroundColor: string;
        foregroundColor: string;
    };
}
export interface MetricsDataPoint {
    timestamp: Date;
    bitrate: number;
    fps: number;
    viewerCount: number;
    bandwidth: number;
    channelId: string;
}
export interface ChannelMetricsData {
    channelId: string;
    channelName?: string;
    isActive: boolean;
    dataPoints: MetricsDataPoint[];
    alerts: AlertInfo[];
    lastUpdate: Date;
}
export interface AlertInfo {
    type: 'bitrate' | 'fps' | 'viewerCount';
    level: 'warning' | 'error';
    message: string;
    timestamp: Date;
    value: number;
    threshold: number;
}
export declare class StreamMetricsPanel extends BaseComponent {
    private lineChart;
    private channelsData;
    private currentChannelId;
    private container;
    private headerBox;
    private noDataBox;
    private alertBox;
    private lastUpdateTime;
    private alertCooldowns;
    constructor(config: StreamMetricsPanelConfig, eventBus: EventEmitter);
    protected createWidget(): void;
    private setupKeyBindings;
    render(): void;
    update(data: StreamMetrics | StreamMetrics[] | {
        channels: StreamMetrics[];
    }): void;
    private processChannelMetrics;
    private checkAlerts;
    private updateHeader;
    private updateAlertDisplay;
    private updateChart;
    private switchToNextChannel;
    private switchToPreviousChannel;
    private clearAlerts;
    private emitAlert;
    private emitChannelSwitch;
    private getNoChannelMessage;
    private getNoDataMessage;
    private getConfig;
    getCurrentChannelData(): ChannelMetricsData | null;
    getAllChannelsData(): Map<string, ChannelMetricsData>;
    setCurrentChannel(channelId: string): void;
    destroy(): void;
}
//# sourceMappingURL=stream-metrics.panel.d.ts.map