@telebort/question-banks 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,351 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * A single user response to a question
5
+ */
6
+ declare const UserResponseSchema: z.ZodObject<{
7
+ questionId: z.ZodString;
8
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
9
+ timeSpent: z.ZodOptional<z.ZodNumber>;
10
+ submittedAt: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ questionId: string;
13
+ selectedAnswer: "A" | "B" | "C" | "D";
14
+ timeSpent?: number | undefined;
15
+ submittedAt?: string | undefined;
16
+ }, {
17
+ questionId: string;
18
+ selectedAnswer: "A" | "B" | "C" | "D";
19
+ timeSpent?: number | undefined;
20
+ submittedAt?: string | undefined;
21
+ }>;
22
+ type UserResponse = z.infer<typeof UserResponseSchema>;
23
+ /**
24
+ * An assessment submission containing multiple responses
25
+ */
26
+ declare const AssessmentSubmissionSchema: z.ZodObject<{
27
+ assessmentId: z.ZodOptional<z.ZodString>;
28
+ userId: z.ZodOptional<z.ZodString>;
29
+ sessionId: z.ZodOptional<z.ZodString>;
30
+ courseId: z.ZodString;
31
+ lessonId: z.ZodOptional<z.ZodString>;
32
+ responses: z.ZodArray<z.ZodObject<{
33
+ questionId: z.ZodString;
34
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
35
+ timeSpent: z.ZodOptional<z.ZodNumber>;
36
+ submittedAt: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ questionId: string;
39
+ selectedAnswer: "A" | "B" | "C" | "D";
40
+ timeSpent?: number | undefined;
41
+ submittedAt?: string | undefined;
42
+ }, {
43
+ questionId: string;
44
+ selectedAnswer: "A" | "B" | "C" | "D";
45
+ timeSpent?: number | undefined;
46
+ submittedAt?: string | undefined;
47
+ }>, "many">;
48
+ submittedAt: z.ZodString;
49
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ courseId: string;
52
+ submittedAt: string;
53
+ responses: {
54
+ questionId: string;
55
+ selectedAnswer: "A" | "B" | "C" | "D";
56
+ timeSpent?: number | undefined;
57
+ submittedAt?: string | undefined;
58
+ }[];
59
+ lessonId?: string | undefined;
60
+ metadata?: Record<string, unknown> | undefined;
61
+ assessmentId?: string | undefined;
62
+ userId?: string | undefined;
63
+ sessionId?: string | undefined;
64
+ }, {
65
+ courseId: string;
66
+ submittedAt: string;
67
+ responses: {
68
+ questionId: string;
69
+ selectedAnswer: "A" | "B" | "C" | "D";
70
+ timeSpent?: number | undefined;
71
+ submittedAt?: string | undefined;
72
+ }[];
73
+ lessonId?: string | undefined;
74
+ metadata?: Record<string, unknown> | undefined;
75
+ assessmentId?: string | undefined;
76
+ userId?: string | undefined;
77
+ sessionId?: string | undefined;
78
+ }>;
79
+ type AssessmentSubmission = z.infer<typeof AssessmentSubmissionSchema>;
80
+ /**
81
+ * Result of grading a single response
82
+ */
83
+ declare const GradedResponseSchema: z.ZodObject<{
84
+ questionId: z.ZodString;
85
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
86
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
87
+ isCorrect: z.ZodBoolean;
88
+ misconceptionId: z.ZodNullable<z.ZodString>;
89
+ feedback: z.ZodOptional<z.ZodObject<{
90
+ short: z.ZodString;
91
+ detailed: z.ZodString;
92
+ socraticHint: z.ZodOptional<z.ZodString>;
93
+ }, "strip", z.ZodTypeAny, {
94
+ short: string;
95
+ detailed: string;
96
+ socraticHint?: string | undefined;
97
+ }, {
98
+ short: string;
99
+ detailed: string;
100
+ socraticHint?: string | undefined;
101
+ }>>;
102
+ timeSpent: z.ZodOptional<z.ZodNumber>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ questionId: string;
105
+ isCorrect: boolean;
106
+ misconceptionId: string | null;
107
+ correctAnswer: "A" | "B" | "C" | "D";
108
+ selectedAnswer: "A" | "B" | "C" | "D";
109
+ feedback?: {
110
+ short: string;
111
+ detailed: string;
112
+ socraticHint?: string | undefined;
113
+ } | undefined;
114
+ timeSpent?: number | undefined;
115
+ }, {
116
+ questionId: string;
117
+ isCorrect: boolean;
118
+ misconceptionId: string | null;
119
+ correctAnswer: "A" | "B" | "C" | "D";
120
+ selectedAnswer: "A" | "B" | "C" | "D";
121
+ feedback?: {
122
+ short: string;
123
+ detailed: string;
124
+ socraticHint?: string | undefined;
125
+ } | undefined;
126
+ timeSpent?: number | undefined;
127
+ }>;
128
+ type GradedResponse = z.infer<typeof GradedResponseSchema>;
129
+ /**
130
+ * Aggregated misconception analysis for an assessment
131
+ */
132
+ declare const MisconceptionReportSchema: z.ZodObject<{
133
+ misconceptionId: z.ZodString;
134
+ count: z.ZodNumber;
135
+ percentage: z.ZodNumber;
136
+ questionIds: z.ZodArray<z.ZodString, "many">;
137
+ description: z.ZodOptional<z.ZodString>;
138
+ }, "strip", z.ZodTypeAny, {
139
+ misconceptionId: string;
140
+ count: number;
141
+ percentage: number;
142
+ questionIds: string[];
143
+ description?: string | undefined;
144
+ }, {
145
+ misconceptionId: string;
146
+ count: number;
147
+ percentage: number;
148
+ questionIds: string[];
149
+ description?: string | undefined;
150
+ }>;
151
+ type MisconceptionReport = z.infer<typeof MisconceptionReportSchema>;
152
+ /**
153
+ * Complete graded assessment with scores and misconception analysis
154
+ */
155
+ declare const GradedAssessmentSchema: z.ZodObject<{
156
+ assessmentId: z.ZodString;
157
+ userId: z.ZodOptional<z.ZodString>;
158
+ courseId: z.ZodString;
159
+ lessonId: z.ZodOptional<z.ZodString>;
160
+ totalQuestions: z.ZodNumber;
161
+ correctCount: z.ZodNumber;
162
+ incorrectCount: z.ZodNumber;
163
+ score: z.ZodNumber;
164
+ passed: z.ZodBoolean;
165
+ responses: z.ZodArray<z.ZodObject<{
166
+ questionId: z.ZodString;
167
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
168
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
169
+ isCorrect: z.ZodBoolean;
170
+ misconceptionId: z.ZodNullable<z.ZodString>;
171
+ feedback: z.ZodOptional<z.ZodObject<{
172
+ short: z.ZodString;
173
+ detailed: z.ZodString;
174
+ socraticHint: z.ZodOptional<z.ZodString>;
175
+ }, "strip", z.ZodTypeAny, {
176
+ short: string;
177
+ detailed: string;
178
+ socraticHint?: string | undefined;
179
+ }, {
180
+ short: string;
181
+ detailed: string;
182
+ socraticHint?: string | undefined;
183
+ }>>;
184
+ timeSpent: z.ZodOptional<z.ZodNumber>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ questionId: string;
187
+ isCorrect: boolean;
188
+ misconceptionId: string | null;
189
+ correctAnswer: "A" | "B" | "C" | "D";
190
+ selectedAnswer: "A" | "B" | "C" | "D";
191
+ feedback?: {
192
+ short: string;
193
+ detailed: string;
194
+ socraticHint?: string | undefined;
195
+ } | undefined;
196
+ timeSpent?: number | undefined;
197
+ }, {
198
+ questionId: string;
199
+ isCorrect: boolean;
200
+ misconceptionId: string | null;
201
+ correctAnswer: "A" | "B" | "C" | "D";
202
+ selectedAnswer: "A" | "B" | "C" | "D";
203
+ feedback?: {
204
+ short: string;
205
+ detailed: string;
206
+ socraticHint?: string | undefined;
207
+ } | undefined;
208
+ timeSpent?: number | undefined;
209
+ }>, "many">;
210
+ misconceptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
211
+ misconceptionId: z.ZodString;
212
+ count: z.ZodNumber;
213
+ percentage: z.ZodNumber;
214
+ questionIds: z.ZodArray<z.ZodString, "many">;
215
+ description: z.ZodOptional<z.ZodString>;
216
+ }, "strip", z.ZodTypeAny, {
217
+ misconceptionId: string;
218
+ count: number;
219
+ percentage: number;
220
+ questionIds: string[];
221
+ description?: string | undefined;
222
+ }, {
223
+ misconceptionId: string;
224
+ count: number;
225
+ percentage: number;
226
+ questionIds: string[];
227
+ description?: string | undefined;
228
+ }>, "many">>;
229
+ topMisconceptions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
230
+ totalTimeSpent: z.ZodOptional<z.ZodNumber>;
231
+ averageTimePerQuestion: z.ZodOptional<z.ZodNumber>;
232
+ submittedAt: z.ZodString;
233
+ gradedAt: z.ZodString;
234
+ }, "strip", z.ZodTypeAny, {
235
+ courseId: string;
236
+ totalQuestions: number;
237
+ submittedAt: string;
238
+ assessmentId: string;
239
+ responses: {
240
+ questionId: string;
241
+ isCorrect: boolean;
242
+ misconceptionId: string | null;
243
+ correctAnswer: "A" | "B" | "C" | "D";
244
+ selectedAnswer: "A" | "B" | "C" | "D";
245
+ feedback?: {
246
+ short: string;
247
+ detailed: string;
248
+ socraticHint?: string | undefined;
249
+ } | undefined;
250
+ timeSpent?: number | undefined;
251
+ }[];
252
+ correctCount: number;
253
+ incorrectCount: number;
254
+ score: number;
255
+ passed: boolean;
256
+ gradedAt: string;
257
+ lessonId?: string | undefined;
258
+ userId?: string | undefined;
259
+ misconceptions?: {
260
+ misconceptionId: string;
261
+ count: number;
262
+ percentage: number;
263
+ questionIds: string[];
264
+ description?: string | undefined;
265
+ }[] | undefined;
266
+ topMisconceptions?: string[] | undefined;
267
+ totalTimeSpent?: number | undefined;
268
+ averageTimePerQuestion?: number | undefined;
269
+ }, {
270
+ courseId: string;
271
+ totalQuestions: number;
272
+ submittedAt: string;
273
+ assessmentId: string;
274
+ responses: {
275
+ questionId: string;
276
+ isCorrect: boolean;
277
+ misconceptionId: string | null;
278
+ correctAnswer: "A" | "B" | "C" | "D";
279
+ selectedAnswer: "A" | "B" | "C" | "D";
280
+ feedback?: {
281
+ short: string;
282
+ detailed: string;
283
+ socraticHint?: string | undefined;
284
+ } | undefined;
285
+ timeSpent?: number | undefined;
286
+ }[];
287
+ correctCount: number;
288
+ incorrectCount: number;
289
+ score: number;
290
+ passed: boolean;
291
+ gradedAt: string;
292
+ lessonId?: string | undefined;
293
+ userId?: string | undefined;
294
+ misconceptions?: {
295
+ misconceptionId: string;
296
+ count: number;
297
+ percentage: number;
298
+ questionIds: string[];
299
+ description?: string | undefined;
300
+ }[] | undefined;
301
+ topMisconceptions?: string[] | undefined;
302
+ totalTimeSpent?: number | undefined;
303
+ averageTimePerQuestion?: number | undefined;
304
+ }>;
305
+ type GradedAssessment = z.infer<typeof GradedAssessmentSchema>;
306
+ /**
307
+ * Result of validating an assessment submission
308
+ * Does NOT reveal correct answers - only schema compliance
309
+ */
310
+ declare const ValidationResultSchema: z.ZodObject<{
311
+ valid: z.ZodBoolean;
312
+ errors: z.ZodOptional<z.ZodArray<z.ZodObject<{
313
+ path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
314
+ message: z.ZodString;
315
+ code: z.ZodOptional<z.ZodString>;
316
+ }, "strip", z.ZodTypeAny, {
317
+ path: (string | number)[];
318
+ message: string;
319
+ code?: string | undefined;
320
+ }, {
321
+ path: (string | number)[];
322
+ message: string;
323
+ code?: string | undefined;
324
+ }>, "many">>;
325
+ isComplete: z.ZodBoolean;
326
+ questionCount: z.ZodNumber;
327
+ answeredCount: z.ZodNumber;
328
+ }, "strip", z.ZodTypeAny, {
329
+ valid: boolean;
330
+ isComplete: boolean;
331
+ questionCount: number;
332
+ answeredCount: number;
333
+ errors?: {
334
+ path: (string | number)[];
335
+ message: string;
336
+ code?: string | undefined;
337
+ }[] | undefined;
338
+ }, {
339
+ valid: boolean;
340
+ isComplete: boolean;
341
+ questionCount: number;
342
+ answeredCount: number;
343
+ errors?: {
344
+ path: (string | number)[];
345
+ message: string;
346
+ code?: string | undefined;
347
+ }[] | undefined;
348
+ }>;
349
+ type ValidationResult = z.infer<typeof ValidationResultSchema>;
350
+
351
+ export { AssessmentSubmissionSchema as A, GradedResponseSchema as G, MisconceptionReportSchema as M, UserResponseSchema as U, ValidationResultSchema as V, GradedAssessmentSchema as a, type UserResponse as b, type AssessmentSubmission as c, type GradedResponse as d, type MisconceptionReport as e, type GradedAssessment as f, type ValidationResult as g };
@@ -0,0 +1,351 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * A single user response to a question
5
+ */
6
+ declare const UserResponseSchema: z.ZodObject<{
7
+ questionId: z.ZodString;
8
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
9
+ timeSpent: z.ZodOptional<z.ZodNumber>;
10
+ submittedAt: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ questionId: string;
13
+ selectedAnswer: "A" | "B" | "C" | "D";
14
+ timeSpent?: number | undefined;
15
+ submittedAt?: string | undefined;
16
+ }, {
17
+ questionId: string;
18
+ selectedAnswer: "A" | "B" | "C" | "D";
19
+ timeSpent?: number | undefined;
20
+ submittedAt?: string | undefined;
21
+ }>;
22
+ type UserResponse = z.infer<typeof UserResponseSchema>;
23
+ /**
24
+ * An assessment submission containing multiple responses
25
+ */
26
+ declare const AssessmentSubmissionSchema: z.ZodObject<{
27
+ assessmentId: z.ZodOptional<z.ZodString>;
28
+ userId: z.ZodOptional<z.ZodString>;
29
+ sessionId: z.ZodOptional<z.ZodString>;
30
+ courseId: z.ZodString;
31
+ lessonId: z.ZodOptional<z.ZodString>;
32
+ responses: z.ZodArray<z.ZodObject<{
33
+ questionId: z.ZodString;
34
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
35
+ timeSpent: z.ZodOptional<z.ZodNumber>;
36
+ submittedAt: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ questionId: string;
39
+ selectedAnswer: "A" | "B" | "C" | "D";
40
+ timeSpent?: number | undefined;
41
+ submittedAt?: string | undefined;
42
+ }, {
43
+ questionId: string;
44
+ selectedAnswer: "A" | "B" | "C" | "D";
45
+ timeSpent?: number | undefined;
46
+ submittedAt?: string | undefined;
47
+ }>, "many">;
48
+ submittedAt: z.ZodString;
49
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ courseId: string;
52
+ submittedAt: string;
53
+ responses: {
54
+ questionId: string;
55
+ selectedAnswer: "A" | "B" | "C" | "D";
56
+ timeSpent?: number | undefined;
57
+ submittedAt?: string | undefined;
58
+ }[];
59
+ lessonId?: string | undefined;
60
+ metadata?: Record<string, unknown> | undefined;
61
+ assessmentId?: string | undefined;
62
+ userId?: string | undefined;
63
+ sessionId?: string | undefined;
64
+ }, {
65
+ courseId: string;
66
+ submittedAt: string;
67
+ responses: {
68
+ questionId: string;
69
+ selectedAnswer: "A" | "B" | "C" | "D";
70
+ timeSpent?: number | undefined;
71
+ submittedAt?: string | undefined;
72
+ }[];
73
+ lessonId?: string | undefined;
74
+ metadata?: Record<string, unknown> | undefined;
75
+ assessmentId?: string | undefined;
76
+ userId?: string | undefined;
77
+ sessionId?: string | undefined;
78
+ }>;
79
+ type AssessmentSubmission = z.infer<typeof AssessmentSubmissionSchema>;
80
+ /**
81
+ * Result of grading a single response
82
+ */
83
+ declare const GradedResponseSchema: z.ZodObject<{
84
+ questionId: z.ZodString;
85
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
86
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
87
+ isCorrect: z.ZodBoolean;
88
+ misconceptionId: z.ZodNullable<z.ZodString>;
89
+ feedback: z.ZodOptional<z.ZodObject<{
90
+ short: z.ZodString;
91
+ detailed: z.ZodString;
92
+ socraticHint: z.ZodOptional<z.ZodString>;
93
+ }, "strip", z.ZodTypeAny, {
94
+ short: string;
95
+ detailed: string;
96
+ socraticHint?: string | undefined;
97
+ }, {
98
+ short: string;
99
+ detailed: string;
100
+ socraticHint?: string | undefined;
101
+ }>>;
102
+ timeSpent: z.ZodOptional<z.ZodNumber>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ questionId: string;
105
+ isCorrect: boolean;
106
+ misconceptionId: string | null;
107
+ correctAnswer: "A" | "B" | "C" | "D";
108
+ selectedAnswer: "A" | "B" | "C" | "D";
109
+ feedback?: {
110
+ short: string;
111
+ detailed: string;
112
+ socraticHint?: string | undefined;
113
+ } | undefined;
114
+ timeSpent?: number | undefined;
115
+ }, {
116
+ questionId: string;
117
+ isCorrect: boolean;
118
+ misconceptionId: string | null;
119
+ correctAnswer: "A" | "B" | "C" | "D";
120
+ selectedAnswer: "A" | "B" | "C" | "D";
121
+ feedback?: {
122
+ short: string;
123
+ detailed: string;
124
+ socraticHint?: string | undefined;
125
+ } | undefined;
126
+ timeSpent?: number | undefined;
127
+ }>;
128
+ type GradedResponse = z.infer<typeof GradedResponseSchema>;
129
+ /**
130
+ * Aggregated misconception analysis for an assessment
131
+ */
132
+ declare const MisconceptionReportSchema: z.ZodObject<{
133
+ misconceptionId: z.ZodString;
134
+ count: z.ZodNumber;
135
+ percentage: z.ZodNumber;
136
+ questionIds: z.ZodArray<z.ZodString, "many">;
137
+ description: z.ZodOptional<z.ZodString>;
138
+ }, "strip", z.ZodTypeAny, {
139
+ misconceptionId: string;
140
+ count: number;
141
+ percentage: number;
142
+ questionIds: string[];
143
+ description?: string | undefined;
144
+ }, {
145
+ misconceptionId: string;
146
+ count: number;
147
+ percentage: number;
148
+ questionIds: string[];
149
+ description?: string | undefined;
150
+ }>;
151
+ type MisconceptionReport = z.infer<typeof MisconceptionReportSchema>;
152
+ /**
153
+ * Complete graded assessment with scores and misconception analysis
154
+ */
155
+ declare const GradedAssessmentSchema: z.ZodObject<{
156
+ assessmentId: z.ZodString;
157
+ userId: z.ZodOptional<z.ZodString>;
158
+ courseId: z.ZodString;
159
+ lessonId: z.ZodOptional<z.ZodString>;
160
+ totalQuestions: z.ZodNumber;
161
+ correctCount: z.ZodNumber;
162
+ incorrectCount: z.ZodNumber;
163
+ score: z.ZodNumber;
164
+ passed: z.ZodBoolean;
165
+ responses: z.ZodArray<z.ZodObject<{
166
+ questionId: z.ZodString;
167
+ selectedAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
168
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
169
+ isCorrect: z.ZodBoolean;
170
+ misconceptionId: z.ZodNullable<z.ZodString>;
171
+ feedback: z.ZodOptional<z.ZodObject<{
172
+ short: z.ZodString;
173
+ detailed: z.ZodString;
174
+ socraticHint: z.ZodOptional<z.ZodString>;
175
+ }, "strip", z.ZodTypeAny, {
176
+ short: string;
177
+ detailed: string;
178
+ socraticHint?: string | undefined;
179
+ }, {
180
+ short: string;
181
+ detailed: string;
182
+ socraticHint?: string | undefined;
183
+ }>>;
184
+ timeSpent: z.ZodOptional<z.ZodNumber>;
185
+ }, "strip", z.ZodTypeAny, {
186
+ questionId: string;
187
+ isCorrect: boolean;
188
+ misconceptionId: string | null;
189
+ correctAnswer: "A" | "B" | "C" | "D";
190
+ selectedAnswer: "A" | "B" | "C" | "D";
191
+ feedback?: {
192
+ short: string;
193
+ detailed: string;
194
+ socraticHint?: string | undefined;
195
+ } | undefined;
196
+ timeSpent?: number | undefined;
197
+ }, {
198
+ questionId: string;
199
+ isCorrect: boolean;
200
+ misconceptionId: string | null;
201
+ correctAnswer: "A" | "B" | "C" | "D";
202
+ selectedAnswer: "A" | "B" | "C" | "D";
203
+ feedback?: {
204
+ short: string;
205
+ detailed: string;
206
+ socraticHint?: string | undefined;
207
+ } | undefined;
208
+ timeSpent?: number | undefined;
209
+ }>, "many">;
210
+ misconceptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
211
+ misconceptionId: z.ZodString;
212
+ count: z.ZodNumber;
213
+ percentage: z.ZodNumber;
214
+ questionIds: z.ZodArray<z.ZodString, "many">;
215
+ description: z.ZodOptional<z.ZodString>;
216
+ }, "strip", z.ZodTypeAny, {
217
+ misconceptionId: string;
218
+ count: number;
219
+ percentage: number;
220
+ questionIds: string[];
221
+ description?: string | undefined;
222
+ }, {
223
+ misconceptionId: string;
224
+ count: number;
225
+ percentage: number;
226
+ questionIds: string[];
227
+ description?: string | undefined;
228
+ }>, "many">>;
229
+ topMisconceptions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
230
+ totalTimeSpent: z.ZodOptional<z.ZodNumber>;
231
+ averageTimePerQuestion: z.ZodOptional<z.ZodNumber>;
232
+ submittedAt: z.ZodString;
233
+ gradedAt: z.ZodString;
234
+ }, "strip", z.ZodTypeAny, {
235
+ courseId: string;
236
+ totalQuestions: number;
237
+ submittedAt: string;
238
+ assessmentId: string;
239
+ responses: {
240
+ questionId: string;
241
+ isCorrect: boolean;
242
+ misconceptionId: string | null;
243
+ correctAnswer: "A" | "B" | "C" | "D";
244
+ selectedAnswer: "A" | "B" | "C" | "D";
245
+ feedback?: {
246
+ short: string;
247
+ detailed: string;
248
+ socraticHint?: string | undefined;
249
+ } | undefined;
250
+ timeSpent?: number | undefined;
251
+ }[];
252
+ correctCount: number;
253
+ incorrectCount: number;
254
+ score: number;
255
+ passed: boolean;
256
+ gradedAt: string;
257
+ lessonId?: string | undefined;
258
+ userId?: string | undefined;
259
+ misconceptions?: {
260
+ misconceptionId: string;
261
+ count: number;
262
+ percentage: number;
263
+ questionIds: string[];
264
+ description?: string | undefined;
265
+ }[] | undefined;
266
+ topMisconceptions?: string[] | undefined;
267
+ totalTimeSpent?: number | undefined;
268
+ averageTimePerQuestion?: number | undefined;
269
+ }, {
270
+ courseId: string;
271
+ totalQuestions: number;
272
+ submittedAt: string;
273
+ assessmentId: string;
274
+ responses: {
275
+ questionId: string;
276
+ isCorrect: boolean;
277
+ misconceptionId: string | null;
278
+ correctAnswer: "A" | "B" | "C" | "D";
279
+ selectedAnswer: "A" | "B" | "C" | "D";
280
+ feedback?: {
281
+ short: string;
282
+ detailed: string;
283
+ socraticHint?: string | undefined;
284
+ } | undefined;
285
+ timeSpent?: number | undefined;
286
+ }[];
287
+ correctCount: number;
288
+ incorrectCount: number;
289
+ score: number;
290
+ passed: boolean;
291
+ gradedAt: string;
292
+ lessonId?: string | undefined;
293
+ userId?: string | undefined;
294
+ misconceptions?: {
295
+ misconceptionId: string;
296
+ count: number;
297
+ percentage: number;
298
+ questionIds: string[];
299
+ description?: string | undefined;
300
+ }[] | undefined;
301
+ topMisconceptions?: string[] | undefined;
302
+ totalTimeSpent?: number | undefined;
303
+ averageTimePerQuestion?: number | undefined;
304
+ }>;
305
+ type GradedAssessment = z.infer<typeof GradedAssessmentSchema>;
306
+ /**
307
+ * Result of validating an assessment submission
308
+ * Does NOT reveal correct answers - only schema compliance
309
+ */
310
+ declare const ValidationResultSchema: z.ZodObject<{
311
+ valid: z.ZodBoolean;
312
+ errors: z.ZodOptional<z.ZodArray<z.ZodObject<{
313
+ path: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
314
+ message: z.ZodString;
315
+ code: z.ZodOptional<z.ZodString>;
316
+ }, "strip", z.ZodTypeAny, {
317
+ path: (string | number)[];
318
+ message: string;
319
+ code?: string | undefined;
320
+ }, {
321
+ path: (string | number)[];
322
+ message: string;
323
+ code?: string | undefined;
324
+ }>, "many">>;
325
+ isComplete: z.ZodBoolean;
326
+ questionCount: z.ZodNumber;
327
+ answeredCount: z.ZodNumber;
328
+ }, "strip", z.ZodTypeAny, {
329
+ valid: boolean;
330
+ isComplete: boolean;
331
+ questionCount: number;
332
+ answeredCount: number;
333
+ errors?: {
334
+ path: (string | number)[];
335
+ message: string;
336
+ code?: string | undefined;
337
+ }[] | undefined;
338
+ }, {
339
+ valid: boolean;
340
+ isComplete: boolean;
341
+ questionCount: number;
342
+ answeredCount: number;
343
+ errors?: {
344
+ path: (string | number)[];
345
+ message: string;
346
+ code?: string | undefined;
347
+ }[] | undefined;
348
+ }>;
349
+ type ValidationResult = z.infer<typeof ValidationResultSchema>;
350
+
351
+ export { AssessmentSubmissionSchema as A, GradedResponseSchema as G, MisconceptionReportSchema as M, UserResponseSchema as U, ValidationResultSchema as V, GradedAssessmentSchema as a, type UserResponse as b, type AssessmentSubmission as c, type GradedResponse as d, type MisconceptionReport as e, type GradedAssessment as f, type ValidationResult as g };