export interface RossUltrixState { connected: boolean; panels: Record; inputs: Record; lastUpdate: Date; } export interface PanelStatus { id: string; active: boolean; mixEffect?: string; lastUpdate: Date; } export interface InputStatus { id: string; name: string; live: boolean; preview: boolean; lastUpdate: Date; } export interface RossTalkConfig { host: string; port: number; onStateChange?: (state: Partial) => void; } export interface RossCommand { type: 'take' | 'auto' | 'preview' | 'program' | 'panel' | 'macro' | 'status'; target?: string; parameters?: Record; } export interface RossSource { id: string; name: string; type: 'camera' | 'media' | 'cg' | 'aux' | 'color' | 'test'; available: boolean; } export interface RossPanel { id: string; name: string; active: boolean; mixEffect?: string; type: 'me' | 'aux' | 'dsk'; } export interface RossMacro { id: string; name: string; description?: string; parameters?: Record; } export interface RossTransition { type: 'cut' | 'mix' | 'dip' | 'wipe'; duration?: number; parameters?: Record; } export interface RossMixEffect { id: string; program: string | null; preview: string | null; transition: RossTransition; inTransition: boolean; }