export interface BentoCardData { id: string; title: string; summary: string; type: 'stat' | 'concept' | 'quote' | 'insight' | 'process'; colSpan: number; // 1 to 4 rowSpan: number; // 1 to 2 detailPrompt: string; // The prompt to send to Gemini to get more details mermaid?: string; // Mermaid JS diagram definition expandedContent?: string; isLoadingDetails?: boolean; rating?: number; feedback?: string; } export interface ChatMessage { id: string; role: 'user' | 'model' | 'system'; text: string; timestamp: number; } export type ModelType = 'gemini-flash-latest' | 'gemini-3-pro-preview'; export interface AppSettings { apiKey: string; model: ModelType; theme: 'light' | 'dark'; layoutMode: 'auto' | 'grid' | 'list'; useThinking: boolean; } export interface ProcessingStatus { state: 'idle' | 'reading' | 'analyzing' | 'generating' | 'complete' | 'error'; message?: string; } // Blog View Types export interface BlogSection { id: string; title: string; content: string; // Markdown visualizationType?: 'mermaid' | 'chart' | 'equation' | 'none'; visualizationData?: string; chartData?: ChartData; marginNotes?: MarginNote[]; technicalTerms?: TechnicalTerm[]; collapsibleSections?: CollapsibleContent[]; isLoading?: boolean; error?: string; } // Structure plan from paper analysis export interface SectionPlan { id: string; title: string; sectionType: 'intro' | 'background' | 'methodology' | 'results' | 'analysis' | 'applications' | 'conclusion' | 'custom'; focusPoints: string[]; // Key points to cover suggestedVisualization: 'mermaid' | 'chart' | 'equation' | 'none'; visualizationHint?: string; // What to visualize estimatedLength: 'short' | 'medium' | 'long'; } export interface PaperStructure { paperTitle: string; paperAbstract: string; mainContribution: string; sections: SectionPlan[]; keyTerms: string[]; // Important terms across the paper } export interface MarginNote { id: string; text: string; icon?: 'info' | 'warning' | 'tip' | 'note'; } export interface TechnicalTerm { term: string; definition: string; } export interface CollapsibleContent { id: string; title: string; content: string; } // Chart Types export interface ChartData { type: 'bar' | 'line' | 'pie' | 'scatter' | 'area'; title: string; data: Array<{ label: string; value: number; [key: string]: any }>; xAxis?: string; yAxis?: string; colors?: string[]; } export type ViewMode = 'grid' | 'blog';