export interface Episode {
  episode_id: string;
  video_id?: string;
  episode_number: number;
  can_use_free_coin?: number;
  title: string;
  description: string;
  likeCount: number;
  saveCount: number;
  thumbnail?: string;
  early_access_datetime?: string;
  thumbnail_high_9x16?: string;
  thumbnail_high_3x4?: string;
  is_locked: boolean;
  watch_duration: number;
  is_liked: boolean;
  is_saved: boolean;
  tags?: string[];
  is_auto_unlockable?: boolean;
  thumbnail_high_1x1?: string;
  coin_price?: number;
  early_access_coins?: number;
  initial_status?: string;
  series_id?: string;
  series?: {
    tags: string[];
    thumbnail_high_9x16?: string;
    thumbnail_high_1x1?: string;
    thumbnail?: string;
    thumbnail_high_16x9?: string;
    initial_status?: string;
    description?: string;
    cast_members?: string[];
    averageRating?: string;
    title?: string;
    series_id?: string;
  };
  duration?: string;
  video?: string;
  video_file?: string;
  placements?: Placement[];
}

export interface Placement {
  request_id: string;
  product_name: string;
  brand_name: string;
  product_thumbnail: string;
  product_url: string;
  redirect_url: string;
  placement_timestamp: number;
  duration_seconds: number;
  actual_fee: string;
}

export interface EpisodesDetailsProps {
  selectedContent?: Episode;
  selectedVideo?: Episode;
  onSelectEpisode: (episode: Episode) => void;
  episodeList: Episode[];
  onLikeToggle: (episodeId: string, currentLikeStatus: boolean) => void;
  onSaveToggle: (episodeId: string, currentSaveStatus: boolean) => void;
  isLiking?: boolean;
  isSaving?: boolean;
  seriesId?: string;
}

export interface playerProps {
  videoUrl?: string;
  mediaKey?: string;
}

export interface UnlockModalProps {
  isOpen: boolean;
  onClose: () => void;
  onWatchAd: () => void;
  onBecomeVip: () => void;
  selectedEpisode?: Episode;
  selectedVideo?: Episode;
  onUnLockEpisodes?: () => void;
}

export interface unlockEpisodeModalProps {
  isOpen: boolean;
  onClose: () => void;
  selectedEpisode?: Episode;
  selectedVideo?: Episode;
}

export interface UnlockModalProps {
  isOpen: boolean;
  onClose: () => void;
  onWatchAd: () => void;
  onBecomeVip: () => void;
  content?: Episode;
}

export interface UnlockEpisodeModalProps {
  isOpen: boolean;
  onClose: () => void;
  content?: Episode;
  mode: "early_access" | "not_released" | null;
  onClick?: () => void;
}
