// Types concrets de l'épreuve Quiz, partagés client/serveur. // Le payload générique du moteur est `unknown` ; le client le narrow via type === "quiz". // V1 : formats mcq + truefalse (free / image_reveal arrivent avec la DB). import type { QuizFormat } from "./domain" /** Payload diffusé au lancement d'une manche quiz (round:start), SANS la réponse. */ export interface QuizQuestionPayload { format: QuizFormat prompt: string /** Choix proposés (mcq/truefalse). Absent pour `free` (saisie libre). */ choices?: string[] category?: string /** 1 (facile) .. 3 (difficile). */ difficulty?: number } /** Vérité révélée à tous (round:reveal → truth). */ export interface QuizRevealTruth { /** Index de la bonne réponse (mcq/truefalse). */ correctIndex?: number /** Réponse canonique affichée (free). */ answer?: string } /** Résultat d'un joueur sur la manche. */ export interface QuizPlayerResult { choiceIndex: number | null correct: boolean } /** round:reveal → perPlayerResult : playerId → résultat. */ export type QuizPerPlayerResult = Record