export type User = { id: string; email: string; name: string | null; image: string | null; }; export type WatchlistItem = { id: number; user_id: string; ticker: string; company_name: string; sector: string | null; created_at: string; }; export type Holding = { id: number; user_id: string; ticker: string; shares: string; avg_cost: string; current_price: string | null; market_value: string; gain_loss: string; gain_loss_pct: string; last_price_at: string | null; created_at: string; updated_at: string; }; export type PortfolioSummary = { positions: number; total_value: string; total_gain_loss: string; total_cost_basis: string; avg_return_pct: string; }; export type Filing = { id: number; ticker: string; filing_type: '10-K' | '10-Q' | '8-K'; filing_date: string; accession_number: string; cik: string; company_name: string; filing_url: string | null; metrics: { revenue: number | null; netIncome: number | null; totalAssets: number | null; cash: number | null; debt: number | null; } | null; analysis: { provider?: string; model?: string; text?: string; legacyInsights?: string; } | null; created_at: string; updated_at: string; }; export type TaskStatus = 'queued' | 'running' | 'completed' | 'failed'; export type TaskType = 'sync_filings' | 'refresh_prices' | 'analyze_filing' | 'portfolio_insights'; export type Task = { id: string; user_id: string; task_type: TaskType; status: TaskStatus; priority: number; payload: Record; result: Record | null; error: string | null; attempts: number; max_attempts: number; created_at: string; updated_at: string; finished_at: string | null; }; export type PortfolioInsight = { id: number; user_id: string; provider: string; model: string; content: string; created_at: string; };