@brite-future-schools-contracts/contracts 1.0.8 → 2.0.3

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 (40) hide show
  1. package/dist/chunk-3OMU2YSE.js +478 -0
  2. package/dist/chunk-3OMU2YSE.js.map +1 -0
  3. package/dist/chunk-R4XE3SFR.js +1 -0
  4. package/dist/chunk-S3BK5YEH.js +131 -0
  5. package/dist/chunk-S3BK5YEH.js.map +1 -0
  6. package/dist/contracts/index.cjs +592 -0
  7. package/dist/contracts/index.cjs.map +1 -0
  8. package/dist/contracts/index.d.cts +1141 -0
  9. package/dist/contracts/index.d.ts +1069 -9648
  10. package/dist/contracts/index.js +48 -1412
  11. package/dist/contracts/index.js.map +1 -1
  12. package/dist/index.cjs +675 -0
  13. package/dist/index.cjs.map +1 -0
  14. package/dist/index.d.cts +4 -0
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.js +132 -1536
  17. package/dist/index.js.map +1 -1
  18. package/dist/schemas/index.cjs +554 -0
  19. package/dist/schemas/index.cjs.map +1 -0
  20. package/dist/schemas/index.d.cts +708 -0
  21. package/dist/schemas/index.d.ts +664 -995
  22. package/dist/schemas/index.js +86 -640
  23. package/dist/schemas/index.js.map +1 -1
  24. package/package.json +32 -59
  25. package/dist/chunk-M6LF6JUL.mjs +0 -557
  26. package/dist/chunk-M6LF6JUL.mjs.map +0 -1
  27. package/dist/chunk-VC6SCJVW.mjs +0 -935
  28. package/dist/chunk-VC6SCJVW.mjs.map +0 -1
  29. package/dist/contracts/index.d.mts +0 -9720
  30. package/dist/contracts/index.mjs +0 -36
  31. package/dist/index.d.mts +0 -4
  32. package/dist/index.mjs +0 -161
  33. package/dist/index.mjs.map +0 -1
  34. package/dist/schemas/index.d.mts +0 -1039
  35. package/dist/schemas/index.mjs +0 -129
  36. package/dist/schemas/index.mjs.map +0 -1
  37. package/src/contracts/index.ts +0 -1209
  38. package/src/index.ts +0 -2
  39. package/src/schemas/index.ts +0 -586
  40. /package/dist/{contracts/index.mjs.map → chunk-R4XE3SFR.js.map} +0 -0
@@ -0,0 +1,708 @@
1
+ import * as z from 'zod';
2
+
3
+ /**
4
+ * Brite Future Schools — bfs-contracts
5
+ * Base Zod schemas: reusable primitives shared across all domain schemas.
6
+ *
7
+ * Phase History:
8
+ * Phase 0.1 (2026-06-05): Initial creation
9
+ *
10
+ * @module src/schemas/base
11
+ * @since Phase 0.1
12
+ */
13
+
14
+ declare const CuidSchema: z.ZodString;
15
+ declare const UuidSchema: z.ZodUUID;
16
+ declare const TimestampsSchema: z.ZodObject<{
17
+ createdAt: z.ZodISODateTime;
18
+ updatedAt: z.ZodISODateTime;
19
+ }, z.core.$strip>;
20
+ declare const SoftDeleteSchema: z.ZodObject<{
21
+ deletedAt: z.ZodNullable<z.ZodISODateTime>;
22
+ }, z.core.$strip>;
23
+ declare const PaginationInputSchema: z.ZodObject<{
24
+ cursor: z.ZodOptional<z.ZodString>;
25
+ limit: z.ZodDefault<z.ZodInt>;
26
+ }, z.core.$strip>;
27
+ declare function paginatedOutputSchema<T extends z.ZodTypeAny>(itemSchema: T): z.ZodObject<{
28
+ items: z.ZodArray<T>;
29
+ nextCursor: z.ZodNullable<z.ZodString>;
30
+ total: z.ZodInt;
31
+ }, z.core.$strip>;
32
+ declare const BranchRefSchema: z.ZodObject<{
33
+ branchId: z.ZodString;
34
+ }, z.core.$strip>;
35
+ type Timestamps = z.infer<typeof TimestampsSchema>;
36
+ type SoftDelete = z.infer<typeof SoftDeleteSchema>;
37
+ type PaginationInput = z.infer<typeof PaginationInputSchema>;
38
+
39
+ /**
40
+ * Brite Future Schools — bfs-contracts
41
+ * Auth-related Zod schemas.
42
+ *
43
+ * Phase History:
44
+ * Phase 0.1 (2026-06-05): Initial creation
45
+ *
46
+ * @module src/schemas/auth
47
+ * @since Phase 0.1
48
+ */
49
+
50
+ declare const SessionUserRoleSchema: z.ZodObject<{
51
+ id: z.ZodString;
52
+ name: z.ZodString;
53
+ branchId: z.ZodString;
54
+ isPrimary: z.ZodBoolean;
55
+ }, z.core.$strip>;
56
+ declare const SessionUserSubRoleSchema: z.ZodObject<{
57
+ id: z.ZodString;
58
+ name: z.ZodString;
59
+ branchId: z.ZodString;
60
+ }, z.core.$strip>;
61
+ declare const SessionUserOutputSchema: z.ZodObject<{
62
+ id: z.ZodString;
63
+ email: z.ZodEmail;
64
+ firstName: z.ZodString;
65
+ lastName: z.ZodString;
66
+ activeBranchId: z.ZodString;
67
+ roles: z.ZodArray<z.ZodObject<{
68
+ id: z.ZodString;
69
+ name: z.ZodString;
70
+ branchId: z.ZodString;
71
+ isPrimary: z.ZodBoolean;
72
+ }, z.core.$strip>>;
73
+ subRoles: z.ZodArray<z.ZodObject<{
74
+ id: z.ZodString;
75
+ name: z.ZodString;
76
+ branchId: z.ZodString;
77
+ }, z.core.$strip>>;
78
+ isActive: z.ZodBoolean;
79
+ mustChangePassword: z.ZodBoolean;
80
+ }, z.core.$strip>;
81
+ declare const LoginInputSchema: z.ZodObject<{
82
+ email: z.ZodEmail;
83
+ password: z.ZodString;
84
+ branchId: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>;
86
+ declare const LoginOutputSchema: z.ZodObject<{
87
+ accessToken: z.ZodString;
88
+ refreshToken: z.ZodString;
89
+ expiresIn: z.ZodInt;
90
+ user: z.ZodObject<{
91
+ id: z.ZodString;
92
+ email: z.ZodEmail;
93
+ firstName: z.ZodString;
94
+ lastName: z.ZodString;
95
+ activeBranchId: z.ZodString;
96
+ roles: z.ZodArray<z.ZodObject<{
97
+ id: z.ZodString;
98
+ name: z.ZodString;
99
+ branchId: z.ZodString;
100
+ isPrimary: z.ZodBoolean;
101
+ }, z.core.$strip>>;
102
+ subRoles: z.ZodArray<z.ZodObject<{
103
+ id: z.ZodString;
104
+ name: z.ZodString;
105
+ branchId: z.ZodString;
106
+ }, z.core.$strip>>;
107
+ isActive: z.ZodBoolean;
108
+ mustChangePassword: z.ZodBoolean;
109
+ }, z.core.$strip>;
110
+ }, z.core.$strip>;
111
+ declare const RefreshTokenInputSchema: z.ZodObject<{
112
+ refreshToken: z.ZodString;
113
+ }, z.core.$strip>;
114
+ declare const RefreshTokenOutputSchema: z.ZodObject<{
115
+ accessToken: z.ZodString;
116
+ expiresIn: z.ZodInt;
117
+ }, z.core.$strip>;
118
+ declare const LogoutInputSchema: z.ZodObject<{
119
+ refreshToken: z.ZodString;
120
+ }, z.core.$strip>;
121
+ declare const ChangePasswordInputSchema: z.ZodObject<{
122
+ currentPassword: z.ZodString;
123
+ newPassword: z.ZodString;
124
+ confirmPassword: z.ZodString;
125
+ }, z.core.$strip>;
126
+ declare const RequestPasswordResetInputSchema: z.ZodObject<{
127
+ email: z.ZodEmail;
128
+ }, z.core.$strip>;
129
+ declare const ResetPasswordInputSchema: z.ZodObject<{
130
+ token: z.ZodString;
131
+ newPassword: z.ZodString;
132
+ confirmPassword: z.ZodString;
133
+ }, z.core.$strip>;
134
+ declare const SwitchBranchInputSchema: z.ZodObject<{
135
+ branchId: z.ZodString;
136
+ }, z.core.$strip>;
137
+ type LoginInput = z.infer<typeof LoginInputSchema>;
138
+ type LoginOutput = z.infer<typeof LoginOutputSchema>;
139
+ type SessionUserOutput = z.infer<typeof SessionUserOutputSchema>;
140
+ type RefreshTokenInput = z.infer<typeof RefreshTokenInputSchema>;
141
+ type RefreshTokenOutput = z.infer<typeof RefreshTokenOutputSchema>;
142
+ type ChangePasswordInput = z.infer<typeof ChangePasswordInputSchema>;
143
+ type SwitchBranchInput = z.infer<typeof SwitchBranchInputSchema>;
144
+
145
+ /**
146
+ * Brite Future Schools — bfs-contracts
147
+ * HR domain Zod schemas — staff creation, listing, and profiles.
148
+ *
149
+ * Phase History:
150
+ * Phase 1 (2026-06-07): Initial creation — staff.create, staff.list,
151
+ * staff.getById wire types
152
+ *
153
+ * @module src/schemas/hr
154
+ * @since Phase 1
155
+ */
156
+
157
+ declare const EmploymentTypeSchema: z.ZodEnum<{
158
+ permanent: "permanent";
159
+ contract: "contract";
160
+ temporary: "temporary";
161
+ intern: "intern";
162
+ }>;
163
+ declare const RoleNameSchema: z.ZodEnum<{
164
+ PROPRIETOR: "PROPRIETOR";
165
+ DIRECTOR: "DIRECTOR";
166
+ SYSTEM_ADMIN: "SYSTEM_ADMIN";
167
+ PRINCIPAL: "PRINCIPAL";
168
+ DEPUTY_PRINCIPAL: "DEPUTY_PRINCIPAL";
169
+ HOD: "HOD";
170
+ CLASS_TEACHER: "CLASS_TEACHER";
171
+ SUBJECT_TEACHER: "SUBJECT_TEACHER";
172
+ BURSAR: "BURSAR";
173
+ HR_ADMIN: "HR_ADMIN";
174
+ SCHOOL_NURSE: "SCHOOL_NURSE";
175
+ LIBRARIAN: "LIBRARIAN";
176
+ LAB_TECHNICIAN: "LAB_TECHNICIAN";
177
+ SPORTS_COACH: "SPORTS_COACH";
178
+ COUNSELLOR: "COUNSELLOR";
179
+ CARETAKER: "CARETAKER";
180
+ SECURITY: "SECURITY";
181
+ KITCHEN_STAFF: "KITCHEN_STAFF";
182
+ KITCHEN_MANAGER: "KITCHEN_MANAGER";
183
+ DRIVER: "DRIVER";
184
+ IT_ADMIN: "IT_ADMIN";
185
+ BOARDING_MASTER: "BOARDING_MASTER";
186
+ PREFECT: "PREFECT";
187
+ STUDENT: "STUDENT";
188
+ PARENT: "PARENT";
189
+ ORG_SPONSOR: "ORG_SPONSOR";
190
+ INDIVIDUAL_SPONSOR: "INDIVIDUAL_SPONSOR";
191
+ }>;
192
+ declare const CreateStaffInputSchema: z.ZodObject<{
193
+ firstName: z.ZodString;
194
+ middleName: z.ZodOptional<z.ZodString>;
195
+ lastName: z.ZodString;
196
+ email: z.ZodEmail;
197
+ phone: z.ZodString;
198
+ nationalId: z.ZodString;
199
+ roleName: z.ZodEnum<{
200
+ PROPRIETOR: "PROPRIETOR";
201
+ DIRECTOR: "DIRECTOR";
202
+ SYSTEM_ADMIN: "SYSTEM_ADMIN";
203
+ PRINCIPAL: "PRINCIPAL";
204
+ DEPUTY_PRINCIPAL: "DEPUTY_PRINCIPAL";
205
+ HOD: "HOD";
206
+ CLASS_TEACHER: "CLASS_TEACHER";
207
+ SUBJECT_TEACHER: "SUBJECT_TEACHER";
208
+ BURSAR: "BURSAR";
209
+ HR_ADMIN: "HR_ADMIN";
210
+ SCHOOL_NURSE: "SCHOOL_NURSE";
211
+ LIBRARIAN: "LIBRARIAN";
212
+ LAB_TECHNICIAN: "LAB_TECHNICIAN";
213
+ SPORTS_COACH: "SPORTS_COACH";
214
+ COUNSELLOR: "COUNSELLOR";
215
+ CARETAKER: "CARETAKER";
216
+ SECURITY: "SECURITY";
217
+ KITCHEN_STAFF: "KITCHEN_STAFF";
218
+ KITCHEN_MANAGER: "KITCHEN_MANAGER";
219
+ DRIVER: "DRIVER";
220
+ IT_ADMIN: "IT_ADMIN";
221
+ BOARDING_MASTER: "BOARDING_MASTER";
222
+ PREFECT: "PREFECT";
223
+ STUDENT: "STUDENT";
224
+ PARENT: "PARENT";
225
+ ORG_SPONSOR: "ORG_SPONSOR";
226
+ INDIVIDUAL_SPONSOR: "INDIVIDUAL_SPONSOR";
227
+ }>;
228
+ isPrimaryRole: z.ZodDefault<z.ZodBoolean>;
229
+ departmentId: z.ZodOptional<z.ZodUUID>;
230
+ designation: z.ZodString;
231
+ employmentType: z.ZodEnum<{
232
+ permanent: "permanent";
233
+ contract: "contract";
234
+ temporary: "temporary";
235
+ intern: "intern";
236
+ }>;
237
+ contractStart: z.ZodISODate;
238
+ contractEnd: z.ZodOptional<z.ZodISODate>;
239
+ basicSalary: z.ZodNumber;
240
+ houseAllowance: z.ZodDefault<z.ZodNumber>;
241
+ transportAllowance: z.ZodDefault<z.ZodNumber>;
242
+ helbDeduction: z.ZodDefault<z.ZodNumber>;
243
+ saccoDeduction: z.ZodDefault<z.ZodNumber>;
244
+ bankName: z.ZodOptional<z.ZodString>;
245
+ bankAccount: z.ZodOptional<z.ZodString>;
246
+ bankBranch: z.ZodOptional<z.ZodString>;
247
+ tscNumber: z.ZodOptional<z.ZodString>;
248
+ kraPin: z.ZodOptional<z.ZodString>;
249
+ nhifNo: z.ZodOptional<z.ZodString>;
250
+ nssfNo: z.ZodOptional<z.ZodString>;
251
+ }, z.core.$strip>;
252
+ type CreateStaffInput = z.infer<typeof CreateStaffInputSchema>;
253
+ declare const StaffProfileSchema: z.ZodObject<{
254
+ id: z.ZodUUID;
255
+ userId: z.ZodUUID;
256
+ branchId: z.ZodUUID;
257
+ firstName: z.ZodString;
258
+ middleName: z.ZodNullable<z.ZodString>;
259
+ lastName: z.ZodString;
260
+ phone: z.ZodString;
261
+ nationalId: z.ZodString;
262
+ tscNumber: z.ZodNullable<z.ZodString>;
263
+ kraPin: z.ZodNullable<z.ZodString>;
264
+ nhifNo: z.ZodNullable<z.ZodString>;
265
+ nssfNo: z.ZodNullable<z.ZodString>;
266
+ designation: z.ZodString;
267
+ employmentType: z.ZodEnum<{
268
+ permanent: "permanent";
269
+ contract: "contract";
270
+ temporary: "temporary";
271
+ intern: "intern";
272
+ }>;
273
+ contractStart: z.ZodString;
274
+ contractEnd: z.ZodNullable<z.ZodString>;
275
+ basicSalary: z.ZodString;
276
+ houseAllowance: z.ZodString;
277
+ transportAllowance: z.ZodString;
278
+ helbDeduction: z.ZodNullable<z.ZodString>;
279
+ saccoDeduction: z.ZodNullable<z.ZodString>;
280
+ bankName: z.ZodNullable<z.ZodString>;
281
+ bankAccount: z.ZodNullable<z.ZodString>;
282
+ bankBranch: z.ZodNullable<z.ZodString>;
283
+ status: z.ZodString;
284
+ createdAt: z.ZodString;
285
+ email: z.ZodString;
286
+ mustChangePassword: z.ZodBoolean;
287
+ departmentId: z.ZodNullable<z.ZodUUID>;
288
+ departmentName: z.ZodNullable<z.ZodString>;
289
+ roleName: z.ZodNullable<z.ZodEnum<{
290
+ PROPRIETOR: "PROPRIETOR";
291
+ DIRECTOR: "DIRECTOR";
292
+ SYSTEM_ADMIN: "SYSTEM_ADMIN";
293
+ PRINCIPAL: "PRINCIPAL";
294
+ DEPUTY_PRINCIPAL: "DEPUTY_PRINCIPAL";
295
+ HOD: "HOD";
296
+ CLASS_TEACHER: "CLASS_TEACHER";
297
+ SUBJECT_TEACHER: "SUBJECT_TEACHER";
298
+ BURSAR: "BURSAR";
299
+ HR_ADMIN: "HR_ADMIN";
300
+ SCHOOL_NURSE: "SCHOOL_NURSE";
301
+ LIBRARIAN: "LIBRARIAN";
302
+ LAB_TECHNICIAN: "LAB_TECHNICIAN";
303
+ SPORTS_COACH: "SPORTS_COACH";
304
+ COUNSELLOR: "COUNSELLOR";
305
+ CARETAKER: "CARETAKER";
306
+ SECURITY: "SECURITY";
307
+ KITCHEN_STAFF: "KITCHEN_STAFF";
308
+ KITCHEN_MANAGER: "KITCHEN_MANAGER";
309
+ DRIVER: "DRIVER";
310
+ IT_ADMIN: "IT_ADMIN";
311
+ BOARDING_MASTER: "BOARDING_MASTER";
312
+ PREFECT: "PREFECT";
313
+ STUDENT: "STUDENT";
314
+ PARENT: "PARENT";
315
+ ORG_SPONSOR: "ORG_SPONSOR";
316
+ INDIVIDUAL_SPONSOR: "INDIVIDUAL_SPONSOR";
317
+ }>>;
318
+ roleId: z.ZodNullable<z.ZodUUID>;
319
+ }, z.core.$strip>;
320
+ type StaffProfile = z.infer<typeof StaffProfileSchema>;
321
+ declare const StaffListItemSchema: z.ZodObject<{
322
+ id: z.ZodUUID;
323
+ userId: z.ZodUUID;
324
+ firstName: z.ZodString;
325
+ middleName: z.ZodNullable<z.ZodString>;
326
+ lastName: z.ZodString;
327
+ email: z.ZodString;
328
+ phone: z.ZodString;
329
+ designation: z.ZodString;
330
+ employmentType: z.ZodEnum<{
331
+ permanent: "permanent";
332
+ contract: "contract";
333
+ temporary: "temporary";
334
+ intern: "intern";
335
+ }>;
336
+ status: z.ZodString;
337
+ departmentName: z.ZodNullable<z.ZodString>;
338
+ roleName: z.ZodNullable<z.ZodEnum<{
339
+ PROPRIETOR: "PROPRIETOR";
340
+ DIRECTOR: "DIRECTOR";
341
+ SYSTEM_ADMIN: "SYSTEM_ADMIN";
342
+ PRINCIPAL: "PRINCIPAL";
343
+ DEPUTY_PRINCIPAL: "DEPUTY_PRINCIPAL";
344
+ HOD: "HOD";
345
+ CLASS_TEACHER: "CLASS_TEACHER";
346
+ SUBJECT_TEACHER: "SUBJECT_TEACHER";
347
+ BURSAR: "BURSAR";
348
+ HR_ADMIN: "HR_ADMIN";
349
+ SCHOOL_NURSE: "SCHOOL_NURSE";
350
+ LIBRARIAN: "LIBRARIAN";
351
+ LAB_TECHNICIAN: "LAB_TECHNICIAN";
352
+ SPORTS_COACH: "SPORTS_COACH";
353
+ COUNSELLOR: "COUNSELLOR";
354
+ CARETAKER: "CARETAKER";
355
+ SECURITY: "SECURITY";
356
+ KITCHEN_STAFF: "KITCHEN_STAFF";
357
+ KITCHEN_MANAGER: "KITCHEN_MANAGER";
358
+ DRIVER: "DRIVER";
359
+ IT_ADMIN: "IT_ADMIN";
360
+ BOARDING_MASTER: "BOARDING_MASTER";
361
+ PREFECT: "PREFECT";
362
+ STUDENT: "STUDENT";
363
+ PARENT: "PARENT";
364
+ ORG_SPONSOR: "ORG_SPONSOR";
365
+ INDIVIDUAL_SPONSOR: "INDIVIDUAL_SPONSOR";
366
+ }>>;
367
+ createdAt: z.ZodString;
368
+ }, z.core.$strip>;
369
+ type StaffListItem = z.infer<typeof StaffListItemSchema>;
370
+ declare const ListStaffInputSchema: z.ZodObject<{
371
+ cursor: z.ZodOptional<z.ZodString>;
372
+ limit: z.ZodDefault<z.ZodInt>;
373
+ search: z.ZodOptional<z.ZodString>;
374
+ departmentId: z.ZodOptional<z.ZodUUID>;
375
+ roleName: z.ZodOptional<z.ZodEnum<{
376
+ PROPRIETOR: "PROPRIETOR";
377
+ DIRECTOR: "DIRECTOR";
378
+ SYSTEM_ADMIN: "SYSTEM_ADMIN";
379
+ PRINCIPAL: "PRINCIPAL";
380
+ DEPUTY_PRINCIPAL: "DEPUTY_PRINCIPAL";
381
+ HOD: "HOD";
382
+ CLASS_TEACHER: "CLASS_TEACHER";
383
+ SUBJECT_TEACHER: "SUBJECT_TEACHER";
384
+ BURSAR: "BURSAR";
385
+ HR_ADMIN: "HR_ADMIN";
386
+ SCHOOL_NURSE: "SCHOOL_NURSE";
387
+ LIBRARIAN: "LIBRARIAN";
388
+ LAB_TECHNICIAN: "LAB_TECHNICIAN";
389
+ SPORTS_COACH: "SPORTS_COACH";
390
+ COUNSELLOR: "COUNSELLOR";
391
+ CARETAKER: "CARETAKER";
392
+ SECURITY: "SECURITY";
393
+ KITCHEN_STAFF: "KITCHEN_STAFF";
394
+ KITCHEN_MANAGER: "KITCHEN_MANAGER";
395
+ DRIVER: "DRIVER";
396
+ IT_ADMIN: "IT_ADMIN";
397
+ BOARDING_MASTER: "BOARDING_MASTER";
398
+ PREFECT: "PREFECT";
399
+ STUDENT: "STUDENT";
400
+ PARENT: "PARENT";
401
+ ORG_SPONSOR: "ORG_SPONSOR";
402
+ INDIVIDUAL_SPONSOR: "INDIVIDUAL_SPONSOR";
403
+ }>>;
404
+ status: z.ZodOptional<z.ZodEnum<{
405
+ active: "active";
406
+ inactive: "inactive";
407
+ }>>;
408
+ }, z.core.$strip>;
409
+ type ListStaffInput = z.infer<typeof ListStaffInputSchema>;
410
+ declare const CreateStaffOutputSchema: z.ZodObject<{
411
+ staffId: z.ZodUUID;
412
+ userId: z.ZodUUID;
413
+ email: z.ZodString;
414
+ emailSent: z.ZodBoolean;
415
+ }, z.core.$strip>;
416
+ type CreateStaffOutput = z.infer<typeof CreateStaffOutputSchema>;
417
+ declare const DepartmentSchema: z.ZodObject<{
418
+ id: z.ZodUUID;
419
+ branchId: z.ZodUUID;
420
+ name: z.ZodString;
421
+ hodId: z.ZodNullable<z.ZodUUID>;
422
+ }, z.core.$strip>;
423
+ type Department = z.infer<typeof DepartmentSchema>;
424
+ declare const CreateDepartmentInputSchema: z.ZodObject<{
425
+ name: z.ZodString;
426
+ hodId: z.ZodOptional<z.ZodUUID>;
427
+ }, z.core.$strip>;
428
+ type CreateDepartmentInput = z.infer<typeof CreateDepartmentInputSchema>;
429
+
430
+ /**
431
+ * Brite Future Schools — bfs-contracts
432
+ * Students domain Zod schemas.
433
+ *
434
+ * Phase History:
435
+ * Phase 1 (2026-06-07): Initial creation — student create, list,
436
+ * bulk upload, guardian linkage
437
+ *
438
+ * @module src/schemas/students
439
+ * @since Phase 1
440
+ */
441
+
442
+ declare const GenderSchema: z.ZodEnum<{
443
+ male: "male";
444
+ female: "female";
445
+ }>;
446
+ declare const StudentStatusSchema: z.ZodEnum<{
447
+ active: "active";
448
+ transferred: "transferred";
449
+ graduated: "graduated";
450
+ suspended: "suspended";
451
+ withdrawn: "withdrawn";
452
+ }>;
453
+ declare const GradeLevelSchema: z.ZodEnum<{
454
+ PP1: "PP1";
455
+ PP2: "PP2";
456
+ G1: "G1";
457
+ G2: "G2";
458
+ G3: "G3";
459
+ G4: "G4";
460
+ G5: "G5";
461
+ G6: "G6";
462
+ G7: "G7";
463
+ G8: "G8";
464
+ G9: "G9";
465
+ }>;
466
+ declare const CreateStudentInputSchema: z.ZodObject<{
467
+ firstName: z.ZodString;
468
+ middleName: z.ZodOptional<z.ZodString>;
469
+ lastName: z.ZodString;
470
+ dateOfBirth: z.ZodISODate;
471
+ gender: z.ZodEnum<{
472
+ male: "male";
473
+ female: "female";
474
+ }>;
475
+ admissionNo: z.ZodString;
476
+ nemisNo: z.ZodOptional<z.ZodString>;
477
+ admissionDate: z.ZodISODate;
478
+ bloodGroup: z.ZodOptional<z.ZodString>;
479
+ medicalNotes: z.ZodOptional<z.ZodString>;
480
+ classId: z.ZodOptional<z.ZodUUID>;
481
+ termId: z.ZodOptional<z.ZodUUID>;
482
+ guardian: z.ZodOptional<z.ZodObject<{
483
+ firstName: z.ZodString;
484
+ middleName: z.ZodOptional<z.ZodString>;
485
+ lastName: z.ZodString;
486
+ relationship: z.ZodString;
487
+ phone: z.ZodString;
488
+ email: z.ZodOptional<z.ZodEmail>;
489
+ nationalId: z.ZodOptional<z.ZodString>;
490
+ occupation: z.ZodOptional<z.ZodString>;
491
+ }, z.core.$strip>>;
492
+ }, z.core.$strip>;
493
+ type CreateStudentInput = z.infer<typeof CreateStudentInputSchema>;
494
+ declare const StudentProfileSchema: z.ZodObject<{
495
+ id: z.ZodUUID;
496
+ branchId: z.ZodUUID;
497
+ admissionNo: z.ZodString;
498
+ nemisNo: z.ZodNullable<z.ZodString>;
499
+ firstName: z.ZodString;
500
+ middleName: z.ZodNullable<z.ZodString>;
501
+ lastName: z.ZodString;
502
+ dateOfBirth: z.ZodString;
503
+ gender: z.ZodEnum<{
504
+ male: "male";
505
+ female: "female";
506
+ }>;
507
+ photoUrl: z.ZodNullable<z.ZodString>;
508
+ bloodGroup: z.ZodNullable<z.ZodString>;
509
+ medicalNotes: z.ZodNullable<z.ZodString>;
510
+ admissionDate: z.ZodString;
511
+ status: z.ZodEnum<{
512
+ active: "active";
513
+ transferred: "transferred";
514
+ graduated: "graduated";
515
+ suspended: "suspended";
516
+ withdrawn: "withdrawn";
517
+ }>;
518
+ createdAt: z.ZodString;
519
+ currentClass: z.ZodNullable<z.ZodObject<{
520
+ classId: z.ZodUUID;
521
+ className: z.ZodString;
522
+ gradeLevel: z.ZodEnum<{
523
+ PP1: "PP1";
524
+ PP2: "PP2";
525
+ G1: "G1";
526
+ G2: "G2";
527
+ G3: "G3";
528
+ G4: "G4";
529
+ G5: "G5";
530
+ G6: "G6";
531
+ G7: "G7";
532
+ G8: "G8";
533
+ G9: "G9";
534
+ }>;
535
+ termId: z.ZodUUID;
536
+ termName: z.ZodString;
537
+ }, z.core.$strip>>;
538
+ guardians: z.ZodArray<z.ZodObject<{
539
+ id: z.ZodUUID;
540
+ firstName: z.ZodString;
541
+ middleName: z.ZodNullable<z.ZodString>;
542
+ lastName: z.ZodString;
543
+ relationship: z.ZodString;
544
+ phone: z.ZodString;
545
+ email: z.ZodNullable<z.ZodString>;
546
+ isPrimary: z.ZodBoolean;
547
+ }, z.core.$strip>>;
548
+ }, z.core.$strip>;
549
+ type StudentProfile = z.infer<typeof StudentProfileSchema>;
550
+ declare const StudentListItemSchema: z.ZodObject<{
551
+ id: z.ZodUUID;
552
+ admissionNo: z.ZodString;
553
+ firstName: z.ZodString;
554
+ middleName: z.ZodNullable<z.ZodString>;
555
+ lastName: z.ZodString;
556
+ gender: z.ZodEnum<{
557
+ male: "male";
558
+ female: "female";
559
+ }>;
560
+ status: z.ZodEnum<{
561
+ active: "active";
562
+ transferred: "transferred";
563
+ graduated: "graduated";
564
+ suspended: "suspended";
565
+ withdrawn: "withdrawn";
566
+ }>;
567
+ className: z.ZodNullable<z.ZodString>;
568
+ gradeLevel: z.ZodNullable<z.ZodEnum<{
569
+ PP1: "PP1";
570
+ PP2: "PP2";
571
+ G1: "G1";
572
+ G2: "G2";
573
+ G3: "G3";
574
+ G4: "G4";
575
+ G5: "G5";
576
+ G6: "G6";
577
+ G7: "G7";
578
+ G8: "G8";
579
+ G9: "G9";
580
+ }>>;
581
+ primaryGuardianName: z.ZodNullable<z.ZodString>;
582
+ primaryGuardianPhone: z.ZodNullable<z.ZodString>;
583
+ createdAt: z.ZodString;
584
+ }, z.core.$strip>;
585
+ type StudentListItem = z.infer<typeof StudentListItemSchema>;
586
+ declare const ListStudentsInputSchema: z.ZodObject<{
587
+ cursor: z.ZodOptional<z.ZodString>;
588
+ limit: z.ZodDefault<z.ZodInt>;
589
+ search: z.ZodOptional<z.ZodString>;
590
+ classId: z.ZodOptional<z.ZodUUID>;
591
+ gradeLevel: z.ZodOptional<z.ZodEnum<{
592
+ PP1: "PP1";
593
+ PP2: "PP2";
594
+ G1: "G1";
595
+ G2: "G2";
596
+ G3: "G3";
597
+ G4: "G4";
598
+ G5: "G5";
599
+ G6: "G6";
600
+ G7: "G7";
601
+ G8: "G8";
602
+ G9: "G9";
603
+ }>>;
604
+ status: z.ZodOptional<z.ZodEnum<{
605
+ active: "active";
606
+ transferred: "transferred";
607
+ graduated: "graduated";
608
+ suspended: "suspended";
609
+ withdrawn: "withdrawn";
610
+ }>>;
611
+ termId: z.ZodOptional<z.ZodUUID>;
612
+ }, z.core.$strip>;
613
+ type ListStudentsInput = z.infer<typeof ListStudentsInputSchema>;
614
+ /**
615
+ * One row from a CSV bulk upload.
616
+ * Column mapping is flexible — the upload endpoint accepts this shape
617
+ * after the CSV parser maps headers to these field names.
618
+ */
619
+ declare const BulkUploadStudentRowSchema: z.ZodObject<{
620
+ firstName: z.ZodString;
621
+ middleName: z.ZodOptional<z.ZodString>;
622
+ lastName: z.ZodString;
623
+ dateOfBirth: z.ZodString;
624
+ gender: z.ZodString;
625
+ admissionNo: z.ZodString;
626
+ nemisNo: z.ZodOptional<z.ZodString>;
627
+ admissionDate: z.ZodOptional<z.ZodString>;
628
+ bloodGroup: z.ZodOptional<z.ZodString>;
629
+ guardianFirstName: z.ZodOptional<z.ZodString>;
630
+ guardianLastName: z.ZodOptional<z.ZodString>;
631
+ guardianRelationship: z.ZodOptional<z.ZodString>;
632
+ guardianPhone: z.ZodOptional<z.ZodString>;
633
+ guardianEmail: z.ZodOptional<z.ZodString>;
634
+ }, z.core.$strip>;
635
+ type BulkUploadStudentRow = z.infer<typeof BulkUploadStudentRowSchema>;
636
+ declare const BulkUploadStudentsInputSchema: z.ZodObject<{
637
+ classId: z.ZodUUID;
638
+ termId: z.ZodUUID;
639
+ rows: z.ZodArray<z.ZodObject<{
640
+ firstName: z.ZodString;
641
+ middleName: z.ZodOptional<z.ZodString>;
642
+ lastName: z.ZodString;
643
+ dateOfBirth: z.ZodString;
644
+ gender: z.ZodString;
645
+ admissionNo: z.ZodString;
646
+ nemisNo: z.ZodOptional<z.ZodString>;
647
+ admissionDate: z.ZodOptional<z.ZodString>;
648
+ bloodGroup: z.ZodOptional<z.ZodString>;
649
+ guardianFirstName: z.ZodOptional<z.ZodString>;
650
+ guardianLastName: z.ZodOptional<z.ZodString>;
651
+ guardianRelationship: z.ZodOptional<z.ZodString>;
652
+ guardianPhone: z.ZodOptional<z.ZodString>;
653
+ guardianEmail: z.ZodOptional<z.ZodString>;
654
+ }, z.core.$strip>>;
655
+ }, z.core.$strip>;
656
+ type BulkUploadStudentsInput = z.infer<typeof BulkUploadStudentsInputSchema>;
657
+ declare const BulkUploadStudentsOutputSchema: z.ZodObject<{
658
+ created: z.ZodInt;
659
+ skipped: z.ZodInt;
660
+ errors: z.ZodArray<z.ZodObject<{
661
+ row: z.ZodInt;
662
+ admissionNo: z.ZodOptional<z.ZodString>;
663
+ reason: z.ZodString;
664
+ }, z.core.$strip>>;
665
+ }, z.core.$strip>;
666
+ type BulkUploadStudentsOutput = z.infer<typeof BulkUploadStudentsOutputSchema>;
667
+ declare const CreateStudentOutputSchema: z.ZodObject<{
668
+ studentId: z.ZodUUID;
669
+ admissionNo: z.ZodString;
670
+ }, z.core.$strip>;
671
+ type CreateStudentOutput = z.infer<typeof CreateStudentOutputSchema>;
672
+ declare const LinkGuardianInputSchema: z.ZodObject<{
673
+ studentId: z.ZodUUID;
674
+ firstName: z.ZodString;
675
+ middleName: z.ZodOptional<z.ZodString>;
676
+ lastName: z.ZodString;
677
+ relationship: z.ZodString;
678
+ phone: z.ZodString;
679
+ email: z.ZodOptional<z.ZodEmail>;
680
+ nationalId: z.ZodOptional<z.ZodString>;
681
+ occupation: z.ZodOptional<z.ZodString>;
682
+ isPrimary: z.ZodDefault<z.ZodBoolean>;
683
+ }, z.core.$strip>;
684
+ type LinkGuardianInput = z.infer<typeof LinkGuardianInputSchema>;
685
+ declare const ClassSummarySchema: z.ZodObject<{
686
+ id: z.ZodUUID;
687
+ name: z.ZodString;
688
+ gradeLevel: z.ZodEnum<{
689
+ PP1: "PP1";
690
+ PP2: "PP2";
691
+ G1: "G1";
692
+ G2: "G2";
693
+ G3: "G3";
694
+ G4: "G4";
695
+ G5: "G5";
696
+ G6: "G6";
697
+ G7: "G7";
698
+ G8: "G8";
699
+ G9: "G9";
700
+ }>;
701
+ gradeName: z.ZodString;
702
+ capacity: z.ZodNullable<z.ZodNumber>;
703
+ enrolledCount: z.ZodNumber;
704
+ classTeacherId: z.ZodNullable<z.ZodUUID>;
705
+ }, z.core.$strip>;
706
+ type ClassSummary = z.infer<typeof ClassSummarySchema>;
707
+
708
+ export { BranchRefSchema, type BulkUploadStudentRow, BulkUploadStudentRowSchema, type BulkUploadStudentsInput, BulkUploadStudentsInputSchema, type BulkUploadStudentsOutput, BulkUploadStudentsOutputSchema, type ChangePasswordInput, ChangePasswordInputSchema, type ClassSummary, ClassSummarySchema, type CreateDepartmentInput, CreateDepartmentInputSchema, type CreateStaffInput, CreateStaffInputSchema, type CreateStaffOutput, CreateStaffOutputSchema, type CreateStudentInput, CreateStudentInputSchema, type CreateStudentOutput, CreateStudentOutputSchema, CuidSchema, type Department, DepartmentSchema, EmploymentTypeSchema, GenderSchema, GradeLevelSchema, type LinkGuardianInput, LinkGuardianInputSchema, type ListStaffInput, ListStaffInputSchema, type ListStudentsInput, ListStudentsInputSchema, type LoginInput, LoginInputSchema, type LoginOutput, LoginOutputSchema, LogoutInputSchema, type PaginationInput, PaginationInputSchema, type RefreshTokenInput, RefreshTokenInputSchema, type RefreshTokenOutput, RefreshTokenOutputSchema, RequestPasswordResetInputSchema, ResetPasswordInputSchema, RoleNameSchema, type SessionUserOutput, SessionUserOutputSchema, SessionUserRoleSchema, SessionUserSubRoleSchema, type SoftDelete, SoftDeleteSchema, type StaffListItem, StaffListItemSchema, type StaffProfile, StaffProfileSchema, type StudentListItem, StudentListItemSchema, type StudentProfile, StudentProfileSchema, StudentStatusSchema, type SwitchBranchInput, SwitchBranchInputSchema, type Timestamps, TimestampsSchema, UuidSchema, paginatedOutputSchema };