/**
 * Chromecast player configuration and constants
 */

export const CHROMECAST_CONSTANTS = {
  // Timing
  PROGRESS_REPORT_INTERVAL: 10, // seconds
  CONTROLS_TIMEOUT: 5000, // ms
  BUFFERING_THRESHOLD: 10, // seconds of buffer before hiding indicator
  NEXT_EPISODE_COUNTDOWN_START: 30, // seconds before end
  CONNECTION_CHECK_INTERVAL: 5000, // ms

  // UI
  POSTER_WIDTH: 300,
  POSTER_HEIGHT: 450,
  MINI_PLAYER_HEIGHT: 80,
  SKIP_FORWARD_TIME: 15, // seconds (overridden by settings)
  SKIP_BACKWARD_TIME: 15, // seconds (overridden by settings)

  // Animation
  ANIMATION_DURATION: 300, // ms
  BLUR_RADIUS: 10,
} as const;

export const CONNECTION_QUALITY = {
  EXCELLENT: { min: 50, label: "Excellent", icon: "signal" },
  GOOD: { min: 30, label: "Good", icon: "signal" },
  FAIR: { min: 15, label: "Fair", icon: "signal" },
  POOR: { min: 0, label: "Poor", icon: "signal" },
} as const;

export type ConnectionQuality = keyof typeof CONNECTION_QUALITY;

export interface ChromecastPlayerState {
  isConnected: boolean;
  deviceName: string | null;
  isPlaying: boolean;
  isPaused: boolean;
  isStopped: boolean;
  isBuffering: boolean;
  progress: number; // milliseconds
  duration: number; // milliseconds
  volume: number; // 0-1
  isMuted: boolean;
  currentItemId: string | null;
  connectionQuality: ConnectionQuality;
}

export interface ChromecastSegmentData {
  intro: { start: number; end: number } | null;
  credits: { start: number; end: number } | null;
  recap: { start: number; end: number } | null;
  commercial: { start: number; end: number }[];
  preview: { start: number; end: number }[];
}

export const DEFAULT_CHROMECAST_STATE: ChromecastPlayerState = {
  isConnected: false,
  deviceName: null,
  isPlaying: false,
  isPaused: false,
  isStopped: true,
  isBuffering: false,
  progress: 0,
  duration: 0,
  volume: 1,
  isMuted: false,
  currentItemId: null,
  connectionQuality: "EXCELLENT",
};
