@nice2dev/ui-tools 1.0.10

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.
Files changed (158) hide show
  1. package/README.md +36 -0
  2. package/dist/access-control.d.ts +726 -0
  3. package/dist/access-control.d.ts.map +1 -0
  4. package/dist/accessibility-i18n.d.ts +1017 -0
  5. package/dist/accessibility-i18n.d.ts.map +1 -0
  6. package/dist/ai-assistant.d.ts +263 -0
  7. package/dist/ai-assistant.d.ts.map +1 -0
  8. package/dist/ai-playgrounds.d.ts +842 -0
  9. package/dist/ai-playgrounds.d.ts.map +1 -0
  10. package/dist/alerting-incidents.d.ts +558 -0
  11. package/dist/alerting-incidents.d.ts.map +1 -0
  12. package/dist/api-designer.d.ts +1568 -0
  13. package/dist/api-designer.d.ts.map +1 -0
  14. package/dist/api-testing.d.ts +1146 -0
  15. package/dist/api-testing.d.ts.map +1 -0
  16. package/dist/apm-profiling.d.ts +656 -0
  17. package/dist/apm-profiling.d.ts.map +1 -0
  18. package/dist/artifacts.d.ts +421 -0
  19. package/dist/artifacts.d.ts.map +1 -0
  20. package/dist/audit-compliance.d.ts +752 -0
  21. package/dist/audit-compliance.d.ts.map +1 -0
  22. package/dist/certificates.d.ts +256 -0
  23. package/dist/certificates.d.ts.map +1 -0
  24. package/dist/chart-builder.d.ts +1404 -0
  25. package/dist/chart-builder.d.ts.map +1 -0
  26. package/dist/cloud-instances.d.ts +169 -0
  27. package/dist/cloud-instances.d.ts.map +1 -0
  28. package/dist/config-management.d.ts +350 -0
  29. package/dist/config-management.d.ts.map +1 -0
  30. package/dist/containers.d.ts +256 -0
  31. package/dist/containers.d.ts.map +1 -0
  32. package/dist/dashboard-designer.d.ts +1238 -0
  33. package/dist/dashboard-designer.d.ts.map +1 -0
  34. package/dist/data-management.d.ts +496 -0
  35. package/dist/data-management.d.ts.map +1 -0
  36. package/dist/data-pipeline.d.ts +1105 -0
  37. package/dist/data-pipeline.d.ts.map +1 -0
  38. package/dist/data-warehouse.d.ts +1097 -0
  39. package/dist/data-warehouse.d.ts.map +1 -0
  40. package/dist/dataset-management.d.ts +782 -0
  41. package/dist/dataset-management.d.ts.map +1 -0
  42. package/dist/db-adapters.d.ts +704 -0
  43. package/dist/db-adapters.d.ts.map +1 -0
  44. package/dist/db-admin.d.ts +699 -0
  45. package/dist/db-admin.d.ts.map +1 -0
  46. package/dist/db-designer.d.ts +366 -0
  47. package/dist/db-designer.d.ts.map +1 -0
  48. package/dist/debugger.d.ts +356 -0
  49. package/dist/debugger.d.ts.map +1 -0
  50. package/dist/device-management.d.ts +871 -0
  51. package/dist/device-management.d.ts.map +1 -0
  52. package/dist/distributed-tracing.d.ts +427 -0
  53. package/dist/distributed-tracing.d.ts.map +1 -0
  54. package/dist/dns-management.d.ts +215 -0
  55. package/dist/dns-management.d.ts.map +1 -0
  56. package/dist/download-manager.d.ts +271 -0
  57. package/dist/download-manager.d.ts.map +1 -0
  58. package/dist/download-torrent.d.ts +1062 -0
  59. package/dist/download-torrent.d.ts.map +1 -0
  60. package/dist/edge-computing.d.ts +720 -0
  61. package/dist/edge-computing.d.ts.map +1 -0
  62. package/dist/education.d.ts +1135 -0
  63. package/dist/education.d.ts.map +1 -0
  64. package/dist/email-template.d.ts +1141 -0
  65. package/dist/email-template.d.ts.map +1 -0
  66. package/dist/erp-enterprise.d.ts +1270 -0
  67. package/dist/erp-enterprise.d.ts.map +1 -0
  68. package/dist/form-builder.d.ts +1117 -0
  69. package/dist/form-builder.d.ts.map +1 -0
  70. package/dist/game-engine-advanced.d.ts +1049 -0
  71. package/dist/game-engine-advanced.d.ts.map +1 -0
  72. package/dist/git.d.ts +415 -0
  73. package/dist/git.d.ts.map +1 -0
  74. package/dist/hardware-integration.d.ts +966 -0
  75. package/dist/hardware-integration.d.ts.map +1 -0
  76. package/dist/iac.d.ts +318 -0
  77. package/dist/iac.d.ts.map +1 -0
  78. package/dist/icon-tools.d.ts +1023 -0
  79. package/dist/icon-tools.d.ts.map +1 -0
  80. package/dist/ide.d.ts +322 -0
  81. package/dist/ide.d.ts.map +1 -0
  82. package/dist/index.cjs +2 -0
  83. package/dist/index.cjs.map +1 -0
  84. package/dist/index.d.ts +176 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.mjs +1887 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/integration-platform.d.ts +857 -0
  89. package/dist/integration-platform.d.ts.map +1 -0
  90. package/dist/kubernetes.d.ts +278 -0
  91. package/dist/kubernetes.d.ts.map +1 -0
  92. package/dist/life-management.d.ts +1132 -0
  93. package/dist/life-management.d.ts.map +1 -0
  94. package/dist/log-management.d.ts +473 -0
  95. package/dist/log-management.d.ts.map +1 -0
  96. package/dist/mathematics.d.ts +870 -0
  97. package/dist/mathematics.d.ts.map +1 -0
  98. package/dist/message-queue.d.ts +1006 -0
  99. package/dist/message-queue.d.ts.map +1 -0
  100. package/dist/metrics-dashboard.d.ts +596 -0
  101. package/dist/metrics-dashboard.d.ts.map +1 -0
  102. package/dist/mobile-components.d.ts +766 -0
  103. package/dist/mobile-components.d.ts.map +1 -0
  104. package/dist/model-deployment.d.ts +787 -0
  105. package/dist/model-deployment.d.ts.map +1 -0
  106. package/dist/model-registry.d.ts +740 -0
  107. package/dist/model-registry.d.ts.map +1 -0
  108. package/dist/model-training.d.ts +706 -0
  109. package/dist/model-training.d.ts.map +1 -0
  110. package/dist/network-config.d.ts +334 -0
  111. package/dist/network-config.d.ts.map +1 -0
  112. package/dist/network-monitoring.d.ts +291 -0
  113. package/dist/network-monitoring.d.ts.map +1 -0
  114. package/dist/pdf-tools.d.ts +1003 -0
  115. package/dist/pdf-tools.d.ts.map +1 -0
  116. package/dist/pipelines.d.ts +250 -0
  117. package/dist/pipelines.d.ts.map +1 -0
  118. package/dist/remote-desktop.d.ts +207 -0
  119. package/dist/remote-desktop.d.ts.map +1 -0
  120. package/dist/report-designer.d.ts +1153 -0
  121. package/dist/report-designer.d.ts.map +1 -0
  122. package/dist/scada-industrial.d.ts +848 -0
  123. package/dist/scada-industrial.d.ts.map +1 -0
  124. package/dist/scientific-research.d.ts +1149 -0
  125. package/dist/scientific-research.d.ts.map +1 -0
  126. package/dist/secret-management.d.ts +617 -0
  127. package/dist/secret-management.d.ts.map +1 -0
  128. package/dist/security-scanning.d.ts +714 -0
  129. package/dist/security-scanning.d.ts.map +1 -0
  130. package/dist/self-service-analytics.d.ts +1208 -0
  131. package/dist/self-service-analytics.d.ts.map +1 -0
  132. package/dist/sensor-dashboard.d.ts +845 -0
  133. package/dist/sensor-dashboard.d.ts.map +1 -0
  134. package/dist/server-management.d.ts +331 -0
  135. package/dist/server-management.d.ts.map +1 -0
  136. package/dist/smart-home.d.ts +861 -0
  137. package/dist/smart-home.d.ts.map +1 -0
  138. package/dist/spreadsheet.d.ts +1043 -0
  139. package/dist/spreadsheet.d.ts.map +1 -0
  140. package/dist/sql-editor.d.ts +402 -0
  141. package/dist/sql-editor.d.ts.map +1 -0
  142. package/dist/terminal.d.ts +245 -0
  143. package/dist/terminal.d.ts.map +1 -0
  144. package/dist/testing-qa.d.ts +1013 -0
  145. package/dist/testing-qa.d.ts.map +1 -0
  146. package/dist/torrent-client.d.ts +298 -0
  147. package/dist/torrent-client.d.ts.map +1 -0
  148. package/dist/traceless.d.ts +759 -0
  149. package/dist/traceless.d.ts.map +1 -0
  150. package/dist/virtual-machines.d.ts +199 -0
  151. package/dist/virtual-machines.d.ts.map +1 -0
  152. package/dist/visual-scripting.d.ts +381 -0
  153. package/dist/visual-scripting.d.ts.map +1 -0
  154. package/dist/word-processor.d.ts +1124 -0
  155. package/dist/word-processor.d.ts.map +1 -0
  156. package/dist/workspace.d.ts +333 -0
  157. package/dist/workspace.d.ts.map +1 -0
  158. package/package.json +62 -0
@@ -0,0 +1,1135 @@
1
+ /**
2
+ * @file education.ts
3
+ * @module @nice2dev/ui-tools
4
+ * @description PRO-25 — Education & E-Learning Suite
5
+ *
6
+ * Types for lesson/course editing, quiz & assessment, interactive learning,
7
+ * dashboards, progress tracking, scheduling, and LMS integrations.
8
+ */
9
+ /** Content type */
10
+ export type EduContentType = 'text' | 'image' | 'video' | 'audio' | 'quiz' | 'interactive' | 'assignment' | 'discussion' | 'embed';
11
+ /** Difficulty level */
12
+ export type DifficultyLevel = 'beginner' | 'elementary' | 'intermediate' | 'advanced' | 'expert';
13
+ /** Course status */
14
+ export type CourseStatus = 'draft' | 'review' | 'published' | 'archived';
15
+ /** Enrollment status */
16
+ export type EnrollmentStatus = 'enrolled' | 'completed' | 'dropped' | 'waitlisted' | 'pending';
17
+ /** Lesson editor config */
18
+ export interface LessonEditorConfig {
19
+ project?: EduProject;
20
+ contentTypes?: EduContentType[];
21
+ templates?: LessonTemplate[];
22
+ scormSettings?: SCORMSettings;
23
+ xapiSettings?: xAPISettings;
24
+ }
25
+ /** Educational project */
26
+ export interface EduProject {
27
+ id: string;
28
+ name: string;
29
+ description?: string;
30
+ defaultLanguage?: string;
31
+ supportedLanguages?: string[];
32
+ }
33
+ /** Lesson */
34
+ export interface Lesson {
35
+ id: string;
36
+ title: string;
37
+ description?: string;
38
+ sections: LessonSection[];
39
+ duration?: number;
40
+ difficulty: DifficultyLevel;
41
+ prerequisites?: string[];
42
+ objectives?: LearningObjective[];
43
+ tags?: string[];
44
+ status: CourseStatus;
45
+ version?: number;
46
+ author: string;
47
+ createdAt: Date;
48
+ updatedAt: Date;
49
+ }
50
+ /** Lesson section */
51
+ export interface LessonSection {
52
+ id: string;
53
+ type: EduContentType;
54
+ order: number;
55
+ content: SectionContent;
56
+ settings?: SectionSettings;
57
+ }
58
+ /** Section content */
59
+ export interface SectionContent {
60
+ text?: RichTextContent;
61
+ image?: ImageContent;
62
+ video?: VideoContent;
63
+ audio?: AudioContent;
64
+ quiz?: QuizReference;
65
+ interactive?: InteractiveContent;
66
+ embed?: EmbedContent;
67
+ }
68
+ /** Rich text content */
69
+ export interface RichTextContent {
70
+ html: string;
71
+ markdown?: string;
72
+ latex?: string;
73
+ }
74
+ /** Image content */
75
+ export interface ImageContent {
76
+ url: string;
77
+ alt: string;
78
+ caption?: string;
79
+ width?: number;
80
+ height?: number;
81
+ }
82
+ /** Video content */
83
+ export interface VideoContent {
84
+ url: string;
85
+ provider?: VideoProvider;
86
+ duration?: number;
87
+ thumbnail?: string;
88
+ captions?: Caption[];
89
+ chapters?: VideoChapter[];
90
+ interactive?: InteractiveVideoConfig;
91
+ }
92
+ /** Video provider */
93
+ export type VideoProvider = 'youtube' | 'vimeo' | 'wistia' | 'self-hosted' | 'stream';
94
+ /** Caption */
95
+ export interface Caption {
96
+ language: string;
97
+ url: string;
98
+ label?: string;
99
+ }
100
+ /** Video chapter */
101
+ export interface VideoChapter {
102
+ title: string;
103
+ startTime: number;
104
+ endTime?: number;
105
+ }
106
+ /** Interactive video config */
107
+ export interface InteractiveVideoConfig {
108
+ questions: VideoQuestion[];
109
+ bookmarks?: VideoBookmark[];
110
+ branches?: VideoBranch[];
111
+ }
112
+ /** Video question */
113
+ export interface VideoQuestion {
114
+ id: string;
115
+ timestamp: number;
116
+ pauseVideo?: boolean;
117
+ questionId: string;
118
+ required?: boolean;
119
+ }
120
+ /** Video bookmark */
121
+ export interface VideoBookmark {
122
+ id: string;
123
+ timestamp: number;
124
+ label: string;
125
+ }
126
+ /** Video branch */
127
+ export interface VideoBranch {
128
+ id: string;
129
+ timestamp: number;
130
+ choices: BranchChoice[];
131
+ }
132
+ /** Branch choice */
133
+ export interface BranchChoice {
134
+ label: string;
135
+ targetTime?: number;
136
+ targetVideoId?: string;
137
+ }
138
+ /** Audio content */
139
+ export interface AudioContent {
140
+ url: string;
141
+ duration?: number;
142
+ transcript?: string;
143
+ }
144
+ /** Quiz reference */
145
+ export interface QuizReference {
146
+ quizId: string;
147
+ inline?: boolean;
148
+ required?: boolean;
149
+ }
150
+ /** Interactive content */
151
+ export interface InteractiveContent {
152
+ type: InteractiveType;
153
+ config: Record<string, unknown>;
154
+ }
155
+ /** Interactive type */
156
+ export type InteractiveType = 'whiteboard' | 'flashcard' | 'simulation' | 'code_playground' | 'lab' | 'game';
157
+ /** Embed content */
158
+ export interface EmbedContent {
159
+ url: string;
160
+ provider?: string;
161
+ width?: number;
162
+ height?: number;
163
+ }
164
+ /** Section settings */
165
+ export interface SectionSettings {
166
+ collapsible?: boolean;
167
+ defaultCollapsed?: boolean;
168
+ completion?: CompletionCriteria;
169
+ }
170
+ /** Completion criteria */
171
+ export interface CompletionCriteria {
172
+ type: 'view' | 'time' | 'interaction' | 'score';
173
+ threshold?: number;
174
+ minTime?: number;
175
+ minScore?: number;
176
+ }
177
+ /** Learning objective */
178
+ export interface LearningObjective {
179
+ id: string;
180
+ description: string;
181
+ bloomLevel?: BloomLevel;
182
+ measurable?: boolean;
183
+ }
184
+ /** Bloom's taxonomy level */
185
+ export type BloomLevel = 'remember' | 'understand' | 'apply' | 'analyze' | 'evaluate' | 'create';
186
+ /** Lesson template */
187
+ export interface LessonTemplate {
188
+ id: string;
189
+ name: string;
190
+ description?: string;
191
+ type: LessonType;
192
+ sections: LessonSection[];
193
+ }
194
+ /** Lesson type */
195
+ export type LessonType = 'lecture' | 'exercise' | 'lab' | 'project' | 'discussion' | 'assessment';
196
+ /** Course */
197
+ export interface Course {
198
+ id: string;
199
+ title: string;
200
+ subtitle?: string;
201
+ description?: string;
202
+ image?: string;
203
+ modules: CourseModule[];
204
+ instructors: Instructor[];
205
+ duration?: CourseDuration;
206
+ difficulty: DifficultyLevel;
207
+ prerequisites?: CoursePrerequisite[];
208
+ outcomes?: string[];
209
+ certification?: CertificationConfig;
210
+ pricing?: CoursePricing;
211
+ enrollment?: EnrollmentConfig;
212
+ status: CourseStatus;
213
+ publishedAt?: Date;
214
+ createdAt: Date;
215
+ updatedAt: Date;
216
+ }
217
+ /** Course module */
218
+ export interface CourseModule {
219
+ id: string;
220
+ title: string;
221
+ description?: string;
222
+ lessons: string[];
223
+ duration?: number;
224
+ order: number;
225
+ unlockCriteria?: UnlockCriteria;
226
+ }
227
+ /** Unlock criteria */
228
+ export interface UnlockCriteria {
229
+ type: 'sequential' | 'date' | 'completion';
230
+ prerequisiteModules?: string[];
231
+ unlockDate?: Date;
232
+ requiredScore?: number;
233
+ }
234
+ /** Instructor */
235
+ export interface Instructor {
236
+ id: string;
237
+ name: string;
238
+ avatar?: string;
239
+ bio?: string;
240
+ title?: string;
241
+ expertise?: string[];
242
+ }
243
+ /** Course duration */
244
+ export interface CourseDuration {
245
+ estimated: number;
246
+ unit: 'hours' | 'weeks' | 'months';
247
+ selfPaced?: boolean;
248
+ }
249
+ /** Course prerequisite */
250
+ export interface CoursePrerequisite {
251
+ type: 'course' | 'skill' | 'assessment';
252
+ referenceId?: string;
253
+ description: string;
254
+ required: boolean;
255
+ }
256
+ /** Certification config */
257
+ export interface CertificationConfig {
258
+ enabled: boolean;
259
+ passingScore?: number;
260
+ certificate?: CertificateTemplate;
261
+ badge?: BadgeConfig;
262
+ expiration?: CertExpiration;
263
+ }
264
+ /** Certificate template */
265
+ export interface CertificateTemplate {
266
+ id: string;
267
+ name: string;
268
+ design: string;
269
+ fields: CertField[];
270
+ }
271
+ /** Certificate field */
272
+ export interface CertField {
273
+ name: string;
274
+ type: 'text' | 'date' | 'image' | 'qr';
275
+ value?: string;
276
+ position: {
277
+ x: number;
278
+ y: number;
279
+ };
280
+ }
281
+ /** Badge config */
282
+ export interface BadgeConfig {
283
+ enabled: boolean;
284
+ image: string;
285
+ name: string;
286
+ description?: string;
287
+ criteria?: string;
288
+ }
289
+ /** Certification expiration */
290
+ export interface CertExpiration {
291
+ enabled: boolean;
292
+ duration?: number;
293
+ unit?: 'months' | 'years';
294
+ renewalRequired?: boolean;
295
+ }
296
+ /** Course pricing */
297
+ export interface CoursePricing {
298
+ type: 'free' | 'paid' | 'subscription';
299
+ price?: number;
300
+ currency?: string;
301
+ discounts?: Discount[];
302
+ }
303
+ /** Discount */
304
+ export interface Discount {
305
+ code: string;
306
+ type: 'percentage' | 'fixed';
307
+ value: number;
308
+ validUntil?: Date;
309
+ }
310
+ /** Enrollment config */
311
+ export interface EnrollmentConfig {
312
+ open: boolean;
313
+ capacity?: number;
314
+ waitlist?: boolean;
315
+ approval?: boolean;
316
+ startDate?: Date;
317
+ endDate?: Date;
318
+ }
319
+ /** Curriculum */
320
+ export interface Curriculum {
321
+ id: string;
322
+ name: string;
323
+ description?: string;
324
+ terms: Term[];
325
+ totalCredits?: number;
326
+ graduationRequirements?: GraduationRequirement[];
327
+ }
328
+ /** Term (semester/quarter) */
329
+ export interface Term {
330
+ id: string;
331
+ name: string;
332
+ startDate: Date;
333
+ endDate: Date;
334
+ courses: TermCourse[];
335
+ }
336
+ /** Term course */
337
+ export interface TermCourse {
338
+ courseId: string;
339
+ credits?: number;
340
+ required?: boolean;
341
+ schedule?: CourseSchedule;
342
+ }
343
+ /** Course schedule */
344
+ export interface CourseSchedule {
345
+ days: DayOfWeek[];
346
+ startTime: string;
347
+ endTime: string;
348
+ room?: string;
349
+ }
350
+ /** Day of week */
351
+ export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
352
+ /** Graduation requirement */
353
+ export interface GraduationRequirement {
354
+ type: 'credits' | 'courses' | 'gpa';
355
+ value: number;
356
+ category?: string;
357
+ }
358
+ /** Learning path */
359
+ export interface LearningPath {
360
+ id: string;
361
+ name: string;
362
+ description?: string;
363
+ nodes: PathNode[];
364
+ edges: PathEdge[];
365
+ estimatedDuration?: number;
366
+ }
367
+ /** Path node */
368
+ export interface PathNode {
369
+ id: string;
370
+ type: 'course' | 'milestone' | 'skill';
371
+ referenceId?: string;
372
+ title: string;
373
+ position: {
374
+ x: number;
375
+ y: number;
376
+ };
377
+ }
378
+ /** Path edge */
379
+ export interface PathEdge {
380
+ source: string;
381
+ target: string;
382
+ type?: 'required' | 'optional' | 'recommended';
383
+ }
384
+ /** Quiz */
385
+ export interface Quiz {
386
+ id: string;
387
+ title: string;
388
+ description?: string;
389
+ instructions?: string;
390
+ questions: Question[];
391
+ settings: QuizSettings;
392
+ gradingConfig?: GradingConfig;
393
+ analytics?: QuizAnalytics;
394
+ createdAt: Date;
395
+ updatedAt: Date;
396
+ }
397
+ /** Quiz settings */
398
+ export interface QuizSettings {
399
+ timeLimit?: number;
400
+ attempts?: number;
401
+ shuffleQuestions?: boolean;
402
+ shuffleAnswers?: boolean;
403
+ showCorrectAnswers?: ShowAnswersMode;
404
+ passingScore?: number;
405
+ requireCompletion?: boolean;
406
+ lockAfterSubmit?: boolean;
407
+ poolConfig?: QuestionPoolConfig;
408
+ }
409
+ /** Show answers mode */
410
+ export type ShowAnswersMode = 'never' | 'immediately' | 'after_due' | 'after_all_attempts';
411
+ /** Question pool config */
412
+ export interface QuestionPoolConfig {
413
+ enabled: boolean;
414
+ pools: QuestionPool[];
415
+ }
416
+ /** Question pool */
417
+ export interface QuestionPool {
418
+ bankId: string;
419
+ count: number;
420
+ tags?: string[];
421
+ difficulty?: DifficultyLevel;
422
+ }
423
+ /** Question */
424
+ export interface Question {
425
+ id: string;
426
+ type: QuestionType;
427
+ stem: string;
428
+ media?: MediaAttachment[];
429
+ points: number;
430
+ difficulty?: DifficultyLevel;
431
+ tags?: string[];
432
+ hint?: string;
433
+ explanation?: string;
434
+ feedback?: QuestionFeedback;
435
+ options?: QuestionOption[];
436
+ correctAnswer?: CorrectAnswer;
437
+ rubric?: GradingRubric;
438
+ metadata?: QuestionMetadata;
439
+ }
440
+ /** Question type */
441
+ export type QuestionType = 'multiple_choice' | 'multiple_select' | 'true_false' | 'matching' | 'fill_blank' | 'short_answer' | 'essay' | 'math' | 'code' | 'drawing' | 'hotspot' | 'ranking';
442
+ /** Media attachment */
443
+ export interface MediaAttachment {
444
+ type: 'image' | 'audio' | 'video';
445
+ url: string;
446
+ alt?: string;
447
+ }
448
+ /** Question feedback */
449
+ export interface QuestionFeedback {
450
+ correct?: string;
451
+ incorrect?: string;
452
+ partial?: string;
453
+ }
454
+ /** Question option */
455
+ export interface QuestionOption {
456
+ id: string;
457
+ text: string;
458
+ media?: MediaAttachment;
459
+ correct?: boolean;
460
+ feedback?: string;
461
+ matchTarget?: string;
462
+ }
463
+ /** Correct answer */
464
+ export interface CorrectAnswer {
465
+ type: 'exact' | 'contains' | 'regex' | 'range' | 'code_output';
466
+ value?: string | number | string[];
467
+ min?: number;
468
+ max?: number;
469
+ caseSensitive?: boolean;
470
+ testCases?: CodeTestCase[];
471
+ }
472
+ /** Code test case */
473
+ export interface CodeTestCase {
474
+ input: string;
475
+ expectedOutput: string;
476
+ hidden?: boolean;
477
+ points?: number;
478
+ }
479
+ /** Grading rubric */
480
+ export interface GradingRubric {
481
+ criteria: RubricCriterion[];
482
+ maxPoints: number;
483
+ }
484
+ /** Rubric criterion */
485
+ export interface RubricCriterion {
486
+ name: string;
487
+ description?: string;
488
+ levels: RubricLevel[];
489
+ weight?: number;
490
+ }
491
+ /** Rubric level */
492
+ export interface RubricLevel {
493
+ score: number;
494
+ label: string;
495
+ description: string;
496
+ }
497
+ /** Question metadata */
498
+ export interface QuestionMetadata {
499
+ author?: string;
500
+ source?: string;
501
+ usageCount?: number;
502
+ averageScore?: number;
503
+ discriminationIndex?: number;
504
+ }
505
+ /** Grading config */
506
+ export interface GradingConfig {
507
+ autoGrade?: boolean;
508
+ partialCredit?: boolean;
509
+ negativeMarking?: boolean;
510
+ negativeMarkValue?: number;
511
+ roundingMode?: 'none' | 'nearest' | 'up' | 'down';
512
+ }
513
+ /** Quiz analytics */
514
+ export interface QuizAnalytics {
515
+ attempts: number;
516
+ averageScore: number;
517
+ medianScore: number;
518
+ passRate: number;
519
+ averageTime: number;
520
+ questionStats: QuestionStats[];
521
+ }
522
+ /** Question stats */
523
+ export interface QuestionStats {
524
+ questionId: string;
525
+ correctRate: number;
526
+ averageTime: number;
527
+ skippedRate: number;
528
+ discrimination: number;
529
+ }
530
+ /** Question bank */
531
+ export interface QuestionBank {
532
+ id: string;
533
+ name: string;
534
+ description?: string;
535
+ questions: Question[];
536
+ tags: string[];
537
+ subject?: string;
538
+ createdAt: Date;
539
+ updatedAt: Date;
540
+ }
541
+ /** Exam */
542
+ export interface Exam {
543
+ id: string;
544
+ title: string;
545
+ description?: string;
546
+ sections: ExamSection[];
547
+ settings: ExamSettings;
548
+ schedule?: ExamSchedule;
549
+ proctoring?: ProctoringConfig;
550
+ }
551
+ /** Exam section */
552
+ export interface ExamSection {
553
+ id: string;
554
+ title: string;
555
+ instructions?: string;
556
+ questions: Question[];
557
+ timeLimit?: number;
558
+ optional?: boolean;
559
+ }
560
+ /** Exam settings */
561
+ export interface ExamSettings extends QuizSettings {
562
+ lockdownBrowser?: boolean;
563
+ disableCopyPaste?: boolean;
564
+ webcamRequired?: boolean;
565
+ idVerification?: boolean;
566
+ }
567
+ /** Exam schedule */
568
+ export interface ExamSchedule {
569
+ startDate: Date;
570
+ endDate: Date;
571
+ durationMinutes: number;
572
+ accommodations?: ExamAccommodation[];
573
+ }
574
+ /** Exam accommodation */
575
+ export interface ExamAccommodation {
576
+ studentId: string;
577
+ extraTime?: number;
578
+ separateRoom?: boolean;
579
+ notes?: string;
580
+ }
581
+ /** Proctoring config */
582
+ export interface ProctoringConfig {
583
+ enabled: boolean;
584
+ provider?: ProctoringProvider;
585
+ settings?: ProctoringSettings;
586
+ }
587
+ /** Proctoring provider */
588
+ export type ProctoringProvider = 'proctoru' | 'examity' | 'honorlock' | 'native';
589
+ /** Proctoring settings */
590
+ export interface ProctoringSettings {
591
+ webcam?: boolean;
592
+ screenShare?: boolean;
593
+ lockdownBrowser?: boolean;
594
+ idCheck?: boolean;
595
+ aiMonitoring?: boolean;
596
+ }
597
+ /** Whiteboard config */
598
+ export interface WhiteboardConfig {
599
+ width?: number;
600
+ height?: number;
601
+ tools?: WhiteboardTool[];
602
+ collaboration?: CollaborationConfig;
603
+ recording?: RecordingConfig;
604
+ }
605
+ /** Whiteboard tool */
606
+ export interface WhiteboardTool {
607
+ id: string;
608
+ type: WhiteboardToolType;
609
+ enabled: boolean;
610
+ settings?: Record<string, unknown>;
611
+ }
612
+ /** Whiteboard tool type */
613
+ export type WhiteboardToolType = 'pen' | 'highlighter' | 'eraser' | 'text' | 'shape' | 'line' | 'arrow' | 'sticky_note' | 'image' | 'latex' | 'pointer' | 'select';
614
+ /** Collaboration config */
615
+ export interface CollaborationConfig {
616
+ enabled: boolean;
617
+ maxParticipants?: number;
618
+ roles?: CollaborationRole[];
619
+ cursors?: boolean;
620
+ chat?: boolean;
621
+ }
622
+ /** Collaboration role */
623
+ export interface CollaborationRole {
624
+ name: string;
625
+ canDraw?: boolean;
626
+ canErase?: boolean;
627
+ canAddText?: boolean;
628
+ canDelete?: boolean;
629
+ }
630
+ /** Recording config */
631
+ export interface RecordingConfig {
632
+ enabled: boolean;
633
+ autoStart?: boolean;
634
+ format?: 'webm' | 'mp4';
635
+ includeAudio?: boolean;
636
+ }
637
+ /** Flashcard deck */
638
+ export interface FlashcardDeck {
639
+ id: string;
640
+ name: string;
641
+ description?: string;
642
+ cards: Flashcard[];
643
+ algorithm: SpacedRepetitionAlgorithm;
644
+ settings?: FlashcardSettings;
645
+ stats?: DeckStats;
646
+ }
647
+ /** Flashcard */
648
+ export interface Flashcard {
649
+ id: string;
650
+ front: CardContent;
651
+ back: CardContent;
652
+ tags?: string[];
653
+ difficulty?: DifficultyLevel;
654
+ srData?: SpacedRepetitionData;
655
+ }
656
+ /** Card content */
657
+ export interface CardContent {
658
+ text?: string;
659
+ html?: string;
660
+ image?: string;
661
+ audio?: string;
662
+ latex?: string;
663
+ }
664
+ /** Spaced repetition algorithm */
665
+ export type SpacedRepetitionAlgorithm = 'sm2' | 'fsrs' | 'leitner' | 'custom';
666
+ /** Spaced repetition data */
667
+ export interface SpacedRepetitionData {
668
+ interval: number;
669
+ easeFactor: number;
670
+ repetitions: number;
671
+ nextReview: Date;
672
+ lastReview?: Date;
673
+ }
674
+ /** Flashcard settings */
675
+ export interface FlashcardSettings {
676
+ newCardsPerDay?: number;
677
+ reviewsPerDay?: number;
678
+ autoAdvance?: boolean;
679
+ showProgress?: boolean;
680
+ }
681
+ /** Deck stats */
682
+ export interface DeckStats {
683
+ totalCards: number;
684
+ newCards: number;
685
+ learningCards: number;
686
+ reviewCards: number;
687
+ masteredCards: number;
688
+ averageRetention?: number;
689
+ }
690
+ /** Code playground config */
691
+ export interface CodePlaygroundConfig {
692
+ language: ProgrammingLanguage;
693
+ theme?: EditorTheme;
694
+ initialCode?: string;
695
+ testCases?: CodeTestCase[];
696
+ sandbox?: SandboxConfig;
697
+ features?: PlaygroundFeatures;
698
+ }
699
+ /** Programming language */
700
+ export type ProgrammingLanguage = 'python' | 'javascript' | 'typescript' | 'java' | 'cpp' | 'csharp' | 'ruby' | 'go' | 'rust' | 'php' | 'sql' | 'scratch';
701
+ /** Editor theme */
702
+ export type EditorTheme = 'vs' | 'vs-dark' | 'monokai' | 'dracula' | 'github';
703
+ /** Sandbox config */
704
+ export interface SandboxConfig {
705
+ timeout?: number;
706
+ memoryLimit?: number;
707
+ allowNetwork?: boolean;
708
+ allowFileSystem?: boolean;
709
+ }
710
+ /** Playground features */
711
+ export interface PlaygroundFeatures {
712
+ autocomplete?: boolean;
713
+ debugging?: boolean;
714
+ variableInspector?: boolean;
715
+ stepExecution?: boolean;
716
+ console?: boolean;
717
+ visualization?: boolean;
718
+ }
719
+ /** Virtual lab */
720
+ export interface VirtualLab {
721
+ id: string;
722
+ title: string;
723
+ subject: LabSubject;
724
+ simulations: Simulation[];
725
+ instructions?: string;
726
+ objectives?: string[];
727
+ }
728
+ /** Lab subject */
729
+ export type LabSubject = 'physics' | 'chemistry' | 'biology' | 'engineering' | 'computer_science';
730
+ /** Simulation */
731
+ export interface Simulation {
732
+ id: string;
733
+ name: string;
734
+ type: SimulationType;
735
+ parameters: SimParameter[];
736
+ initialState?: Record<string, unknown>;
737
+ }
738
+ /** Simulation type */
739
+ export type SimulationType = 'physics_motion' | 'physics_electricity' | 'chemistry_reaction' | 'chemistry_titration' | 'biology_cell' | 'biology_genetics' | 'circuit';
740
+ /** Simulation parameter */
741
+ export interface SimParameter {
742
+ name: string;
743
+ type: 'number' | 'boolean' | 'select';
744
+ min?: number;
745
+ max?: number;
746
+ step?: number;
747
+ options?: string[];
748
+ default?: unknown;
749
+ unit?: string;
750
+ }
751
+ /** Student dashboard config */
752
+ export interface StudentDashboardConfig {
753
+ widgets?: StudentWidget[];
754
+ layout?: DashboardLayout;
755
+ notifications?: NotificationConfig;
756
+ }
757
+ /** Student widget */
758
+ export type StudentWidget = 'my_courses' | 'upcoming_deadlines' | 'grades' | 'achievements' | 'study_time' | 'calendar' | 'messages' | 'recommendations';
759
+ /** Dashboard layout */
760
+ export interface DashboardLayout {
761
+ columns?: number;
762
+ widgets: WidgetPosition[];
763
+ }
764
+ /** Widget position */
765
+ export interface WidgetPosition {
766
+ widget: string;
767
+ x: number;
768
+ y: number;
769
+ width: number;
770
+ height: number;
771
+ }
772
+ /** Notification config */
773
+ export interface NotificationConfig {
774
+ email?: boolean;
775
+ push?: boolean;
776
+ sms?: boolean;
777
+ types?: NotificationType[];
778
+ }
779
+ /** Notification type */
780
+ export type NotificationType = 'deadline' | 'grade' | 'announcement' | 'message' | 'achievement';
781
+ /** Teacher dashboard config */
782
+ export interface TeacherDashboardConfig {
783
+ widgets?: TeacherWidget[];
784
+ classes?: ClassOverview[];
785
+ gradingQueue?: GradingQueueConfig;
786
+ }
787
+ /** Teacher widget */
788
+ export type TeacherWidget = 'class_overview' | 'student_progress' | 'grading_queue' | 'attendance' | 'announcements' | 'calendar' | 'reports';
789
+ /** Class overview */
790
+ export interface ClassOverview {
791
+ classId: string;
792
+ name: string;
793
+ studentCount: number;
794
+ averageProgress: number;
795
+ upcomingDeadlines: number;
796
+ pendingGrading: number;
797
+ }
798
+ /** Grading queue config */
799
+ export interface GradingQueueConfig {
800
+ sortBy?: 'date' | 'course' | 'type';
801
+ filter?: GradingFilter;
802
+ }
803
+ /** Grading filter */
804
+ export interface GradingFilter {
805
+ courseIds?: string[];
806
+ types?: AssignmentType[];
807
+ dateRange?: DateRange;
808
+ }
809
+ /** Assignment type */
810
+ export type AssignmentType = 'quiz' | 'essay' | 'project' | 'homework' | 'exam';
811
+ /** Date range */
812
+ export interface DateRange {
813
+ start: Date;
814
+ end: Date;
815
+ }
816
+ /** Admin dashboard config */
817
+ export interface AdminDashboardConfig {
818
+ overview?: SchoolOverview;
819
+ analytics?: AnalyticsConfig;
820
+ resources?: ResourceOverview;
821
+ }
822
+ /** School overview */
823
+ export interface SchoolOverview {
824
+ totalStudents: number;
825
+ totalTeachers: number;
826
+ totalCourses: number;
827
+ activeEnrollments: number;
828
+ completionRate: number;
829
+ }
830
+ /** Analytics config */
831
+ export interface AnalyticsConfig {
832
+ metrics?: AnalyticsMetric[];
833
+ dateRange?: DateRange;
834
+ granularity?: 'day' | 'week' | 'month';
835
+ }
836
+ /** Analytics metric */
837
+ export type AnalyticsMetric = 'enrollments' | 'completions' | 'engagement' | 'grades' | 'attendance';
838
+ /** Resource overview */
839
+ export interface ResourceOverview {
840
+ rooms: number;
841
+ equipment: number;
842
+ utilizationRate: number;
843
+ }
844
+ /** Progress tracker config */
845
+ export interface ProgressTrackerConfig {
846
+ trackingMode: TrackingMode;
847
+ competencies?: Competency[];
848
+ milestones?: Milestone[];
849
+ alerts?: ProgressAlert[];
850
+ }
851
+ /** Tracking mode */
852
+ export type TrackingMode = 'mastery' | 'time_based' | 'competency' | 'hybrid';
853
+ /** Competency */
854
+ export interface Competency {
855
+ id: string;
856
+ name: string;
857
+ description?: string;
858
+ skills: Skill[];
859
+ masteryThreshold?: number;
860
+ }
861
+ /** Skill */
862
+ export interface Skill {
863
+ id: string;
864
+ name: string;
865
+ level?: DifficultyLevel;
866
+ assessments?: string[];
867
+ }
868
+ /** Milestone */
869
+ export interface Milestone {
870
+ id: string;
871
+ name: string;
872
+ requirements: MilestoneRequirement[];
873
+ reward?: MilestoneReward;
874
+ }
875
+ /** Milestone requirement */
876
+ export interface MilestoneRequirement {
877
+ type: 'course' | 'skill' | 'score' | 'time';
878
+ referenceId?: string;
879
+ value: number;
880
+ }
881
+ /** Milestone reward */
882
+ export interface MilestoneReward {
883
+ type: 'badge' | 'certificate' | 'points' | 'unlock';
884
+ value?: string | number;
885
+ }
886
+ /** Progress alert */
887
+ export interface ProgressAlert {
888
+ condition: AlertCondition;
889
+ action: AlertAction;
890
+ }
891
+ /** Alert condition */
892
+ export interface AlertCondition {
893
+ type: 'behind' | 'at_risk' | 'inactive' | 'failing';
894
+ threshold?: number;
895
+ duration?: number;
896
+ }
897
+ /** Alert action */
898
+ export interface AlertAction {
899
+ type: 'email' | 'notification' | 'flag' | 'intervention';
900
+ recipients?: string[];
901
+ message?: string;
902
+ }
903
+ /** Student progress */
904
+ export interface StudentProgress {
905
+ studentId: string;
906
+ courseId: string;
907
+ overallProgress: number;
908
+ moduleProgress: ModuleProgress[];
909
+ timeSpent: number;
910
+ lastActive: Date;
911
+ status: ProgressStatus;
912
+ grade?: number;
913
+ competencies?: CompetencyProgress[];
914
+ }
915
+ /** Module progress */
916
+ export interface ModuleProgress {
917
+ moduleId: string;
918
+ progress: number;
919
+ completed: boolean;
920
+ score?: number;
921
+ timeSpent: number;
922
+ }
923
+ /** Progress status */
924
+ export type ProgressStatus = 'on_track' | 'ahead' | 'behind' | 'at_risk' | 'completed';
925
+ /** Competency progress */
926
+ export interface CompetencyProgress {
927
+ competencyId: string;
928
+ mastery: number;
929
+ skills: SkillProgress[];
930
+ }
931
+ /** Skill progress */
932
+ export interface SkillProgress {
933
+ skillId: string;
934
+ level: number;
935
+ assessments: number;
936
+ }
937
+ /** Gradebook config */
938
+ export interface GradebookConfig {
939
+ gradingScale: GradingScale;
940
+ categories: GradeCategory[];
941
+ weightingMode?: WeightingMode;
942
+ dropLowest?: number;
943
+ roundingRule?: RoundingRule;
944
+ }
945
+ /** Grading scale */
946
+ export interface GradingScale {
947
+ type: 'percentage' | 'points' | 'letter' | 'pass_fail';
948
+ thresholds?: GradeThreshold[];
949
+ }
950
+ /** Grade threshold */
951
+ export interface GradeThreshold {
952
+ grade: string;
953
+ minScore: number;
954
+ gpa?: number;
955
+ }
956
+ /** Grade category */
957
+ export interface GradeCategory {
958
+ id: string;
959
+ name: string;
960
+ weight: number;
961
+ dropLowest?: number;
962
+ }
963
+ /** Weighting mode */
964
+ export type WeightingMode = 'percentage' | 'points' | 'equal';
965
+ /** Rounding rule */
966
+ export type RoundingRule = 'none' | 'nearest' | 'up' | 'down' | 'nearest_half';
967
+ /** Timetable config */
968
+ export interface TimetableConfig {
969
+ term: Term;
970
+ constraints: ScheduleConstraint[];
971
+ rooms: Room[];
972
+ autoSchedule?: AutoScheduleConfig;
973
+ }
974
+ /** Schedule constraint */
975
+ export interface ScheduleConstraint {
976
+ type: ConstraintType;
977
+ priority: 'required' | 'preferred' | 'optional';
978
+ parameters: Record<string, unknown>;
979
+ }
980
+ /** Constraint type */
981
+ export type ConstraintType = 'teacher_availability' | 'room_capacity' | 'room_equipment' | 'no_consecutive' | 'preferred_time' | 'lunch_break';
982
+ /** Room */
983
+ export interface Room {
984
+ id: string;
985
+ name: string;
986
+ building?: string;
987
+ floor?: number;
988
+ capacity: number;
989
+ equipment?: string[];
990
+ type?: RoomType;
991
+ available?: Availability[];
992
+ }
993
+ /** Room type */
994
+ export type RoomType = 'classroom' | 'lecture_hall' | 'lab' | 'computer_lab' | 'gym' | 'auditorium';
995
+ /** Availability */
996
+ export interface Availability {
997
+ dayOfWeek: DayOfWeek;
998
+ startTime: string;
999
+ endTime: string;
1000
+ }
1001
+ /** Auto schedule config */
1002
+ export interface AutoScheduleConfig {
1003
+ algorithm: SchedulingAlgorithm;
1004
+ maxIterations?: number;
1005
+ optimizeFor?: OptimizationGoal[];
1006
+ }
1007
+ /** Scheduling algorithm */
1008
+ export type SchedulingAlgorithm = 'genetic' | 'constraint_satisfaction' | 'simulated_annealing';
1009
+ /** Optimization goal */
1010
+ export type OptimizationGoal = 'minimize_gaps' | 'teacher_preferences' | 'room_utilization' | 'student_conflicts';
1011
+ /** Attendance config */
1012
+ export interface AttendanceConfig {
1013
+ methods?: AttendanceMethod[];
1014
+ statuses?: AttendanceStatus[];
1015
+ policies?: AttendancePolicy[];
1016
+ }
1017
+ /** Attendance method */
1018
+ export type AttendanceMethod = 'manual' | 'qr_code' | 'nfc' | 'biometric' | 'geofence';
1019
+ /** Attendance status */
1020
+ export interface AttendanceStatus {
1021
+ id: string;
1022
+ name: string;
1023
+ code: string;
1024
+ counted?: boolean;
1025
+ excusable?: boolean;
1026
+ color?: string;
1027
+ }
1028
+ /** Attendance policy */
1029
+ export interface AttendancePolicy {
1030
+ name: string;
1031
+ minAttendance: number;
1032
+ consequences?: string;
1033
+ exceptions?: string[];
1034
+ }
1035
+ /** Attendance record */
1036
+ export interface AttendanceRecord {
1037
+ id: string;
1038
+ studentId: string;
1039
+ classId: string;
1040
+ date: Date;
1041
+ status: string;
1042
+ checkInTime?: Date;
1043
+ checkOutTime?: Date;
1044
+ excuse?: ExcuseRecord;
1045
+ notes?: string;
1046
+ }
1047
+ /** Excuse record */
1048
+ export interface ExcuseRecord {
1049
+ type: ExcuseType;
1050
+ description?: string;
1051
+ document?: string;
1052
+ approved?: boolean;
1053
+ approvedBy?: string;
1054
+ }
1055
+ /** Excuse type */
1056
+ export type ExcuseType = 'medical' | 'family' | 'school_activity' | 'religious' | 'other';
1057
+ /** SCORM settings */
1058
+ export interface SCORMSettings {
1059
+ version: SCORMVersion;
1060
+ completionCriteria?: SCORMCompletion;
1061
+ tracking?: SCORMTracking;
1062
+ }
1063
+ /** SCORM version */
1064
+ export type SCORMVersion = '1.2' | '2004_3rd' | '2004_4th';
1065
+ /** SCORM completion */
1066
+ export interface SCORMCompletion {
1067
+ threshold?: number;
1068
+ requireScore?: boolean;
1069
+ requireTime?: boolean;
1070
+ }
1071
+ /** SCORM tracking */
1072
+ export interface SCORMTracking {
1073
+ objectives?: boolean;
1074
+ interactions?: boolean;
1075
+ suspendData?: boolean;
1076
+ }
1077
+ /** xAPI settings */
1078
+ export interface xAPISettings {
1079
+ endpoint: string;
1080
+ auth?: xAPIAuth;
1081
+ actor?: xAPIActor;
1082
+ verbMapping?: VerbMapping[];
1083
+ }
1084
+ /** xAPI auth */
1085
+ export interface xAPIAuth {
1086
+ type: 'basic' | 'oauth';
1087
+ username?: string;
1088
+ password?: string;
1089
+ token?: string;
1090
+ }
1091
+ /** xAPI actor */
1092
+ export interface xAPIActor {
1093
+ mbox?: string;
1094
+ name?: string;
1095
+ account?: xAPIAccount;
1096
+ }
1097
+ /** xAPI account */
1098
+ export interface xAPIAccount {
1099
+ homePage: string;
1100
+ name: string;
1101
+ }
1102
+ /** Verb mapping */
1103
+ export interface VerbMapping {
1104
+ action: string;
1105
+ verb: {
1106
+ id: string;
1107
+ display: Record<string, string>;
1108
+ };
1109
+ }
1110
+ /** LMS integration config */
1111
+ export interface LMSIntegrationConfig {
1112
+ provider: LMSProvider;
1113
+ credentials: LMSCredentials;
1114
+ syncConfig?: LMSSyncConfig;
1115
+ }
1116
+ /** LMS provider */
1117
+ export type LMSProvider = 'canvas' | 'moodle' | 'blackboard' | 'google_classroom' | 'microsoft_teams';
1118
+ /** LMS credentials */
1119
+ export interface LMSCredentials {
1120
+ apiUrl: string;
1121
+ apiKey?: string;
1122
+ clientId?: string;
1123
+ clientSecret?: string;
1124
+ accessToken?: string;
1125
+ }
1126
+ /** LMS sync config */
1127
+ export interface LMSSyncConfig {
1128
+ courses?: boolean;
1129
+ users?: boolean;
1130
+ grades?: boolean;
1131
+ assignments?: boolean;
1132
+ syncInterval?: number;
1133
+ direction?: 'import' | 'export' | 'both';
1134
+ }
1135
+ //# sourceMappingURL=education.d.ts.map