/** GET /api/daily response */
export interface DailyResponse {
  wordId: number;
}

/** POST /api/guess request */
export interface GuessRequest {
  wordId: number;
  guess: string;
  tryNo: number;
}

/** POST /api/guess response */
export interface GuessResponse {
  /** Whether the guess is a valid word in the word bank */
  valid: boolean;
  /** 5-element array of single-char codes: 'g'=green, 'y'=yellow, 'x'=gray. Only present when valid=true. */
  colors?: string[];
  /** Whether the guess is fully correct (all 'g'). Only present when valid=true. */
  correct?: boolean;
  /** The correct word, revealed only on loss (tryNo=6, correct=false). */
  word?: string;
  /** Word difficulty score, included on final guess response (win or loss). */
  difficulty?: number;
  /** Solver replays, included on final guess response. */
  replays?: import('./word-bank.js').SolverReplay[];
}

/** POST /api/play-again request */
export interface PlayAgainRequest {
  skillMetric: number;
}

/** POST /api/play-again response */
export interface PlayAgainResponse {
  wordId: number;
}

/** GET /api/validate/:word response */
export interface ValidateResponse {
  word: string;
  valid: boolean;
}

/** Standard API error shape */
export interface ApiError {
  error: string;
}
