@kernhq/module-hr 0.18.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/contract/capabilities.d.ts.map +1 -1
  2. package/dist/contract/capabilities.js +45 -0
  3. package/dist/contract/capabilities.js.map +1 -1
  4. package/dist/contract/exports.d.ts +459 -0
  5. package/dist/contract/exports.d.ts.map +1 -0
  6. package/dist/contract/exports.js +331 -0
  7. package/dist/contract/exports.js.map +1 -0
  8. package/dist/contract/index.d.ts +2 -0
  9. package/dist/contract/index.d.ts.map +1 -1
  10. package/dist/contract/index.js +2 -0
  11. package/dist/contract/index.js.map +1 -1
  12. package/dist/contract/permissions.d.ts +10 -2
  13. package/dist/contract/permissions.d.ts.map +1 -1
  14. package/dist/contract/permissions.js +44 -5
  15. package/dist/contract/permissions.js.map +1 -1
  16. package/dist/contract/rosters.d.ts +183 -0
  17. package/dist/contract/rosters.d.ts.map +1 -0
  18. package/dist/contract/rosters.js +138 -0
  19. package/dist/contract/rosters.js.map +1 -0
  20. package/dist/contract/router.d.ts +893 -0
  21. package/dist/contract/router.d.ts.map +1 -1
  22. package/dist/contract/router.js +220 -1
  23. package/dist/contract/router.js.map +1 -1
  24. package/dist/server/router.d.ts +1210 -0
  25. package/dist/server/router.d.ts.map +1 -1
  26. package/dist/server/router.js +578 -1
  27. package/dist/server/router.js.map +1 -1
  28. package/dist/server/schema.d.ts +727 -1
  29. package/dist/server/schema.d.ts.map +1 -1
  30. package/dist/server/schema.js +105 -0
  31. package/dist/server/schema.js.map +1 -1
  32. package/dist/server/services/exports.d.ts +321 -0
  33. package/dist/server/services/exports.d.ts.map +1 -0
  34. package/dist/server/services/exports.js +765 -0
  35. package/dist/server/services/exports.js.map +1 -0
  36. package/dist/server/services/rosters.d.ts +166 -0
  37. package/dist/server/services/rosters.d.ts.map +1 -0
  38. package/dist/server/services/rosters.js +268 -0
  39. package/dist/server/services/rosters.js.map +1 -0
  40. package/migrations/0012_rosters.sql +163 -0
  41. package/migrations/meta/0012_snapshot.json +4847 -0
  42. package/migrations/meta/_journal.json +7 -0
  43. package/package.json +1 -1
  44. package/src/client/messages.ts +13 -0
  45. package/src/contract/capabilities.ts +45 -0
  46. package/src/contract/exports.ts +354 -0
  47. package/src/contract/index.ts +2 -0
  48. package/src/contract/permissions.ts +47 -5
  49. package/src/contract/rosters.ts +156 -0
  50. package/src/contract/router.ts +256 -0
@@ -4215,6 +4215,627 @@ export declare const hrContract: {
4215
4215
  }>, Record<never, never>>;
4216
4216
  };
4217
4217
  };
4218
+ /**
4219
+ * Who works which shift on which **date**.
4220
+ *
4221
+ * Separate from `attendance.schedules` rather than folded into it, because the two answer
4222
+ * different questions and only one of them has a weekly period. A schedule is a week that repeats
4223
+ * for ever; a rotation is a cycle of any length anchored to a date, which is the only shape
4224
+ * 4-on-4-off has. Nothing here recomputes hours — grace, rounding, overnight attribution and the
4225
+ * auto-close sweep all stay in attendance, and a roster only decides what the day was meant to be.
4226
+ */
4227
+ rosters: {
4228
+ shifts: {
4229
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4230
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4231
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
4232
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4233
+ name: z.ZodString;
4234
+ code: z.ZodNullable<z.ZodString>;
4235
+ start: z.ZodString;
4236
+ end: z.ZodString;
4237
+ breakMinutes: z.ZodNumber;
4238
+ graceInMinutes: z.ZodNumber;
4239
+ graceOutMinutes: z.ZodNumber;
4240
+ color: z.ZodNullable<z.ZodString>;
4241
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4242
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4243
+ id: z.ZodUUID;
4244
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4245
+ BAD_REQUEST: {
4246
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4247
+ };
4248
+ UNAUTHORIZED: {};
4249
+ FORBIDDEN: {
4250
+ data: z.ZodOptional<z.ZodObject<{
4251
+ permission: z.ZodOptional<z.ZodString>;
4252
+ }, z.core.$strip>>;
4253
+ };
4254
+ NOT_FOUND: {};
4255
+ CONFLICT: {
4256
+ data: z.ZodOptional<z.ZodObject<{
4257
+ reason: z.ZodOptional<z.ZodString>;
4258
+ }, z.core.$strip>>;
4259
+ };
4260
+ RATE_LIMITED: {};
4261
+ MODULE_DISABLED: {
4262
+ data: z.ZodObject<{
4263
+ module: z.ZodString;
4264
+ }, z.core.$strip>;
4265
+ };
4266
+ }>, Record<never, never>>;
4267
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4268
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4269
+ name: z.ZodString;
4270
+ code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4271
+ start: z.ZodString;
4272
+ end: z.ZodString;
4273
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
4274
+ graceInMinutes: z.ZodDefault<z.ZodNumber>;
4275
+ graceOutMinutes: z.ZodDefault<z.ZodNumber>;
4276
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4277
+ }, z.core.$strip>, z.ZodObject<{
4278
+ name: z.ZodString;
4279
+ code: z.ZodNullable<z.ZodString>;
4280
+ start: z.ZodString;
4281
+ end: z.ZodString;
4282
+ breakMinutes: z.ZodNumber;
4283
+ graceInMinutes: z.ZodNumber;
4284
+ graceOutMinutes: z.ZodNumber;
4285
+ color: z.ZodNullable<z.ZodString>;
4286
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4287
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4288
+ id: z.ZodUUID;
4289
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4290
+ BAD_REQUEST: {
4291
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4292
+ };
4293
+ UNAUTHORIZED: {};
4294
+ FORBIDDEN: {
4295
+ data: z.ZodOptional<z.ZodObject<{
4296
+ permission: z.ZodOptional<z.ZodString>;
4297
+ }, z.core.$strip>>;
4298
+ };
4299
+ NOT_FOUND: {};
4300
+ CONFLICT: {
4301
+ data: z.ZodOptional<z.ZodObject<{
4302
+ reason: z.ZodOptional<z.ZodString>;
4303
+ }, z.core.$strip>>;
4304
+ };
4305
+ RATE_LIMITED: {};
4306
+ MODULE_DISABLED: {
4307
+ data: z.ZodObject<{
4308
+ module: z.ZodString;
4309
+ }, z.core.$strip>;
4310
+ };
4311
+ }>, Record<never, never>>;
4312
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4313
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4314
+ shiftId: z.ZodUUID;
4315
+ name: z.ZodOptional<z.ZodString>;
4316
+ code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4317
+ start: z.ZodOptional<z.ZodString>;
4318
+ end: z.ZodOptional<z.ZodString>;
4319
+ breakMinutes: z.ZodOptional<z.ZodNumber>;
4320
+ graceInMinutes: z.ZodOptional<z.ZodNumber>;
4321
+ graceOutMinutes: z.ZodOptional<z.ZodNumber>;
4322
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4323
+ }, z.core.$strip>, z.ZodObject<{
4324
+ name: z.ZodString;
4325
+ code: z.ZodNullable<z.ZodString>;
4326
+ start: z.ZodString;
4327
+ end: z.ZodString;
4328
+ breakMinutes: z.ZodNumber;
4329
+ graceInMinutes: z.ZodNumber;
4330
+ graceOutMinutes: z.ZodNumber;
4331
+ color: z.ZodNullable<z.ZodString>;
4332
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4333
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4334
+ id: z.ZodUUID;
4335
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4336
+ BAD_REQUEST: {
4337
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4338
+ };
4339
+ UNAUTHORIZED: {};
4340
+ FORBIDDEN: {
4341
+ data: z.ZodOptional<z.ZodObject<{
4342
+ permission: z.ZodOptional<z.ZodString>;
4343
+ }, z.core.$strip>>;
4344
+ };
4345
+ NOT_FOUND: {};
4346
+ CONFLICT: {
4347
+ data: z.ZodOptional<z.ZodObject<{
4348
+ reason: z.ZodOptional<z.ZodString>;
4349
+ }, z.core.$strip>>;
4350
+ };
4351
+ RATE_LIMITED: {};
4352
+ MODULE_DISABLED: {
4353
+ data: z.ZodObject<{
4354
+ module: z.ZodString;
4355
+ }, z.core.$strip>;
4356
+ };
4357
+ }>, Record<never, never>>;
4358
+ /**
4359
+ * Archive, never delete. Patterns and stored overrides point at a shift by id, so deleting
4360
+ * one would empty out every day it appears on — past days included.
4361
+ */
4362
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4363
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4364
+ shiftId: z.ZodUUID;
4365
+ }, z.core.$strip>, z.ZodObject<{
4366
+ ok: z.ZodLiteral<true>;
4367
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4368
+ BAD_REQUEST: {
4369
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4370
+ };
4371
+ UNAUTHORIZED: {};
4372
+ FORBIDDEN: {
4373
+ data: z.ZodOptional<z.ZodObject<{
4374
+ permission: z.ZodOptional<z.ZodString>;
4375
+ }, z.core.$strip>>;
4376
+ };
4377
+ NOT_FOUND: {};
4378
+ CONFLICT: {
4379
+ data: z.ZodOptional<z.ZodObject<{
4380
+ reason: z.ZodOptional<z.ZodString>;
4381
+ }, z.core.$strip>>;
4382
+ };
4383
+ RATE_LIMITED: {};
4384
+ MODULE_DISABLED: {
4385
+ data: z.ZodObject<{
4386
+ module: z.ZodString;
4387
+ }, z.core.$strip>;
4388
+ };
4389
+ }>, Record<never, never>>;
4390
+ };
4391
+ patterns: {
4392
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4393
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4394
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
4395
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4396
+ name: z.ZodString;
4397
+ anchorDate: z.ZodISODate;
4398
+ days: z.ZodArray<z.ZodArray<z.ZodUUID>>;
4399
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4400
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4401
+ id: z.ZodUUID;
4402
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4403
+ BAD_REQUEST: {
4404
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4405
+ };
4406
+ UNAUTHORIZED: {};
4407
+ FORBIDDEN: {
4408
+ data: z.ZodOptional<z.ZodObject<{
4409
+ permission: z.ZodOptional<z.ZodString>;
4410
+ }, z.core.$strip>>;
4411
+ };
4412
+ NOT_FOUND: {};
4413
+ CONFLICT: {
4414
+ data: z.ZodOptional<z.ZodObject<{
4415
+ reason: z.ZodOptional<z.ZodString>;
4416
+ }, z.core.$strip>>;
4417
+ };
4418
+ RATE_LIMITED: {};
4419
+ MODULE_DISABLED: {
4420
+ data: z.ZodObject<{
4421
+ module: z.ZodString;
4422
+ }, z.core.$strip>;
4423
+ };
4424
+ }>, Record<never, never>>;
4425
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4426
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4427
+ name: z.ZodString;
4428
+ anchorDate: z.ZodISODate;
4429
+ days: z.ZodArray<z.ZodArray<z.ZodUUID>>;
4430
+ }, z.core.$strip>, z.ZodObject<{
4431
+ name: z.ZodString;
4432
+ anchorDate: z.ZodISODate;
4433
+ days: z.ZodArray<z.ZodArray<z.ZodUUID>>;
4434
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4435
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4436
+ id: z.ZodUUID;
4437
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4438
+ BAD_REQUEST: {
4439
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4440
+ };
4441
+ UNAUTHORIZED: {};
4442
+ FORBIDDEN: {
4443
+ data: z.ZodOptional<z.ZodObject<{
4444
+ permission: z.ZodOptional<z.ZodString>;
4445
+ }, z.core.$strip>>;
4446
+ };
4447
+ NOT_FOUND: {};
4448
+ CONFLICT: {
4449
+ data: z.ZodOptional<z.ZodObject<{
4450
+ reason: z.ZodOptional<z.ZodString>;
4451
+ }, z.core.$strip>>;
4452
+ };
4453
+ RATE_LIMITED: {};
4454
+ MODULE_DISABLED: {
4455
+ data: z.ZodObject<{
4456
+ module: z.ZodString;
4457
+ }, z.core.$strip>;
4458
+ };
4459
+ }>, Record<never, never>>;
4460
+ /**
4461
+ * Editing a rotation moves every crew on it, on every date, at once — which is the point of a
4462
+ * rotation being computed rather than generated, and worth saying out loud on the screen that
4463
+ * does it.
4464
+ */
4465
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4466
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4467
+ patternId: z.ZodUUID;
4468
+ name: z.ZodOptional<z.ZodString>;
4469
+ anchorDate: z.ZodOptional<z.ZodISODate>;
4470
+ days: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUUID>>>;
4471
+ }, z.core.$strip>, z.ZodObject<{
4472
+ name: z.ZodString;
4473
+ anchorDate: z.ZodISODate;
4474
+ days: z.ZodArray<z.ZodArray<z.ZodUUID>>;
4475
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4476
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4477
+ id: z.ZodUUID;
4478
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4479
+ BAD_REQUEST: {
4480
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4481
+ };
4482
+ UNAUTHORIZED: {};
4483
+ FORBIDDEN: {
4484
+ data: z.ZodOptional<z.ZodObject<{
4485
+ permission: z.ZodOptional<z.ZodString>;
4486
+ }, z.core.$strip>>;
4487
+ };
4488
+ NOT_FOUND: {};
4489
+ CONFLICT: {
4490
+ data: z.ZodOptional<z.ZodObject<{
4491
+ reason: z.ZodOptional<z.ZodString>;
4492
+ }, z.core.$strip>>;
4493
+ };
4494
+ RATE_LIMITED: {};
4495
+ MODULE_DISABLED: {
4496
+ data: z.ZodObject<{
4497
+ module: z.ZodString;
4498
+ }, z.core.$strip>;
4499
+ };
4500
+ }>, Record<never, never>>;
4501
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4502
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4503
+ patternId: z.ZodUUID;
4504
+ }, z.core.$strip>, z.ZodObject<{
4505
+ ok: z.ZodLiteral<true>;
4506
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4507
+ BAD_REQUEST: {
4508
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4509
+ };
4510
+ UNAUTHORIZED: {};
4511
+ FORBIDDEN: {
4512
+ data: z.ZodOptional<z.ZodObject<{
4513
+ permission: z.ZodOptional<z.ZodString>;
4514
+ }, z.core.$strip>>;
4515
+ };
4516
+ NOT_FOUND: {};
4517
+ CONFLICT: {
4518
+ data: z.ZodOptional<z.ZodObject<{
4519
+ reason: z.ZodOptional<z.ZodString>;
4520
+ }, z.core.$strip>>;
4521
+ };
4522
+ RATE_LIMITED: {};
4523
+ MODULE_DISABLED: {
4524
+ data: z.ZodObject<{
4525
+ module: z.ZodString;
4526
+ }, z.core.$strip>;
4527
+ };
4528
+ }>, Record<never, never>>;
4529
+ };
4530
+ /** Who is on which rotation, and when. `attendance.schedules` has no equivalent and should. */
4531
+ assignments: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4532
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4533
+ personId: z.ZodOptional<z.ZodUUID>;
4534
+ patternId: z.ZodOptional<z.ZodUUID>;
4535
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4536
+ personId: z.ZodUUID;
4537
+ patternId: z.ZodUUID;
4538
+ effectiveFrom: z.ZodISODate;
4539
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
4540
+ cycleOffset: z.ZodNumber;
4541
+ createdAt: z.ZodISODateTime;
4542
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4543
+ id: z.ZodUUID;
4544
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4545
+ BAD_REQUEST: {
4546
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4547
+ };
4548
+ UNAUTHORIZED: {};
4549
+ FORBIDDEN: {
4550
+ data: z.ZodOptional<z.ZodObject<{
4551
+ permission: z.ZodOptional<z.ZodString>;
4552
+ }, z.core.$strip>>;
4553
+ };
4554
+ NOT_FOUND: {};
4555
+ CONFLICT: {
4556
+ data: z.ZodOptional<z.ZodObject<{
4557
+ reason: z.ZodOptional<z.ZodString>;
4558
+ }, z.core.$strip>>;
4559
+ };
4560
+ RATE_LIMITED: {};
4561
+ MODULE_DISABLED: {
4562
+ data: z.ZodObject<{
4563
+ module: z.ZodString;
4564
+ }, z.core.$strip>;
4565
+ };
4566
+ }>, Record<never, never>>;
4567
+ /**
4568
+ * Put a crew on a rotation.
4569
+ *
4570
+ * Takes a list of people because a rotation is a crew's, not a person's — assigning eleven
4571
+ * people one at a time is eleven chances to get the offset wrong. The previous assignment is
4572
+ * closed the day before, so "which rotation was she on in March" stays answerable.
4573
+ */
4574
+ assign: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4575
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4576
+ patternId: z.ZodUUID;
4577
+ personIds: z.ZodArray<z.ZodUUID>;
4578
+ effectiveFrom: z.ZodISODate;
4579
+ effectiveTo: z.ZodOptional<z.ZodNullable<z.ZodISODate>>;
4580
+ cycleOffset: z.ZodDefault<z.ZodNumber>;
4581
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4582
+ personId: z.ZodUUID;
4583
+ patternId: z.ZodUUID;
4584
+ effectiveFrom: z.ZodISODate;
4585
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
4586
+ cycleOffset: z.ZodNumber;
4587
+ createdAt: z.ZodISODateTime;
4588
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4589
+ id: z.ZodUUID;
4590
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4591
+ BAD_REQUEST: {
4592
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4593
+ };
4594
+ UNAUTHORIZED: {};
4595
+ FORBIDDEN: {
4596
+ data: z.ZodOptional<z.ZodObject<{
4597
+ permission: z.ZodOptional<z.ZodString>;
4598
+ }, z.core.$strip>>;
4599
+ };
4600
+ NOT_FOUND: {};
4601
+ CONFLICT: {
4602
+ data: z.ZodOptional<z.ZodObject<{
4603
+ reason: z.ZodOptional<z.ZodString>;
4604
+ }, z.core.$strip>>;
4605
+ };
4606
+ RATE_LIMITED: {};
4607
+ MODULE_DISABLED: {
4608
+ data: z.ZodObject<{
4609
+ module: z.ZodString;
4610
+ }, z.core.$strip>;
4611
+ };
4612
+ }>, Record<never, never>>;
4613
+ /** Take a crew off its rotation, from the day after `effectiveTo`. Nothing is deleted. */
4614
+ unassign: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4615
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4616
+ personIds: z.ZodArray<z.ZodUUID>;
4617
+ effectiveTo: z.ZodISODate;
4618
+ }, z.core.$strip>, z.ZodObject<{
4619
+ closed: z.ZodNumber;
4620
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4621
+ BAD_REQUEST: {
4622
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4623
+ };
4624
+ UNAUTHORIZED: {};
4625
+ FORBIDDEN: {
4626
+ data: z.ZodOptional<z.ZodObject<{
4627
+ permission: z.ZodOptional<z.ZodString>;
4628
+ }, z.core.$strip>>;
4629
+ };
4630
+ NOT_FOUND: {};
4631
+ CONFLICT: {
4632
+ data: z.ZodOptional<z.ZodObject<{
4633
+ reason: z.ZodOptional<z.ZodString>;
4634
+ }, z.core.$strip>>;
4635
+ };
4636
+ RATE_LIMITED: {};
4637
+ MODULE_DISABLED: {
4638
+ data: z.ZodObject<{
4639
+ module: z.ZodString;
4640
+ }, z.core.$strip>;
4641
+ };
4642
+ }>, Record<never, never>>;
4643
+ /** One person's roster over a range, rotation and overrides already resolved. */
4644
+ days: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4645
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4646
+ personId: z.ZodOptional<z.ZodUUID>;
4647
+ from: z.ZodISODate;
4648
+ to: z.ZodISODate;
4649
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4650
+ personId: z.ZodUUID;
4651
+ businessDate: z.ZodISODate;
4652
+ shifts: z.ZodArray<z.ZodObject<{
4653
+ name: z.ZodString;
4654
+ code: z.ZodNullable<z.ZodString>;
4655
+ start: z.ZodString;
4656
+ end: z.ZodString;
4657
+ breakMinutes: z.ZodNumber;
4658
+ graceInMinutes: z.ZodNumber;
4659
+ graceOutMinutes: z.ZodNumber;
4660
+ color: z.ZodNullable<z.ZodString>;
4661
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4662
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4663
+ id: z.ZodUUID;
4664
+ }, z.core.$strip>>;
4665
+ source: z.ZodEnum<{
4666
+ pattern: "pattern";
4667
+ override: "override";
4668
+ none: "none";
4669
+ }>;
4670
+ note: z.ZodNullable<z.ZodString>;
4671
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4672
+ BAD_REQUEST: {
4673
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4674
+ };
4675
+ UNAUTHORIZED: {};
4676
+ FORBIDDEN: {
4677
+ data: z.ZodOptional<z.ZodObject<{
4678
+ permission: z.ZodOptional<z.ZodString>;
4679
+ }, z.core.$strip>>;
4680
+ };
4681
+ NOT_FOUND: {};
4682
+ CONFLICT: {
4683
+ data: z.ZodOptional<z.ZodObject<{
4684
+ reason: z.ZodOptional<z.ZodString>;
4685
+ }, z.core.$strip>>;
4686
+ };
4687
+ RATE_LIMITED: {};
4688
+ MODULE_DISABLED: {
4689
+ data: z.ZodObject<{
4690
+ module: z.ZodString;
4691
+ }, z.core.$strip>;
4692
+ };
4693
+ }>, Record<never, never>>;
4694
+ /**
4695
+ * Change one day, leaving the rotation alone.
4696
+ *
4697
+ * An empty `shiftIds` is "off that day" and is stored — a planned rest day and a day nothing
4698
+ * rosters at all are different facts, and only one of them is somebody's decision.
4699
+ */
4700
+ set: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4701
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4702
+ personId: z.ZodUUID;
4703
+ businessDate: z.ZodISODate;
4704
+ shiftIds: z.ZodArray<z.ZodUUID>;
4705
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4706
+ }, z.core.$strip>, z.ZodObject<{
4707
+ personId: z.ZodUUID;
4708
+ businessDate: z.ZodISODate;
4709
+ shifts: z.ZodArray<z.ZodObject<{
4710
+ name: z.ZodString;
4711
+ code: z.ZodNullable<z.ZodString>;
4712
+ start: z.ZodString;
4713
+ end: z.ZodString;
4714
+ breakMinutes: z.ZodNumber;
4715
+ graceInMinutes: z.ZodNumber;
4716
+ graceOutMinutes: z.ZodNumber;
4717
+ color: z.ZodNullable<z.ZodString>;
4718
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4719
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4720
+ id: z.ZodUUID;
4721
+ }, z.core.$strip>>;
4722
+ source: z.ZodEnum<{
4723
+ pattern: "pattern";
4724
+ override: "override";
4725
+ none: "none";
4726
+ }>;
4727
+ note: z.ZodNullable<z.ZodString>;
4728
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4729
+ BAD_REQUEST: {
4730
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4731
+ };
4732
+ UNAUTHORIZED: {};
4733
+ FORBIDDEN: {
4734
+ data: z.ZodOptional<z.ZodObject<{
4735
+ permission: z.ZodOptional<z.ZodString>;
4736
+ }, z.core.$strip>>;
4737
+ };
4738
+ NOT_FOUND: {};
4739
+ CONFLICT: {
4740
+ data: z.ZodOptional<z.ZodObject<{
4741
+ reason: z.ZodOptional<z.ZodString>;
4742
+ }, z.core.$strip>>;
4743
+ };
4744
+ RATE_LIMITED: {};
4745
+ MODULE_DISABLED: {
4746
+ data: z.ZodObject<{
4747
+ module: z.ZodString;
4748
+ }, z.core.$strip>;
4749
+ };
4750
+ }>, Record<never, never>>;
4751
+ /** Drop the exception and let the rotation speak for that day again. */
4752
+ clear: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4753
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4754
+ personId: z.ZodUUID;
4755
+ businessDate: z.ZodISODate;
4756
+ }, z.core.$strip>, z.ZodObject<{
4757
+ ok: z.ZodLiteral<true>;
4758
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4759
+ BAD_REQUEST: {
4760
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4761
+ };
4762
+ UNAUTHORIZED: {};
4763
+ FORBIDDEN: {
4764
+ data: z.ZodOptional<z.ZodObject<{
4765
+ permission: z.ZodOptional<z.ZodString>;
4766
+ }, z.core.$strip>>;
4767
+ };
4768
+ NOT_FOUND: {};
4769
+ CONFLICT: {
4770
+ data: z.ZodOptional<z.ZodObject<{
4771
+ reason: z.ZodOptional<z.ZodString>;
4772
+ }, z.core.$strip>>;
4773
+ };
4774
+ RATE_LIMITED: {};
4775
+ MODULE_DISABLED: {
4776
+ data: z.ZodObject<{
4777
+ module: z.ZodString;
4778
+ }, z.core.$strip>;
4779
+ };
4780
+ }>, Record<never, never>>;
4781
+ /**
4782
+ * Who is on which shift, per day — the question a roster exists for and the one a set of weekly
4783
+ * schedules cannot be asked without walking everybody's week.
4784
+ */
4785
+ coverage: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4786
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4787
+ from: z.ZodISODate;
4788
+ to: z.ZodISODate;
4789
+ officeId: z.ZodOptional<z.ZodUUID>;
4790
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4791
+ businessDate: z.ZodISODate;
4792
+ slots: z.ZodArray<z.ZodObject<{
4793
+ shift: z.ZodObject<{
4794
+ name: z.ZodString;
4795
+ code: z.ZodNullable<z.ZodString>;
4796
+ start: z.ZodString;
4797
+ end: z.ZodString;
4798
+ breakMinutes: z.ZodNumber;
4799
+ graceInMinutes: z.ZodNumber;
4800
+ graceOutMinutes: z.ZodNumber;
4801
+ color: z.ZodNullable<z.ZodString>;
4802
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4803
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4804
+ id: z.ZodUUID;
4805
+ }, z.core.$strip>;
4806
+ people: z.ZodArray<z.ZodObject<{
4807
+ personId: z.ZodUUID;
4808
+ displayName: z.ZodString;
4809
+ }, z.core.$strip>>;
4810
+ }, z.core.$strip>>;
4811
+ off: z.ZodArray<z.ZodObject<{
4812
+ personId: z.ZodUUID;
4813
+ displayName: z.ZodString;
4814
+ }, z.core.$strip>>;
4815
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4816
+ BAD_REQUEST: {
4817
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4818
+ };
4819
+ UNAUTHORIZED: {};
4820
+ FORBIDDEN: {
4821
+ data: z.ZodOptional<z.ZodObject<{
4822
+ permission: z.ZodOptional<z.ZodString>;
4823
+ }, z.core.$strip>>;
4824
+ };
4825
+ NOT_FOUND: {};
4826
+ CONFLICT: {
4827
+ data: z.ZodOptional<z.ZodObject<{
4828
+ reason: z.ZodOptional<z.ZodString>;
4829
+ }, z.core.$strip>>;
4830
+ };
4831
+ RATE_LIMITED: {};
4832
+ MODULE_DISABLED: {
4833
+ data: z.ZodObject<{
4834
+ module: z.ZodString;
4835
+ }, z.core.$strip>;
4836
+ };
4837
+ }>, Record<never, never>>;
4838
+ };
4218
4839
  leave: {
4219
4840
  types: {
4220
4841
  list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
@@ -6332,6 +6953,278 @@ export declare const hrContract: {
6332
6953
  };
6333
6954
  }>, Record<never, never>>;
6334
6955
  };
6956
+ /**
6957
+ * The monthly handover to whoever runs payroll, per legal entity, frozen at v1.
6958
+ *
6959
+ * `exports.ts` carries the reasoning; three things about the *shape of the surface* belong here:
6960
+ *
6961
+ * **`legalEntityId` is required, and `periodId` is the range.** `reportInput` makes its slice
6962
+ * optional with a `workspace` default and takes free `from`/`to` dates; neither is available here.
6963
+ * A workspace is not an employer, and a half-month export is a question about a boundary this
6964
+ * module already has an answer for — letting a caller draw their own reintroduces the mixed-finality
6965
+ * problem `ReportFinality` exists to name.
6966
+ *
6967
+ * **`v1` is a procedure, not a parameter.** A later column set ships as `payroll.export.v2` beside
6968
+ * this one, with this one unchanged, and both live through at least one deprecation window. A
6969
+ * `?version=` on one mutable procedure would make the frozen path a branch inside a function three
6970
+ * people will edit, and freezing by intention has never worked.
6971
+ *
6972
+ * **Both cost three keys.** `hr.payroll.export`, which ships granted to nobody, plus
6973
+ * `hr.attendance.view_team` for the hours file and `hr.leave.view_team` for the leave file — the
6974
+ * same second-check rule the reports follow, because an export must not answer what the row-level
6975
+ * procedure would refuse.
6976
+ */
6977
+ payroll: {
6978
+ export: {
6979
+ /**
6980
+ * One entity, one period, two CSVs and a manifest.
6981
+ *
6982
+ * Refuses an open period unless `draft` is set, refuses an entity with nobody in it, and
6983
+ * refuses a person with no employment row covering their days here — because a row of zeros is
6984
+ * something a payroll clerk will pay from, and an error is not.
6985
+ */
6986
+ v1: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
6987
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
6988
+ legalEntityId: z.ZodUUID;
6989
+ periodId: z.ZodUUID;
6990
+ draft: z.ZodDefault<z.ZodBoolean>;
6991
+ }, z.core.$strip>, z.ZodObject<{
6992
+ manifest: z.ZodObject<{
6993
+ contract: z.ZodLiteral<"kern-payroll-v1">;
6994
+ generatedAt: z.ZodISODateTime;
6995
+ kernVersion: z.ZodString;
6996
+ finality: z.ZodEnum<{
6997
+ draft: "draft";
6998
+ final: "final";
6999
+ }>;
7000
+ draft: z.ZodBoolean;
7001
+ legalEntityId: z.ZodUUID;
7002
+ legalEntityName: z.ZodString;
7003
+ country: z.ZodString;
7004
+ currency: z.ZodNullable<z.ZodString>;
7005
+ periodId: z.ZodUUID;
7006
+ periodStart: z.ZodISODate;
7007
+ periodEnd: z.ZodISODate;
7008
+ periodStatus: z.ZodEnum<{
7009
+ locked: "locked";
7010
+ open: "open";
7011
+ }>;
7012
+ population: z.ZodNumber;
7013
+ counted: z.ZodNumber;
7014
+ scope: z.ZodObject<{
7015
+ permissions: z.ZodArray<z.ZodString>;
7016
+ askedAt: z.ZodLiteral<"workspace">;
7017
+ }, z.core.$strip>;
7018
+ attendance: z.ZodObject<{
7019
+ lockedDays: z.ZodNumber;
7020
+ openDays: z.ZodNumber;
7021
+ final: z.ZodBoolean;
7022
+ firstOpenDay: z.ZodNullable<z.ZodISODate>;
7023
+ lastLockedDay: z.ZodNullable<z.ZodISODate>;
7024
+ }, z.core.$strip>;
7025
+ dayLengthMinutes: z.ZodNumber;
7026
+ format: z.ZodObject<{
7027
+ encoding: z.ZodLiteral<"utf-8">;
7028
+ byteOrderMark: z.ZodLiteral<true>;
7029
+ delimiter: z.ZodLiteral<",">;
7030
+ lineEnding: z.ZodLiteral<"crlf">;
7031
+ quoting: z.ZodLiteral<"rfc4180">;
7032
+ decimalSeparator: z.ZodLiteral<".">;
7033
+ decimalPlaces: z.ZodLiteral<2>;
7034
+ dateFormat: z.ZodLiteral<"iso-8601">;
7035
+ }, z.core.$strip>;
7036
+ files: z.ZodArray<z.ZodObject<{
7037
+ name: z.ZodString;
7038
+ columns: z.ZodArray<z.ZodString>;
7039
+ rows: z.ZodNumber;
7040
+ }, z.core.$strip>>;
7041
+ }, z.core.$strip>;
7042
+ files: z.ZodArray<z.ZodObject<{
7043
+ name: z.ZodString;
7044
+ contentType: z.ZodString;
7045
+ content: z.ZodString;
7046
+ }, z.core.$strip>>;
7047
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
7048
+ BAD_REQUEST: {
7049
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
7050
+ };
7051
+ UNAUTHORIZED: {};
7052
+ FORBIDDEN: {
7053
+ data: z.ZodOptional<z.ZodObject<{
7054
+ permission: z.ZodOptional<z.ZodString>;
7055
+ }, z.core.$strip>>;
7056
+ };
7057
+ NOT_FOUND: {};
7058
+ CONFLICT: {
7059
+ data: z.ZodOptional<z.ZodObject<{
7060
+ reason: z.ZodOptional<z.ZodString>;
7061
+ }, z.core.$strip>>;
7062
+ };
7063
+ RATE_LIMITED: {};
7064
+ MODULE_DISABLED: {
7065
+ data: z.ZodObject<{
7066
+ module: z.ZodString;
7067
+ }, z.core.$strip>;
7068
+ };
7069
+ }>, Record<never, never>>;
7070
+ /**
7071
+ * The same rows as JSON, with no file written and no refusal thrown.
7072
+ *
7073
+ * So the screen shows the totals and the reasons the export would be refused before anybody
7074
+ * downloads anything. Deliberately not versioned: a preview is this module talking to its own
7075
+ * screen, and nothing outside Kern parses it.
7076
+ */
7077
+ preview: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
7078
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
7079
+ legalEntityId: z.ZodUUID;
7080
+ periodId: z.ZodUUID;
7081
+ draft: z.ZodDefault<z.ZodBoolean>;
7082
+ }, z.core.$strip>, z.ZodObject<{
7083
+ manifest: z.ZodObject<{
7084
+ contract: z.ZodLiteral<"kern-payroll-v1">;
7085
+ generatedAt: z.ZodISODateTime;
7086
+ kernVersion: z.ZodString;
7087
+ finality: z.ZodEnum<{
7088
+ draft: "draft";
7089
+ final: "final";
7090
+ }>;
7091
+ draft: z.ZodBoolean;
7092
+ legalEntityId: z.ZodUUID;
7093
+ legalEntityName: z.ZodString;
7094
+ country: z.ZodString;
7095
+ currency: z.ZodNullable<z.ZodString>;
7096
+ periodId: z.ZodUUID;
7097
+ periodStart: z.ZodISODate;
7098
+ periodEnd: z.ZodISODate;
7099
+ periodStatus: z.ZodEnum<{
7100
+ locked: "locked";
7101
+ open: "open";
7102
+ }>;
7103
+ population: z.ZodNumber;
7104
+ counted: z.ZodNumber;
7105
+ scope: z.ZodObject<{
7106
+ permissions: z.ZodArray<z.ZodString>;
7107
+ askedAt: z.ZodLiteral<"workspace">;
7108
+ }, z.core.$strip>;
7109
+ attendance: z.ZodObject<{
7110
+ lockedDays: z.ZodNumber;
7111
+ openDays: z.ZodNumber;
7112
+ final: z.ZodBoolean;
7113
+ firstOpenDay: z.ZodNullable<z.ZodISODate>;
7114
+ lastLockedDay: z.ZodNullable<z.ZodISODate>;
7115
+ }, z.core.$strip>;
7116
+ dayLengthMinutes: z.ZodNumber;
7117
+ format: z.ZodObject<{
7118
+ encoding: z.ZodLiteral<"utf-8">;
7119
+ byteOrderMark: z.ZodLiteral<true>;
7120
+ delimiter: z.ZodLiteral<",">;
7121
+ lineEnding: z.ZodLiteral<"crlf">;
7122
+ quoting: z.ZodLiteral<"rfc4180">;
7123
+ decimalSeparator: z.ZodLiteral<".">;
7124
+ decimalPlaces: z.ZodLiteral<2>;
7125
+ dateFormat: z.ZodLiteral<"iso-8601">;
7126
+ }, z.core.$strip>;
7127
+ files: z.ZodArray<z.ZodObject<{
7128
+ name: z.ZodString;
7129
+ columns: z.ZodArray<z.ZodString>;
7130
+ rows: z.ZodNumber;
7131
+ }, z.core.$strip>>;
7132
+ }, z.core.$strip>;
7133
+ refusals: z.ZodArray<z.ZodObject<{
7134
+ code: z.ZodEnum<{
7135
+ "hr.period.not_locked": "hr.period.not_locked";
7136
+ "hr.payroll.empty": "hr.payroll.empty";
7137
+ "hr.payroll.no_employment": "hr.payroll.no_employment";
7138
+ }>;
7139
+ message: z.ZodString;
7140
+ personIds: z.ZodArray<z.ZodUUID>;
7141
+ }, z.core.$strip>>;
7142
+ exportable: z.ZodBoolean;
7143
+ totals: z.ZodObject<{
7144
+ people: z.ZodNumber;
7145
+ daySheets: z.ZodNumber;
7146
+ scheduledMinutes: z.ZodNumber;
7147
+ workedMinutes: z.ZodNumber;
7148
+ scheduledWorkedMinutes: z.ZodNumber;
7149
+ breakMinutes: z.ZodNumber;
7150
+ overtimeMinutes: z.ZodNumber;
7151
+ lateMinutes: z.ZodNumber;
7152
+ earlyLeaveMinutes: z.ZodNumber;
7153
+ beyondCapMinutes: z.ZodNullable<z.ZodNumber>;
7154
+ cappedDays: z.ZodNumber;
7155
+ uncappedDays: z.ZodNumber;
7156
+ lockedDays: z.ZodNumber;
7157
+ openDays: z.ZodNumber;
7158
+ paidLeaveDays: z.ZodNumber;
7159
+ unpaidLeaveDays: z.ZodNumber;
7160
+ }, z.core.$strip>;
7161
+ hours: z.ZodArray<z.ZodObject<{
7162
+ personId: z.ZodUUID;
7163
+ employeeNo: z.ZodNullable<z.ZodString>;
7164
+ displayName: z.ZodString;
7165
+ employmentType: z.ZodString;
7166
+ fte: z.ZodNumber;
7167
+ contractHoursWeek: z.ZodNullable<z.ZodNumber>;
7168
+ costCenterCode: z.ZodNullable<z.ZodString>;
7169
+ positionTitle: z.ZodNullable<z.ZodString>;
7170
+ hiredOn: z.ZodNullable<z.ZodISODate>;
7171
+ terminatedOn: z.ZodNullable<z.ZodISODate>;
7172
+ employmentChangedInPeriod: z.ZodBoolean;
7173
+ daySheets: z.ZodNumber;
7174
+ scheduledMinutes: z.ZodNumber;
7175
+ workedMinutes: z.ZodNumber;
7176
+ scheduledWorkedMinutes: z.ZodNumber;
7177
+ breakMinutes: z.ZodNumber;
7178
+ overtimeMinutes: z.ZodNumber;
7179
+ lateMinutes: z.ZodNumber;
7180
+ earlyLeaveMinutes: z.ZodNumber;
7181
+ beyondCapMinutes: z.ZodNullable<z.ZodNumber>;
7182
+ cappedDays: z.ZodNumber;
7183
+ uncappedDays: z.ZodNumber;
7184
+ lockedDays: z.ZodNumber;
7185
+ openDays: z.ZodNumber;
7186
+ paidLeaveDays: z.ZodNumber;
7187
+ unpaidLeaveDays: z.ZodNumber;
7188
+ }, z.core.$strip>>;
7189
+ leave: z.ZodArray<z.ZodObject<{
7190
+ personId: z.ZodUUID;
7191
+ employeeNo: z.ZodNullable<z.ZodString>;
7192
+ leaveTypeKey: z.ZodString;
7193
+ leaveTypeName: z.ZodString;
7194
+ paid: z.ZodBoolean;
7195
+ unit: z.ZodEnum<{
7196
+ half_day: "half_day";
7197
+ day: "day";
7198
+ hour: "hour";
7199
+ }>;
7200
+ days: z.ZodNumber;
7201
+ requests: z.ZodNumber;
7202
+ }, z.core.$strip>>;
7203
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
7204
+ BAD_REQUEST: {
7205
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
7206
+ };
7207
+ UNAUTHORIZED: {};
7208
+ FORBIDDEN: {
7209
+ data: z.ZodOptional<z.ZodObject<{
7210
+ permission: z.ZodOptional<z.ZodString>;
7211
+ }, z.core.$strip>>;
7212
+ };
7213
+ NOT_FOUND: {};
7214
+ CONFLICT: {
7215
+ data: z.ZodOptional<z.ZodObject<{
7216
+ reason: z.ZodOptional<z.ZodString>;
7217
+ }, z.core.$strip>>;
7218
+ };
7219
+ RATE_LIMITED: {};
7220
+ MODULE_DISABLED: {
7221
+ data: z.ZodObject<{
7222
+ module: z.ZodString;
7223
+ }, z.core.$strip>;
7224
+ };
7225
+ }>, Record<never, never>>;
7226
+ };
7227
+ };
6335
7228
  privacy: {
6336
7229
  /**
6337
7230
  * Everything HR holds about one person, in one response.