/**
 * 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