UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

233 lines 5.62 kB
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