@kernhq/module-hr 0.2.0 → 0.4.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 (82) hide show
  1. package/dist/contract/approvals.d.ts +281 -0
  2. package/dist/contract/approvals.d.ts.map +1 -0
  3. package/dist/contract/approvals.js +127 -0
  4. package/dist/contract/approvals.js.map +1 -0
  5. package/dist/contract/attendance.d.ts +240 -0
  6. package/dist/contract/attendance.d.ts.map +1 -0
  7. package/dist/contract/attendance.js +154 -0
  8. package/dist/contract/attendance.js.map +1 -0
  9. package/dist/contract/capabilities.d.ts +1 -1
  10. package/dist/contract/capabilities.d.ts.map +1 -1
  11. package/dist/contract/capabilities.js +80 -0
  12. package/dist/contract/capabilities.js.map +1 -1
  13. package/dist/contract/events.d.ts +60 -0
  14. package/dist/contract/events.d.ts.map +1 -1
  15. package/dist/contract/events.js +60 -0
  16. package/dist/contract/events.js.map +1 -1
  17. package/dist/contract/index.d.ts +3 -0
  18. package/dist/contract/index.d.ts.map +1 -1
  19. package/dist/contract/index.js +3 -0
  20. package/dist/contract/index.js.map +1 -1
  21. package/dist/contract/leave.d.ts +168 -0
  22. package/dist/contract/leave.d.ts.map +1 -0
  23. package/dist/contract/leave.js +150 -0
  24. package/dist/contract/leave.js.map +1 -0
  25. package/dist/contract/permissions.d.ts +100 -0
  26. package/dist/contract/permissions.d.ts.map +1 -1
  27. package/dist/contract/permissions.js +119 -0
  28. package/dist/contract/permissions.js.map +1 -1
  29. package/dist/contract/router.d.ts +2440 -0
  30. package/dist/contract/router.d.ts.map +1 -1
  31. package/dist/contract/router.js +393 -0
  32. package/dist/contract/router.js.map +1 -1
  33. package/dist/policy/time.d.ts +48 -0
  34. package/dist/policy/time.d.ts.map +1 -0
  35. package/dist/policy/time.js +144 -0
  36. package/dist/policy/time.js.map +1 -0
  37. package/dist/policy/working-time.d.ts +98 -0
  38. package/dist/policy/working-time.d.ts.map +1 -0
  39. package/dist/policy/working-time.js +190 -0
  40. package/dist/policy/working-time.js.map +1 -0
  41. package/dist/server/index.d.ts.map +1 -1
  42. package/dist/server/index.js +2 -0
  43. package/dist/server/index.js.map +1 -1
  44. package/dist/server/jobs.d.ts +16 -0
  45. package/dist/server/jobs.d.ts.map +1 -0
  46. package/dist/server/jobs.js +166 -0
  47. package/dist/server/jobs.js.map +1 -0
  48. package/dist/server/router.d.ts +2731 -58
  49. package/dist/server/router.d.ts.map +1 -1
  50. package/dist/server/router.js +1306 -3
  51. package/dist/server/router.js.map +1 -1
  52. package/dist/server/schema.d.ts +3344 -1
  53. package/dist/server/schema.d.ts.map +1 -1
  54. package/dist/server/schema.js +325 -0
  55. package/dist/server/schema.js.map +1 -1
  56. package/dist/server/services/approvals.d.ts +163 -0
  57. package/dist/server/services/approvals.d.ts.map +1 -0
  58. package/dist/server/services/approvals.js +325 -0
  59. package/dist/server/services/approvals.js.map +1 -0
  60. package/dist/server/services/attendance.d.ts +150 -0
  61. package/dist/server/services/attendance.d.ts.map +1 -0
  62. package/dist/server/services/attendance.js +239 -0
  63. package/dist/server/services/attendance.js.map +1 -0
  64. package/dist/server/services/ledger.d.ts +135 -0
  65. package/dist/server/services/ledger.d.ts.map +1 -0
  66. package/dist/server/services/ledger.js +178 -0
  67. package/dist/server/services/ledger.js.map +1 -0
  68. package/dist/server/services/people.d.ts +3 -3
  69. package/migrations/0002_leave.sql +237 -0
  70. package/migrations/0003_attendance.sql +206 -0
  71. package/migrations/meta/0002_snapshot.json +3009 -0
  72. package/migrations/meta/0003_snapshot.json +3681 -0
  73. package/migrations/meta/_journal.json +14 -0
  74. package/package.json +1 -1
  75. package/src/contract/approvals.ts +149 -0
  76. package/src/contract/attendance.ts +180 -0
  77. package/src/contract/capabilities.ts +80 -0
  78. package/src/contract/events.ts +81 -0
  79. package/src/contract/index.ts +3 -0
  80. package/src/contract/leave.ts +171 -0
  81. package/src/contract/permissions.ts +122 -0
  82. package/src/contract/router.ts +481 -0
@@ -2492,6 +2492,2446 @@ export declare const hrContract: {
2492
2492
  };
2493
2493
  }>, Record<never, never>>;
2494
2494
  };
2495
+ attendance: {
2496
+ /** Am I clocked in? The one call a clock widget makes. */
2497
+ state: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2498
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2499
+ personId: z.ZodOptional<z.ZodUUID>;
2500
+ }, z.core.$strip>, z.ZodObject<{
2501
+ personId: z.ZodUUID;
2502
+ businessDate: z.ZodISODate;
2503
+ clockedIn: z.ZodBoolean;
2504
+ onBreak: z.ZodBoolean;
2505
+ since: z.ZodNullable<z.ZodISODateTime>;
2506
+ workedMinutesToday: z.ZodNumber;
2507
+ timezone: z.ZodString;
2508
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2509
+ BAD_REQUEST: {
2510
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2511
+ };
2512
+ UNAUTHORIZED: {};
2513
+ FORBIDDEN: {
2514
+ data: z.ZodOptional<z.ZodObject<{
2515
+ permission: z.ZodOptional<z.ZodString>;
2516
+ }, z.core.$strip>>;
2517
+ };
2518
+ NOT_FOUND: {};
2519
+ CONFLICT: {
2520
+ data: z.ZodOptional<z.ZodObject<{
2521
+ reason: z.ZodOptional<z.ZodString>;
2522
+ }, z.core.$strip>>;
2523
+ };
2524
+ RATE_LIMITED: {};
2525
+ MODULE_DISABLED: {
2526
+ data: z.ZodObject<{
2527
+ module: z.ZodString;
2528
+ }, z.core.$strip>;
2529
+ };
2530
+ }>, Record<never, never>>;
2531
+ /**
2532
+ * Clock in. The instant is **stamped by the server**, never taken from the caller.
2533
+ *
2534
+ * `clientReportedAt` is recorded alongside it for audit — a device whose clock is an hour out is
2535
+ * worth knowing about — but it never decides anything.
2536
+ */
2537
+ clockIn: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2538
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2539
+ personId: z.ZodOptional<z.ZodUUID>;
2540
+ method: z.ZodDefault<z.ZodEnum<{
2541
+ web: "web";
2542
+ mobile: "mobile";
2543
+ kiosk: "kiosk";
2544
+ qr: "qr";
2545
+ device: "device";
2546
+ import: "import";
2547
+ manual: "manual";
2548
+ }>>;
2549
+ clientReportedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2550
+ geo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
2551
+ lat: z.ZodNumber;
2552
+ lng: z.ZodNumber;
2553
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2554
+ }, z.core.$strip>>>;
2555
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2556
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2557
+ }, z.core.$strip>, z.ZodObject<{
2558
+ personId: z.ZodUUID;
2559
+ direction: z.ZodEnum<{
2560
+ out: "out";
2561
+ in: "in";
2562
+ break_start: "break_start";
2563
+ break_end: "break_end";
2564
+ }>;
2565
+ at: z.ZodISODateTime;
2566
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2567
+ skewMs: z.ZodNullable<z.ZodNumber>;
2568
+ businessDate: z.ZodISODate;
2569
+ timezone: z.ZodString;
2570
+ method: z.ZodEnum<{
2571
+ web: "web";
2572
+ mobile: "mobile";
2573
+ kiosk: "kiosk";
2574
+ qr: "qr";
2575
+ device: "device";
2576
+ import: "import";
2577
+ manual: "manual";
2578
+ }>;
2579
+ officeId: z.ZodNullable<z.ZodUUID>;
2580
+ deviceId: z.ZodNullable<z.ZodUUID>;
2581
+ geo: z.ZodNullable<z.ZodObject<{
2582
+ lat: z.ZodNumber;
2583
+ lng: z.ZodNumber;
2584
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2585
+ }, z.core.$strip>>;
2586
+ trust: z.ZodEnum<{
2587
+ trusted: "trusted";
2588
+ claimed: "claimed";
2589
+ disputed: "disputed";
2590
+ }>;
2591
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2592
+ note: z.ZodNullable<z.ZodString>;
2593
+ createdAt: z.ZodISODateTime;
2594
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2595
+ id: z.ZodUUID;
2596
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2597
+ BAD_REQUEST: {
2598
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2599
+ };
2600
+ UNAUTHORIZED: {};
2601
+ FORBIDDEN: {
2602
+ data: z.ZodOptional<z.ZodObject<{
2603
+ permission: z.ZodOptional<z.ZodString>;
2604
+ }, z.core.$strip>>;
2605
+ };
2606
+ NOT_FOUND: {};
2607
+ CONFLICT: {
2608
+ data: z.ZodOptional<z.ZodObject<{
2609
+ reason: z.ZodOptional<z.ZodString>;
2610
+ }, z.core.$strip>>;
2611
+ };
2612
+ RATE_LIMITED: {};
2613
+ MODULE_DISABLED: {
2614
+ data: z.ZodObject<{
2615
+ module: z.ZodString;
2616
+ }, z.core.$strip>;
2617
+ };
2618
+ }>, Record<never, never>>;
2619
+ clockOut: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2620
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2621
+ personId: z.ZodOptional<z.ZodUUID>;
2622
+ method: z.ZodDefault<z.ZodEnum<{
2623
+ web: "web";
2624
+ mobile: "mobile";
2625
+ kiosk: "kiosk";
2626
+ qr: "qr";
2627
+ device: "device";
2628
+ import: "import";
2629
+ manual: "manual";
2630
+ }>>;
2631
+ clientReportedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2632
+ geo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
2633
+ lat: z.ZodNumber;
2634
+ lng: z.ZodNumber;
2635
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2636
+ }, z.core.$strip>>>;
2637
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2638
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2639
+ }, z.core.$strip>, z.ZodObject<{
2640
+ personId: z.ZodUUID;
2641
+ direction: z.ZodEnum<{
2642
+ out: "out";
2643
+ in: "in";
2644
+ break_start: "break_start";
2645
+ break_end: "break_end";
2646
+ }>;
2647
+ at: z.ZodISODateTime;
2648
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2649
+ skewMs: z.ZodNullable<z.ZodNumber>;
2650
+ businessDate: z.ZodISODate;
2651
+ timezone: z.ZodString;
2652
+ method: z.ZodEnum<{
2653
+ web: "web";
2654
+ mobile: "mobile";
2655
+ kiosk: "kiosk";
2656
+ qr: "qr";
2657
+ device: "device";
2658
+ import: "import";
2659
+ manual: "manual";
2660
+ }>;
2661
+ officeId: z.ZodNullable<z.ZodUUID>;
2662
+ deviceId: z.ZodNullable<z.ZodUUID>;
2663
+ geo: z.ZodNullable<z.ZodObject<{
2664
+ lat: z.ZodNumber;
2665
+ lng: z.ZodNumber;
2666
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2667
+ }, z.core.$strip>>;
2668
+ trust: z.ZodEnum<{
2669
+ trusted: "trusted";
2670
+ claimed: "claimed";
2671
+ disputed: "disputed";
2672
+ }>;
2673
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2674
+ note: z.ZodNullable<z.ZodString>;
2675
+ createdAt: z.ZodISODateTime;
2676
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2677
+ id: z.ZodUUID;
2678
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2679
+ BAD_REQUEST: {
2680
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2681
+ };
2682
+ UNAUTHORIZED: {};
2683
+ FORBIDDEN: {
2684
+ data: z.ZodOptional<z.ZodObject<{
2685
+ permission: z.ZodOptional<z.ZodString>;
2686
+ }, z.core.$strip>>;
2687
+ };
2688
+ NOT_FOUND: {};
2689
+ CONFLICT: {
2690
+ data: z.ZodOptional<z.ZodObject<{
2691
+ reason: z.ZodOptional<z.ZodString>;
2692
+ }, z.core.$strip>>;
2693
+ };
2694
+ RATE_LIMITED: {};
2695
+ MODULE_DISABLED: {
2696
+ data: z.ZodObject<{
2697
+ module: z.ZodString;
2698
+ }, z.core.$strip>;
2699
+ };
2700
+ }>, Record<never, never>>;
2701
+ breakStart: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2702
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2703
+ personId: z.ZodOptional<z.ZodUUID>;
2704
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2705
+ }, z.core.$strip>, z.ZodObject<{
2706
+ personId: z.ZodUUID;
2707
+ direction: z.ZodEnum<{
2708
+ out: "out";
2709
+ in: "in";
2710
+ break_start: "break_start";
2711
+ break_end: "break_end";
2712
+ }>;
2713
+ at: z.ZodISODateTime;
2714
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2715
+ skewMs: z.ZodNullable<z.ZodNumber>;
2716
+ businessDate: z.ZodISODate;
2717
+ timezone: z.ZodString;
2718
+ method: z.ZodEnum<{
2719
+ web: "web";
2720
+ mobile: "mobile";
2721
+ kiosk: "kiosk";
2722
+ qr: "qr";
2723
+ device: "device";
2724
+ import: "import";
2725
+ manual: "manual";
2726
+ }>;
2727
+ officeId: z.ZodNullable<z.ZodUUID>;
2728
+ deviceId: z.ZodNullable<z.ZodUUID>;
2729
+ geo: z.ZodNullable<z.ZodObject<{
2730
+ lat: z.ZodNumber;
2731
+ lng: z.ZodNumber;
2732
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2733
+ }, z.core.$strip>>;
2734
+ trust: z.ZodEnum<{
2735
+ trusted: "trusted";
2736
+ claimed: "claimed";
2737
+ disputed: "disputed";
2738
+ }>;
2739
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2740
+ note: z.ZodNullable<z.ZodString>;
2741
+ createdAt: z.ZodISODateTime;
2742
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2743
+ id: z.ZodUUID;
2744
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2745
+ BAD_REQUEST: {
2746
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2747
+ };
2748
+ UNAUTHORIZED: {};
2749
+ FORBIDDEN: {
2750
+ data: z.ZodOptional<z.ZodObject<{
2751
+ permission: z.ZodOptional<z.ZodString>;
2752
+ }, z.core.$strip>>;
2753
+ };
2754
+ NOT_FOUND: {};
2755
+ CONFLICT: {
2756
+ data: z.ZodOptional<z.ZodObject<{
2757
+ reason: z.ZodOptional<z.ZodString>;
2758
+ }, z.core.$strip>>;
2759
+ };
2760
+ RATE_LIMITED: {};
2761
+ MODULE_DISABLED: {
2762
+ data: z.ZodObject<{
2763
+ module: z.ZodString;
2764
+ }, z.core.$strip>;
2765
+ };
2766
+ }>, Record<never, never>>;
2767
+ breakEnd: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2768
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2769
+ personId: z.ZodOptional<z.ZodUUID>;
2770
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2771
+ }, z.core.$strip>, z.ZodObject<{
2772
+ personId: z.ZodUUID;
2773
+ direction: z.ZodEnum<{
2774
+ out: "out";
2775
+ in: "in";
2776
+ break_start: "break_start";
2777
+ break_end: "break_end";
2778
+ }>;
2779
+ at: z.ZodISODateTime;
2780
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2781
+ skewMs: z.ZodNullable<z.ZodNumber>;
2782
+ businessDate: z.ZodISODate;
2783
+ timezone: z.ZodString;
2784
+ method: z.ZodEnum<{
2785
+ web: "web";
2786
+ mobile: "mobile";
2787
+ kiosk: "kiosk";
2788
+ qr: "qr";
2789
+ device: "device";
2790
+ import: "import";
2791
+ manual: "manual";
2792
+ }>;
2793
+ officeId: z.ZodNullable<z.ZodUUID>;
2794
+ deviceId: z.ZodNullable<z.ZodUUID>;
2795
+ geo: z.ZodNullable<z.ZodObject<{
2796
+ lat: z.ZodNumber;
2797
+ lng: z.ZodNumber;
2798
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2799
+ }, z.core.$strip>>;
2800
+ trust: z.ZodEnum<{
2801
+ trusted: "trusted";
2802
+ claimed: "claimed";
2803
+ disputed: "disputed";
2804
+ }>;
2805
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2806
+ note: z.ZodNullable<z.ZodString>;
2807
+ createdAt: z.ZodISODateTime;
2808
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2809
+ id: z.ZodUUID;
2810
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2811
+ BAD_REQUEST: {
2812
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2813
+ };
2814
+ UNAUTHORIZED: {};
2815
+ FORBIDDEN: {
2816
+ data: z.ZodOptional<z.ZodObject<{
2817
+ permission: z.ZodOptional<z.ZodString>;
2818
+ }, z.core.$strip>>;
2819
+ };
2820
+ NOT_FOUND: {};
2821
+ CONFLICT: {
2822
+ data: z.ZodOptional<z.ZodObject<{
2823
+ reason: z.ZodOptional<z.ZodString>;
2824
+ }, z.core.$strip>>;
2825
+ };
2826
+ RATE_LIMITED: {};
2827
+ MODULE_DISABLED: {
2828
+ data: z.ZodObject<{
2829
+ module: z.ZodString;
2830
+ }, z.core.$strip>;
2831
+ };
2832
+ }>, Record<never, never>>;
2833
+ punches: {
2834
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2835
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2836
+ cursor: z.ZodOptional<z.ZodString>;
2837
+ limit: z.ZodDefault<z.ZodNumber>;
2838
+ personId: z.ZodOptional<z.ZodUUID>;
2839
+ from: z.ZodISODate;
2840
+ to: z.ZodISODate;
2841
+ includeVoided: z.ZodDefault<z.ZodBoolean>;
2842
+ }, z.core.$strip>, z.ZodObject<{
2843
+ items: z.ZodArray<z.ZodObject<{
2844
+ personId: z.ZodUUID;
2845
+ direction: z.ZodEnum<{
2846
+ out: "out";
2847
+ in: "in";
2848
+ break_start: "break_start";
2849
+ break_end: "break_end";
2850
+ }>;
2851
+ at: z.ZodISODateTime;
2852
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2853
+ skewMs: z.ZodNullable<z.ZodNumber>;
2854
+ businessDate: z.ZodISODate;
2855
+ timezone: z.ZodString;
2856
+ method: z.ZodEnum<{
2857
+ web: "web";
2858
+ mobile: "mobile";
2859
+ kiosk: "kiosk";
2860
+ qr: "qr";
2861
+ device: "device";
2862
+ import: "import";
2863
+ manual: "manual";
2864
+ }>;
2865
+ officeId: z.ZodNullable<z.ZodUUID>;
2866
+ deviceId: z.ZodNullable<z.ZodUUID>;
2867
+ geo: z.ZodNullable<z.ZodObject<{
2868
+ lat: z.ZodNumber;
2869
+ lng: z.ZodNumber;
2870
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2871
+ }, z.core.$strip>>;
2872
+ trust: z.ZodEnum<{
2873
+ trusted: "trusted";
2874
+ claimed: "claimed";
2875
+ disputed: "disputed";
2876
+ }>;
2877
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2878
+ note: z.ZodNullable<z.ZodString>;
2879
+ createdAt: z.ZodISODateTime;
2880
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2881
+ id: z.ZodUUID;
2882
+ }, z.core.$strip>>;
2883
+ nextCursor: z.ZodNullable<z.ZodString>;
2884
+ total: z.ZodOptional<z.ZodNumber>;
2885
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2886
+ BAD_REQUEST: {
2887
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2888
+ };
2889
+ UNAUTHORIZED: {};
2890
+ FORBIDDEN: {
2891
+ data: z.ZodOptional<z.ZodObject<{
2892
+ permission: z.ZodOptional<z.ZodString>;
2893
+ }, z.core.$strip>>;
2894
+ };
2895
+ NOT_FOUND: {};
2896
+ CONFLICT: {
2897
+ data: z.ZodOptional<z.ZodObject<{
2898
+ reason: z.ZodOptional<z.ZodString>;
2899
+ }, z.core.$strip>>;
2900
+ };
2901
+ RATE_LIMITED: {};
2902
+ MODULE_DISABLED: {
2903
+ data: z.ZodObject<{
2904
+ module: z.ZodString;
2905
+ }, z.core.$strip>;
2906
+ };
2907
+ }>, Record<never, never>>;
2908
+ /**
2909
+ * Void a punch by writing a correcting row.
2910
+ *
2911
+ * The original is never edited or deleted — an attendance record somebody can quietly rewrite
2912
+ * is worth nothing in the dispute it exists for.
2913
+ */
2914
+ void: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2915
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2916
+ punchId: z.ZodUUID;
2917
+ reason: z.ZodString;
2918
+ }, z.core.$strip>, z.ZodObject<{
2919
+ ok: z.ZodLiteral<true>;
2920
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2921
+ BAD_REQUEST: {
2922
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2923
+ };
2924
+ UNAUTHORIZED: {};
2925
+ FORBIDDEN: {
2926
+ data: z.ZodOptional<z.ZodObject<{
2927
+ permission: z.ZodOptional<z.ZodString>;
2928
+ }, z.core.$strip>>;
2929
+ };
2930
+ NOT_FOUND: {};
2931
+ CONFLICT: {
2932
+ data: z.ZodOptional<z.ZodObject<{
2933
+ reason: z.ZodOptional<z.ZodString>;
2934
+ }, z.core.$strip>>;
2935
+ };
2936
+ RATE_LIMITED: {};
2937
+ MODULE_DISABLED: {
2938
+ data: z.ZodObject<{
2939
+ module: z.ZodString;
2940
+ }, z.core.$strip>;
2941
+ };
2942
+ }>, Record<never, never>>;
2943
+ };
2944
+ days: {
2945
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2946
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2947
+ cursor: z.ZodOptional<z.ZodString>;
2948
+ limit: z.ZodDefault<z.ZodNumber>;
2949
+ personId: z.ZodOptional<z.ZodUUID>;
2950
+ officeId: z.ZodOptional<z.ZodUUID>;
2951
+ from: z.ZodISODate;
2952
+ to: z.ZodISODate;
2953
+ }, z.core.$strip>, z.ZodObject<{
2954
+ items: z.ZodArray<z.ZodObject<{
2955
+ personId: z.ZodUUID;
2956
+ businessDate: z.ZodISODate;
2957
+ scheduledMinutes: z.ZodNumber;
2958
+ workedMinutes: z.ZodNumber;
2959
+ breakMinutes: z.ZodNumber;
2960
+ overtimeMinutes: z.ZodNumber;
2961
+ lateMinutes: z.ZodNumber;
2962
+ earlyLeaveMinutes: z.ZodNumber;
2963
+ status: z.ZodEnum<{
2964
+ leave: "leave";
2965
+ pending: "pending";
2966
+ present: "present";
2967
+ absent: "absent";
2968
+ holiday: "holiday";
2969
+ weekend: "weekend";
2970
+ partial: "partial";
2971
+ }>;
2972
+ leaveRequestId: z.ZodNullable<z.ZodUUID>;
2973
+ anomalies: z.ZodArray<z.ZodString>;
2974
+ firstIn: z.ZodNullable<z.ZodISODateTime>;
2975
+ lastOut: z.ZodNullable<z.ZodISODateTime>;
2976
+ policyHash: z.ZodNullable<z.ZodString>;
2977
+ locked: z.ZodBoolean;
2978
+ computedAt: z.ZodISODateTime;
2979
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2980
+ id: z.ZodUUID;
2981
+ }, z.core.$strip>>;
2982
+ nextCursor: z.ZodNullable<z.ZodString>;
2983
+ total: z.ZodOptional<z.ZodNumber>;
2984
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2985
+ BAD_REQUEST: {
2986
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2987
+ };
2988
+ UNAUTHORIZED: {};
2989
+ FORBIDDEN: {
2990
+ data: z.ZodOptional<z.ZodObject<{
2991
+ permission: z.ZodOptional<z.ZodString>;
2992
+ }, z.core.$strip>>;
2993
+ };
2994
+ NOT_FOUND: {};
2995
+ CONFLICT: {
2996
+ data: z.ZodOptional<z.ZodObject<{
2997
+ reason: z.ZodOptional<z.ZodString>;
2998
+ }, z.core.$strip>>;
2999
+ };
3000
+ RATE_LIMITED: {};
3001
+ MODULE_DISABLED: {
3002
+ data: z.ZodObject<{
3003
+ module: z.ZodString;
3004
+ }, z.core.$strip>;
3005
+ };
3006
+ }>, Record<never, never>>;
3007
+ /**
3008
+ * Recompute a range from the punches.
3009
+ *
3010
+ * Safe to call at any time — the day sheet is a projection, so this is idempotent by
3011
+ * construction. Locked days are skipped and named in the response rather than silently
3012
+ * ignored.
3013
+ */
3014
+ recompute: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3015
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3016
+ personId: z.ZodOptional<z.ZodUUID>;
3017
+ from: z.ZodISODate;
3018
+ to: z.ZodISODate;
3019
+ }, z.core.$strip>, z.ZodObject<{
3020
+ recomputed: z.ZodNumber;
3021
+ skippedLocked: z.ZodArray<z.ZodISODate>;
3022
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3023
+ BAD_REQUEST: {
3024
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3025
+ };
3026
+ UNAUTHORIZED: {};
3027
+ FORBIDDEN: {
3028
+ data: z.ZodOptional<z.ZodObject<{
3029
+ permission: z.ZodOptional<z.ZodString>;
3030
+ }, z.core.$strip>>;
3031
+ };
3032
+ NOT_FOUND: {};
3033
+ CONFLICT: {
3034
+ data: z.ZodOptional<z.ZodObject<{
3035
+ reason: z.ZodOptional<z.ZodString>;
3036
+ }, z.core.$strip>>;
3037
+ };
3038
+ RATE_LIMITED: {};
3039
+ MODULE_DISABLED: {
3040
+ data: z.ZodObject<{
3041
+ module: z.ZodString;
3042
+ }, z.core.$strip>;
3043
+ };
3044
+ }>, Record<never, never>>;
3045
+ };
3046
+ schedules: {
3047
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3048
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3049
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
3050
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
3051
+ name: z.ZodString;
3052
+ kind: z.ZodEnum<{
3053
+ fixed: "fixed";
3054
+ flexible: "flexible";
3055
+ shift: "shift";
3056
+ }>;
3057
+ week: z.ZodRecord<z.ZodEnum<{
3058
+ mon: "mon";
3059
+ tue: "tue";
3060
+ wed: "wed";
3061
+ thu: "thu";
3062
+ fri: "fri";
3063
+ sat: "sat";
3064
+ sun: "sun";
3065
+ }>, z.ZodNullable<z.ZodObject<{
3066
+ start: z.ZodString;
3067
+ end: z.ZodString;
3068
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3069
+ }, z.core.$strip>>>;
3070
+ tzMode: z.ZodEnum<{
3071
+ person: "person";
3072
+ office: "office";
3073
+ fixed: "fixed";
3074
+ }>;
3075
+ tz: z.ZodNullable<z.ZodString>;
3076
+ graceInMinutes: z.ZodNumber;
3077
+ graceOutMinutes: z.ZodNumber;
3078
+ roundingStepMinutes: z.ZodNumber;
3079
+ roundingDirection: z.ZodEnum<{
3080
+ nearest: "nearest";
3081
+ employee: "employee";
3082
+ employer: "employer";
3083
+ }>;
3084
+ autoClockOutAfterMinutes: z.ZodNullable<z.ZodNumber>;
3085
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3086
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3087
+ id: z.ZodUUID;
3088
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3089
+ BAD_REQUEST: {
3090
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3091
+ };
3092
+ UNAUTHORIZED: {};
3093
+ FORBIDDEN: {
3094
+ data: z.ZodOptional<z.ZodObject<{
3095
+ permission: z.ZodOptional<z.ZodString>;
3096
+ }, z.core.$strip>>;
3097
+ };
3098
+ NOT_FOUND: {};
3099
+ CONFLICT: {
3100
+ data: z.ZodOptional<z.ZodObject<{
3101
+ reason: z.ZodOptional<z.ZodString>;
3102
+ }, z.core.$strip>>;
3103
+ };
3104
+ RATE_LIMITED: {};
3105
+ MODULE_DISABLED: {
3106
+ data: z.ZodObject<{
3107
+ module: z.ZodString;
3108
+ }, z.core.$strip>;
3109
+ };
3110
+ }>, Record<never, never>>;
3111
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3112
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3113
+ name: z.ZodString;
3114
+ kind: z.ZodDefault<z.ZodEnum<{
3115
+ fixed: "fixed";
3116
+ flexible: "flexible";
3117
+ shift: "shift";
3118
+ }>>;
3119
+ week: z.ZodRecord<z.ZodEnum<{
3120
+ mon: "mon";
3121
+ tue: "tue";
3122
+ wed: "wed";
3123
+ thu: "thu";
3124
+ fri: "fri";
3125
+ sat: "sat";
3126
+ sun: "sun";
3127
+ }>, z.ZodNullable<z.ZodObject<{
3128
+ start: z.ZodString;
3129
+ end: z.ZodString;
3130
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3131
+ }, z.core.$strip>>>;
3132
+ tzMode: z.ZodDefault<z.ZodEnum<{
3133
+ person: "person";
3134
+ office: "office";
3135
+ fixed: "fixed";
3136
+ }>>;
3137
+ tz: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3138
+ graceInMinutes: z.ZodDefault<z.ZodNumber>;
3139
+ graceOutMinutes: z.ZodDefault<z.ZodNumber>;
3140
+ roundingStepMinutes: z.ZodDefault<z.ZodNumber>;
3141
+ roundingDirection: z.ZodDefault<z.ZodEnum<{
3142
+ nearest: "nearest";
3143
+ employee: "employee";
3144
+ employer: "employer";
3145
+ }>>;
3146
+ autoClockOutAfterMinutes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3147
+ }, z.core.$strip>, z.ZodObject<{
3148
+ name: z.ZodString;
3149
+ kind: z.ZodEnum<{
3150
+ fixed: "fixed";
3151
+ flexible: "flexible";
3152
+ shift: "shift";
3153
+ }>;
3154
+ week: z.ZodRecord<z.ZodEnum<{
3155
+ mon: "mon";
3156
+ tue: "tue";
3157
+ wed: "wed";
3158
+ thu: "thu";
3159
+ fri: "fri";
3160
+ sat: "sat";
3161
+ sun: "sun";
3162
+ }>, z.ZodNullable<z.ZodObject<{
3163
+ start: z.ZodString;
3164
+ end: z.ZodString;
3165
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3166
+ }, z.core.$strip>>>;
3167
+ tzMode: z.ZodEnum<{
3168
+ person: "person";
3169
+ office: "office";
3170
+ fixed: "fixed";
3171
+ }>;
3172
+ tz: z.ZodNullable<z.ZodString>;
3173
+ graceInMinutes: z.ZodNumber;
3174
+ graceOutMinutes: z.ZodNumber;
3175
+ roundingStepMinutes: z.ZodNumber;
3176
+ roundingDirection: z.ZodEnum<{
3177
+ nearest: "nearest";
3178
+ employee: "employee";
3179
+ employer: "employer";
3180
+ }>;
3181
+ autoClockOutAfterMinutes: z.ZodNullable<z.ZodNumber>;
3182
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3183
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3184
+ id: z.ZodUUID;
3185
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3186
+ BAD_REQUEST: {
3187
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3188
+ };
3189
+ UNAUTHORIZED: {};
3190
+ FORBIDDEN: {
3191
+ data: z.ZodOptional<z.ZodObject<{
3192
+ permission: z.ZodOptional<z.ZodString>;
3193
+ }, z.core.$strip>>;
3194
+ };
3195
+ NOT_FOUND: {};
3196
+ CONFLICT: {
3197
+ data: z.ZodOptional<z.ZodObject<{
3198
+ reason: z.ZodOptional<z.ZodString>;
3199
+ }, z.core.$strip>>;
3200
+ };
3201
+ RATE_LIMITED: {};
3202
+ MODULE_DISABLED: {
3203
+ data: z.ZodObject<{
3204
+ module: z.ZodString;
3205
+ }, z.core.$strip>;
3206
+ };
3207
+ }>, Record<never, never>>;
3208
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3209
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3210
+ scheduleId: z.ZodUUID;
3211
+ name: z.ZodOptional<z.ZodString>;
3212
+ week: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
3213
+ mon: "mon";
3214
+ tue: "tue";
3215
+ wed: "wed";
3216
+ thu: "thu";
3217
+ fri: "fri";
3218
+ sat: "sat";
3219
+ sun: "sun";
3220
+ }>, z.ZodNullable<z.ZodObject<{
3221
+ start: z.ZodString;
3222
+ end: z.ZodString;
3223
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3224
+ }, z.core.$strip>>>>;
3225
+ graceInMinutes: z.ZodOptional<z.ZodNumber>;
3226
+ graceOutMinutes: z.ZodOptional<z.ZodNumber>;
3227
+ roundingStepMinutes: z.ZodOptional<z.ZodNumber>;
3228
+ roundingDirection: z.ZodOptional<z.ZodEnum<{
3229
+ nearest: "nearest";
3230
+ employee: "employee";
3231
+ employer: "employer";
3232
+ }>>;
3233
+ autoClockOutAfterMinutes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3234
+ }, z.core.$strip>, z.ZodObject<{
3235
+ name: z.ZodString;
3236
+ kind: z.ZodEnum<{
3237
+ fixed: "fixed";
3238
+ flexible: "flexible";
3239
+ shift: "shift";
3240
+ }>;
3241
+ week: z.ZodRecord<z.ZodEnum<{
3242
+ mon: "mon";
3243
+ tue: "tue";
3244
+ wed: "wed";
3245
+ thu: "thu";
3246
+ fri: "fri";
3247
+ sat: "sat";
3248
+ sun: "sun";
3249
+ }>, z.ZodNullable<z.ZodObject<{
3250
+ start: z.ZodString;
3251
+ end: z.ZodString;
3252
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3253
+ }, z.core.$strip>>>;
3254
+ tzMode: z.ZodEnum<{
3255
+ person: "person";
3256
+ office: "office";
3257
+ fixed: "fixed";
3258
+ }>;
3259
+ tz: z.ZodNullable<z.ZodString>;
3260
+ graceInMinutes: z.ZodNumber;
3261
+ graceOutMinutes: z.ZodNumber;
3262
+ roundingStepMinutes: z.ZodNumber;
3263
+ roundingDirection: z.ZodEnum<{
3264
+ nearest: "nearest";
3265
+ employee: "employee";
3266
+ employer: "employer";
3267
+ }>;
3268
+ autoClockOutAfterMinutes: z.ZodNullable<z.ZodNumber>;
3269
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3270
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3271
+ id: z.ZodUUID;
3272
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3273
+ BAD_REQUEST: {
3274
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3275
+ };
3276
+ UNAUTHORIZED: {};
3277
+ FORBIDDEN: {
3278
+ data: z.ZodOptional<z.ZodObject<{
3279
+ permission: z.ZodOptional<z.ZodString>;
3280
+ }, z.core.$strip>>;
3281
+ };
3282
+ NOT_FOUND: {};
3283
+ CONFLICT: {
3284
+ data: z.ZodOptional<z.ZodObject<{
3285
+ reason: z.ZodOptional<z.ZodString>;
3286
+ }, z.core.$strip>>;
3287
+ };
3288
+ RATE_LIMITED: {};
3289
+ MODULE_DISABLED: {
3290
+ data: z.ZodObject<{
3291
+ module: z.ZodString;
3292
+ }, z.core.$strip>;
3293
+ };
3294
+ }>, Record<never, never>>;
3295
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3296
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3297
+ scheduleId: z.ZodUUID;
3298
+ }, z.core.$strip>, z.ZodObject<{
3299
+ ok: z.ZodLiteral<true>;
3300
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3301
+ BAD_REQUEST: {
3302
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3303
+ };
3304
+ UNAUTHORIZED: {};
3305
+ FORBIDDEN: {
3306
+ data: z.ZodOptional<z.ZodObject<{
3307
+ permission: z.ZodOptional<z.ZodString>;
3308
+ }, z.core.$strip>>;
3309
+ };
3310
+ NOT_FOUND: {};
3311
+ CONFLICT: {
3312
+ data: z.ZodOptional<z.ZodObject<{
3313
+ reason: z.ZodOptional<z.ZodString>;
3314
+ }, z.core.$strip>>;
3315
+ };
3316
+ RATE_LIMITED: {};
3317
+ MODULE_DISABLED: {
3318
+ data: z.ZodObject<{
3319
+ module: z.ZodString;
3320
+ }, z.core.$strip>;
3321
+ };
3322
+ }>, Record<never, never>>;
3323
+ assign: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3324
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3325
+ scheduleId: z.ZodUUID;
3326
+ personId: z.ZodUUID;
3327
+ effectiveFrom: z.ZodISODate;
3328
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
3329
+ personId: z.ZodUUID;
3330
+ scheduleId: z.ZodUUID;
3331
+ effectiveFrom: z.ZodISODate;
3332
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
3333
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3334
+ id: z.ZodUUID;
3335
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3336
+ BAD_REQUEST: {
3337
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3338
+ };
3339
+ UNAUTHORIZED: {};
3340
+ FORBIDDEN: {
3341
+ data: z.ZodOptional<z.ZodObject<{
3342
+ permission: z.ZodOptional<z.ZodString>;
3343
+ }, z.core.$strip>>;
3344
+ };
3345
+ NOT_FOUND: {};
3346
+ CONFLICT: {
3347
+ data: z.ZodOptional<z.ZodObject<{
3348
+ reason: z.ZodOptional<z.ZodString>;
3349
+ }, z.core.$strip>>;
3350
+ };
3351
+ RATE_LIMITED: {};
3352
+ MODULE_DISABLED: {
3353
+ data: z.ZodObject<{
3354
+ module: z.ZodString;
3355
+ }, z.core.$strip>;
3356
+ };
3357
+ }>, Record<never, never>>;
3358
+ };
3359
+ regularizations: {
3360
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3361
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3362
+ cursor: z.ZodOptional<z.ZodString>;
3363
+ limit: z.ZodDefault<z.ZodNumber>;
3364
+ personId: z.ZodOptional<z.ZodUUID>;
3365
+ status: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3366
+ pending: "pending";
3367
+ approved: "approved";
3368
+ rejected: "rejected";
3369
+ cancelled: "cancelled";
3370
+ }>>>;
3371
+ }, z.core.$strip>, z.ZodObject<{
3372
+ items: z.ZodArray<z.ZodObject<{
3373
+ personId: z.ZodUUID;
3374
+ businessDate: z.ZodISODate;
3375
+ punchId: z.ZodNullable<z.ZodUUID>;
3376
+ proposed: z.ZodArray<z.ZodObject<{
3377
+ direction: z.ZodEnum<{
3378
+ out: "out";
3379
+ in: "in";
3380
+ break_start: "break_start";
3381
+ break_end: "break_end";
3382
+ }>;
3383
+ at: z.ZodISODateTime;
3384
+ }, z.core.$strip>>;
3385
+ reason: z.ZodString;
3386
+ status: z.ZodEnum<{
3387
+ pending: "pending";
3388
+ approved: "approved";
3389
+ rejected: "rejected";
3390
+ cancelled: "cancelled";
3391
+ }>;
3392
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
3393
+ appliedAt: z.ZodNullable<z.ZodISODateTime>;
3394
+ createdAt: z.ZodISODateTime;
3395
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3396
+ id: z.ZodUUID;
3397
+ }, z.core.$strip>>;
3398
+ nextCursor: z.ZodNullable<z.ZodString>;
3399
+ total: z.ZodOptional<z.ZodNumber>;
3400
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3401
+ BAD_REQUEST: {
3402
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3403
+ };
3404
+ UNAUTHORIZED: {};
3405
+ FORBIDDEN: {
3406
+ data: z.ZodOptional<z.ZodObject<{
3407
+ permission: z.ZodOptional<z.ZodString>;
3408
+ }, z.core.$strip>>;
3409
+ };
3410
+ NOT_FOUND: {};
3411
+ CONFLICT: {
3412
+ data: z.ZodOptional<z.ZodObject<{
3413
+ reason: z.ZodOptional<z.ZodString>;
3414
+ }, z.core.$strip>>;
3415
+ };
3416
+ RATE_LIMITED: {};
3417
+ MODULE_DISABLED: {
3418
+ data: z.ZodObject<{
3419
+ module: z.ZodString;
3420
+ }, z.core.$strip>;
3421
+ };
3422
+ }>, Record<never, never>>;
3423
+ /** Ask for a wrong or missing punch to be fixed. Goes through the same approval engine. */
3424
+ request: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3425
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3426
+ personId: z.ZodOptional<z.ZodUUID>;
3427
+ businessDate: z.ZodISODate;
3428
+ punchId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
3429
+ proposed: z.ZodArray<z.ZodObject<{
3430
+ direction: z.ZodEnum<{
3431
+ out: "out";
3432
+ in: "in";
3433
+ break_start: "break_start";
3434
+ break_end: "break_end";
3435
+ }>;
3436
+ at: z.ZodISODateTime;
3437
+ }, z.core.$strip>>;
3438
+ reason: z.ZodString;
3439
+ }, z.core.$strip>, z.ZodObject<{
3440
+ personId: z.ZodUUID;
3441
+ businessDate: z.ZodISODate;
3442
+ punchId: z.ZodNullable<z.ZodUUID>;
3443
+ proposed: z.ZodArray<z.ZodObject<{
3444
+ direction: z.ZodEnum<{
3445
+ out: "out";
3446
+ in: "in";
3447
+ break_start: "break_start";
3448
+ break_end: "break_end";
3449
+ }>;
3450
+ at: z.ZodISODateTime;
3451
+ }, z.core.$strip>>;
3452
+ reason: z.ZodString;
3453
+ status: z.ZodEnum<{
3454
+ pending: "pending";
3455
+ approved: "approved";
3456
+ rejected: "rejected";
3457
+ cancelled: "cancelled";
3458
+ }>;
3459
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
3460
+ appliedAt: z.ZodNullable<z.ZodISODateTime>;
3461
+ createdAt: z.ZodISODateTime;
3462
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3463
+ id: z.ZodUUID;
3464
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3465
+ BAD_REQUEST: {
3466
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3467
+ };
3468
+ UNAUTHORIZED: {};
3469
+ FORBIDDEN: {
3470
+ data: z.ZodOptional<z.ZodObject<{
3471
+ permission: z.ZodOptional<z.ZodString>;
3472
+ }, z.core.$strip>>;
3473
+ };
3474
+ NOT_FOUND: {};
3475
+ CONFLICT: {
3476
+ data: z.ZodOptional<z.ZodObject<{
3477
+ reason: z.ZodOptional<z.ZodString>;
3478
+ }, z.core.$strip>>;
3479
+ };
3480
+ RATE_LIMITED: {};
3481
+ MODULE_DISABLED: {
3482
+ data: z.ZodObject<{
3483
+ module: z.ZodString;
3484
+ }, z.core.$strip>;
3485
+ };
3486
+ }>, Record<never, never>>;
3487
+ };
3488
+ };
3489
+ leave: {
3490
+ types: {
3491
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3492
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3493
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
3494
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
3495
+ key: z.ZodString;
3496
+ name: z.ZodString;
3497
+ paid: z.ZodBoolean;
3498
+ unit: z.ZodEnum<{
3499
+ half_day: "half_day";
3500
+ day: "day";
3501
+ hour: "hour";
3502
+ }>;
3503
+ color: z.ZodNullable<z.ZodString>;
3504
+ icon: z.ZodNullable<z.ZodString>;
3505
+ requiresDocumentAfterDays: z.ZodNullable<z.ZodNumber>;
3506
+ countsWorkingDaysOnly: z.ZodBoolean;
3507
+ allowNegative: z.ZodBoolean;
3508
+ maxNegativeMinutes: z.ZodNumber;
3509
+ order: z.ZodNumber;
3510
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3511
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3512
+ id: z.ZodUUID;
3513
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3514
+ BAD_REQUEST: {
3515
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3516
+ };
3517
+ UNAUTHORIZED: {};
3518
+ FORBIDDEN: {
3519
+ data: z.ZodOptional<z.ZodObject<{
3520
+ permission: z.ZodOptional<z.ZodString>;
3521
+ }, z.core.$strip>>;
3522
+ };
3523
+ NOT_FOUND: {};
3524
+ CONFLICT: {
3525
+ data: z.ZodOptional<z.ZodObject<{
3526
+ reason: z.ZodOptional<z.ZodString>;
3527
+ }, z.core.$strip>>;
3528
+ };
3529
+ RATE_LIMITED: {};
3530
+ MODULE_DISABLED: {
3531
+ data: z.ZodObject<{
3532
+ module: z.ZodString;
3533
+ }, z.core.$strip>;
3534
+ };
3535
+ }>, Record<never, never>>;
3536
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3537
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3538
+ key: z.ZodString;
3539
+ name: z.ZodString;
3540
+ paid: z.ZodDefault<z.ZodBoolean>;
3541
+ unit: z.ZodDefault<z.ZodEnum<{
3542
+ half_day: "half_day";
3543
+ day: "day";
3544
+ hour: "hour";
3545
+ }>>;
3546
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3547
+ icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3548
+ requiresDocumentAfterDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3549
+ countsWorkingDaysOnly: z.ZodDefault<z.ZodBoolean>;
3550
+ allowNegative: z.ZodDefault<z.ZodBoolean>;
3551
+ maxNegativeMinutes: z.ZodDefault<z.ZodNumber>;
3552
+ }, z.core.$strip>, z.ZodObject<{
3553
+ key: z.ZodString;
3554
+ name: z.ZodString;
3555
+ paid: z.ZodBoolean;
3556
+ unit: z.ZodEnum<{
3557
+ half_day: "half_day";
3558
+ day: "day";
3559
+ hour: "hour";
3560
+ }>;
3561
+ color: z.ZodNullable<z.ZodString>;
3562
+ icon: z.ZodNullable<z.ZodString>;
3563
+ requiresDocumentAfterDays: z.ZodNullable<z.ZodNumber>;
3564
+ countsWorkingDaysOnly: z.ZodBoolean;
3565
+ allowNegative: z.ZodBoolean;
3566
+ maxNegativeMinutes: z.ZodNumber;
3567
+ order: z.ZodNumber;
3568
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3569
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3570
+ id: z.ZodUUID;
3571
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3572
+ BAD_REQUEST: {
3573
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3574
+ };
3575
+ UNAUTHORIZED: {};
3576
+ FORBIDDEN: {
3577
+ data: z.ZodOptional<z.ZodObject<{
3578
+ permission: z.ZodOptional<z.ZodString>;
3579
+ }, z.core.$strip>>;
3580
+ };
3581
+ NOT_FOUND: {};
3582
+ CONFLICT: {
3583
+ data: z.ZodOptional<z.ZodObject<{
3584
+ reason: z.ZodOptional<z.ZodString>;
3585
+ }, z.core.$strip>>;
3586
+ };
3587
+ RATE_LIMITED: {};
3588
+ MODULE_DISABLED: {
3589
+ data: z.ZodObject<{
3590
+ module: z.ZodString;
3591
+ }, z.core.$strip>;
3592
+ };
3593
+ }>, Record<never, never>>;
3594
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3595
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3596
+ leaveTypeId: z.ZodUUID;
3597
+ name: z.ZodOptional<z.ZodString>;
3598
+ paid: z.ZodOptional<z.ZodBoolean>;
3599
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3600
+ icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3601
+ requiresDocumentAfterDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3602
+ countsWorkingDaysOnly: z.ZodOptional<z.ZodBoolean>;
3603
+ allowNegative: z.ZodOptional<z.ZodBoolean>;
3604
+ maxNegativeMinutes: z.ZodOptional<z.ZodNumber>;
3605
+ order: z.ZodOptional<z.ZodNumber>;
3606
+ }, z.core.$strip>, z.ZodObject<{
3607
+ key: z.ZodString;
3608
+ name: z.ZodString;
3609
+ paid: z.ZodBoolean;
3610
+ unit: z.ZodEnum<{
3611
+ half_day: "half_day";
3612
+ day: "day";
3613
+ hour: "hour";
3614
+ }>;
3615
+ color: z.ZodNullable<z.ZodString>;
3616
+ icon: z.ZodNullable<z.ZodString>;
3617
+ requiresDocumentAfterDays: z.ZodNullable<z.ZodNumber>;
3618
+ countsWorkingDaysOnly: z.ZodBoolean;
3619
+ allowNegative: z.ZodBoolean;
3620
+ maxNegativeMinutes: z.ZodNumber;
3621
+ order: z.ZodNumber;
3622
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3623
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3624
+ id: z.ZodUUID;
3625
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3626
+ BAD_REQUEST: {
3627
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3628
+ };
3629
+ UNAUTHORIZED: {};
3630
+ FORBIDDEN: {
3631
+ data: z.ZodOptional<z.ZodObject<{
3632
+ permission: z.ZodOptional<z.ZodString>;
3633
+ }, z.core.$strip>>;
3634
+ };
3635
+ NOT_FOUND: {};
3636
+ CONFLICT: {
3637
+ data: z.ZodOptional<z.ZodObject<{
3638
+ reason: z.ZodOptional<z.ZodString>;
3639
+ }, z.core.$strip>>;
3640
+ };
3641
+ RATE_LIMITED: {};
3642
+ MODULE_DISABLED: {
3643
+ data: z.ZodObject<{
3644
+ module: z.ZodString;
3645
+ }, z.core.$strip>;
3646
+ };
3647
+ }>, Record<never, never>>;
3648
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3649
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3650
+ leaveTypeId: z.ZodUUID;
3651
+ }, z.core.$strip>, z.ZodObject<{
3652
+ ok: z.ZodLiteral<true>;
3653
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3654
+ BAD_REQUEST: {
3655
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3656
+ };
3657
+ UNAUTHORIZED: {};
3658
+ FORBIDDEN: {
3659
+ data: z.ZodOptional<z.ZodObject<{
3660
+ permission: z.ZodOptional<z.ZodString>;
3661
+ }, z.core.$strip>>;
3662
+ };
3663
+ NOT_FOUND: {};
3664
+ CONFLICT: {
3665
+ data: z.ZodOptional<z.ZodObject<{
3666
+ reason: z.ZodOptional<z.ZodString>;
3667
+ }, z.core.$strip>>;
3668
+ };
3669
+ RATE_LIMITED: {};
3670
+ MODULE_DISABLED: {
3671
+ data: z.ZodObject<{
3672
+ module: z.ZodString;
3673
+ }, z.core.$strip>;
3674
+ };
3675
+ }>, Record<never, never>>;
3676
+ };
3677
+ /** Everything a person has, per type. Defaults to the caller when `personId` is omitted. */
3678
+ balance: {
3679
+ get: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3680
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3681
+ personId: z.ZodOptional<z.ZodUUID>;
3682
+ periodYear: z.ZodOptional<z.ZodNumber>;
3683
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
3684
+ personId: z.ZodUUID;
3685
+ leaveTypeId: z.ZodUUID;
3686
+ leaveTypeName: z.ZodString;
3687
+ unit: z.ZodEnum<{
3688
+ half_day: "half_day";
3689
+ day: "day";
3690
+ hour: "hour";
3691
+ }>;
3692
+ periodYear: z.ZodNumber;
3693
+ balanceMinutes: z.ZodNumber;
3694
+ bookedMinutes: z.ZodNumber;
3695
+ pendingMinutes: z.ZodNumber;
3696
+ availableMinutes: z.ZodNumber;
3697
+ balance: z.ZodNumber;
3698
+ available: z.ZodNumber;
3699
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3700
+ BAD_REQUEST: {
3701
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3702
+ };
3703
+ UNAUTHORIZED: {};
3704
+ FORBIDDEN: {
3705
+ data: z.ZodOptional<z.ZodObject<{
3706
+ permission: z.ZodOptional<z.ZodString>;
3707
+ }, z.core.$strip>>;
3708
+ };
3709
+ NOT_FOUND: {};
3710
+ CONFLICT: {
3711
+ data: z.ZodOptional<z.ZodObject<{
3712
+ reason: z.ZodOptional<z.ZodString>;
3713
+ }, z.core.$strip>>;
3714
+ };
3715
+ RATE_LIMITED: {};
3716
+ MODULE_DISABLED: {
3717
+ data: z.ZodObject<{
3718
+ module: z.ZodString;
3719
+ }, z.core.$strip>;
3720
+ };
3721
+ }>, Record<never, never>>;
3722
+ };
3723
+ /**
3724
+ * The movements behind a balance.
3725
+ *
3726
+ * The reason the ledger is append-only: when somebody disputes a number, this is the answer —
3727
+ * a list of what happened, in order, that nobody edited.
3728
+ */
3729
+ ledger: {
3730
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3731
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3732
+ cursor: z.ZodOptional<z.ZodString>;
3733
+ limit: z.ZodDefault<z.ZodNumber>;
3734
+ personId: z.ZodUUID;
3735
+ leaveTypeId: z.ZodOptional<z.ZodUUID>;
3736
+ periodYear: z.ZodOptional<z.ZodNumber>;
3737
+ }, z.core.$strip>, z.ZodObject<{
3738
+ items: z.ZodArray<z.ZodObject<{
3739
+ personId: z.ZodUUID;
3740
+ leaveTypeId: z.ZodUUID;
3741
+ kind: z.ZodEnum<{
3742
+ grant: "grant";
3743
+ accrual: "accrual";
3744
+ consumption: "consumption";
3745
+ reversal: "reversal";
3746
+ expiry: "expiry";
3747
+ adjustment: "adjustment";
3748
+ carry_in: "carry_in";
3749
+ carry_out: "carry_out";
3750
+ encashment: "encashment";
3751
+ }>;
3752
+ amountMinutes: z.ZodNumber;
3753
+ effectiveOn: z.ZodISODate;
3754
+ periodYear: z.ZodNumber;
3755
+ requestId: z.ZodNullable<z.ZodUUID>;
3756
+ reversesEntryId: z.ZodNullable<z.ZodUUID>;
3757
+ policyHash: z.ZodNullable<z.ZodString>;
3758
+ reason: z.ZodNullable<z.ZodString>;
3759
+ createdBy: z.ZodNullable<z.ZodUUID>;
3760
+ createdAt: z.ZodISODateTime;
3761
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3762
+ id: z.ZodUUID;
3763
+ }, z.core.$strip>>;
3764
+ nextCursor: z.ZodNullable<z.ZodString>;
3765
+ total: z.ZodOptional<z.ZodNumber>;
3766
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3767
+ BAD_REQUEST: {
3768
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3769
+ };
3770
+ UNAUTHORIZED: {};
3771
+ FORBIDDEN: {
3772
+ data: z.ZodOptional<z.ZodObject<{
3773
+ permission: z.ZodOptional<z.ZodString>;
3774
+ }, z.core.$strip>>;
3775
+ };
3776
+ NOT_FOUND: {};
3777
+ CONFLICT: {
3778
+ data: z.ZodOptional<z.ZodObject<{
3779
+ reason: z.ZodOptional<z.ZodString>;
3780
+ }, z.core.$strip>>;
3781
+ };
3782
+ RATE_LIMITED: {};
3783
+ MODULE_DISABLED: {
3784
+ data: z.ZodObject<{
3785
+ module: z.ZodString;
3786
+ }, z.core.$strip>;
3787
+ };
3788
+ }>, Record<never, never>>;
3789
+ };
3790
+ /** A manual movement. Always carries a reason — an unexplained balance change is the thing HR gets asked about. */
3791
+ adjust: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3792
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3793
+ personId: z.ZodUUID;
3794
+ leaveTypeId: z.ZodUUID;
3795
+ kind: z.ZodDefault<z.ZodEnum<{
3796
+ grant: "grant";
3797
+ accrual: "accrual";
3798
+ consumption: "consumption";
3799
+ reversal: "reversal";
3800
+ expiry: "expiry";
3801
+ adjustment: "adjustment";
3802
+ carry_in: "carry_in";
3803
+ carry_out: "carry_out";
3804
+ encashment: "encashment";
3805
+ }>>;
3806
+ amountMinutes: z.ZodNumber;
3807
+ effectiveOn: z.ZodISODate;
3808
+ reason: z.ZodString;
3809
+ }, z.core.$strip>, z.ZodObject<{
3810
+ personId: z.ZodUUID;
3811
+ leaveTypeId: z.ZodUUID;
3812
+ kind: z.ZodEnum<{
3813
+ grant: "grant";
3814
+ accrual: "accrual";
3815
+ consumption: "consumption";
3816
+ reversal: "reversal";
3817
+ expiry: "expiry";
3818
+ adjustment: "adjustment";
3819
+ carry_in: "carry_in";
3820
+ carry_out: "carry_out";
3821
+ encashment: "encashment";
3822
+ }>;
3823
+ amountMinutes: z.ZodNumber;
3824
+ effectiveOn: z.ZodISODate;
3825
+ periodYear: z.ZodNumber;
3826
+ requestId: z.ZodNullable<z.ZodUUID>;
3827
+ reversesEntryId: z.ZodNullable<z.ZodUUID>;
3828
+ policyHash: z.ZodNullable<z.ZodString>;
3829
+ reason: z.ZodNullable<z.ZodString>;
3830
+ createdBy: z.ZodNullable<z.ZodUUID>;
3831
+ createdAt: z.ZodISODateTime;
3832
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3833
+ id: z.ZodUUID;
3834
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3835
+ BAD_REQUEST: {
3836
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3837
+ };
3838
+ UNAUTHORIZED: {};
3839
+ FORBIDDEN: {
3840
+ data: z.ZodOptional<z.ZodObject<{
3841
+ permission: z.ZodOptional<z.ZodString>;
3842
+ }, z.core.$strip>>;
3843
+ };
3844
+ NOT_FOUND: {};
3845
+ CONFLICT: {
3846
+ data: z.ZodOptional<z.ZodObject<{
3847
+ reason: z.ZodOptional<z.ZodString>;
3848
+ }, z.core.$strip>>;
3849
+ };
3850
+ RATE_LIMITED: {};
3851
+ MODULE_DISABLED: {
3852
+ data: z.ZodObject<{
3853
+ module: z.ZodString;
3854
+ }, z.core.$strip>;
3855
+ };
3856
+ }>, Record<never, never>>;
3857
+ requests: {
3858
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3859
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3860
+ personId: z.ZodOptional<z.ZodUUID>;
3861
+ officeId: z.ZodOptional<z.ZodUUID>;
3862
+ status: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3863
+ pending: "pending";
3864
+ approved: "approved";
3865
+ rejected: "rejected";
3866
+ cancelled: "cancelled";
3867
+ draft: "draft";
3868
+ withdrawn: "withdrawn";
3869
+ }>>>;
3870
+ from: z.ZodOptional<z.ZodISODate>;
3871
+ to: z.ZodOptional<z.ZodISODate>;
3872
+ cursor: z.ZodOptional<z.ZodString>;
3873
+ limit: z.ZodDefault<z.ZodNumber>;
3874
+ }, z.core.$strip>, z.ZodObject<{
3875
+ items: z.ZodArray<z.ZodObject<{
3876
+ personId: z.ZodUUID;
3877
+ leaveTypeId: z.ZodUUID;
3878
+ startsOn: z.ZodISODate;
3879
+ endsOn: z.ZodISODate;
3880
+ startPart: z.ZodEnum<{
3881
+ full: "full";
3882
+ morning: "morning";
3883
+ afternoon: "afternoon";
3884
+ }>;
3885
+ endPart: z.ZodEnum<{
3886
+ full: "full";
3887
+ morning: "morning";
3888
+ afternoon: "afternoon";
3889
+ }>;
3890
+ hours: z.ZodNullable<z.ZodNumber>;
3891
+ workingDays: z.ZodNumber;
3892
+ minutes: z.ZodNumber;
3893
+ status: z.ZodEnum<{
3894
+ pending: "pending";
3895
+ approved: "approved";
3896
+ rejected: "rejected";
3897
+ cancelled: "cancelled";
3898
+ draft: "draft";
3899
+ withdrawn: "withdrawn";
3900
+ }>;
3901
+ reason: z.ZodNullable<z.ZodString>;
3902
+ documentFileId: z.ZodNullable<z.ZodUUID>;
3903
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
3904
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
3905
+ createdAt: z.ZodISODateTime;
3906
+ updatedAt: z.ZodISODateTime;
3907
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3908
+ id: z.ZodUUID;
3909
+ }, z.core.$strip>>;
3910
+ nextCursor: z.ZodNullable<z.ZodString>;
3911
+ total: z.ZodOptional<z.ZodNumber>;
3912
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3913
+ BAD_REQUEST: {
3914
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3915
+ };
3916
+ UNAUTHORIZED: {};
3917
+ FORBIDDEN: {
3918
+ data: z.ZodOptional<z.ZodObject<{
3919
+ permission: z.ZodOptional<z.ZodString>;
3920
+ }, z.core.$strip>>;
3921
+ };
3922
+ NOT_FOUND: {};
3923
+ CONFLICT: {
3924
+ data: z.ZodOptional<z.ZodObject<{
3925
+ reason: z.ZodOptional<z.ZodString>;
3926
+ }, z.core.$strip>>;
3927
+ };
3928
+ RATE_LIMITED: {};
3929
+ MODULE_DISABLED: {
3930
+ data: z.ZodObject<{
3931
+ module: z.ZodString;
3932
+ }, z.core.$strip>;
3933
+ };
3934
+ }>, Record<never, never>>;
3935
+ get: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3936
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3937
+ requestId: z.ZodUUID;
3938
+ }, z.core.$strip>, z.ZodObject<{
3939
+ personId: z.ZodUUID;
3940
+ leaveTypeId: z.ZodUUID;
3941
+ startsOn: z.ZodISODate;
3942
+ endsOn: z.ZodISODate;
3943
+ startPart: z.ZodEnum<{
3944
+ full: "full";
3945
+ morning: "morning";
3946
+ afternoon: "afternoon";
3947
+ }>;
3948
+ endPart: z.ZodEnum<{
3949
+ full: "full";
3950
+ morning: "morning";
3951
+ afternoon: "afternoon";
3952
+ }>;
3953
+ hours: z.ZodNullable<z.ZodNumber>;
3954
+ workingDays: z.ZodNumber;
3955
+ minutes: z.ZodNumber;
3956
+ status: z.ZodEnum<{
3957
+ pending: "pending";
3958
+ approved: "approved";
3959
+ rejected: "rejected";
3960
+ cancelled: "cancelled";
3961
+ draft: "draft";
3962
+ withdrawn: "withdrawn";
3963
+ }>;
3964
+ reason: z.ZodNullable<z.ZodString>;
3965
+ documentFileId: z.ZodNullable<z.ZodUUID>;
3966
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
3967
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
3968
+ createdAt: z.ZodISODateTime;
3969
+ updatedAt: z.ZodISODateTime;
3970
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3971
+ id: z.ZodUUID;
3972
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3973
+ BAD_REQUEST: {
3974
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3975
+ };
3976
+ UNAUTHORIZED: {};
3977
+ FORBIDDEN: {
3978
+ data: z.ZodOptional<z.ZodObject<{
3979
+ permission: z.ZodOptional<z.ZodString>;
3980
+ }, z.core.$strip>>;
3981
+ };
3982
+ NOT_FOUND: {};
3983
+ CONFLICT: {
3984
+ data: z.ZodOptional<z.ZodObject<{
3985
+ reason: z.ZodOptional<z.ZodString>;
3986
+ }, z.core.$strip>>;
3987
+ };
3988
+ RATE_LIMITED: {};
3989
+ MODULE_DISABLED: {
3990
+ data: z.ZodObject<{
3991
+ module: z.ZodString;
3992
+ }, z.core.$strip>;
3993
+ };
3994
+ }>, Record<never, never>>;
3995
+ /** What it would cost and whether it would be refused — before anybody submits. */
3996
+ simulate: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3997
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3998
+ personId: z.ZodOptional<z.ZodUUID>;
3999
+ leaveTypeId: z.ZodUUID;
4000
+ startsOn: z.ZodISODate;
4001
+ endsOn: z.ZodISODate;
4002
+ startPart: z.ZodDefault<z.ZodEnum<{
4003
+ full: "full";
4004
+ morning: "morning";
4005
+ afternoon: "afternoon";
4006
+ }>>;
4007
+ endPart: z.ZodDefault<z.ZodEnum<{
4008
+ full: "full";
4009
+ morning: "morning";
4010
+ afternoon: "afternoon";
4011
+ }>>;
4012
+ hours: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
4013
+ }, z.core.$strip>, z.ZodObject<{
4014
+ workingDays: z.ZodNumber;
4015
+ minutes: z.ZodNumber;
4016
+ days: z.ZodArray<z.ZodObject<{
4017
+ date: z.ZodISODate;
4018
+ fraction: z.ZodNumber;
4019
+ counted: z.ZodBoolean;
4020
+ reason: z.ZodNullable<z.ZodString>;
4021
+ }, z.core.$strip>>;
4022
+ balanceBeforeMinutes: z.ZodNumber;
4023
+ balanceAfterMinutes: z.ZodNumber;
4024
+ blockers: z.ZodArray<z.ZodObject<{
4025
+ code: z.ZodString;
4026
+ message: z.ZodString;
4027
+ }, z.core.$strip>>;
4028
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4029
+ BAD_REQUEST: {
4030
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4031
+ };
4032
+ UNAUTHORIZED: {};
4033
+ FORBIDDEN: {
4034
+ data: z.ZodOptional<z.ZodObject<{
4035
+ permission: z.ZodOptional<z.ZodString>;
4036
+ }, z.core.$strip>>;
4037
+ };
4038
+ NOT_FOUND: {};
4039
+ CONFLICT: {
4040
+ data: z.ZodOptional<z.ZodObject<{
4041
+ reason: z.ZodOptional<z.ZodString>;
4042
+ }, z.core.$strip>>;
4043
+ };
4044
+ RATE_LIMITED: {};
4045
+ MODULE_DISABLED: {
4046
+ data: z.ZodObject<{
4047
+ module: z.ZodString;
4048
+ }, z.core.$strip>;
4049
+ };
4050
+ }>, Record<never, never>>;
4051
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4052
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4053
+ personId: z.ZodOptional<z.ZodUUID>;
4054
+ leaveTypeId: z.ZodUUID;
4055
+ startsOn: z.ZodISODate;
4056
+ endsOn: z.ZodISODate;
4057
+ startPart: z.ZodDefault<z.ZodEnum<{
4058
+ full: "full";
4059
+ morning: "morning";
4060
+ afternoon: "afternoon";
4061
+ }>>;
4062
+ endPart: z.ZodDefault<z.ZodEnum<{
4063
+ full: "full";
4064
+ morning: "morning";
4065
+ afternoon: "afternoon";
4066
+ }>>;
4067
+ hours: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
4068
+ reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4069
+ documentFileId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
4070
+ idempotencyKey: z.ZodOptional<z.ZodString>;
4071
+ }, z.core.$strip>, z.ZodObject<{
4072
+ personId: z.ZodUUID;
4073
+ leaveTypeId: z.ZodUUID;
4074
+ startsOn: z.ZodISODate;
4075
+ endsOn: z.ZodISODate;
4076
+ startPart: z.ZodEnum<{
4077
+ full: "full";
4078
+ morning: "morning";
4079
+ afternoon: "afternoon";
4080
+ }>;
4081
+ endPart: z.ZodEnum<{
4082
+ full: "full";
4083
+ morning: "morning";
4084
+ afternoon: "afternoon";
4085
+ }>;
4086
+ hours: z.ZodNullable<z.ZodNumber>;
4087
+ workingDays: z.ZodNumber;
4088
+ minutes: z.ZodNumber;
4089
+ status: z.ZodEnum<{
4090
+ pending: "pending";
4091
+ approved: "approved";
4092
+ rejected: "rejected";
4093
+ cancelled: "cancelled";
4094
+ draft: "draft";
4095
+ withdrawn: "withdrawn";
4096
+ }>;
4097
+ reason: z.ZodNullable<z.ZodString>;
4098
+ documentFileId: z.ZodNullable<z.ZodUUID>;
4099
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
4100
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
4101
+ createdAt: z.ZodISODateTime;
4102
+ updatedAt: z.ZodISODateTime;
4103
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4104
+ id: z.ZodUUID;
4105
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4106
+ BAD_REQUEST: {
4107
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4108
+ };
4109
+ UNAUTHORIZED: {};
4110
+ FORBIDDEN: {
4111
+ data: z.ZodOptional<z.ZodObject<{
4112
+ permission: z.ZodOptional<z.ZodString>;
4113
+ }, z.core.$strip>>;
4114
+ };
4115
+ NOT_FOUND: {};
4116
+ CONFLICT: {
4117
+ data: z.ZodOptional<z.ZodObject<{
4118
+ reason: z.ZodOptional<z.ZodString>;
4119
+ }, z.core.$strip>>;
4120
+ };
4121
+ RATE_LIMITED: {};
4122
+ MODULE_DISABLED: {
4123
+ data: z.ZodObject<{
4124
+ module: z.ZodString;
4125
+ }, z.core.$strip>;
4126
+ };
4127
+ }>, Record<never, never>>;
4128
+ /**
4129
+ * Cancels a request. An approved one is reversed in the ledger rather than deleted, so the
4130
+ * balance goes back up and the history still says what happened.
4131
+ */
4132
+ cancel: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4133
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4134
+ requestId: z.ZodUUID;
4135
+ reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4136
+ }, z.core.$strip>, z.ZodObject<{
4137
+ personId: z.ZodUUID;
4138
+ leaveTypeId: z.ZodUUID;
4139
+ startsOn: z.ZodISODate;
4140
+ endsOn: z.ZodISODate;
4141
+ startPart: z.ZodEnum<{
4142
+ full: "full";
4143
+ morning: "morning";
4144
+ afternoon: "afternoon";
4145
+ }>;
4146
+ endPart: z.ZodEnum<{
4147
+ full: "full";
4148
+ morning: "morning";
4149
+ afternoon: "afternoon";
4150
+ }>;
4151
+ hours: z.ZodNullable<z.ZodNumber>;
4152
+ workingDays: z.ZodNumber;
4153
+ minutes: z.ZodNumber;
4154
+ status: z.ZodEnum<{
4155
+ pending: "pending";
4156
+ approved: "approved";
4157
+ rejected: "rejected";
4158
+ cancelled: "cancelled";
4159
+ draft: "draft";
4160
+ withdrawn: "withdrawn";
4161
+ }>;
4162
+ reason: z.ZodNullable<z.ZodString>;
4163
+ documentFileId: z.ZodNullable<z.ZodUUID>;
4164
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
4165
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
4166
+ createdAt: z.ZodISODateTime;
4167
+ updatedAt: z.ZodISODateTime;
4168
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4169
+ id: z.ZodUUID;
4170
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4171
+ BAD_REQUEST: {
4172
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4173
+ };
4174
+ UNAUTHORIZED: {};
4175
+ FORBIDDEN: {
4176
+ data: z.ZodOptional<z.ZodObject<{
4177
+ permission: z.ZodOptional<z.ZodString>;
4178
+ }, z.core.$strip>>;
4179
+ };
4180
+ NOT_FOUND: {};
4181
+ CONFLICT: {
4182
+ data: z.ZodOptional<z.ZodObject<{
4183
+ reason: z.ZodOptional<z.ZodString>;
4184
+ }, z.core.$strip>>;
4185
+ };
4186
+ RATE_LIMITED: {};
4187
+ MODULE_DISABLED: {
4188
+ data: z.ZodObject<{
4189
+ module: z.ZodString;
4190
+ }, z.core.$strip>;
4191
+ };
4192
+ }>, Record<never, never>>;
4193
+ };
4194
+ /** Who is off, over a range — the answer a team actually looks at. */
4195
+ team: {
4196
+ calendar: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4197
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4198
+ from: z.ZodISODate;
4199
+ to: z.ZodISODate;
4200
+ officeId: z.ZodOptional<z.ZodUUID>;
4201
+ orgUnitId: z.ZodOptional<z.ZodUUID>;
4202
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4203
+ personId: z.ZodUUID;
4204
+ displayName: z.ZodString;
4205
+ requestId: z.ZodUUID;
4206
+ startsOn: z.ZodISODate;
4207
+ endsOn: z.ZodISODate;
4208
+ status: z.ZodEnum<{
4209
+ pending: "pending";
4210
+ approved: "approved";
4211
+ rejected: "rejected";
4212
+ cancelled: "cancelled";
4213
+ draft: "draft";
4214
+ withdrawn: "withdrawn";
4215
+ }>;
4216
+ leaveTypeName: z.ZodNullable<z.ZodString>;
4217
+ color: z.ZodNullable<z.ZodString>;
4218
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4219
+ BAD_REQUEST: {
4220
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4221
+ };
4222
+ UNAUTHORIZED: {};
4223
+ FORBIDDEN: {
4224
+ data: z.ZodOptional<z.ZodObject<{
4225
+ permission: z.ZodOptional<z.ZodString>;
4226
+ }, z.core.$strip>>;
4227
+ };
4228
+ NOT_FOUND: {};
4229
+ CONFLICT: {
4230
+ data: z.ZodOptional<z.ZodObject<{
4231
+ reason: z.ZodOptional<z.ZodString>;
4232
+ }, z.core.$strip>>;
4233
+ };
4234
+ RATE_LIMITED: {};
4235
+ MODULE_DISABLED: {
4236
+ data: z.ZodObject<{
4237
+ module: z.ZodString;
4238
+ }, z.core.$strip>;
4239
+ };
4240
+ }>, Record<never, never>>;
4241
+ };
4242
+ };
4243
+ approvals: {
4244
+ /** Everything waiting on the caller, across every subject type. */
4245
+ inbox: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4246
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4247
+ includeDecided: z.ZodDefault<z.ZodBoolean>;
4248
+ cursor: z.ZodOptional<z.ZodString>;
4249
+ limit: z.ZodDefault<z.ZodNumber>;
4250
+ }, z.core.$strip>, z.ZodObject<{
4251
+ items: z.ZodArray<z.ZodObject<{
4252
+ subjectType: z.ZodEnum<{
4253
+ leave: "leave";
4254
+ regularization: "regularization";
4255
+ overtime: "overtime";
4256
+ timesheet: "timesheet";
4257
+ shift_swap: "shift_swap";
4258
+ }>;
4259
+ subjectId: z.ZodUUID;
4260
+ summary: z.ZodString;
4261
+ status: z.ZodEnum<{
4262
+ pending: "pending";
4263
+ approved: "approved";
4264
+ rejected: "rejected";
4265
+ cancelled: "cancelled";
4266
+ }>;
4267
+ currentStep: z.ZodNumber;
4268
+ requestedBy: z.ZodNullable<z.ZodUUID>;
4269
+ requestedAt: z.ZodISODateTime;
4270
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
4271
+ steps: z.ZodArray<z.ZodObject<{
4272
+ id: z.ZodUUID;
4273
+ requestId: z.ZodUUID;
4274
+ stepIndex: z.ZodNumber;
4275
+ name: z.ZodString;
4276
+ mode: z.ZodEnum<{
4277
+ any: "any";
4278
+ all: "all";
4279
+ quorum: "quorum";
4280
+ }>;
4281
+ minApprovals: z.ZodNumber;
4282
+ approverIds: z.ZodArray<z.ZodUUID>;
4283
+ status: z.ZodEnum<{
4284
+ pending: "pending";
4285
+ approved: "approved";
4286
+ rejected: "rejected";
4287
+ cancelled: "cancelled";
4288
+ }>;
4289
+ dueAt: z.ZodNullable<z.ZodISODateTime>;
4290
+ escalatedAt: z.ZodNullable<z.ZodISODateTime>;
4291
+ decisions: z.ZodArray<z.ZodObject<{
4292
+ id: z.ZodUUID;
4293
+ stepId: z.ZodUUID;
4294
+ approverId: z.ZodUUID;
4295
+ onBehalfOfId: z.ZodNullable<z.ZodUUID>;
4296
+ decision: z.ZodEnum<{
4297
+ approve: "approve";
4298
+ reject: "reject";
4299
+ }>;
4300
+ comment: z.ZodNullable<z.ZodString>;
4301
+ at: z.ZodISODateTime;
4302
+ }, z.core.$strip>>;
4303
+ }, z.core.$strip>>;
4304
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4305
+ id: z.ZodUUID;
4306
+ }, z.core.$strip>>;
4307
+ nextCursor: z.ZodNullable<z.ZodString>;
4308
+ total: z.ZodOptional<z.ZodNumber>;
4309
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4310
+ BAD_REQUEST: {
4311
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4312
+ };
4313
+ UNAUTHORIZED: {};
4314
+ FORBIDDEN: {
4315
+ data: z.ZodOptional<z.ZodObject<{
4316
+ permission: z.ZodOptional<z.ZodString>;
4317
+ }, z.core.$strip>>;
4318
+ };
4319
+ NOT_FOUND: {};
4320
+ CONFLICT: {
4321
+ data: z.ZodOptional<z.ZodObject<{
4322
+ reason: z.ZodOptional<z.ZodString>;
4323
+ }, z.core.$strip>>;
4324
+ };
4325
+ RATE_LIMITED: {};
4326
+ MODULE_DISABLED: {
4327
+ data: z.ZodObject<{
4328
+ module: z.ZodString;
4329
+ }, z.core.$strip>;
4330
+ };
4331
+ }>, Record<never, never>>;
4332
+ get: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4333
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4334
+ requestId: z.ZodUUID;
4335
+ }, z.core.$strip>, z.ZodObject<{
4336
+ subjectType: z.ZodEnum<{
4337
+ leave: "leave";
4338
+ regularization: "regularization";
4339
+ overtime: "overtime";
4340
+ timesheet: "timesheet";
4341
+ shift_swap: "shift_swap";
4342
+ }>;
4343
+ subjectId: z.ZodUUID;
4344
+ summary: z.ZodString;
4345
+ status: z.ZodEnum<{
4346
+ pending: "pending";
4347
+ approved: "approved";
4348
+ rejected: "rejected";
4349
+ cancelled: "cancelled";
4350
+ }>;
4351
+ currentStep: z.ZodNumber;
4352
+ requestedBy: z.ZodNullable<z.ZodUUID>;
4353
+ requestedAt: z.ZodISODateTime;
4354
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
4355
+ steps: z.ZodArray<z.ZodObject<{
4356
+ id: z.ZodUUID;
4357
+ requestId: z.ZodUUID;
4358
+ stepIndex: z.ZodNumber;
4359
+ name: z.ZodString;
4360
+ mode: z.ZodEnum<{
4361
+ any: "any";
4362
+ all: "all";
4363
+ quorum: "quorum";
4364
+ }>;
4365
+ minApprovals: z.ZodNumber;
4366
+ approverIds: z.ZodArray<z.ZodUUID>;
4367
+ status: z.ZodEnum<{
4368
+ pending: "pending";
4369
+ approved: "approved";
4370
+ rejected: "rejected";
4371
+ cancelled: "cancelled";
4372
+ }>;
4373
+ dueAt: z.ZodNullable<z.ZodISODateTime>;
4374
+ escalatedAt: z.ZodNullable<z.ZodISODateTime>;
4375
+ decisions: z.ZodArray<z.ZodObject<{
4376
+ id: z.ZodUUID;
4377
+ stepId: z.ZodUUID;
4378
+ approverId: z.ZodUUID;
4379
+ onBehalfOfId: z.ZodNullable<z.ZodUUID>;
4380
+ decision: z.ZodEnum<{
4381
+ approve: "approve";
4382
+ reject: "reject";
4383
+ }>;
4384
+ comment: z.ZodNullable<z.ZodString>;
4385
+ at: z.ZodISODateTime;
4386
+ }, z.core.$strip>>;
4387
+ }, z.core.$strip>>;
4388
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4389
+ id: z.ZodUUID;
4390
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4391
+ BAD_REQUEST: {
4392
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4393
+ };
4394
+ UNAUTHORIZED: {};
4395
+ FORBIDDEN: {
4396
+ data: z.ZodOptional<z.ZodObject<{
4397
+ permission: z.ZodOptional<z.ZodString>;
4398
+ }, z.core.$strip>>;
4399
+ };
4400
+ NOT_FOUND: {};
4401
+ CONFLICT: {
4402
+ data: z.ZodOptional<z.ZodObject<{
4403
+ reason: z.ZodOptional<z.ZodString>;
4404
+ }, z.core.$strip>>;
4405
+ };
4406
+ RATE_LIMITED: {};
4407
+ MODULE_DISABLED: {
4408
+ data: z.ZodObject<{
4409
+ module: z.ZodString;
4410
+ }, z.core.$strip>;
4411
+ };
4412
+ }>, Record<never, never>>;
4413
+ /**
4414
+ * Approve or reject. Idempotent per approver per step — a double click is one decision, and the
4415
+ * database refuses the second rather than counting it twice.
4416
+ */
4417
+ decide: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4418
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4419
+ requestId: z.ZodUUID;
4420
+ decision: z.ZodEnum<{
4421
+ approve: "approve";
4422
+ reject: "reject";
4423
+ }>;
4424
+ comment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4425
+ onBehalfOfId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
4426
+ }, z.core.$strip>, z.ZodObject<{
4427
+ subjectType: z.ZodEnum<{
4428
+ leave: "leave";
4429
+ regularization: "regularization";
4430
+ overtime: "overtime";
4431
+ timesheet: "timesheet";
4432
+ shift_swap: "shift_swap";
4433
+ }>;
4434
+ subjectId: z.ZodUUID;
4435
+ summary: z.ZodString;
4436
+ status: z.ZodEnum<{
4437
+ pending: "pending";
4438
+ approved: "approved";
4439
+ rejected: "rejected";
4440
+ cancelled: "cancelled";
4441
+ }>;
4442
+ currentStep: z.ZodNumber;
4443
+ requestedBy: z.ZodNullable<z.ZodUUID>;
4444
+ requestedAt: z.ZodISODateTime;
4445
+ decidedAt: z.ZodNullable<z.ZodISODateTime>;
4446
+ steps: z.ZodArray<z.ZodObject<{
4447
+ id: z.ZodUUID;
4448
+ requestId: z.ZodUUID;
4449
+ stepIndex: z.ZodNumber;
4450
+ name: z.ZodString;
4451
+ mode: z.ZodEnum<{
4452
+ any: "any";
4453
+ all: "all";
4454
+ quorum: "quorum";
4455
+ }>;
4456
+ minApprovals: z.ZodNumber;
4457
+ approverIds: z.ZodArray<z.ZodUUID>;
4458
+ status: z.ZodEnum<{
4459
+ pending: "pending";
4460
+ approved: "approved";
4461
+ rejected: "rejected";
4462
+ cancelled: "cancelled";
4463
+ }>;
4464
+ dueAt: z.ZodNullable<z.ZodISODateTime>;
4465
+ escalatedAt: z.ZodNullable<z.ZodISODateTime>;
4466
+ decisions: z.ZodArray<z.ZodObject<{
4467
+ id: z.ZodUUID;
4468
+ stepId: z.ZodUUID;
4469
+ approverId: z.ZodUUID;
4470
+ onBehalfOfId: z.ZodNullable<z.ZodUUID>;
4471
+ decision: z.ZodEnum<{
4472
+ approve: "approve";
4473
+ reject: "reject";
4474
+ }>;
4475
+ comment: z.ZodNullable<z.ZodString>;
4476
+ at: z.ZodISODateTime;
4477
+ }, z.core.$strip>>;
4478
+ }, z.core.$strip>>;
4479
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4480
+ id: z.ZodUUID;
4481
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4482
+ BAD_REQUEST: {
4483
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4484
+ };
4485
+ UNAUTHORIZED: {};
4486
+ FORBIDDEN: {
4487
+ data: z.ZodOptional<z.ZodObject<{
4488
+ permission: z.ZodOptional<z.ZodString>;
4489
+ }, z.core.$strip>>;
4490
+ };
4491
+ NOT_FOUND: {};
4492
+ CONFLICT: {
4493
+ data: z.ZodOptional<z.ZodObject<{
4494
+ reason: z.ZodOptional<z.ZodString>;
4495
+ }, z.core.$strip>>;
4496
+ };
4497
+ RATE_LIMITED: {};
4498
+ MODULE_DISABLED: {
4499
+ data: z.ZodObject<{
4500
+ module: z.ZodString;
4501
+ }, z.core.$strip>;
4502
+ };
4503
+ }>, Record<never, never>>;
4504
+ chains: {
4505
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4506
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4507
+ subjectType: z.ZodOptional<z.ZodEnum<{
4508
+ leave: "leave";
4509
+ regularization: "regularization";
4510
+ overtime: "overtime";
4511
+ timesheet: "timesheet";
4512
+ shift_swap: "shift_swap";
4513
+ }>>;
4514
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4515
+ name: z.ZodString;
4516
+ subjectType: z.ZodEnum<{
4517
+ leave: "leave";
4518
+ regularization: "regularization";
4519
+ overtime: "overtime";
4520
+ timesheet: "timesheet";
4521
+ shift_swap: "shift_swap";
4522
+ }>;
4523
+ spec: z.ZodObject<{
4524
+ steps: z.ZodArray<z.ZodObject<{
4525
+ name: z.ZodString;
4526
+ approvers: z.ZodArray<z.ZodObject<{
4527
+ kind: z.ZodEnum<{
4528
+ person: "person";
4529
+ manager: "manager";
4530
+ manager_of_manager: "manager_of_manager";
4531
+ org_unit_head: "org_unit_head";
4532
+ office_head: "office_head";
4533
+ permission: "permission";
4534
+ group: "group";
4535
+ }>;
4536
+ id: z.ZodOptional<z.ZodString>;
4537
+ }, z.core.$strip>>;
4538
+ mode: z.ZodEnum<{
4539
+ any: "any";
4540
+ all: "all";
4541
+ quorum: "quorum";
4542
+ }>;
4543
+ minApprovals: z.ZodNumber;
4544
+ slaHours: z.ZodNullable<z.ZodNumber>;
4545
+ onTimeout: z.ZodEnum<{
4546
+ remind: "remind";
4547
+ escalate: "escalate";
4548
+ auto_approve: "auto_approve";
4549
+ }>;
4550
+ }, z.core.$strip>>;
4551
+ }, z.core.$strip>;
4552
+ isDefault: z.ZodBoolean;
4553
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4554
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4555
+ id: z.ZodUUID;
4556
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4557
+ BAD_REQUEST: {
4558
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4559
+ };
4560
+ UNAUTHORIZED: {};
4561
+ FORBIDDEN: {
4562
+ data: z.ZodOptional<z.ZodObject<{
4563
+ permission: z.ZodOptional<z.ZodString>;
4564
+ }, z.core.$strip>>;
4565
+ };
4566
+ NOT_FOUND: {};
4567
+ CONFLICT: {
4568
+ data: z.ZodOptional<z.ZodObject<{
4569
+ reason: z.ZodOptional<z.ZodString>;
4570
+ }, z.core.$strip>>;
4571
+ };
4572
+ RATE_LIMITED: {};
4573
+ MODULE_DISABLED: {
4574
+ data: z.ZodObject<{
4575
+ module: z.ZodString;
4576
+ }, z.core.$strip>;
4577
+ };
4578
+ }>, Record<never, never>>;
4579
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4580
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4581
+ name: z.ZodString;
4582
+ subjectType: z.ZodEnum<{
4583
+ leave: "leave";
4584
+ regularization: "regularization";
4585
+ overtime: "overtime";
4586
+ timesheet: "timesheet";
4587
+ shift_swap: "shift_swap";
4588
+ }>;
4589
+ spec: z.ZodObject<{
4590
+ steps: z.ZodArray<z.ZodObject<{
4591
+ name: z.ZodString;
4592
+ approvers: z.ZodArray<z.ZodObject<{
4593
+ kind: z.ZodEnum<{
4594
+ person: "person";
4595
+ manager: "manager";
4596
+ manager_of_manager: "manager_of_manager";
4597
+ org_unit_head: "org_unit_head";
4598
+ office_head: "office_head";
4599
+ permission: "permission";
4600
+ group: "group";
4601
+ }>;
4602
+ id: z.ZodOptional<z.ZodString>;
4603
+ }, z.core.$strip>>;
4604
+ mode: z.ZodEnum<{
4605
+ any: "any";
4606
+ all: "all";
4607
+ quorum: "quorum";
4608
+ }>;
4609
+ minApprovals: z.ZodNumber;
4610
+ slaHours: z.ZodNullable<z.ZodNumber>;
4611
+ onTimeout: z.ZodEnum<{
4612
+ remind: "remind";
4613
+ escalate: "escalate";
4614
+ auto_approve: "auto_approve";
4615
+ }>;
4616
+ }, z.core.$strip>>;
4617
+ }, z.core.$strip>;
4618
+ isDefault: z.ZodDefault<z.ZodBoolean>;
4619
+ }, z.core.$strip>, z.ZodObject<{
4620
+ name: z.ZodString;
4621
+ subjectType: z.ZodEnum<{
4622
+ leave: "leave";
4623
+ regularization: "regularization";
4624
+ overtime: "overtime";
4625
+ timesheet: "timesheet";
4626
+ shift_swap: "shift_swap";
4627
+ }>;
4628
+ spec: z.ZodObject<{
4629
+ steps: z.ZodArray<z.ZodObject<{
4630
+ name: z.ZodString;
4631
+ approvers: z.ZodArray<z.ZodObject<{
4632
+ kind: z.ZodEnum<{
4633
+ person: "person";
4634
+ manager: "manager";
4635
+ manager_of_manager: "manager_of_manager";
4636
+ org_unit_head: "org_unit_head";
4637
+ office_head: "office_head";
4638
+ permission: "permission";
4639
+ group: "group";
4640
+ }>;
4641
+ id: z.ZodOptional<z.ZodString>;
4642
+ }, z.core.$strip>>;
4643
+ mode: z.ZodEnum<{
4644
+ any: "any";
4645
+ all: "all";
4646
+ quorum: "quorum";
4647
+ }>;
4648
+ minApprovals: z.ZodNumber;
4649
+ slaHours: z.ZodNullable<z.ZodNumber>;
4650
+ onTimeout: z.ZodEnum<{
4651
+ remind: "remind";
4652
+ escalate: "escalate";
4653
+ auto_approve: "auto_approve";
4654
+ }>;
4655
+ }, z.core.$strip>>;
4656
+ }, z.core.$strip>;
4657
+ isDefault: z.ZodBoolean;
4658
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4659
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4660
+ id: z.ZodUUID;
4661
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4662
+ BAD_REQUEST: {
4663
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4664
+ };
4665
+ UNAUTHORIZED: {};
4666
+ FORBIDDEN: {
4667
+ data: z.ZodOptional<z.ZodObject<{
4668
+ permission: z.ZodOptional<z.ZodString>;
4669
+ }, z.core.$strip>>;
4670
+ };
4671
+ NOT_FOUND: {};
4672
+ CONFLICT: {
4673
+ data: z.ZodOptional<z.ZodObject<{
4674
+ reason: z.ZodOptional<z.ZodString>;
4675
+ }, z.core.$strip>>;
4676
+ };
4677
+ RATE_LIMITED: {};
4678
+ MODULE_DISABLED: {
4679
+ data: z.ZodObject<{
4680
+ module: z.ZodString;
4681
+ }, z.core.$strip>;
4682
+ };
4683
+ }>, Record<never, never>>;
4684
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4685
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4686
+ chainId: z.ZodUUID;
4687
+ name: z.ZodOptional<z.ZodString>;
4688
+ spec: z.ZodOptional<z.ZodObject<{
4689
+ steps: z.ZodArray<z.ZodObject<{
4690
+ name: z.ZodString;
4691
+ approvers: z.ZodArray<z.ZodObject<{
4692
+ kind: z.ZodEnum<{
4693
+ person: "person";
4694
+ manager: "manager";
4695
+ manager_of_manager: "manager_of_manager";
4696
+ org_unit_head: "org_unit_head";
4697
+ office_head: "office_head";
4698
+ permission: "permission";
4699
+ group: "group";
4700
+ }>;
4701
+ id: z.ZodOptional<z.ZodString>;
4702
+ }, z.core.$strip>>;
4703
+ mode: z.ZodEnum<{
4704
+ any: "any";
4705
+ all: "all";
4706
+ quorum: "quorum";
4707
+ }>;
4708
+ minApprovals: z.ZodNumber;
4709
+ slaHours: z.ZodNullable<z.ZodNumber>;
4710
+ onTimeout: z.ZodEnum<{
4711
+ remind: "remind";
4712
+ escalate: "escalate";
4713
+ auto_approve: "auto_approve";
4714
+ }>;
4715
+ }, z.core.$strip>>;
4716
+ }, z.core.$strip>>;
4717
+ isDefault: z.ZodOptional<z.ZodBoolean>;
4718
+ }, z.core.$strip>, z.ZodObject<{
4719
+ name: z.ZodString;
4720
+ subjectType: z.ZodEnum<{
4721
+ leave: "leave";
4722
+ regularization: "regularization";
4723
+ overtime: "overtime";
4724
+ timesheet: "timesheet";
4725
+ shift_swap: "shift_swap";
4726
+ }>;
4727
+ spec: z.ZodObject<{
4728
+ steps: z.ZodArray<z.ZodObject<{
4729
+ name: z.ZodString;
4730
+ approvers: z.ZodArray<z.ZodObject<{
4731
+ kind: z.ZodEnum<{
4732
+ person: "person";
4733
+ manager: "manager";
4734
+ manager_of_manager: "manager_of_manager";
4735
+ org_unit_head: "org_unit_head";
4736
+ office_head: "office_head";
4737
+ permission: "permission";
4738
+ group: "group";
4739
+ }>;
4740
+ id: z.ZodOptional<z.ZodString>;
4741
+ }, z.core.$strip>>;
4742
+ mode: z.ZodEnum<{
4743
+ any: "any";
4744
+ all: "all";
4745
+ quorum: "quorum";
4746
+ }>;
4747
+ minApprovals: z.ZodNumber;
4748
+ slaHours: z.ZodNullable<z.ZodNumber>;
4749
+ onTimeout: z.ZodEnum<{
4750
+ remind: "remind";
4751
+ escalate: "escalate";
4752
+ auto_approve: "auto_approve";
4753
+ }>;
4754
+ }, z.core.$strip>>;
4755
+ }, z.core.$strip>;
4756
+ isDefault: z.ZodBoolean;
4757
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
4758
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4759
+ id: z.ZodUUID;
4760
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4761
+ BAD_REQUEST: {
4762
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4763
+ };
4764
+ UNAUTHORIZED: {};
4765
+ FORBIDDEN: {
4766
+ data: z.ZodOptional<z.ZodObject<{
4767
+ permission: z.ZodOptional<z.ZodString>;
4768
+ }, z.core.$strip>>;
4769
+ };
4770
+ NOT_FOUND: {};
4771
+ CONFLICT: {
4772
+ data: z.ZodOptional<z.ZodObject<{
4773
+ reason: z.ZodOptional<z.ZodString>;
4774
+ }, z.core.$strip>>;
4775
+ };
4776
+ RATE_LIMITED: {};
4777
+ MODULE_DISABLED: {
4778
+ data: z.ZodObject<{
4779
+ module: z.ZodString;
4780
+ }, z.core.$strip>;
4781
+ };
4782
+ }>, Record<never, never>>;
4783
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4784
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4785
+ chainId: z.ZodUUID;
4786
+ }, z.core.$strip>, z.ZodObject<{
4787
+ ok: z.ZodLiteral<true>;
4788
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4789
+ BAD_REQUEST: {
4790
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4791
+ };
4792
+ UNAUTHORIZED: {};
4793
+ FORBIDDEN: {
4794
+ data: z.ZodOptional<z.ZodObject<{
4795
+ permission: z.ZodOptional<z.ZodString>;
4796
+ }, z.core.$strip>>;
4797
+ };
4798
+ NOT_FOUND: {};
4799
+ CONFLICT: {
4800
+ data: z.ZodOptional<z.ZodObject<{
4801
+ reason: z.ZodOptional<z.ZodString>;
4802
+ }, z.core.$strip>>;
4803
+ };
4804
+ RATE_LIMITED: {};
4805
+ MODULE_DISABLED: {
4806
+ data: z.ZodObject<{
4807
+ module: z.ZodString;
4808
+ }, z.core.$strip>;
4809
+ };
4810
+ }>, Record<never, never>>;
4811
+ };
4812
+ delegations: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4813
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4814
+ personId: z.ZodOptional<z.ZodUUID>;
4815
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
4816
+ fromPersonId: z.ZodUUID;
4817
+ toPersonId: z.ZodUUID;
4818
+ subjectType: z.ZodNullable<z.ZodEnum<{
4819
+ leave: "leave";
4820
+ regularization: "regularization";
4821
+ overtime: "overtime";
4822
+ timesheet: "timesheet";
4823
+ shift_swap: "shift_swap";
4824
+ }>>;
4825
+ startsOn: z.ZodISODate;
4826
+ endsOn: z.ZodISODate;
4827
+ reason: z.ZodNullable<z.ZodString>;
4828
+ createdAt: z.ZodISODateTime;
4829
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4830
+ id: z.ZodUUID;
4831
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4832
+ BAD_REQUEST: {
4833
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4834
+ };
4835
+ UNAUTHORIZED: {};
4836
+ FORBIDDEN: {
4837
+ data: z.ZodOptional<z.ZodObject<{
4838
+ permission: z.ZodOptional<z.ZodString>;
4839
+ }, z.core.$strip>>;
4840
+ };
4841
+ NOT_FOUND: {};
4842
+ CONFLICT: {
4843
+ data: z.ZodOptional<z.ZodObject<{
4844
+ reason: z.ZodOptional<z.ZodString>;
4845
+ }, z.core.$strip>>;
4846
+ };
4847
+ RATE_LIMITED: {};
4848
+ MODULE_DISABLED: {
4849
+ data: z.ZodObject<{
4850
+ module: z.ZodString;
4851
+ }, z.core.$strip>;
4852
+ };
4853
+ }>, Record<never, never>>;
4854
+ delegate: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4855
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4856
+ toPersonId: z.ZodUUID;
4857
+ subjectType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
4858
+ leave: "leave";
4859
+ regularization: "regularization";
4860
+ overtime: "overtime";
4861
+ timesheet: "timesheet";
4862
+ shift_swap: "shift_swap";
4863
+ }>>>;
4864
+ startsOn: z.ZodISODate;
4865
+ endsOn: z.ZodISODate;
4866
+ reason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4867
+ }, z.core.$strip>, z.ZodObject<{
4868
+ fromPersonId: z.ZodUUID;
4869
+ toPersonId: z.ZodUUID;
4870
+ subjectType: z.ZodNullable<z.ZodEnum<{
4871
+ leave: "leave";
4872
+ regularization: "regularization";
4873
+ overtime: "overtime";
4874
+ timesheet: "timesheet";
4875
+ shift_swap: "shift_swap";
4876
+ }>>;
4877
+ startsOn: z.ZodISODate;
4878
+ endsOn: z.ZodISODate;
4879
+ reason: z.ZodNullable<z.ZodString>;
4880
+ createdAt: z.ZodISODateTime;
4881
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4882
+ id: z.ZodUUID;
4883
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4884
+ BAD_REQUEST: {
4885
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4886
+ };
4887
+ UNAUTHORIZED: {};
4888
+ FORBIDDEN: {
4889
+ data: z.ZodOptional<z.ZodObject<{
4890
+ permission: z.ZodOptional<z.ZodString>;
4891
+ }, z.core.$strip>>;
4892
+ };
4893
+ NOT_FOUND: {};
4894
+ CONFLICT: {
4895
+ data: z.ZodOptional<z.ZodObject<{
4896
+ reason: z.ZodOptional<z.ZodString>;
4897
+ }, z.core.$strip>>;
4898
+ };
4899
+ RATE_LIMITED: {};
4900
+ MODULE_DISABLED: {
4901
+ data: z.ZodObject<{
4902
+ module: z.ZodString;
4903
+ }, z.core.$strip>;
4904
+ };
4905
+ }>, Record<never, never>>;
4906
+ revokeDelegation: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4907
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
4908
+ delegationId: z.ZodUUID;
4909
+ }, z.core.$strip>, z.ZodObject<{
4910
+ ok: z.ZodLiteral<true>;
4911
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
4912
+ BAD_REQUEST: {
4913
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
4914
+ };
4915
+ UNAUTHORIZED: {};
4916
+ FORBIDDEN: {
4917
+ data: z.ZodOptional<z.ZodObject<{
4918
+ permission: z.ZodOptional<z.ZodString>;
4919
+ }, z.core.$strip>>;
4920
+ };
4921
+ NOT_FOUND: {};
4922
+ CONFLICT: {
4923
+ data: z.ZodOptional<z.ZodObject<{
4924
+ reason: z.ZodOptional<z.ZodString>;
4925
+ }, z.core.$strip>>;
4926
+ };
4927
+ RATE_LIMITED: {};
4928
+ MODULE_DISABLED: {
4929
+ data: z.ZodObject<{
4930
+ module: z.ZodString;
4931
+ }, z.core.$strip>;
4932
+ };
4933
+ }>, Record<never, never>>;
4934
+ };
2495
4935
  fields: {
2496
4936
  list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2497
4937
  workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;