export interface IRokuConfig {
  host?: string;
  port?: number;
  deviceInfo?: IRokuDeviceInfo;
  apps?: IRokuApp[];
  activeApp?: IRokuApp;
  playMediaAppId?: string;
}

export interface IRokuDeviceInfo {
  serialNumber?: string;
  deviceId?: string;
  vendorName?: string;
  modelName?: string;
  modelNumber?: string;
  friendlyDeviceName?: string;
  userDeviceName?: string;
  deviceType?: string;
  softwareVersion?: string;
  powerMode?: string;
  supportsSuspend?: boolean;
}

export interface IRokuApp {
  id: string;
  name: string;
  type?: string;
  version?: string;
}

export interface IRokuSnapshot {
  deviceInfo: IRokuDeviceInfo;
  apps: IRokuApp[];
  activeApp?: IRokuApp;
}

export interface IRokuSsdpRecord {
  st?: string;
  usn?: string;
  location?: string;
  headers?: Record<string, string | undefined>;
}

export interface IRokuManualEntry {
  host?: string;
  port?: number;
  id?: string;
  name?: string;
  model?: string;
  metadata?: Record<string, unknown>;
}

export type TRokuKeypress =
  | 'Home'
  | 'Rev'
  | 'Fwd'
  | 'Play'
  | 'Select'
  | 'Left'
  | 'Right'
  | 'Down'
  | 'Up'
  | 'Back'
  | 'InstantReplay'
  | 'Info'
  | 'Backspace'
  | 'Search'
  | 'Enter'
  | 'PowerOn'
  | 'PowerOff'
  | 'Power'
  | 'VolumeUp'
  | 'VolumeDown'
  | 'VolumeMute';
