export type RainWireFeedFilter = 'all' | 'news' | 'social';

export interface RainWireHeadline {
  id: string;
  title: string;
  url: string;
  source: string;
  source_display: string;
  sport: string;
  description: string;
  is_featured: boolean;
  is_breaking: boolean;
  trending_score: number;
  engagement: number;
  published_at: string;
  type: 'external' | 'blog';
  slug: string | null;
  image_url?: string;
  custom_headline?: string;
  custom_summary?: string;
  engagement_score?: number;
  celebrity_names?: string[];
  is_curated?: boolean;
}

export interface RainWirePagination {
  page: number;
  pages: number;
  total: number;
}

export interface RainWireSportSummary {
  sport: string;
  count: number;
}

export interface RainWireNewsSeed {
  filter: Exclude<RainWireFeedFilter, 'social'>;
  sport: string;
  page: number;
  headlines: RainWireHeadline[];
  trending: RainWireHeadline[];
  curated: RainWireHeadline[];
  sports: RainWireSportSummary[];
  pagination: RainWirePagination;
}

export function createEmptyRainWireNewsSeed(options: {
  filter?: Exclude<RainWireFeedFilter, 'social'>;
  sport?: string;
  page?: number;
} = {}): RainWireNewsSeed {
  const page = options.page ?? 1;

  return {
    filter: options.filter ?? 'news',
    sport: options.sport ?? '',
    page,
    headlines: [],
    trending: [],
    curated: [],
    sports: [],
    pagination: {
      page,
      pages: 1,
      total: 0,
    },
  };
}
