// 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 {
    "hasApiKey": boolean;
    "demoMode": boolean;
    "evaluationModel": string;
    "transcribeModel": string;
    "realtimeModel": string;
}

export interface ConfigureRequest {
    "apiKey": string;
    "demoMode": boolean;
    "evaluationModel": string;
    "transcribeModel": string;
    "realtimeModel": string;
}

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

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

export interface OverallReport {
    "score": number;
    "estimatedBand": string;
    "summary": string;
    "strengths": string[] | null;
    "priorities": string[] | null;
}

export interface Question {
    "index": number;
    "category": string;
    "topic": string;
    "text": string;
    "intent": 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;
}
