export interface Citation { index: number; title: string; source_url: string; full_citation: string; } export interface PlotlySpec { data: object[]; layout: Record; } export interface QueryResponse { id: string; query: string; answer: string; citations: Citation[]; chart_data: PlotlySpec | null; model_provider: string; agent_steps: number; created_at: string; } export interface QueryHistoryItem { id: string; query_text: string; response_text: string | null; model_provider: string | null; agent_steps: number | null; created_at: string; } export interface User { id: string; email: string; display_name: string | null; is_active: boolean; created_at: string; } export interface QueryRequest { query: string; include_visualization?: boolean; } export interface VizPollResponse { status: "pending" | "complete" | "error"; chart_data: PlotlySpec | null; error?: string | null; } export interface VizState { loading: boolean; chartData: PlotlySpec | null; error: string | null; } export interface EvalScores { relevance_score: number | null; groundedness_score: number | null; answer_relevance_score: number | null; } export interface EvalPollResponse { status: "pending" | "complete"; scores: EvalScores | null; } export interface EvalState { loading: boolean; scores: EvalScores | null; } export interface AppSettings { model_provider: string; openai_api_key: string; openai_model: string; azure_openai_api_key: string; azure_openai_endpoint: string; azure_openai_deployment: string; azure_openai_api_version: string; google_api_key: string; gemini_model: string; trulens_provider: string; trulens_strategy: string; trulens_sample_rate: number; trulens_feedback_timeout: number; viz_model_provider: string; viz_model_name: string; viz_azure_deployment: string; viz_azure_api_version: string; } export type AppSettingsUpdate = Partial;