/** * Shared types for MCP server utilities */ export interface User { /** * Stable database identifier for the user. */ id: string; /** * Firebase authentication UID when the request is authenticated. */ uid?: string; email: string; name: string; picture?: string; isAuthenticated: boolean; } export type AuthenticatedUser = User & { uid: string; isAuthenticated: true }; export interface RateLimit { requests: number; windowMs: number; /** UID or subject identifier used when applying rate limits */ userId?: string; } export interface RateLimitConfig { anonymous: RateLimit; authenticated: RateLimit; vip?: RateLimit; admin?: RateLimit; } export interface MultiWindowRateLimit { hourly?: RateLimit; daily?: RateLimit; } export interface LLMResponse { response: string; tokens?: number; cost?: number; model: string; error?: boolean; metadata?: Record; sources?: CitationSource[]; } export interface CitationSource { title: string; url: string; snippet?: string; }