import { EventEmitter } from 'events';
export interface MonitoringConfig {
    version: string;
    theme: string;
    layout: string;
    refreshInterval: number;
    components: ComponentConfig[];
    terminal?: TerminalConfig;
    performance?: PerformanceConfig;
    customThemes: ThemeConfig[];
    customLayouts: LayoutConfig[];
    preferences: UserPreferences;
}
export interface ComponentConfig {
    type: string;
    position: GridPosition;
    size: GridSize;
    config: Record<string, any>;
    visible: boolean;
    priority: number;
}
export interface GridPosition {
    x: number;
    y: number;
    width: number;
    height: number;
}
export interface GridSize {
    minWidth: number;
    minHeight: number;
    maxWidth?: number;
    maxHeight?: number;
}
export interface TerminalConfig {
    minWidth: number;
    minHeight: number;
    colorSupport: boolean;
    mouseSupport: boolean;
    unicodeSupport: boolean;
}
export interface PerformanceConfig {
    maxMemoryUsage: number;
    maxCpuUsage: number;
    renderThrottleMs: number;
    dataBufferSize: number;
}
export interface LayoutConfig {
    id: string;
    name: string;
    description?: string;
    author?: string;
    version?: string;
    isBuiltIn: boolean;
    grid: GridConfig;
    components: ComponentLayout[];
    responsive: boolean;
    minTerminalSize: {
        width: number;
        height: number;
    };
}
export interface GridConfig {
    rows: number;
    cols: number;
    cellWidth: number;
    cellHeight: number;
    padding: number;
}
export interface ComponentLayout {
    type: string;
    position: GridPosition;
    size: GridSize;
    config: Record<string, any>;
}
export interface ComponentState {
    id: string;
    type: string;
    status: 'initializing' | 'running' | 'paused' | 'error' | 'destroyed';
    lastUpdate: Date;
    error?: Error;
    data?: any;
}
export interface MonitoringEvent {
    type: string;
    timestamp: Date;
    source: string;
    data: any;
    priority: 'low' | 'medium' | 'high' | 'critical';
}
export interface StreamMetrics {
    channelId: string;
    bitrate: number;
    fps: number;
    resolution: string;
    viewerCount: number;
    status: 'live' | 'offline' | 'error';
    uptime: number;
    bandwidth: number;
    lastUpdate: Date;
}
export interface ChannelStatus {
    channelId: string;
    name: string;
    status: 'active' | 'inactive' | 'error';
    streamKey: string;
    rtmpUrl: string;
    viewerCount: number;
    lastActivity: Date;
    created: Date;
}
export interface SystemResources {
    cpu: {
        usage: number;
        cores: number;
        temperature?: number;
    };
    memory: {
        used: number;
        total: number;
        available: number;
        percentage: number;
    };
    network: {
        bytesIn: number;
        bytesOut: number;
        packetsIn: number;
        packetsOut: number;
        connections: number;
    };
    disk?: {
        used: number;
        total: number;
        available: number;
        percentage: number;
    };
}
export interface AlertRule {
    id: string;
    name: string;
    condition: string;
    threshold: number;
    operator: '>' | '<' | '=' | '>=' | '<=';
    enabled: boolean;
    cooldown: number;
    actions: AlertAction[];
}
export interface AlertAction {
    type: 'log' | 'notification' | 'email' | 'webhook';
    config: Record<string, any>;
}
export interface ThemeConfig {
    id: string;
    name: string;
    description?: string;
    author?: string;
    version?: string;
    isBuiltIn: boolean;
    colors: ColorScheme;
    fonts: FontConfig;
    borders: BorderConfig;
    components: ComponentStyles;
}
export interface ColorScheme {
    primary: string;
    secondary: string;
    background: string;
    foreground: string;
    accent: string;
    error: string;
    warning: string;
    success: string;
    info: string;
    muted: string;
    highlight: string;
    border: string;
    selection: string;
}
export interface FontConfig {
    family: string;
    size: number;
    weight: 'normal' | 'bold';
    style: 'normal' | 'italic';
}
export interface BorderConfig {
    type: 'line' | 'bg' | 'none';
    style: 'solid' | 'dashed' | 'dotted';
    color?: string;
}
export interface ComponentStyles {
    header: StyleConfig;
    content: StyleConfig;
    status: StyleConfig;
    border: StyleConfig;
    scrollbar: StyleConfig;
    selection: StyleConfig;
}
export interface StyleConfig {
    fg?: string;
    bg?: string;
    bold?: boolean;
    underline?: boolean;
    blink?: boolean;
    inverse?: boolean;
}
export interface UserPreferences {
    autoSave: boolean;
    confirmActions: boolean;
    showHelp: boolean;
    keyboardShortcuts: boolean;
    animationSpeed: 'slow' | 'normal' | 'fast';
    soundEnabled: boolean;
    compactMode: boolean;
    showTimestamps: boolean;
    maxHistoryItems: number;
}
export declare abstract class Component {
    protected widget: any;
    protected config: ComponentConfig;
    protected eventBus: EventEmitter;
    protected state: ComponentState;
    constructor(config: ComponentConfig, eventBus: EventEmitter);
    abstract render(): void;
    abstract update(data: any): void;
    abstract destroy(): void;
    abstract resize(size: GridSize): void;
    protected emit(event: string, data: any): void;
    protected subscribe(event: string, handler: (data: any) => void): void;
    protected unsubscribe(event: string, handler: (data: any) => void): void;
    getState(): ComponentState;
    getWidget(): any;
    private generateId;
}
//# sourceMappingURL=monitoring.d.ts.map