export interface Member { bioguide_id: string; name: string; first_name?: string; last_name?: string; party?: string; state?: string; chamber?: string; district?: string; photo_url?: string; } export interface BriefSchema { id: number; summary?: string; key_points?: string[]; risks?: string[]; deadlines?: { date: string | null; description: string }[]; topic_tags?: string[]; llm_provider?: string; llm_model?: string; created_at?: string; } export interface TrendScore { score_date: string; newsapi_count: number; gnews_count: number; gtrends_score: number; composite_score: number; } export interface BillAction { id: number; action_date?: string; action_text?: string; action_type?: string; chamber?: string; } export interface NewsArticle { id: number; source?: string; headline?: string; url?: string; published_at?: string; relevance_score?: number; } export interface Bill { bill_id: string; congress_number: number; bill_type: string; bill_number: number; title?: string; short_title?: string; introduced_date?: string; latest_action_date?: string; latest_action_text?: string; status?: string; chamber?: string; congress_url?: string; sponsor?: Member; latest_brief?: BriefSchema; latest_trend?: TrendScore; updated_at?: string; } export interface BillDetail extends Bill { actions: BillAction[]; news_articles: NewsArticle[]; trend_scores: TrendScore[]; briefs: BriefSchema[]; } export interface PaginatedResponse { items: T[]; total: number; page: number; per_page: number; pages: number; } export interface Follow { id: number; follow_type: "bill" | "member" | "topic"; follow_value: string; created_at: string; } export interface DashboardData { feed: Bill[]; trending: Bill[]; follows: { bills: number; members: number; topics: number }; } export interface SettingsData { llm_provider: string; llm_model: string; congress_poll_interval_minutes: number; newsapi_enabled: boolean; pytrends_enabled: boolean; }