// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT

// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: Unused imports
import * as time$0 from "../time/models.js";

export interface AnswerEvaluation {
    "score": number;
    "keywords": string[] | null;
    "strengths": string[] | null;
    "improvements": string[] | null;
    "feedback": string;
}

export interface AnswerRecord {
    "question": Question;
    "transcript": string;
    "durationSec": number;
    "evaluation": AnswerEvaluation;
    "answeredAt": time$0.Time;
    "audioPresent": boolean;
}

export interface AppSettings {
    "provider": string;
    "hasApiKey": boolean;
    "hasOpenAIKey": boolean;
    "hasGeminiKey": boolean;
    "demoMode": boolean;
    "evaluationModel": string;
    "transcribeModel": string;
    "realtimeModel": string;
    "speechModel": string;
    "speechVoice": string;
    "geminiEvaluationModels": string[] | null;
    "geminiTranscriptionModels": string[] | null;
    "geminiSpeechModels": string[] | null;
    "geminiSpeechVoice": string;
}

export interface ConfigureRequest {
    "provider": string;
    "apiKey": string;
    "geminiApiKey": string;
    "demoMode": boolean;
    "evaluationModel": string;
    "transcribeModel": string;
    "realtimeModel": string;
    "speechModel": string;
    "speechVoice": string;
    "geminiEvaluationModels": string[] | null;
    "geminiTranscriptionModels": string[] | null;
    "geminiSpeechModels": string[] | null;
    "geminiSpeechVoice": string;
}

export interface ExamConfig {
    "difficulty": string;
    "topics": string[] | null;
    "language": string;
}

export interface ExamReport {
    "sessionId": string;
    "config": ExamConfig;
    "overall": OverallReport;
    "answers": AnswerRecord[] | null;
    "answeredCount": number;
    "totalCount": number;
    "partial": boolean;
    "generatedAt": time$0.Time;
}

export interface GradePrediction {
    "grade": string;
    "probability": number;
    "status": string;
    "description": string;
}

export interface OverallReport {
    "score": number;
    "estimatedBand": string;
    "summary": string;
    "strengths": string[] | null;
    "weaknesses": string[] | null;
    "priorities": string[] | null;
    "targetGrade": string;
    "targetStatus": string;
    "targetProbability": number;
    "gradePredictions": GradePrediction[] | null;
}

export interface Question {
    "index": number;
    "category": string;
    "topic": string;
    "text": string;
    "intent": string;
}

export interface SpeechResponse {
    "audioBase64": string;
    "mimeType": string;
}

export interface StartSessionResponse {
    "sessionId": string;
    "question": Question;
    "totalCount": number;
}

export interface SubmitAnswerRequest {
    "sessionId": string;
    "questionIdx": number;
    "audioBase64": string;
    "audioMime": string;
    "transcript": string;
    "durationSec": number;
}

export interface SubmitAnswerResponse {
    "transcript": string;
    "evaluation": AnswerEvaluation;
    "next"?: Question | null;
    "completed": boolean;
    "progress": number;
}
