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

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-AEZO7MJD.js +127 -0
  2. package/dist/chunk-AEZO7MJD.js.map +1 -0
  3. package/dist/chunk-IR6JUP6L.js +48 -0
  4. package/dist/chunk-IR6JUP6L.js.map +1 -0
  5. package/dist/chunk-PCHAGP5X.js +1 -0
  6. package/dist/contracts/index.cjs +179 -0
  7. package/dist/contracts/index.cjs.map +1 -0
  8. package/dist/contracts/index.d.cts +201 -0
  9. package/dist/contracts/index.d.ts +158 -9677
  10. package/dist/contracts/index.js +22 -1414
  11. package/dist/contracts/index.js.map +1 -1
  12. package/dist/index.cjs +222 -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 +62 -1538
  17. package/dist/index.js.map +1 -1
  18. package/dist/schemas/index.cjs +181 -0
  19. package/dist/schemas/index.cjs.map +1 -0
  20. package/dist/schemas/index.d.cts +145 -0
  21. package/dist/schemas/index.d.ts +130 -1024
  22. package/dist/schemas/index.js +42 -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-PCHAGP5X.js.map} +0 -0
@@ -1,1416 +1,24 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/contracts/index.ts
21
- var contracts_exports = {};
22
- __export(contracts_exports, {
23
- academicsContract: () => academicsContract,
24
- adminContract: () => adminContract,
25
- appContract: () => appContract,
26
- assetsContract: () => assetsContract,
27
- authContract: () => authContract,
28
- branchesContract: () => branchesContract,
29
- commsContract: () => commsContract,
30
- disciplineContract: () => disciplineContract,
31
- financeContract: () => financeContract,
32
- hrContract: () => hrContract,
33
- libraryContract: () => libraryContract,
34
- payrollContract: () => payrollContract,
35
- storageContract: () => storageContract,
36
- studentsContract: () => studentsContract,
37
- transportContract: () => transportContract
38
- });
39
- module.exports = __toCommonJS(contracts_exports);
40
- var import_contract = require("@orpc/contract");
41
- var import_zod2 = require("zod");
42
-
43
- // src/schemas/index.ts
44
- var import_zod = require("zod");
45
- var uuidSchema = import_zod.z.string().uuid();
46
- var paginationSchema = import_zod.z.object({
47
- page: import_zod.z.number().int().min(1).default(1),
48
- limit: import_zod.z.number().int().min(1).max(100).default(20)
49
- });
50
- var dateRangeSchema = import_zod.z.object({
51
- from: import_zod.z.string().datetime().optional(),
52
- to: import_zod.z.string().datetime().optional()
53
- });
54
- var genderEnum = import_zod.z.enum(["male", "female"]);
55
- var userStatusEnum = import_zod.z.enum(["active", "inactive", "suspended"]);
56
- var systemRoleEnum = import_zod.z.enum([
57
- "DIRECTOR",
58
- "PRINCIPAL",
59
- "DEPUTY_PRINCIPAL",
60
- "HOD",
61
- "CLASS_TEACHER",
62
- "SUBJECT_TEACHER",
63
- "BURSAR",
64
- "HR_ADMIN",
65
- "SCHOOL_NURSE",
66
- "LIBRARIAN",
67
- "LAB_TECHNICIAN",
68
- "SPORTS_COACH",
69
- "COUNSELLOR",
70
- "CARETAKER",
71
- "SECURITY",
72
- "KITCHEN_STAFF",
73
- "DRIVER",
74
- "IT_ADMIN",
75
- "STUDENT",
76
- "PARENT",
77
- "ORG_SPONSOR",
78
- "INDIVIDUAL_SPONSOR"
79
- ]);
80
- var loginInputSchema = import_zod.z.object({
81
- email: import_zod.z.string().email(),
82
- password: import_zod.z.string().min(8),
83
- deviceFingerprint: import_zod.z.string().optional()
84
- });
85
- var loginOutputSchema = import_zod.z.object({
86
- accessToken: import_zod.z.string(),
87
- refreshToken: import_zod.z.string().optional(),
88
- user: import_zod.z.object({
89
- id: uuidSchema,
90
- firstName: import_zod.z.string(),
91
- middleName: import_zod.z.string().nullable(),
92
- lastName: import_zod.z.string(),
93
- email: import_zod.z.string().email(),
94
- avatarUrl: import_zod.z.string().nullable(),
95
- roles: import_zod.z.array(
96
- import_zod.z.object({
97
- id: uuidSchema,
98
- name: import_zod.z.string(),
99
- branchId: uuidSchema.nullable()
100
- })
101
- ),
102
- activeBranchId: uuidSchema.nullable(),
103
- isMfaEnabled: import_zod.z.boolean()
104
- })
105
- });
106
- var refreshTokenOutputSchema = import_zod.z.object({
107
- accessToken: import_zod.z.string()
108
- });
109
- var refreshInputSchema = import_zod.z.object({
110
- refreshToken: import_zod.z.string().optional()
111
- });
112
- var mfaVerifyInputSchema = import_zod.z.object({
113
- totp: import_zod.z.string().length(6)
114
- });
115
- var changePasswordInputSchema = import_zod.z.object({
116
- currentPassword: import_zod.z.string().min(8),
117
- newPassword: import_zod.z.string().min(8)
118
- });
119
- var userSchema = import_zod.z.object({
120
- id: uuidSchema,
121
- firstName: import_zod.z.string(),
122
- middleName: import_zod.z.string().nullable(),
123
- lastName: import_zod.z.string(),
124
- email: import_zod.z.string().email(),
125
- phone: import_zod.z.string().nullable(),
126
- avatarUrl: import_zod.z.string().nullable(),
127
- isActive: import_zod.z.boolean(),
128
- isMfaEnabled: import_zod.z.boolean(),
129
- lastLoginAt: import_zod.z.string().datetime().nullable(),
130
- createdAt: import_zod.z.string().datetime()
131
- });
132
- var branchSchema = import_zod.z.object({
133
- id: uuidSchema,
134
- name: import_zod.z.string(),
135
- code: import_zod.z.string(),
136
- address: import_zod.z.string(),
137
- county: import_zod.z.string(),
138
- phone: import_zod.z.string().nullable(),
139
- email: import_zod.z.string().email().nullable(),
140
- logoUrl: import_zod.z.string().nullable(),
141
- motto: import_zod.z.string().nullable(),
142
- principalId: uuidSchema.nullable(),
143
- mpesaPaybill: import_zod.z.string().nullable(),
144
- featureFlags: import_zod.z.record(import_zod.z.boolean()),
145
- createdAt: import_zod.z.string().datetime()
146
- });
147
- var createBranchInputSchema = import_zod.z.object({
148
- name: import_zod.z.string().min(2).max(100),
149
- code: import_zod.z.string().min(2).max(20),
150
- address: import_zod.z.string(),
151
- county: import_zod.z.string(),
152
- phone: import_zod.z.string().optional(),
153
- email: import_zod.z.string().email().optional(),
154
- motto: import_zod.z.string().optional()
155
- });
156
- var studentStatusEnum = import_zod.z.enum([
157
- "active",
158
- "transferred",
159
- "graduated",
160
- "suspended",
161
- "withdrawn"
162
- ]);
163
- var studentSchema = import_zod.z.object({
164
- id: uuidSchema,
165
- branchId: uuidSchema,
166
- admissionNo: import_zod.z.string(),
167
- nemisNo: import_zod.z.string().nullable(),
168
- firstName: import_zod.z.string(),
169
- middleName: import_zod.z.string().nullable(),
170
- lastName: import_zod.z.string(),
171
- dateOfBirth: import_zod.z.string(),
172
- gender: genderEnum,
173
- photoUrl: import_zod.z.string().nullable(),
174
- bloodGroup: import_zod.z.string().nullable(),
175
- admissionDate: import_zod.z.string(),
176
- status: studentStatusEnum,
177
- currentClassId: uuidSchema.nullable(),
178
- createdAt: import_zod.z.string().datetime()
179
- });
180
- var createStudentInputSchema = import_zod.z.object({
181
- admissionNo: import_zod.z.string().min(1),
182
- nemisNo: import_zod.z.string().optional(),
183
- firstName: import_zod.z.string().min(1).max(100),
184
- middleName: import_zod.z.string().max(100).optional(),
185
- lastName: import_zod.z.string().min(1).max(100),
186
- dateOfBirth: import_zod.z.string(),
187
- gender: genderEnum,
188
- admissionDate: import_zod.z.string(),
189
- guardianId: uuidSchema.optional()
190
- });
191
- var listStudentsInputSchema = paginationSchema.extend({
192
- branchId: uuidSchema.optional(),
193
- classId: uuidSchema.optional(),
194
- gradeId: uuidSchema.optional(),
195
- search: import_zod.z.string().optional(),
196
- status: studentStatusEnum.optional(),
197
- termId: uuidSchema.optional()
198
- });
199
- var guardianSchema = import_zod.z.object({
200
- id: uuidSchema,
201
- userId: uuidSchema,
202
- firstName: import_zod.z.string(),
203
- middleName: import_zod.z.string().nullable(),
204
- lastName: import_zod.z.string(),
205
- relationship: import_zod.z.string(),
206
- phone: import_zod.z.string(),
207
- email: import_zod.z.string().email().nullable(),
208
- nationalId: import_zod.z.string().nullable(),
209
- occupation: import_zod.z.string().nullable(),
210
- address: import_zod.z.string().nullable()
211
- });
212
- var sponsorTypeEnum = import_zod.z.enum(["organisation", "individual"]);
213
- var sponsorSchema = import_zod.z.object({
214
- id: uuidSchema,
215
- branchId: uuidSchema,
216
- type: sponsorTypeEnum,
217
- organisationName: import_zod.z.string().nullable(),
218
- firstName: import_zod.z.string().nullable(),
219
- middleName: import_zod.z.string().nullable(),
220
- lastName: import_zod.z.string().nullable(),
221
- contactUserId: uuidSchema.nullable(),
222
- phone: import_zod.z.string(),
223
- email: import_zod.z.string().email().nullable(),
224
- address: import_zod.z.string().nullable()
225
- });
226
- var gradeLevelEnum = import_zod.z.enum([
227
- "PP1",
228
- "PP2",
229
- "G1",
230
- "G2",
231
- "G3",
232
- "G4",
233
- "G5",
234
- "G6",
235
- "G7",
236
- "G8",
237
- "G9"
238
- ]);
239
- var assessmentTypeEnum = import_zod.z.enum([
240
- "formative",
241
- "summative",
242
- "knec_national",
243
- "informal"
244
- ]);
245
- var rubricBandEnum = import_zod.z.enum(["EE", "ME", "AE", "BE"]);
246
- var subjectSchema = import_zod.z.object({
247
- id: uuidSchema,
248
- branchId: uuidSchema,
249
- name: import_zod.z.string(),
250
- code: import_zod.z.string(),
251
- gradeLevel: gradeLevelEnum,
252
- departmentId: uuidSchema.nullable()
253
- });
254
- var assessmentScoreInputSchema = import_zod.z.object({
255
- assessmentId: uuidSchema,
256
- studentId: uuidSchema,
257
- subStrandId: uuidSchema,
258
- numericScore: import_zod.z.number().min(0).max(100),
259
- comments: import_zod.z.string().optional()
260
- });
261
- var reportCardStatusEnum = import_zod.z.enum([
262
- "draft",
263
- "hod_review",
264
- "principal_review",
265
- "released",
266
- "blocked"
267
- ]);
268
- var feeItemCategoryEnum = import_zod.z.enum([
269
- "compulsory",
270
- "class_specific",
271
- "additive"
272
- ]);
273
- var paymentMethodEnum = import_zod.z.enum([
274
- "mpesa",
275
- "bank",
276
- "card",
277
- "cash",
278
- "cheque"
279
- ]);
280
- var invoiceStatusEnum = import_zod.z.enum([
281
- "draft",
282
- "sent",
283
- "partial",
284
- "paid",
285
- "overdue",
286
- "cancelled"
287
- ]);
288
- var feeItemSchema = import_zod.z.object({
289
- id: uuidSchema,
290
- branchId: uuidSchema,
291
- name: import_zod.z.string(),
292
- category: feeItemCategoryEnum,
293
- defaultAmount: import_zod.z.number(),
294
- applicableGrades: import_zod.z.array(gradeLevelEnum),
295
- isActive: import_zod.z.boolean()
296
- });
297
- var recordPaymentInputSchema = import_zod.z.object({
298
- studentId: uuidSchema,
299
- invoiceId: uuidSchema,
300
- amount: import_zod.z.number().positive(),
301
- method: paymentMethodEnum,
302
- reference: import_zod.z.string().optional(),
303
- mpesaReceipt: import_zod.z.string().optional(),
304
- paymentDate: import_zod.z.string()
305
- });
306
- var employmentTypeEnum = import_zod.z.enum([
307
- "permanent",
308
- "contract",
309
- "temporary",
310
- "intern"
311
- ]);
312
- var staffSchema = import_zod.z.object({
313
- id: uuidSchema,
314
- branchId: uuidSchema,
315
- userId: uuidSchema,
316
- firstName: import_zod.z.string(),
317
- middleName: import_zod.z.string().nullable(),
318
- lastName: import_zod.z.string(),
319
- tscNumber: import_zod.z.string().nullable(),
320
- nationalId: import_zod.z.string(),
321
- kraPin: import_zod.z.string().nullable(),
322
- nhifNo: import_zod.z.string().nullable(),
323
- nssfNo: import_zod.z.string().nullable(),
324
- phone: import_zod.z.string(),
325
- departmentId: uuidSchema.nullable(),
326
- designation: import_zod.z.string(),
327
- employmentType: employmentTypeEnum,
328
- contractStart: import_zod.z.string(),
329
- contractEnd: import_zod.z.string().nullable(),
330
- basicSalary: import_zod.z.number(),
331
- houseAllowance: import_zod.z.number().default(0),
332
- transportAllowance: import_zod.z.number().default(0),
333
- bankName: import_zod.z.string().nullable(),
334
- bankAccount: import_zod.z.string().nullable(),
335
- status: userStatusEnum
336
- });
337
- var leaveStatusEnum = import_zod.z.enum([
338
- "pending",
339
- "approved",
340
- "rejected",
341
- "cancelled"
342
- ]);
343
- var leaveRequestInputSchema = import_zod.z.object({
344
- leaveTypeId: uuidSchema,
345
- startDate: import_zod.z.string(),
346
- endDate: import_zod.z.string(),
347
- reason: import_zod.z.string().min(10)
348
- });
349
- var vehicleOwnershipEnum = import_zod.z.enum(["owned", "contracted"]);
350
- var vehicleTypeEnum = import_zod.z.enum(["bus", "van", "pickup", "other"]);
351
- var busRegisterStatusEnum = import_zod.z.enum(["boarded", "alighted", "absent"]);
352
- var tripLogInputSchema = import_zod.z.object({
353
- vehicleId: uuidSchema,
354
- routeId: uuidSchema,
355
- departureTime: import_zod.z.string().datetime(),
356
- tripType: import_zod.z.enum(["morning", "evening", "errand"])
357
- });
358
- var busRegisterEntrySchema = import_zod.z.object({
359
- studentId: uuidSchema,
360
- status: busRegisterStatusEnum
361
- });
362
- var vehicleStatusEnum = import_zod.z.enum(["active", "in_maintenance", "decommissioned"]);
363
- var tripCategoryEnum = import_zod.z.enum(["regular", "special"]);
364
- var tripStatusEnum = import_zod.z.enum(["scheduled", "in_progress", "completed", "cancelled"]);
365
- var transportAppStatusEnum = import_zod.z.enum(["pending", "approved", "rejected", "cancelled"]);
366
- var maintenanceRequestStatusEnum = import_zod.z.enum(["pending", "approved", "rejected", "resolved"]);
367
- var vehicleSchema = import_zod.z.object({
368
- id: uuidSchema,
369
- branchId: uuidSchema,
370
- plateNo: import_zod.z.string(),
371
- make: import_zod.z.string().nullable(),
372
- model: import_zod.z.string().nullable(),
373
- capacity: import_zod.z.number().nullable(),
374
- type: import_zod.z.string(),
375
- ownershipType: vehicleOwnershipEnum,
376
- insuranceExpiry: import_zod.z.string().nullable(),
377
- inspectionDate: import_zod.z.string().nullable(),
378
- status: vehicleStatusEnum,
379
- driverUserId: uuidSchema.nullable(),
380
- notes: import_zod.z.string().nullable(),
381
- createdAt: import_zod.z.string().datetime()
382
- });
383
- var routeSchema = import_zod.z.object({
384
- id: uuidSchema,
385
- branchId: uuidSchema,
386
- name: import_zod.z.string(),
387
- description: import_zod.z.string().nullable(),
388
- isActive: import_zod.z.boolean(),
389
- vehicleId: uuidSchema.nullable(),
390
- routeCategory: import_zod.z.string(),
391
- departureTime: import_zod.z.string().nullable(),
392
- returnTime: import_zod.z.string().nullable(),
393
- fare: import_zod.z.number().nullable(),
394
- vehicle: import_zod.z.object({ plateNo: import_zod.z.string(), type: import_zod.z.string() }).nullable().optional(),
395
- stops: import_zod.z.array(import_zod.z.object({
396
- id: uuidSchema,
397
- stopName: import_zod.z.string(),
398
- stopOrder: import_zod.z.number(),
399
- estimatedTime: import_zod.z.string().nullable()
400
- })).optional(),
401
- roster: import_zod.z.array(import_zod.z.object({
402
- studentId: uuidSchema,
403
- studentName: import_zod.z.string(),
404
- admissionNo: import_zod.z.string(),
405
- pickupStop: import_zod.z.string().nullable(),
406
- dropoffStop: import_zod.z.string().nullable()
407
- })).optional()
408
- });
409
- var tripLogSchema = import_zod.z.object({
410
- id: uuidSchema,
411
- branchId: uuidSchema,
412
- vehicleId: uuidSchema,
413
- routeId: uuidSchema.nullable(),
414
- driverUserId: uuidSchema,
415
- departureTime: import_zod.z.string().datetime(),
416
- arrivalTime: import_zod.z.string().datetime().nullable(),
417
- returnTime: import_zod.z.string().datetime().nullable(),
418
- tripType: import_zod.z.string(),
419
- tripCategory: tripCategoryEnum,
420
- status: tripStatusEnum,
421
- title: import_zod.z.string().nullable(),
422
- description: import_zod.z.string().nullable(),
423
- destination: import_zod.z.string().nullable(),
424
- expectedStudents: import_zod.z.number().nullable(),
425
- notes: import_zod.z.string().nullable(),
426
- createdAt: import_zod.z.string().datetime(),
427
- vehicle: import_zod.z.object({ plateNo: import_zod.z.string(), type: import_zod.z.string() }).optional(),
428
- route: import_zod.z.object({ name: import_zod.z.string() }).nullable().optional()
429
- });
430
- var maintenanceRequestSchema = import_zod.z.object({
431
- id: uuidSchema,
432
- vehicleId: uuidSchema,
433
- requestedBy: uuidSchema,
434
- issue: import_zod.z.string(),
435
- severity: import_zod.z.string(),
436
- status: maintenanceRequestStatusEnum,
437
- reviewedBy: uuidSchema.nullable(),
438
- reviewNotes: import_zod.z.string().nullable(),
439
- reviewedAt: import_zod.z.string().datetime().nullable(),
440
- createdAt: import_zod.z.string().datetime(),
441
- vehiclePlate: import_zod.z.string().optional()
442
- });
443
- var transportApplicationSchema = import_zod.z.object({
444
- id: uuidSchema,
445
- branchId: uuidSchema,
446
- studentId: uuidSchema,
447
- applicationType: import_zod.z.enum(["route", "trip"]),
448
- routeId: uuidSchema.nullable(),
449
- tripLogId: uuidSchema.nullable(),
450
- status: transportAppStatusEnum,
451
- appliedBy: uuidSchema,
452
- reviewedBy: uuidSchema.nullable(),
453
- reviewNotes: import_zod.z.string().nullable(),
454
- feeItemId: uuidSchema.nullable(),
455
- invoiceUpdated: import_zod.z.boolean(),
456
- createdAt: import_zod.z.string().datetime(),
457
- studentName: import_zod.z.string().optional(),
458
- routeName: import_zod.z.string().nullable().optional(),
459
- tripTitle: import_zod.z.string().nullable().optional()
460
- });
461
- var assetCategoryEnum = import_zod.z.enum([
462
- "furniture",
463
- "lab_equipment",
464
- "ict_device",
465
- "vehicle",
466
- "sports_equipment",
467
- "kitchen_equipment",
468
- "musical_instrument",
469
- "classroom_supply",
470
- "library_book",
471
- "other"
472
- ]);
473
- var assetConditionEnum = import_zod.z.enum([
474
- "excellent",
475
- "good",
476
- "fair",
477
- "poor",
478
- "condemned"
479
- ]);
480
- var maintenanceTicketStatusEnum = import_zod.z.enum([
481
- "open",
482
- "in_progress",
483
- "resolved",
484
- "closed"
485
- ]);
486
- var borrowingStatusEnum = import_zod.z.enum([
487
- "active",
488
- "returned",
489
- "overdue",
490
- "lost"
491
- ]);
492
- var incidentSeverityEnum = import_zod.z.enum([
493
- "minor",
494
- "moderate",
495
- "serious",
496
- "critical"
497
- ]);
498
- var incidentStatusEnum = import_zod.z.enum([
499
- "open",
500
- "counsellor_review",
501
- "hod_review",
502
- "principal_ruling",
503
- "resolved"
504
- ]);
505
- var disciplineRulingEnum = import_zod.z.enum([
506
- "verbal_warning",
507
- "written_warning",
508
- "suspension",
509
- "expulsion",
510
- "dismissed"
511
- ]);
512
- var payrollRunStatusEnum = import_zod.z.enum(["draft", "approved", "paid"]);
513
- var notificationTypeEnum = import_zod.z.enum([
514
- "report_card",
515
- "fee_invoice",
516
- "fee_reminder",
517
- "fee_block",
518
- "attendance_absent",
519
- "bus_departed",
520
- "bus_arrived",
521
- "discipline_incident",
522
- "assignment",
523
- "notice",
524
- "leave",
525
- "payslip"
526
- ]);
527
- var sendBulkSmsInputSchema = import_zod.z.object({
528
- branchId: uuidSchema,
529
- message: import_zod.z.string().min(1).max(160),
530
- recipientType: import_zod.z.enum(["class", "grade", "whole_school", "custom"]),
531
- recipientIds: import_zod.z.array(uuidSchema).optional(),
532
- scheduleAt: import_zod.z.string().datetime().optional()
533
- });
534
-
535
- // src/contracts/index.ts
536
- var authContract = {
537
- login: import_contract.oc.input(loginInputSchema).output(loginOutputSchema),
538
- refresh: import_contract.oc.input(refreshInputSchema).output(refreshTokenOutputSchema),
539
- logout: import_contract.oc.output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
540
- me: import_contract.oc.output(
541
- userSchema.extend({
542
- roles: import_zod2.z.array(
543
- import_zod2.z.object({
544
- id: uuidSchema,
545
- name: import_zod2.z.string(),
546
- branchId: uuidSchema.nullable()
547
- })
548
- )
549
- })
550
- ),
551
- verifyMfa: import_contract.oc.input(mfaVerifyInputSchema).output(import_zod2.z.object({ verified: import_zod2.z.boolean() })),
552
- changePassword: import_contract.oc.input(changePasswordInputSchema).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
553
- switchBranch: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema })).output(import_zod2.z.object({ accessToken: import_zod2.z.string() }))
554
- };
555
- var branchesContract = {
556
- list: import_contract.oc.output(import_zod2.z.array(branchSchema)),
557
- get: import_contract.oc.input(import_zod2.z.object({ id: uuidSchema })).output(branchSchema),
558
- create: import_contract.oc.input(createBranchInputSchema).output(branchSchema),
559
- update: import_contract.oc.input(createBranchInputSchema.partial().extend({ id: uuidSchema })).output(branchSchema),
560
- updateFeatureFlags: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema, flags: import_zod2.z.record(import_zod2.z.boolean()) })).output(branchSchema)
561
- };
562
- var studentWithGuardians = studentSchema.extend({
563
- guardians: import_zod2.z.array(guardianSchema),
564
- sponsors: import_zod2.z.array(sponsorSchema),
565
- currentClass: import_zod2.z.object({ id: uuidSchema, name: import_zod2.z.string(), grade: import_zod2.z.string() }).nullable()
566
- });
567
- var studentsContract = {
568
- list: import_contract.oc.input(listStudentsInputSchema).output(
569
- import_zod2.z.object({
570
- data: import_zod2.z.array(studentSchema),
571
- total: import_zod2.z.number(),
572
- page: import_zod2.z.number(),
573
- limit: import_zod2.z.number()
574
- })
575
- ),
576
- get: import_contract.oc.input(import_zod2.z.object({ id: uuidSchema })).output(studentWithGuardians),
577
- create: import_contract.oc.input(createStudentInputSchema).output(studentSchema),
578
- update: import_contract.oc.input(createStudentInputSchema.partial().extend({ id: uuidSchema })).output(studentSchema),
579
- enroll: import_contract.oc.input(
580
- import_zod2.z.object({
581
- studentId: uuidSchema,
582
- classId: uuidSchema,
583
- termId: uuidSchema
584
- })
585
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
586
- transfer: import_contract.oc.input(
587
- import_zod2.z.object({
588
- studentId: uuidSchema,
589
- toBranchId: uuidSchema,
590
- reason: import_zod2.z.string()
591
- })
592
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
593
- linkGuardian: import_contract.oc.input(
594
- import_zod2.z.object({
595
- studentId: uuidSchema,
596
- guardianId: uuidSchema,
597
- isPrimary: import_zod2.z.boolean()
598
- })
599
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
600
- linkSponsor: import_contract.oc.input(
601
- import_zod2.z.object({
602
- studentId: uuidSchema,
603
- sponsorId: uuidSchema,
604
- termId: uuidSchema,
605
- feeItemIds: import_zod2.z.array(uuidSchema)
606
- })
607
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
608
- listGuardians: import_contract.oc.input(
609
- import_zod2.z.object({
610
- branchId: uuidSchema.optional(),
611
- search: import_zod2.z.string().optional()
612
- })
613
- ).output(
614
- import_zod2.z.array(
615
- guardianSchema.extend({
616
- email: import_zod2.z.string().nullable(),
617
- linkedStudents: import_zod2.z.array(
618
- import_zod2.z.object({
619
- id: uuidSchema,
620
- firstName: import_zod2.z.string(),
621
- lastName: import_zod2.z.string(),
622
- admissionNo: import_zod2.z.string(),
623
- status: import_zod2.z.string()
624
- })
625
- )
626
- })
627
- )
628
- ),
629
- createGuardian: import_contract.oc.input(
630
- import_zod2.z.object({
631
- firstName: import_zod2.z.string().min(1),
632
- middleName: import_zod2.z.string().optional(),
633
- lastName: import_zod2.z.string().min(1),
634
- relationship: import_zod2.z.string().min(1),
635
- phone: import_zod2.z.string().min(9),
636
- email: import_zod2.z.string().email().optional(),
637
- nationalId: import_zod2.z.string().optional(),
638
- occupation: import_zod2.z.string().optional(),
639
- address: import_zod2.z.string().optional()
640
- })
641
- ).output(guardianSchema),
642
- listClasses: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema.optional() })).output(
643
- import_zod2.z.array(
644
- import_zod2.z.object({
645
- id: uuidSchema,
646
- name: import_zod2.z.string(),
647
- grade: import_zod2.z.string(),
648
- level: import_zod2.z.string()
649
- })
650
- )
651
- ),
652
- listGrades: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema.optional() })).output(
653
- import_zod2.z.array(
654
- import_zod2.z.object({
655
- id: uuidSchema,
656
- name: import_zod2.z.string(),
657
- level: import_zod2.z.string()
658
- })
659
- )
660
- ),
661
- listTerms: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema.optional() })).output(
662
- import_zod2.z.array(
663
- import_zod2.z.object({
664
- id: uuidSchema,
665
- name: import_zod2.z.string(),
666
- isCurrent: import_zod2.z.boolean(),
667
- startDate: import_zod2.z.string(),
668
- endDate: import_zod2.z.string()
669
- })
670
- )
671
- ),
672
- listSponsors: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema.optional() })).output(import_zod2.z.array(sponsorSchema))
673
- };
674
- var academicsContract = {
675
- subjects: {
676
- list: import_contract.oc.input(
677
- import_zod2.z.object({
678
- branchId: uuidSchema,
679
- gradeLevel: gradeLevelEnum.optional()
680
- })
681
- ).output(import_zod2.z.array(subjectSchema)),
682
- create: import_contract.oc.input(
683
- import_zod2.z.object({
684
- name: import_zod2.z.string(),
685
- code: import_zod2.z.string(),
686
- gradeLevel: gradeLevelEnum,
687
- departmentId: uuidSchema.optional()
688
- })
689
- ).output(subjectSchema)
690
- },
691
- timetable: {
692
- get: import_contract.oc.input(import_zod2.z.object({ classId: uuidSchema, termId: uuidSchema })).output(
693
- import_zod2.z.array(
694
- import_zod2.z.object({
695
- id: uuidSchema,
696
- dayOfWeek: import_zod2.z.number().min(1).max(5),
697
- periodNo: import_zod2.z.number(),
698
- subject: subjectSchema,
699
- teacherName: import_zod2.z.string(),
700
- room: import_zod2.z.string().nullable(),
701
- startTime: import_zod2.z.string(),
702
- endTime: import_zod2.z.string()
703
- })
704
- )
705
- ),
706
- upsert: import_contract.oc.input(
707
- import_zod2.z.object({
708
- classId: uuidSchema,
709
- termId: uuidSchema,
710
- slots: import_zod2.z.array(
711
- import_zod2.z.object({
712
- dayOfWeek: import_zod2.z.number().min(1).max(5),
713
- periodNo: import_zod2.z.number(),
714
- subjectId: uuidSchema,
715
- teacherId: uuidSchema,
716
- room: import_zod2.z.string().optional(),
717
- startTime: import_zod2.z.string(),
718
- endTime: import_zod2.z.string()
719
- })
720
- )
721
- })
722
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
723
- },
724
- assessments: {
725
- list: import_contract.oc.input(
726
- import_zod2.z.object({
727
- classId: uuidSchema,
728
- termId: uuidSchema,
729
- type: assessmentTypeEnum.optional()
730
- })
731
- ).output(
732
- import_zod2.z.array(
733
- import_zod2.z.object({
734
- id: uuidSchema,
735
- title: import_zod2.z.string(),
736
- type: assessmentTypeEnum,
737
- date: import_zod2.z.string(),
738
- maxScore: import_zod2.z.number(),
739
- subjectId: uuidSchema
740
- })
741
- )
742
- ),
743
- create: import_contract.oc.input(
744
- import_zod2.z.object({
745
- title: import_zod2.z.string(),
746
- type: assessmentTypeEnum,
747
- classId: uuidSchema,
748
- subjectId: uuidSchema,
749
- termId: uuidSchema,
750
- date: import_zod2.z.string(),
751
- maxScore: import_zod2.z.number()
752
- })
753
- ).output(import_zod2.z.object({ id: uuidSchema })),
754
- enterScores: import_contract.oc.input(import_zod2.z.object({ scores: import_zod2.z.array(assessmentScoreInputSchema) })).output(import_zod2.z.object({ saved: import_zod2.z.number() }))
755
- },
756
- reportCards: {
757
- list: import_contract.oc.input(
758
- import_zod2.z.object({
759
- branchId: uuidSchema,
760
- termId: uuidSchema,
761
- classId: uuidSchema.optional(),
762
- status: reportCardStatusEnum.optional()
763
- })
764
- ).output(
765
- import_zod2.z.array(
766
- import_zod2.z.object({
767
- id: uuidSchema,
768
- studentId: uuidSchema,
769
- studentName: import_zod2.z.string(),
770
- status: reportCardStatusEnum,
771
- generatedAt: import_zod2.z.string().datetime().nullable()
772
- })
773
- )
774
- ),
775
- get: import_contract.oc.input(import_zod2.z.object({ studentId: uuidSchema, termId: uuidSchema })).output(
776
- import_zod2.z.object({
777
- id: uuidSchema,
778
- studentId: uuidSchema,
779
- termId: uuidSchema,
780
- status: reportCardStatusEnum,
781
- scores: import_zod2.z.array(import_zod2.z.any()),
782
- teacherComments: import_zod2.z.string().nullable(),
783
- generatedAt: import_zod2.z.string().datetime().nullable()
784
- })
785
- ),
786
- updateStatus: import_contract.oc.input(
787
- import_zod2.z.object({
788
- id: uuidSchema,
789
- status: reportCardStatusEnum,
790
- comments: import_zod2.z.string().optional()
791
- })
792
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
793
- },
794
- attendance: {
795
- markClass: import_contract.oc.input(
796
- import_zod2.z.object({
797
- classId: uuidSchema,
798
- date: import_zod2.z.string(),
799
- subjectId: uuidSchema,
800
- records: import_zod2.z.array(
801
- import_zod2.z.object({
802
- studentId: uuidSchema,
803
- present: import_zod2.z.boolean(),
804
- note: import_zod2.z.string().optional()
805
- })
806
- )
807
- })
808
- ).output(import_zod2.z.object({ saved: import_zod2.z.number() })),
809
- getClassAttendance: import_contract.oc.input(
810
- import_zod2.z.object({ classId: uuidSchema, from: import_zod2.z.string(), to: import_zod2.z.string() })
811
- ).output(
812
- import_zod2.z.array(
813
- import_zod2.z.object({
814
- studentId: uuidSchema,
815
- studentName: import_zod2.z.string(),
816
- presentDays: import_zod2.z.number(),
817
- absentDays: import_zod2.z.number(),
818
- percentage: import_zod2.z.number()
819
- })
820
- )
821
- )
822
- }
823
- };
824
- var financeContract = {
825
- feeItems: {
826
- list: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema })).output(import_zod2.z.array(feeItemSchema)),
827
- create: import_contract.oc.input(
828
- import_zod2.z.object({
829
- name: import_zod2.z.string(),
830
- category: import_zod2.z.any(),
831
- defaultAmount: import_zod2.z.number(),
832
- applicableGrades: import_zod2.z.array(gradeLevelEnum)
833
- })
834
- ).output(feeItemSchema)
835
- },
836
- invoices: {
837
- listForStudent: import_contract.oc.input(import_zod2.z.object({ studentId: uuidSchema, termId: uuidSchema.optional() })).output(
838
- import_zod2.z.array(
839
- import_zod2.z.object({
840
- id: uuidSchema,
841
- termId: uuidSchema,
842
- payerType: import_zod2.z.string(),
843
- totalAmount: import_zod2.z.number(),
844
- paidAmount: import_zod2.z.number(),
845
- balance: import_zod2.z.number(),
846
- status: invoiceStatusEnum,
847
- dueDate: import_zod2.z.string().nullable()
848
- })
849
- )
850
- ),
851
- generate: import_contract.oc.input(
852
- import_zod2.z.object({
853
- branchId: uuidSchema,
854
- termId: uuidSchema,
855
- studentIds: import_zod2.z.array(uuidSchema).optional()
856
- })
857
- ).output(import_zod2.z.object({ generated: import_zod2.z.number() }))
858
- },
859
- payments: {
860
- record: import_contract.oc.input(recordPaymentInputSchema).output(import_zod2.z.object({ id: uuidSchema, receipt: import_zod2.z.string() })),
861
- listForStudent: import_contract.oc.input(import_zod2.z.object({ studentId: uuidSchema })).output(
862
- import_zod2.z.array(
863
- import_zod2.z.object({
864
- id: uuidSchema,
865
- amount: import_zod2.z.number(),
866
- method: import_zod2.z.string(),
867
- reference: import_zod2.z.string().nullable(),
868
- paymentDate: import_zod2.z.string(),
869
- createdAt: import_zod2.z.string()
870
- })
871
- )
872
- )
873
- },
874
- blocks: {
875
- list: import_contract.oc.input(
876
- import_zod2.z.object({
877
- branchId: uuidSchema,
878
- termId: uuidSchema,
879
- active: import_zod2.z.boolean().optional()
880
- })
881
- ).output(
882
- import_zod2.z.array(
883
- import_zod2.z.object({
884
- id: uuidSchema,
885
- studentId: uuidSchema,
886
- studentName: import_zod2.z.string(),
887
- blockType: import_zod2.z.string(),
888
- isActive: import_zod2.z.boolean(),
889
- balanceAtBlock: import_zod2.z.number()
890
- })
891
- )
892
- ),
893
- lift: import_contract.oc.input(import_zod2.z.object({ blockId: uuidSchema, reason: import_zod2.z.string() })).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
894
- },
895
- reports: {
896
- termCollection: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema, termId: uuidSchema })).output(
897
- import_zod2.z.object({
898
- totalExpected: import_zod2.z.number(),
899
- totalCollected: import_zod2.z.number(),
900
- totalOutstanding: import_zod2.z.number(),
901
- collectionRate: import_zod2.z.number(),
902
- byPaymentMethod: import_zod2.z.record(import_zod2.z.number())
903
- })
904
- )
905
- }
906
- };
907
- var hrContract = {
908
- staff: {
909
- list: import_contract.oc.input(
910
- paginationSchema.extend({
911
- branchId: uuidSchema,
912
- search: import_zod2.z.string().optional(),
913
- departmentId: uuidSchema.optional()
914
- })
915
- ).output(import_zod2.z.object({ data: import_zod2.z.array(staffSchema), total: import_zod2.z.number() })),
916
- get: import_contract.oc.input(import_zod2.z.object({ id: uuidSchema })).output(staffSchema),
917
- create: import_contract.oc.input(
918
- staffSchema.omit({ id: true }).partial({
919
- contractEnd: true,
920
- tscNumber: true,
921
- kraPin: true,
922
- nhifNo: true,
923
- nssfNo: true,
924
- bankName: true,
925
- bankAccount: true,
926
- departmentId: true
927
- })
928
- ).output(staffSchema)
929
- },
930
- leave: {
931
- request: import_contract.oc.input(leaveRequestInputSchema).output(import_zod2.z.object({ id: uuidSchema })),
932
- list: import_contract.oc.input(
933
- import_zod2.z.object({
934
- branchId: uuidSchema,
935
- staffId: uuidSchema.optional(),
936
- status: leaveStatusEnum.optional()
937
- })
938
- ).output(import_zod2.z.array(import_zod2.z.any())),
939
- approve: import_contract.oc.input(
940
- import_zod2.z.object({
941
- id: uuidSchema,
942
- approved: import_zod2.z.boolean(),
943
- comment: import_zod2.z.string().optional()
944
- })
945
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
946
- },
947
- attendance: {
948
- mark: import_contract.oc.input(
949
- import_zod2.z.object({
950
- staffId: uuidSchema,
951
- date: import_zod2.z.string(),
952
- checkIn: import_zod2.z.string().optional(),
953
- checkOut: import_zod2.z.string().optional(),
954
- status: import_zod2.z.enum(["present", "absent", "late", "half_day"])
955
- })
956
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
957
- getSummary: import_contract.oc.input(
958
- import_zod2.z.object({ staffId: uuidSchema, month: import_zod2.z.number(), year: import_zod2.z.number() })
959
- ).output(
960
- import_zod2.z.object({
961
- presentDays: import_zod2.z.number(),
962
- absentDays: import_zod2.z.number(),
963
- lateDays: import_zod2.z.number()
964
- })
965
- )
966
- }
967
- };
968
- var payrollContract = {
969
- runs: {
970
- list: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema, year: import_zod2.z.number().optional() })).output(
971
- import_zod2.z.array(
972
- import_zod2.z.object({
973
- id: uuidSchema,
974
- month: import_zod2.z.number(),
975
- year: import_zod2.z.number(),
976
- status: payrollRunStatusEnum,
977
- netTotal: import_zod2.z.number()
978
- })
979
- )
980
- ),
981
- initiate: import_contract.oc.input(
982
- import_zod2.z.object({ branchId: uuidSchema, month: import_zod2.z.number(), year: import_zod2.z.number() })
983
- ).output(import_zod2.z.object({ id: uuidSchema, preview: import_zod2.z.array(import_zod2.z.any()) })),
984
- approve: import_contract.oc.input(import_zod2.z.object({ id: uuidSchema })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
985
- getPayslip: import_contract.oc.input(import_zod2.z.object({ payrollRunId: uuidSchema, staffId: uuidSchema })).output(import_zod2.z.object({ url: import_zod2.z.string() }))
986
- }
987
- };
988
- var transportContract = {
989
- vehicles: {
990
- list: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema })).output(import_zod2.z.array(vehicleSchema)),
991
- create: import_contract.oc.input(import_zod2.z.object({
992
- branchId: uuidSchema,
993
- plateNo: import_zod2.z.string().min(1),
994
- type: import_zod2.z.string().min(1),
995
- ownershipType: vehicleOwnershipEnum,
996
- make: import_zod2.z.string().optional(),
997
- model: import_zod2.z.string().optional(),
998
- capacity: import_zod2.z.number().int().positive().optional(),
999
- insuranceExpiry: import_zod2.z.string().optional(),
1000
- inspectionDate: import_zod2.z.string().optional(),
1001
- driverUserId: uuidSchema.optional(),
1002
- notes: import_zod2.z.string().optional()
1003
- })).output(vehicleSchema),
1004
- update: import_contract.oc.input(import_zod2.z.object({
1005
- id: uuidSchema,
1006
- plateNo: import_zod2.z.string().optional(),
1007
- type: import_zod2.z.string().optional(),
1008
- ownershipType: vehicleOwnershipEnum.optional(),
1009
- make: import_zod2.z.string().optional(),
1010
- model: import_zod2.z.string().optional(),
1011
- capacity: import_zod2.z.number().int().positive().optional(),
1012
- insuranceExpiry: import_zod2.z.string().optional(),
1013
- inspectionDate: import_zod2.z.string().optional(),
1014
- driverUserId: uuidSchema.optional(),
1015
- notes: import_zod2.z.string().optional()
1016
- })).output(vehicleSchema),
1017
- updateStatus: import_contract.oc.input(import_zod2.z.object({ id: uuidSchema, status: vehicleStatusEnum })).output(vehicleSchema)
1018
- },
1019
- routes: {
1020
- list: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema })).output(import_zod2.z.array(routeSchema)),
1021
- get: import_contract.oc.input(import_zod2.z.object({ routeId: uuidSchema })).output(routeSchema),
1022
- create: import_contract.oc.input(import_zod2.z.object({
1023
- branchId: uuidSchema,
1024
- name: import_zod2.z.string().min(1),
1025
- description: import_zod2.z.string().optional(),
1026
- vehicleId: uuidSchema.optional(),
1027
- routeCategory: import_zod2.z.string().optional(),
1028
- departureTime: import_zod2.z.string().optional(),
1029
- returnTime: import_zod2.z.string().optional(),
1030
- fare: import_zod2.z.number().optional(),
1031
- stops: import_zod2.z.array(import_zod2.z.object({
1032
- stopName: import_zod2.z.string().min(1),
1033
- stopOrder: import_zod2.z.number().int(),
1034
- estimatedTime: import_zod2.z.string().optional()
1035
- })).optional()
1036
- })).output(routeSchema),
1037
- update: import_contract.oc.input(import_zod2.z.object({
1038
- id: uuidSchema,
1039
- name: import_zod2.z.string().optional(),
1040
- description: import_zod2.z.string().optional(),
1041
- vehicleId: uuidSchema.optional(),
1042
- routeCategory: import_zod2.z.string().optional(),
1043
- departureTime: import_zod2.z.string().optional(),
1044
- returnTime: import_zod2.z.string().optional(),
1045
- fare: import_zod2.z.number().optional()
1046
- })).output(routeSchema),
1047
- toggle: import_contract.oc.input(import_zod2.z.object({ id: uuidSchema, isActive: import_zod2.z.boolean() })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1048
- roster: import_contract.oc.input(import_zod2.z.object({ routeId: uuidSchema, termId: uuidSchema })).output(import_zod2.z.array(import_zod2.z.object({
1049
- studentId: uuidSchema,
1050
- studentName: import_zod2.z.string(),
1051
- admissionNo: import_zod2.z.string(),
1052
- pickupStop: import_zod2.z.string().nullable(),
1053
- dropoffStop: import_zod2.z.string().nullable()
1054
- }))),
1055
- enroll: import_contract.oc.input(import_zod2.z.object({
1056
- studentId: uuidSchema,
1057
- routeId: uuidSchema,
1058
- termId: uuidSchema,
1059
- pickupStopId: uuidSchema.optional(),
1060
- dropoffStopId: uuidSchema.optional()
1061
- })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1062
- unenroll: import_contract.oc.input(import_zod2.z.object({ studentId: uuidSchema, routeId: uuidSchema, termId: uuidSchema })).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
1063
- },
1064
- trips: {
1065
- list: import_contract.oc.input(import_zod2.z.object({
1066
- branchId: uuidSchema,
1067
- date: import_zod2.z.string().optional(),
1068
- vehicleId: uuidSchema.optional(),
1069
- tripCategory: tripCategoryEnum.optional(),
1070
- status: tripStatusEnum.optional()
1071
- })).output(import_zod2.z.array(tripLogSchema)),
1072
- get: import_contract.oc.input(import_zod2.z.object({ tripId: uuidSchema })).output(tripLogSchema.extend({
1073
- boardings: import_zod2.z.array(import_zod2.z.object({
1074
- studentId: uuidSchema,
1075
- studentName: import_zod2.z.string(),
1076
- status: busRegisterStatusEnum,
1077
- recordedAt: import_zod2.z.string().datetime()
1078
- }))
1079
- })),
1080
- create: import_contract.oc.input(import_zod2.z.object({
1081
- branchId: uuidSchema,
1082
- vehicleId: uuidSchema,
1083
- routeId: uuidSchema.optional(),
1084
- tripType: import_zod2.z.string(),
1085
- tripCategory: tripCategoryEnum,
1086
- departureTime: import_zod2.z.string().datetime(),
1087
- returnTime: import_zod2.z.string().datetime().optional(),
1088
- title: import_zod2.z.string().optional(),
1089
- description: import_zod2.z.string().optional(),
1090
- destination: import_zod2.z.string().optional(),
1091
- expectedStudents: import_zod2.z.number().optional(),
1092
- notes: import_zod2.z.string().optional()
1093
- })).output(import_zod2.z.object({ id: uuidSchema })),
1094
- updateStatus: import_contract.oc.input(import_zod2.z.object({ tripId: uuidSchema, status: tripStatusEnum })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1095
- complete: import_contract.oc.input(import_zod2.z.object({ tripId: uuidSchema, arrivalTime: import_zod2.z.string().datetime() })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1096
- recordBoardings: import_contract.oc.input(import_zod2.z.object({
1097
- tripId: uuidSchema,
1098
- entries: import_zod2.z.array(busRegisterEntrySchema)
1099
- })).output(import_zod2.z.object({ saved: import_zod2.z.number() })),
1100
- reportIncident: import_contract.oc.input(import_zod2.z.object({
1101
- tripId: uuidSchema,
1102
- description: import_zod2.z.string(),
1103
- severity: incidentSeverityEnum,
1104
- location: import_zod2.z.string().optional()
1105
- })).output(import_zod2.z.object({ id: uuidSchema })),
1106
- enrollStudent: import_contract.oc.input(import_zod2.z.object({ tripId: uuidSchema, studentId: uuidSchema })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1107
- unenrollStudent: import_contract.oc.input(import_zod2.z.object({ tripId: uuidSchema, studentId: uuidSchema })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1108
- listEnrolled: import_contract.oc.input(import_zod2.z.object({ tripId: uuidSchema })).output(import_zod2.z.array(import_zod2.z.object({
1109
- studentId: uuidSchema,
1110
- studentName: import_zod2.z.string(),
1111
- admissionNo: import_zod2.z.string(),
1112
- status: busRegisterStatusEnum.nullable()
1113
- })))
1114
- },
1115
- maintenance: {
1116
- submit: import_contract.oc.input(import_zod2.z.object({
1117
- vehicleId: uuidSchema,
1118
- issue: import_zod2.z.string().min(5),
1119
- severity: import_zod2.z.enum(["routine", "urgent", "critical"])
1120
- })).output(import_zod2.z.object({ id: uuidSchema })),
1121
- list: import_contract.oc.input(import_zod2.z.object({
1122
- branchId: uuidSchema,
1123
- vehicleId: uuidSchema.optional(),
1124
- status: maintenanceRequestStatusEnum.optional()
1125
- })).output(import_zod2.z.array(maintenanceRequestSchema)),
1126
- review: import_contract.oc.input(import_zod2.z.object({
1127
- id: uuidSchema,
1128
- approved: import_zod2.z.boolean(),
1129
- reviewNotes: import_zod2.z.string().optional()
1130
- })).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1131
- resolve: import_contract.oc.input(import_zod2.z.object({
1132
- id: uuidSchema,
1133
- notes: import_zod2.z.string().optional(),
1134
- cost: import_zod2.z.number().optional()
1135
- })).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
1136
- },
1137
- applications: {
1138
- list: import_contract.oc.input(import_zod2.z.object({
1139
- branchId: uuidSchema,
1140
- status: transportAppStatusEnum.optional(),
1141
- applicationType: import_zod2.z.enum(["route", "trip"]).optional()
1142
- })).output(import_zod2.z.array(transportApplicationSchema)),
1143
- apply: import_contract.oc.input(import_zod2.z.object({
1144
- branchId: uuidSchema,
1145
- studentId: uuidSchema,
1146
- applicationType: import_zod2.z.enum(["route", "trip"]),
1147
- routeId: uuidSchema.optional(),
1148
- tripLogId: uuidSchema.optional(),
1149
- feeItemId: uuidSchema.optional()
1150
- })).output(import_zod2.z.object({ id: uuidSchema })),
1151
- review: import_contract.oc.input(import_zod2.z.object({
1152
- id: uuidSchema,
1153
- approved: import_zod2.z.boolean(),
1154
- reviewNotes: import_zod2.z.string().optional(),
1155
- updateInvoice: import_zod2.z.boolean().optional()
1156
- })).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
1157
- }
1158
- };
1159
- var assetsContract = {
1160
- list: import_contract.oc.input(
1161
- paginationSchema.extend({
1162
- branchId: uuidSchema,
1163
- category: assetCategoryEnum.optional(),
1164
- search: import_zod2.z.string().optional()
1165
- })
1166
- ).output(import_zod2.z.object({ data: import_zod2.z.array(import_zod2.z.any()), total: import_zod2.z.number() })),
1167
- create: import_contract.oc.input(
1168
- import_zod2.z.object({
1169
- name: import_zod2.z.string(),
1170
- category: assetCategoryEnum,
1171
- serialNo: import_zod2.z.string().optional(),
1172
- purchaseDate: import_zod2.z.string(),
1173
- purchaseCost: import_zod2.z.number(),
1174
- supplier: import_zod2.z.string().optional(),
1175
- warrantyExpiry: import_zod2.z.string().optional(),
1176
- condition: assetConditionEnum,
1177
- depreciationRate: import_zod2.z.number().min(0).max(100)
1178
- })
1179
- ).output(import_zod2.z.object({ id: uuidSchema })),
1180
- assign: import_contract.oc.input(
1181
- import_zod2.z.object({
1182
- assetId: uuidSchema,
1183
- staffId: uuidSchema.optional(),
1184
- room: import_zod2.z.string().optional()
1185
- })
1186
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() })),
1187
- ticket: {
1188
- create: import_contract.oc.input(
1189
- import_zod2.z.object({
1190
- assetId: uuidSchema,
1191
- description: import_zod2.z.string(),
1192
- severity: import_zod2.z.string()
1193
- })
1194
- ).output(import_zod2.z.object({ id: uuidSchema })),
1195
- update: import_contract.oc.input(
1196
- import_zod2.z.object({
1197
- ticketId: uuidSchema,
1198
- status: maintenanceTicketStatusEnum,
1199
- notes: import_zod2.z.string().optional(),
1200
- cost: import_zod2.z.number().optional()
1201
- })
1202
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
1203
- }
1204
- };
1205
- var libraryContract = {
1206
- books: {
1207
- list: import_contract.oc.input(
1208
- paginationSchema.extend({
1209
- branchId: uuidSchema,
1210
- search: import_zod2.z.string().optional(),
1211
- available: import_zod2.z.boolean().optional()
1212
- })
1213
- ).output(import_zod2.z.object({ data: import_zod2.z.array(import_zod2.z.any()), total: import_zod2.z.number() })),
1214
- create: import_contract.oc.input(
1215
- import_zod2.z.object({
1216
- isbn: import_zod2.z.string(),
1217
- title: import_zod2.z.string(),
1218
- author: import_zod2.z.string(),
1219
- publisher: import_zod2.z.string().optional(),
1220
- year: import_zod2.z.number().optional(),
1221
- subjectArea: import_zod2.z.string().optional(),
1222
- copiesTotal: import_zod2.z.number().min(1),
1223
- shelfLocation: import_zod2.z.string().optional()
1224
- })
1225
- ).output(import_zod2.z.object({ id: uuidSchema }))
1226
- },
1227
- borrowings: {
1228
- checkout: import_contract.oc.input(
1229
- import_zod2.z.object({
1230
- bookId: uuidSchema,
1231
- borrowerType: import_zod2.z.enum(["student", "staff"]),
1232
- borrowerId: uuidSchema,
1233
- dueDate: import_zod2.z.string()
1234
- })
1235
- ).output(import_zod2.z.object({ id: uuidSchema })),
1236
- return: import_contract.oc.input(
1237
- import_zod2.z.object({ borrowingId: uuidSchema, condition: import_zod2.z.string().optional() })
1238
- ).output(import_zod2.z.object({ fine: import_zod2.z.number() })),
1239
- listOverdue: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema })).output(import_zod2.z.array(import_zod2.z.any()))
1240
- }
1241
- };
1242
- var disciplineContract = {
1243
- incidents: {
1244
- log: import_contract.oc.input(
1245
- import_zod2.z.object({
1246
- studentId: uuidSchema,
1247
- incidentType: import_zod2.z.string(),
1248
- description: import_zod2.z.string(),
1249
- severity: incidentSeverityEnum,
1250
- incidentDate: import_zod2.z.string(),
1251
- requiresCounsellor: import_zod2.z.boolean().default(false)
1252
- })
1253
- ).output(import_zod2.z.object({ id: uuidSchema })),
1254
- list: import_contract.oc.input(
1255
- paginationSchema.extend({
1256
- branchId: uuidSchema,
1257
- studentId: uuidSchema.optional(),
1258
- status: incidentStatusEnum.optional()
1259
- })
1260
- ).output(import_zod2.z.object({ data: import_zod2.z.array(import_zod2.z.any()), total: import_zod2.z.number() })),
1261
- rule: import_contract.oc.input(
1262
- import_zod2.z.object({
1263
- incidentId: uuidSchema,
1264
- ruling: disciplineRulingEnum,
1265
- suspensionDays: import_zod2.z.number().optional(),
1266
- notes: import_zod2.z.string()
1267
- })
1268
- ).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
1269
- }
1270
- };
1271
- var commsContract = {
1272
- notifications: {
1273
- list: import_contract.oc.input(paginationSchema.extend({ unreadOnly: import_zod2.z.boolean().optional() })).output(import_zod2.z.object({ data: import_zod2.z.array(import_zod2.z.any()), unreadCount: import_zod2.z.number() })),
1274
- markRead: import_contract.oc.input(import_zod2.z.object({ ids: import_zod2.z.array(uuidSchema) })).output(import_zod2.z.object({ updated: import_zod2.z.number() }))
1275
- },
1276
- messages: {
1277
- list: import_contract.oc.input(paginationSchema).output(import_zod2.z.array(import_zod2.z.any())),
1278
- send: import_contract.oc.input(
1279
- import_zod2.z.object({
1280
- recipientId: uuidSchema,
1281
- subject: import_zod2.z.string(),
1282
- body: import_zod2.z.string(),
1283
- parentId: uuidSchema.optional()
1284
- })
1285
- ).output(import_zod2.z.object({ id: uuidSchema }))
1286
- },
1287
- sms: {
1288
- send: import_contract.oc.input(sendBulkSmsInputSchema).output(import_zod2.z.object({ queued: import_zod2.z.number() }))
1289
- },
1290
- notices: {
1291
- list: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema, active: import_zod2.z.boolean().optional() })).output(import_zod2.z.array(import_zod2.z.any())),
1292
- create: import_contract.oc.input(
1293
- import_zod2.z.object({
1294
- title: import_zod2.z.string(),
1295
- body: import_zod2.z.string(),
1296
- audienceType: import_zod2.z.string(),
1297
- audienceIds: import_zod2.z.array(uuidSchema).optional(),
1298
- publishAt: import_zod2.z.string().optional(),
1299
- expiresAt: import_zod2.z.string().optional()
1300
- })
1301
- ).output(import_zod2.z.object({ id: uuidSchema }))
1302
- }
1303
- };
1304
- var adminContract = {
1305
- auditLogs: {
1306
- list: import_contract.oc.input(
1307
- paginationSchema.extend({
1308
- branchId: uuidSchema.optional(),
1309
- userId: uuidSchema.optional(),
1310
- action: import_zod2.z.string().optional(),
1311
- from: import_zod2.z.string().optional(),
1312
- to: import_zod2.z.string().optional()
1313
- })
1314
- ).output(import_zod2.z.object({ data: import_zod2.z.array(import_zod2.z.any()), total: import_zod2.z.number() }))
1315
- },
1316
- users: {
1317
- create: import_contract.oc.input(
1318
- import_zod2.z.object({
1319
- firstName: import_zod2.z.string(),
1320
- middleName: import_zod2.z.string().optional(),
1321
- lastName: import_zod2.z.string(),
1322
- email: import_zod2.z.string().email(),
1323
- phone: import_zod2.z.string().optional(),
1324
- roleId: uuidSchema,
1325
- branchId: uuidSchema,
1326
- temporaryPassword: import_zod2.z.string().min(8)
1327
- })
1328
- ).output(import_zod2.z.object({ id: uuidSchema })),
1329
- suspend: import_contract.oc.input(import_zod2.z.object({ userId: uuidSchema, reason: import_zod2.z.string() })).output(import_zod2.z.object({ success: import_zod2.z.boolean() }))
1330
- },
1331
- roles: {
1332
- list: import_contract.oc.input(import_zod2.z.object({ branchId: uuidSchema })).output(
1333
- import_zod2.z.array(
1334
- import_zod2.z.object({
1335
- id: uuidSchema,
1336
- name: import_zod2.z.string(),
1337
- isSystem: import_zod2.z.boolean(),
1338
- permissionCount: import_zod2.z.number()
1339
- })
1340
- )
1341
- ),
1342
- create: import_contract.oc.input(
1343
- import_zod2.z.object({
1344
- name: import_zod2.z.string(),
1345
- description: import_zod2.z.string().optional(),
1346
- permissionIds: import_zod2.z.array(uuidSchema)
1347
- })
1348
- ).output(import_zod2.z.object({ id: uuidSchema }))
1349
- }
1350
- };
1351
- var storageContract = {
1352
- presignUpload: import_contract.oc.input(
1353
- import_zod2.z.object({
1354
- fileName: import_zod2.z.string(),
1355
- mimeType: import_zod2.z.string(),
1356
- category: import_zod2.z.enum([
1357
- "student_photo",
1358
- "staff_photo",
1359
- "document",
1360
- "payslip",
1361
- "report_card",
1362
- "asset_photo",
1363
- "notice_attachment"
1364
- ]),
1365
- resourceId: uuidSchema.optional()
1366
- })
1367
- ).output(
1368
- import_zod2.z.object({
1369
- uploadUrl: import_zod2.z.string(),
1370
- fileKey: import_zod2.z.string(),
1371
- expiresIn: import_zod2.z.number()
1372
- })
1373
- ),
1374
- confirmUpload: import_contract.oc.input(
1375
- import_zod2.z.object({
1376
- fileKey: import_zod2.z.string(),
1377
- resourceId: uuidSchema,
1378
- resourceType: import_zod2.z.string()
1379
- })
1380
- ).output(import_zod2.z.object({ publicUrl: import_zod2.z.string() }))
1381
- };
1382
- var appContract = {
1383
- auth: authContract,
1384
- branches: branchesContract,
1385
- students: studentsContract,
1386
- academics: academicsContract,
1387
- finance: financeContract,
1388
- hr: hrContract,
1389
- payroll: payrollContract,
1390
- transport: transportContract,
1391
- assets: assetsContract,
1392
- library: libraryContract,
1393
- discipline: disciplineContract,
1394
- comms: commsContract,
1395
- admin: adminContract,
1396
- storage: storageContract
1397
- };
1398
- // Annotate the CommonJS export names for ESM import in node:
1399
- 0 && (module.exports = {
1400
- academicsContract,
1401
- adminContract,
1402
- appContract,
1403
- assetsContract,
1
+ import {
1404
2
  authContract,
1405
- branchesContract,
1406
- commsContract,
1407
- disciplineContract,
1408
- financeContract,
1409
- hrContract,
1410
- libraryContract,
1411
- payrollContract,
1412
- storageContract,
1413
- studentsContract,
1414
- transportContract
1415
- });
3
+ changePasswordContract,
4
+ getMeContract,
5
+ loginContract,
6
+ logoutContract,
7
+ refreshTokenContract,
8
+ requestPasswordResetContract,
9
+ resetPasswordContract,
10
+ switchBranchContract
11
+ } from "../chunk-IR6JUP6L.js";
12
+ import "../chunk-AEZO7MJD.js";
13
+ export {
14
+ authContract,
15
+ changePasswordContract,
16
+ getMeContract,
17
+ loginContract,
18
+ logoutContract,
19
+ refreshTokenContract,
20
+ requestPasswordResetContract,
21
+ resetPasswordContract,
22
+ switchBranchContract
23
+ };
1416
24
  //# sourceMappingURL=index.js.map