import { CuiNullable } from '@cuby-ui/cdk'; import type { QuestionType } from './instruction-assessment-config'; export interface InstructionAssessmentQuizResponseDto { readonly id: string; readonly sessionId: string; readonly order: number; readonly questionText: string; readonly weight: number; readonly context: InstructionAssessmentQuizContextDto; } export type InstructionAssessmentQuizContextDto = InstructionAssessmentQuizSingleChoiceContextDto | InstructionAssessmentQuizMultipleChoiceContextDto | InstructionAssessmentQuizTrueFalseContextDto; export interface InstructionAssessmentQuizSingleChoiceContextDto { readonly questionType: QuestionType.SingleChoice; readonly options: InstructionAssessmentQuizOptionDto[]; readonly correctOptionId: string; } export interface InstructionAssessmentQuizMultipleChoiceContextDto { readonly questionType: QuestionType.MultipleChoice; readonly options: InstructionAssessmentQuizOptionDto[]; readonly correctOptionIds: string[]; } export interface InstructionAssessmentQuizTrueFalseContextDto { readonly questionType: QuestionType.TrueFalse; readonly correctAnswer: boolean; } export interface InstructionAssessmentQuizOptionDto { readonly id: string; readonly text: string; } export interface InstructionAssessmentQuizAnswerBody { readonly sessionId: string; readonly questionId: string; readonly answerContext: InstructionAssessmentQuizAnswerContextBody; } export type InstructionAssessmentQuizAnswerContextBody = InstructionAssessmentQuizSingleChoiceAnswerContextBody | InstructionAssessmentQuizMultipleChoiceAnswerContextBody | InstructionAssessmentQuizTrueFalseAnswerContextBody; export interface InstructionAssessmentQuizSingleChoiceAnswerContextBody { readonly questionType: QuestionType.SingleChoice; readonly selectedOptionId: string; } export interface InstructionAssessmentQuizMultipleChoiceAnswerContextBody { readonly questionType: QuestionType.MultipleChoice; readonly selectedOptionIds: string[]; } export interface InstructionAssessmentQuizTrueFalseAnswerContextBody { readonly questionType: QuestionType.TrueFalse; readonly selectedAnswer: boolean; } export interface InstructionAssessmentQuizAnswerResponseDto { readonly id: string; readonly sessionId: string; readonly questionId: string; readonly context: InstructionAssessmentQuizAnswerResponseContextDto; readonly score: number; } export interface InstructionAssessmentQuizQuestionsWithAnswersResponseDto { readonly question: InstructionAssessmentQuizResponseDto; readonly answer: CuiNullable; } export type InstructionAssessmentQuizAnswerResponseContextDto = InstructionAssessmentQuizSingleChoiceAnswerResponseContextDto | InstructionAssessmentQuizMultipleChoiceAnswerResponseContextDto | InstructionAssessmentQuizTrueFalseAnswerResponseContextDto; export interface InstructionAssessmentQuizSingleChoiceAnswerResponseContextDto { readonly selectedOptionId: string | null; readonly correct: boolean; } export interface InstructionAssessmentQuizMultipleChoiceAnswerResponseContextDto { readonly selectedOptionIds: string[]; readonly correct: boolean; } export interface InstructionAssessmentQuizTrueFalseAnswerResponseContextDto { readonly selectedAnswer: boolean; readonly correct: boolean; }