polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
233 lines • 5.62 kB
TypeScript
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