import { youtube_v3 } from "googleapis"; export interface HistoricalAnalysisEntry { analyzedAt: Date; subscriberCountAtAnalysis: number; sourceVideoCount: number; metrics: { STANDARD: { outlierVideoCount: number; consistencyPercentage: number; }; STRONG: { outlierVideoCount: number; consistencyPercentage: number; }; }; } export interface LatestAnalysis { analyzedAt: Date; subscriberCountAtAnalysis: number; sourceVideoCount: number; metrics: { STANDARD: { outlierVideoCount: number; consistencyPercentage: number; }; STRONG: { outlierVideoCount: number; consistencyPercentage: number; }; }; } export interface SearchCache { _id?: string; searchParamsHash: string; searchParams: youtube_v3.Params$Resource$Search$List; results: youtube_v3.Schema$SearchResult[]; createdAt: Date; expiresAt: Date; } export interface ChannelCache { _id: string; channelTitle: string; manual_review_notes?: string; createdAt: Date; status: "candidate" | "archived_too_old" | "archived_low_potential" | "archived_low_sample_size" | "analyzed_low_consistency" | "analyzed_promising" | "analyzed_promising_prime_candidate" | "analyzed_promising_monitor" | "archived_unreplicable" | "archived_niche_mismatch" | "archived_too_large" | "archived_too_small"; latestStats: { fetchedAt: Date; subscriberCount: number; videoCount: number; viewCount: number; }; latestAnalysis?: LatestAnalysis; analysisHistory: HistoricalAnalysisEntry[]; } export interface VideoListCache { _id: string; videos: youtube_v3.Schema$Video[]; fetchedAt: Date; }