export interface LLMGenerateRequest { prompt: string; siteId: string; provider: string; apiKey?: string; baseUrl?: string; model?: string; references?: Reference[]; } export interface LLMRefineRequest { prompt: string; siteId: string; provider: string; currentStructure: SiteStructure; apiKey?: string; baseUrl?: string; model?: string; references?: Reference[]; } export interface Reference { type: 'URL' | 'IMAGE'; url: string; altText: string; } export interface SiteStructure { theme: ThemeConfig; pages: PageStructure[]; } export interface ThemeConfig { colors: Record; fonts: Record; spacing: Record; } export interface PageStructure { id?: string; title: string; slug: string; seoTitle?: string; seoDescription?: string; orderIndex: number; rawHtml?: string; } export interface TokenUsage { prompt: number; completion: number; total: number; } export interface LLMSession { id?: string; siteId: string; prompt: string; generatedStructure: SiteStructure | null; refinedPrompt: string | null; acceptedAt: string | null; createdAt: string; } export interface GenerationVersion { id: string; siteId: string; userId: string; versionNumber: number; prompt: string; references: Reference[]; fullStructure: string; createdAt: string; } export interface PatternSuggestion { title: string; description: string; } export interface SectionSuggestion { title: string; description: string; slug: string; patterns: PatternSuggestion[]; } export interface SuggestSectionsRequest { briefDescription: string; provider: string; apiKey?: string; baseUrl?: string; model?: string; } export interface SuggestSectionsResponse { sections: SectionSuggestion[]; } export interface SelectedSection { title: string; description: string; slug: string; selected: boolean; customNotes: string; selectedPattern: string | null; customPatternDesc: string; } export interface LLMKeyEntry { configured: boolean; baseUrl?: string; model?: string; } export type LLMKeyStatus = Record;