import type { GolfScorecard, HandicapCard, DispersionReport, AreaReport, NutritionCategory } from './types.js'; import type { MetaphorDefinition } from './metaphor.js'; export interface ReportData { generatedAt: string; sprintCount: number; scorecards: GolfScorecard[]; handicapCard: HandicapCard; dispersion: DispersionReport; areaPerformance: AreaReport; nutritionTrends: NutritionTrendEntry[]; sprintTrend: SprintTrendEntry[]; } export interface SprintTrendEntry { sprintNumber: number; theme: string; par: number; score: number; differential: number; fairwayPct: number; girPct: number; } export interface NutritionTrendEntry { category: NutritionCategory; healthy: number; needsAttention: number; neglected: number; total: number; } export declare function buildReportData(scorecards: GolfScorecard[]): ReportData; export declare function svgLine(data: { x: number; y: number; }[], width: number, height: number, color: string, strokeWidth?: number): string; export declare function svgRect(x: number, y: number, w: number, h: number, fill: string, rx?: number): string; export declare function svgText(x: number, y: number, text: string, opts?: { anchor?: string; size?: number; fill?: string; weight?: string; }): string; export declare function renderHandicapTrendChart(trend: SprintTrendEntry[], metaphor?: MetaphorDefinition): string; export declare function renderDispersionChart(dispersion: DispersionReport, metaphor?: MetaphorDefinition): string; export declare function renderAreaPerformanceChart(area: AreaReport, metaphor?: MetaphorDefinition): string; export declare function renderNutritionChart(trends: NutritionTrendEntry[], metaphor?: MetaphorDefinition): string; export declare function renderSummaryCards(data: ReportData, metaphor?: MetaphorDefinition): string; export declare function renderSprintTable(trend: SprintTrendEntry[], metaphor?: MetaphorDefinition): string; export declare const REPORT_CSS = "\n * { box-sizing: border-box; margin: 0; padding: 0; }\n body { font-family: system-ui, -apple-system, sans-serif; background: #f8fafc; color: #1e293b; padding: 24px; max-width: 960px; margin: 0 auto; }\n h1 { font-size: 24px; margin-bottom: 4px; }\n h2 { font-size: 18px; color: #475569; margin: 32px 0 16px; border-bottom: 2px solid #e2e8f0; padding-bottom: 8px; }\n h3 { font-size: 15px; color: #334155; margin-bottom: 12px; }\n .subtitle { color: #64748b; font-size: 13px; margin-bottom: 24px; }\n .summary-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 32px; }\n .card { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px; }\n .card-label { font-size: 12px; color: #64748b; text-transform: uppercase; letter-spacing: 0.05em; }\n .card-value { font-size: 28px; font-weight: 700; margin: 4px 0; }\n .card-sub { font-size: 12px; color: #94a3b8; }\n .chart-container { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 20px; margin-bottom: 20px; }\n .chart-container svg { display: block; margin: 0 auto; }\n .dispersion-layout { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; justify-content: center; }\n .dispersion-stats { display: flex; flex-direction: column; gap: 12px; }\n .stat { display: flex; flex-direction: column; }\n .stat-label { font-size: 11px; color: #64748b; text-transform: uppercase; }\n .stat-value { font-size: 20px; font-weight: 600; }\n .stat-value.warn { color: #ef4444; }\n .legend { display: flex; gap: 16px; margin-top: 8px; font-size: 12px; color: #64748b; }\n .legend-item { display: flex; align-items: center; gap: 4px; }\n .dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }\n .dot.green { background: #22c55e; }\n .dot.red { background: #ef4444; }\n .dot.amber { background: #f59e0b; }\n table { width: 100%; border-collapse: collapse; font-size: 13px; }\n th { text-align: left; padding: 8px; border-bottom: 2px solid #e2e8f0; font-weight: 600; color: #475569; }\n td { padding: 8px; border-bottom: 1px solid #f1f5f9; }\n tr:hover td { background: #f8fafc; }\n .over { color: #ef4444; font-weight: 600; }\n .under { color: #22c55e; font-weight: 600; }\n .even { color: #64748b; font-weight: 600; }\n .footer { margin-top: 40px; padding-top: 16px; border-top: 1px solid #e2e8f0; font-size: 11px; color: #94a3b8; text-align: center; }\n"; export declare function generateHtmlReport(data: ReportData, metaphor?: MetaphorDefinition): string; export declare function escapeHtml(s: string): string; //# sourceMappingURL=report.d.ts.map