import type { GolfScorecard, ShotRecord, ShotResult, HoleStats, ConditionRecord, SpecialPlay, TrainingSession, NutritionEntry, NineteenthHole, SprintType, AgentBreakdown, ClubSelection, HazardHit } from './types.js'; /** Runtime-friendly shot input accepted by buildScorecard, including MCP/JS aliases. */ export interface ScorecardShotInput { ticket_key?: string; /** Backward-compatible alias used by early MCP examples. */ ticket?: string; title?: string; club: ClubSelection; result: ShotResult; hazards?: Array; provisional_declared?: boolean; notes?: string; } /** * Compute HoleStats from a shots array. * Derives fairways_hit, GIR, hazards_hit, and miss_directions * entirely from shot data — no manual counting needed. * * - fairways_total = shots.length (every ticket is a fairway opportunity) * - fairways_hit = shots where result is fairway, green, or in_the_hole * - greens_total = shots.length * - greens_in_regulation = shots where result is green or in_the_hole * - hazards_hit = total hazards across all shots * - miss_directions = count of each missed_* result direction * - putts and penalties default to 0 (must be provided separately if needed) */ export declare function computeStatsFromShots(shots: ShotRecord[], overrides?: { putts?: number; penalties?: number; }): HoleStats; /** * Normalize any stats shape to a proper HoleStats object. * Handles the simplified format ({ fairway: true, putts: 0 }) used by * some scorecards, falling back to safe defaults for missing fields. */ export declare function normalizeStats(raw: unknown, shotCount?: number): HoleStats; /** Minimal input for building a scorecard — everything else is computed */ export interface ScorecardInput { sprint_number: number; theme: string; par: 3 | 4 | 5; slope: number; date: string; shots: ScorecardShotInput[]; player?: string; putts?: number; penalties?: number; /** Optional judged final score. Defaults to par plus recorded misses/penalties. */ score?: number; type?: SprintType; conditions?: ConditionRecord[]; special_plays?: SpecialPlay[]; training?: TrainingSession[]; nutrition?: NutritionEntry[]; nineteenth_hole?: NineteenthHole; bunker_locations?: string[]; yardage_book_updates?: string[]; course_management_notes?: string[]; skills_used?: string[]; skills_created?: string[]; skills_recommended?: string[]; skills_skipped?: string[]; skill_gaps_found?: string[]; agents?: AgentBreakdown[]; inspired_by?: string[]; } /** * Build a complete GolfScorecard from minimal input. * * Auto-computes: * - stats (from shots array via computeStatsFromShots) * - score (shots.length + penalties) * - score_label (from computeScoreLabel) * * You only need to provide the parts requiring judgment: * shot results, hazard descriptions, training, nutrition, reflection. */ export declare function buildScorecard(input: ScorecardInput): GolfScorecard; /** Input for building per-agent breakdowns from swarm session data */ export interface AgentShotInput { session_id: string; agent_role: string; shots: ShotRecord[]; } /** * Build AgentBreakdown entries from per-agent shot data. * Each agent's score and stats are computed independently. */ export declare function buildAgentBreakdowns(agents: AgentShotInput[]): AgentBreakdown[]; //# sourceMappingURL=builder.d.ts.map