/** * GameDataHandler - Data Sanitizer & Scorer * * Game Codes: * - G001: Quiz text-text * - G002: Quiz audio-text (audio question, text answer) * - G003: Quiz text-audio (text question, audio answer) * - G004: Quiz image-text (image question, text answer) * - G005: Quiz text-image (text question, image answer) * * - G110: Sequence Word - no audio * - G111: Sequence Word - có audio, missing_letter_count từ item * - G112: Sequence Word - có audio, missing_letter_count từ item * - G113: Sequence Word - có audio, missing_letter_count từ item * * - G120: Sequence Sentence - no audio * - G121: Sequence Sentence - có audio, missing_letter_count từ item * - G122: Sequence Sentence - có audio, missing_letter_count từ item * - G123: Sequence Sentence - có audio, missing_letter_count từ item */ export type GameCode = 'G001' | 'G002' | 'G003' | 'G004' | 'G005' | 'G110' | 'G111' | 'G112' | 'G113' | 'G120' | 'G121' | 'G122' | 'G123'; export declare const GAME_CODES: { readonly G001: { readonly name: "Quiz Text-Text"; readonly category: "quiz"; readonly hasAudio: false; readonly hasImage: false; }; readonly G002: { readonly name: "Quiz Audio-Text"; readonly category: "quiz"; readonly hasAudio: true; readonly hasImage: false; }; readonly G003: { readonly name: "Quiz Text-Audio"; readonly category: "quiz"; readonly hasAudio: true; readonly hasImage: false; }; readonly G004: { readonly name: "Quiz Image-Text"; readonly category: "quiz"; readonly hasAudio: false; readonly hasImage: true; }; readonly G005: { readonly name: "Quiz Text-Image"; readonly category: "quiz"; readonly hasAudio: false; readonly hasImage: true; }; readonly G110: { readonly name: "Sequence Word"; readonly category: "sequence_word"; readonly hasAudio: false; }; readonly G111: { readonly name: "Sequence Word Audio"; readonly category: "sequence_word"; readonly hasAudio: true; }; readonly G112: { readonly name: "Sequence Word Audio"; readonly category: "sequence_word"; readonly hasAudio: true; }; readonly G113: { readonly name: "Sequence Word Audio"; readonly category: "sequence_word"; readonly hasAudio: true; }; readonly G120: { readonly name: "Sequence Sentence"; readonly category: "sequence_sentence"; readonly hasAudio: false; }; readonly G121: { readonly name: "Sequence Sentence Audio"; readonly category: "sequence_sentence"; readonly hasAudio: true; }; readonly G122: { readonly name: "Sequence Sentence Audio"; readonly category: "sequence_sentence"; readonly hasAudio: true; }; readonly G123: { readonly name: "Sequence Sentence Audio"; readonly category: "sequence_sentence"; readonly hasAudio: true; }; }; export declare function getGameCategory(code: GameCode): string; /** * Sanitize game data before sending to iframe * CRITICAL: Never send answers/correct data to client */ export declare function sanitizeForClient(code: GameCode, items: any[]): any[]; export interface AnswerCheckResult { isCorrect: boolean; score: number; feedback?: string; } /** * Check if player's answer is correct * * @param code - Game code (G001, G110, etc.) * @param originalItem - Original item from server (has answer field!) * @param playerAnswer - Player's answer (text for quiz, array for sequence) */ export declare function checkAnswer(code: GameCode, originalItem: any, playerAnswer: any): AnswerCheckResult; //# sourceMappingURL=GameDataHandler.d.ts.map