@kernhq/module-hr 0.3.0 → 0.5.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 (62) hide show
  1. package/dist/contract/attendance.d.ts +240 -0
  2. package/dist/contract/attendance.d.ts.map +1 -0
  3. package/dist/contract/attendance.js +154 -0
  4. package/dist/contract/attendance.js.map +1 -0
  5. package/dist/contract/capabilities.d.ts.map +1 -1
  6. package/dist/contract/capabilities.js +36 -0
  7. package/dist/contract/capabilities.js.map +1 -1
  8. package/dist/contract/events.d.ts +18 -0
  9. package/dist/contract/events.d.ts.map +1 -1
  10. package/dist/contract/events.js +18 -0
  11. package/dist/contract/events.js.map +1 -1
  12. package/dist/contract/index.d.ts +1 -0
  13. package/dist/contract/index.d.ts.map +1 -1
  14. package/dist/contract/index.js +1 -0
  15. package/dist/contract/index.js.map +1 -1
  16. package/dist/contract/permissions.d.ts +43 -0
  17. package/dist/contract/permissions.d.ts.map +1 -1
  18. package/dist/contract/permissions.js +50 -0
  19. package/dist/contract/permissions.js.map +1 -1
  20. package/dist/contract/router.d.ts +996 -0
  21. package/dist/contract/router.d.ts.map +1 -1
  22. package/dist/contract/router.js +165 -1
  23. package/dist/contract/router.js.map +1 -1
  24. package/dist/policy/time.d.ts +48 -0
  25. package/dist/policy/time.d.ts.map +1 -0
  26. package/dist/policy/time.js +144 -0
  27. package/dist/policy/time.js.map +1 -0
  28. package/dist/policy/working-time.d.ts +98 -0
  29. package/dist/policy/working-time.d.ts.map +1 -0
  30. package/dist/policy/working-time.js +190 -0
  31. package/dist/policy/working-time.js.map +1 -0
  32. package/dist/server/index.d.ts.map +1 -1
  33. package/dist/server/index.js +2 -0
  34. package/dist/server/index.js.map +1 -1
  35. package/dist/server/jobs.d.ts +16 -0
  36. package/dist/server/jobs.d.ts.map +1 -0
  37. package/dist/server/jobs.js +166 -0
  38. package/dist/server/jobs.js.map +1 -0
  39. package/dist/server/router.d.ts +1087 -0
  40. package/dist/server/router.d.ts.map +1 -1
  41. package/dist/server/router.js +521 -3
  42. package/dist/server/router.js.map +1 -1
  43. package/dist/server/schema.d.ts +1261 -1
  44. package/dist/server/schema.d.ts.map +1 -1
  45. package/dist/server/schema.js +116 -0
  46. package/dist/server/schema.js.map +1 -1
  47. package/dist/server/services/attendance.d.ts +150 -0
  48. package/dist/server/services/attendance.d.ts.map +1 -0
  49. package/dist/server/services/attendance.js +239 -0
  50. package/dist/server/services/attendance.js.map +1 -0
  51. package/dist/server/services/ledger.d.ts +2 -2
  52. package/migrations/0003_attendance.sql +206 -0
  53. package/migrations/meta/0003_snapshot.json +3681 -0
  54. package/migrations/meta/_journal.json +7 -0
  55. package/package.json +1 -1
  56. package/src/client/index.ts +18 -0
  57. package/src/contract/attendance.ts +180 -0
  58. package/src/contract/capabilities.ts +36 -0
  59. package/src/contract/events.ts +24 -0
  60. package/src/contract/index.ts +1 -0
  61. package/src/contract/permissions.ts +51 -0
  62. package/src/contract/router.ts +203 -1
@@ -41,6 +41,8 @@ export declare const hrContract: {
41
41
  updatedAt: z.ZodISODateTime;
42
42
  workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
43
43
  id: z.ZodUUID;
44
+ officeId: z.ZodNullable<z.ZodUUID>;
45
+ officeName: z.ZodNullable<z.ZodString>;
44
46
  }, z.core.$strip>>;
45
47
  nextCursor: z.ZodNullable<z.ZodString>;
46
48
  total: z.ZodOptional<z.ZodNumber>;
@@ -2492,6 +2494,1000 @@ export declare const hrContract: {
2492
2494
  };
2493
2495
  }>, Record<never, never>>;
2494
2496
  };
2497
+ attendance: {
2498
+ /** Am I clocked in? The one call a clock widget makes. */
2499
+ state: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2500
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2501
+ personId: z.ZodOptional<z.ZodUUID>;
2502
+ }, z.core.$strip>, z.ZodObject<{
2503
+ personId: z.ZodUUID;
2504
+ businessDate: z.ZodISODate;
2505
+ clockedIn: z.ZodBoolean;
2506
+ onBreak: z.ZodBoolean;
2507
+ since: z.ZodNullable<z.ZodISODateTime>;
2508
+ workedMinutesToday: z.ZodNumber;
2509
+ timezone: z.ZodString;
2510
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2511
+ BAD_REQUEST: {
2512
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2513
+ };
2514
+ UNAUTHORIZED: {};
2515
+ FORBIDDEN: {
2516
+ data: z.ZodOptional<z.ZodObject<{
2517
+ permission: z.ZodOptional<z.ZodString>;
2518
+ }, z.core.$strip>>;
2519
+ };
2520
+ NOT_FOUND: {};
2521
+ CONFLICT: {
2522
+ data: z.ZodOptional<z.ZodObject<{
2523
+ reason: z.ZodOptional<z.ZodString>;
2524
+ }, z.core.$strip>>;
2525
+ };
2526
+ RATE_LIMITED: {};
2527
+ MODULE_DISABLED: {
2528
+ data: z.ZodObject<{
2529
+ module: z.ZodString;
2530
+ }, z.core.$strip>;
2531
+ };
2532
+ }>, Record<never, never>>;
2533
+ /**
2534
+ * Clock in. The instant is **stamped by the server**, never taken from the caller.
2535
+ *
2536
+ * `clientReportedAt` is recorded alongside it for audit — a device whose clock is an hour out is
2537
+ * worth knowing about — but it never decides anything.
2538
+ */
2539
+ clockIn: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2540
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2541
+ personId: z.ZodOptional<z.ZodUUID>;
2542
+ method: z.ZodDefault<z.ZodEnum<{
2543
+ web: "web";
2544
+ mobile: "mobile";
2545
+ kiosk: "kiosk";
2546
+ qr: "qr";
2547
+ device: "device";
2548
+ import: "import";
2549
+ manual: "manual";
2550
+ }>>;
2551
+ clientReportedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2552
+ geo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
2553
+ lat: z.ZodNumber;
2554
+ lng: z.ZodNumber;
2555
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2556
+ }, z.core.$strip>>>;
2557
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2558
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2559
+ }, z.core.$strip>, z.ZodObject<{
2560
+ personId: z.ZodUUID;
2561
+ direction: z.ZodEnum<{
2562
+ out: "out";
2563
+ in: "in";
2564
+ break_start: "break_start";
2565
+ break_end: "break_end";
2566
+ }>;
2567
+ at: z.ZodISODateTime;
2568
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2569
+ skewMs: z.ZodNullable<z.ZodNumber>;
2570
+ businessDate: z.ZodISODate;
2571
+ timezone: z.ZodString;
2572
+ method: z.ZodEnum<{
2573
+ web: "web";
2574
+ mobile: "mobile";
2575
+ kiosk: "kiosk";
2576
+ qr: "qr";
2577
+ device: "device";
2578
+ import: "import";
2579
+ manual: "manual";
2580
+ }>;
2581
+ officeId: z.ZodNullable<z.ZodUUID>;
2582
+ deviceId: z.ZodNullable<z.ZodUUID>;
2583
+ geo: z.ZodNullable<z.ZodObject<{
2584
+ lat: z.ZodNumber;
2585
+ lng: z.ZodNumber;
2586
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2587
+ }, z.core.$strip>>;
2588
+ trust: z.ZodEnum<{
2589
+ trusted: "trusted";
2590
+ claimed: "claimed";
2591
+ disputed: "disputed";
2592
+ }>;
2593
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2594
+ note: z.ZodNullable<z.ZodString>;
2595
+ createdAt: z.ZodISODateTime;
2596
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2597
+ id: z.ZodUUID;
2598
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2599
+ BAD_REQUEST: {
2600
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2601
+ };
2602
+ UNAUTHORIZED: {};
2603
+ FORBIDDEN: {
2604
+ data: z.ZodOptional<z.ZodObject<{
2605
+ permission: z.ZodOptional<z.ZodString>;
2606
+ }, z.core.$strip>>;
2607
+ };
2608
+ NOT_FOUND: {};
2609
+ CONFLICT: {
2610
+ data: z.ZodOptional<z.ZodObject<{
2611
+ reason: z.ZodOptional<z.ZodString>;
2612
+ }, z.core.$strip>>;
2613
+ };
2614
+ RATE_LIMITED: {};
2615
+ MODULE_DISABLED: {
2616
+ data: z.ZodObject<{
2617
+ module: z.ZodString;
2618
+ }, z.core.$strip>;
2619
+ };
2620
+ }>, Record<never, never>>;
2621
+ clockOut: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2622
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2623
+ personId: z.ZodOptional<z.ZodUUID>;
2624
+ method: z.ZodDefault<z.ZodEnum<{
2625
+ web: "web";
2626
+ mobile: "mobile";
2627
+ kiosk: "kiosk";
2628
+ qr: "qr";
2629
+ device: "device";
2630
+ import: "import";
2631
+ manual: "manual";
2632
+ }>>;
2633
+ clientReportedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
2634
+ geo: z.ZodOptional<z.ZodNullable<z.ZodObject<{
2635
+ lat: z.ZodNumber;
2636
+ lng: z.ZodNumber;
2637
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2638
+ }, z.core.$strip>>>;
2639
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2640
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2641
+ }, z.core.$strip>, z.ZodObject<{
2642
+ personId: z.ZodUUID;
2643
+ direction: z.ZodEnum<{
2644
+ out: "out";
2645
+ in: "in";
2646
+ break_start: "break_start";
2647
+ break_end: "break_end";
2648
+ }>;
2649
+ at: z.ZodISODateTime;
2650
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2651
+ skewMs: z.ZodNullable<z.ZodNumber>;
2652
+ businessDate: z.ZodISODate;
2653
+ timezone: z.ZodString;
2654
+ method: z.ZodEnum<{
2655
+ web: "web";
2656
+ mobile: "mobile";
2657
+ kiosk: "kiosk";
2658
+ qr: "qr";
2659
+ device: "device";
2660
+ import: "import";
2661
+ manual: "manual";
2662
+ }>;
2663
+ officeId: z.ZodNullable<z.ZodUUID>;
2664
+ deviceId: z.ZodNullable<z.ZodUUID>;
2665
+ geo: z.ZodNullable<z.ZodObject<{
2666
+ lat: z.ZodNumber;
2667
+ lng: z.ZodNumber;
2668
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2669
+ }, z.core.$strip>>;
2670
+ trust: z.ZodEnum<{
2671
+ trusted: "trusted";
2672
+ claimed: "claimed";
2673
+ disputed: "disputed";
2674
+ }>;
2675
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2676
+ note: z.ZodNullable<z.ZodString>;
2677
+ createdAt: z.ZodISODateTime;
2678
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2679
+ id: z.ZodUUID;
2680
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2681
+ BAD_REQUEST: {
2682
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2683
+ };
2684
+ UNAUTHORIZED: {};
2685
+ FORBIDDEN: {
2686
+ data: z.ZodOptional<z.ZodObject<{
2687
+ permission: z.ZodOptional<z.ZodString>;
2688
+ }, z.core.$strip>>;
2689
+ };
2690
+ NOT_FOUND: {};
2691
+ CONFLICT: {
2692
+ data: z.ZodOptional<z.ZodObject<{
2693
+ reason: z.ZodOptional<z.ZodString>;
2694
+ }, z.core.$strip>>;
2695
+ };
2696
+ RATE_LIMITED: {};
2697
+ MODULE_DISABLED: {
2698
+ data: z.ZodObject<{
2699
+ module: z.ZodString;
2700
+ }, z.core.$strip>;
2701
+ };
2702
+ }>, Record<never, never>>;
2703
+ breakStart: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2704
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2705
+ personId: z.ZodOptional<z.ZodUUID>;
2706
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2707
+ }, z.core.$strip>, z.ZodObject<{
2708
+ personId: z.ZodUUID;
2709
+ direction: z.ZodEnum<{
2710
+ out: "out";
2711
+ in: "in";
2712
+ break_start: "break_start";
2713
+ break_end: "break_end";
2714
+ }>;
2715
+ at: z.ZodISODateTime;
2716
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2717
+ skewMs: z.ZodNullable<z.ZodNumber>;
2718
+ businessDate: z.ZodISODate;
2719
+ timezone: z.ZodString;
2720
+ method: z.ZodEnum<{
2721
+ web: "web";
2722
+ mobile: "mobile";
2723
+ kiosk: "kiosk";
2724
+ qr: "qr";
2725
+ device: "device";
2726
+ import: "import";
2727
+ manual: "manual";
2728
+ }>;
2729
+ officeId: z.ZodNullable<z.ZodUUID>;
2730
+ deviceId: z.ZodNullable<z.ZodUUID>;
2731
+ geo: z.ZodNullable<z.ZodObject<{
2732
+ lat: z.ZodNumber;
2733
+ lng: z.ZodNumber;
2734
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2735
+ }, z.core.$strip>>;
2736
+ trust: z.ZodEnum<{
2737
+ trusted: "trusted";
2738
+ claimed: "claimed";
2739
+ disputed: "disputed";
2740
+ }>;
2741
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2742
+ note: z.ZodNullable<z.ZodString>;
2743
+ createdAt: z.ZodISODateTime;
2744
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2745
+ id: z.ZodUUID;
2746
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2747
+ BAD_REQUEST: {
2748
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2749
+ };
2750
+ UNAUTHORIZED: {};
2751
+ FORBIDDEN: {
2752
+ data: z.ZodOptional<z.ZodObject<{
2753
+ permission: z.ZodOptional<z.ZodString>;
2754
+ }, z.core.$strip>>;
2755
+ };
2756
+ NOT_FOUND: {};
2757
+ CONFLICT: {
2758
+ data: z.ZodOptional<z.ZodObject<{
2759
+ reason: z.ZodOptional<z.ZodString>;
2760
+ }, z.core.$strip>>;
2761
+ };
2762
+ RATE_LIMITED: {};
2763
+ MODULE_DISABLED: {
2764
+ data: z.ZodObject<{
2765
+ module: z.ZodString;
2766
+ }, z.core.$strip>;
2767
+ };
2768
+ }>, Record<never, never>>;
2769
+ breakEnd: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2770
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2771
+ personId: z.ZodOptional<z.ZodUUID>;
2772
+ idempotencyKey: z.ZodOptional<z.ZodString>;
2773
+ }, z.core.$strip>, z.ZodObject<{
2774
+ personId: z.ZodUUID;
2775
+ direction: z.ZodEnum<{
2776
+ out: "out";
2777
+ in: "in";
2778
+ break_start: "break_start";
2779
+ break_end: "break_end";
2780
+ }>;
2781
+ at: z.ZodISODateTime;
2782
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2783
+ skewMs: z.ZodNullable<z.ZodNumber>;
2784
+ businessDate: z.ZodISODate;
2785
+ timezone: z.ZodString;
2786
+ method: z.ZodEnum<{
2787
+ web: "web";
2788
+ mobile: "mobile";
2789
+ kiosk: "kiosk";
2790
+ qr: "qr";
2791
+ device: "device";
2792
+ import: "import";
2793
+ manual: "manual";
2794
+ }>;
2795
+ officeId: z.ZodNullable<z.ZodUUID>;
2796
+ deviceId: z.ZodNullable<z.ZodUUID>;
2797
+ geo: z.ZodNullable<z.ZodObject<{
2798
+ lat: z.ZodNumber;
2799
+ lng: z.ZodNumber;
2800
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2801
+ }, z.core.$strip>>;
2802
+ trust: z.ZodEnum<{
2803
+ trusted: "trusted";
2804
+ claimed: "claimed";
2805
+ disputed: "disputed";
2806
+ }>;
2807
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2808
+ note: z.ZodNullable<z.ZodString>;
2809
+ createdAt: z.ZodISODateTime;
2810
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2811
+ id: z.ZodUUID;
2812
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2813
+ BAD_REQUEST: {
2814
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2815
+ };
2816
+ UNAUTHORIZED: {};
2817
+ FORBIDDEN: {
2818
+ data: z.ZodOptional<z.ZodObject<{
2819
+ permission: z.ZodOptional<z.ZodString>;
2820
+ }, z.core.$strip>>;
2821
+ };
2822
+ NOT_FOUND: {};
2823
+ CONFLICT: {
2824
+ data: z.ZodOptional<z.ZodObject<{
2825
+ reason: z.ZodOptional<z.ZodString>;
2826
+ }, z.core.$strip>>;
2827
+ };
2828
+ RATE_LIMITED: {};
2829
+ MODULE_DISABLED: {
2830
+ data: z.ZodObject<{
2831
+ module: z.ZodString;
2832
+ }, z.core.$strip>;
2833
+ };
2834
+ }>, Record<never, never>>;
2835
+ punches: {
2836
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2837
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2838
+ cursor: z.ZodOptional<z.ZodString>;
2839
+ limit: z.ZodDefault<z.ZodNumber>;
2840
+ personId: z.ZodOptional<z.ZodUUID>;
2841
+ from: z.ZodISODate;
2842
+ to: z.ZodISODate;
2843
+ includeVoided: z.ZodDefault<z.ZodBoolean>;
2844
+ }, z.core.$strip>, z.ZodObject<{
2845
+ items: z.ZodArray<z.ZodObject<{
2846
+ personId: z.ZodUUID;
2847
+ direction: z.ZodEnum<{
2848
+ out: "out";
2849
+ in: "in";
2850
+ break_start: "break_start";
2851
+ break_end: "break_end";
2852
+ }>;
2853
+ at: z.ZodISODateTime;
2854
+ clientReportedAt: z.ZodNullable<z.ZodISODateTime>;
2855
+ skewMs: z.ZodNullable<z.ZodNumber>;
2856
+ businessDate: z.ZodISODate;
2857
+ timezone: z.ZodString;
2858
+ method: z.ZodEnum<{
2859
+ web: "web";
2860
+ mobile: "mobile";
2861
+ kiosk: "kiosk";
2862
+ qr: "qr";
2863
+ device: "device";
2864
+ import: "import";
2865
+ manual: "manual";
2866
+ }>;
2867
+ officeId: z.ZodNullable<z.ZodUUID>;
2868
+ deviceId: z.ZodNullable<z.ZodUUID>;
2869
+ geo: z.ZodNullable<z.ZodObject<{
2870
+ lat: z.ZodNumber;
2871
+ lng: z.ZodNumber;
2872
+ accuracyM: z.ZodOptional<z.ZodNumber>;
2873
+ }, z.core.$strip>>;
2874
+ trust: z.ZodEnum<{
2875
+ trusted: "trusted";
2876
+ claimed: "claimed";
2877
+ disputed: "disputed";
2878
+ }>;
2879
+ voidedByPunchId: z.ZodNullable<z.ZodUUID>;
2880
+ note: z.ZodNullable<z.ZodString>;
2881
+ createdAt: z.ZodISODateTime;
2882
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2883
+ id: z.ZodUUID;
2884
+ }, z.core.$strip>>;
2885
+ nextCursor: z.ZodNullable<z.ZodString>;
2886
+ total: z.ZodOptional<z.ZodNumber>;
2887
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2888
+ BAD_REQUEST: {
2889
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2890
+ };
2891
+ UNAUTHORIZED: {};
2892
+ FORBIDDEN: {
2893
+ data: z.ZodOptional<z.ZodObject<{
2894
+ permission: z.ZodOptional<z.ZodString>;
2895
+ }, z.core.$strip>>;
2896
+ };
2897
+ NOT_FOUND: {};
2898
+ CONFLICT: {
2899
+ data: z.ZodOptional<z.ZodObject<{
2900
+ reason: z.ZodOptional<z.ZodString>;
2901
+ }, z.core.$strip>>;
2902
+ };
2903
+ RATE_LIMITED: {};
2904
+ MODULE_DISABLED: {
2905
+ data: z.ZodObject<{
2906
+ module: z.ZodString;
2907
+ }, z.core.$strip>;
2908
+ };
2909
+ }>, Record<never, never>>;
2910
+ /**
2911
+ * Void a punch by writing a correcting row.
2912
+ *
2913
+ * The original is never edited or deleted — an attendance record somebody can quietly rewrite
2914
+ * is worth nothing in the dispute it exists for.
2915
+ */
2916
+ void: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2917
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2918
+ punchId: z.ZodUUID;
2919
+ reason: z.ZodString;
2920
+ }, z.core.$strip>, z.ZodObject<{
2921
+ ok: z.ZodLiteral<true>;
2922
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2923
+ BAD_REQUEST: {
2924
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2925
+ };
2926
+ UNAUTHORIZED: {};
2927
+ FORBIDDEN: {
2928
+ data: z.ZodOptional<z.ZodObject<{
2929
+ permission: z.ZodOptional<z.ZodString>;
2930
+ }, z.core.$strip>>;
2931
+ };
2932
+ NOT_FOUND: {};
2933
+ CONFLICT: {
2934
+ data: z.ZodOptional<z.ZodObject<{
2935
+ reason: z.ZodOptional<z.ZodString>;
2936
+ }, z.core.$strip>>;
2937
+ };
2938
+ RATE_LIMITED: {};
2939
+ MODULE_DISABLED: {
2940
+ data: z.ZodObject<{
2941
+ module: z.ZodString;
2942
+ }, z.core.$strip>;
2943
+ };
2944
+ }>, Record<never, never>>;
2945
+ };
2946
+ days: {
2947
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2948
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2949
+ cursor: z.ZodOptional<z.ZodString>;
2950
+ limit: z.ZodDefault<z.ZodNumber>;
2951
+ personId: z.ZodOptional<z.ZodUUID>;
2952
+ officeId: z.ZodOptional<z.ZodUUID>;
2953
+ from: z.ZodISODate;
2954
+ to: z.ZodISODate;
2955
+ }, z.core.$strip>, z.ZodObject<{
2956
+ items: z.ZodArray<z.ZodObject<{
2957
+ personId: z.ZodUUID;
2958
+ businessDate: z.ZodISODate;
2959
+ scheduledMinutes: z.ZodNumber;
2960
+ workedMinutes: z.ZodNumber;
2961
+ breakMinutes: z.ZodNumber;
2962
+ overtimeMinutes: z.ZodNumber;
2963
+ lateMinutes: z.ZodNumber;
2964
+ earlyLeaveMinutes: z.ZodNumber;
2965
+ status: z.ZodEnum<{
2966
+ leave: "leave";
2967
+ pending: "pending";
2968
+ present: "present";
2969
+ absent: "absent";
2970
+ holiday: "holiday";
2971
+ weekend: "weekend";
2972
+ partial: "partial";
2973
+ }>;
2974
+ leaveRequestId: z.ZodNullable<z.ZodUUID>;
2975
+ anomalies: z.ZodArray<z.ZodString>;
2976
+ firstIn: z.ZodNullable<z.ZodISODateTime>;
2977
+ lastOut: z.ZodNullable<z.ZodISODateTime>;
2978
+ policyHash: z.ZodNullable<z.ZodString>;
2979
+ locked: z.ZodBoolean;
2980
+ computedAt: z.ZodISODateTime;
2981
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2982
+ id: z.ZodUUID;
2983
+ }, z.core.$strip>>;
2984
+ nextCursor: z.ZodNullable<z.ZodString>;
2985
+ total: z.ZodOptional<z.ZodNumber>;
2986
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2987
+ BAD_REQUEST: {
2988
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2989
+ };
2990
+ UNAUTHORIZED: {};
2991
+ FORBIDDEN: {
2992
+ data: z.ZodOptional<z.ZodObject<{
2993
+ permission: z.ZodOptional<z.ZodString>;
2994
+ }, z.core.$strip>>;
2995
+ };
2996
+ NOT_FOUND: {};
2997
+ CONFLICT: {
2998
+ data: z.ZodOptional<z.ZodObject<{
2999
+ reason: z.ZodOptional<z.ZodString>;
3000
+ }, z.core.$strip>>;
3001
+ };
3002
+ RATE_LIMITED: {};
3003
+ MODULE_DISABLED: {
3004
+ data: z.ZodObject<{
3005
+ module: z.ZodString;
3006
+ }, z.core.$strip>;
3007
+ };
3008
+ }>, Record<never, never>>;
3009
+ /**
3010
+ * Recompute a range from the punches.
3011
+ *
3012
+ * Safe to call at any time — the day sheet is a projection, so this is idempotent by
3013
+ * construction. Locked days are skipped and named in the response rather than silently
3014
+ * ignored.
3015
+ */
3016
+ recompute: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3017
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3018
+ personId: z.ZodOptional<z.ZodUUID>;
3019
+ from: z.ZodISODate;
3020
+ to: z.ZodISODate;
3021
+ }, z.core.$strip>, z.ZodObject<{
3022
+ recomputed: z.ZodNumber;
3023
+ skippedLocked: z.ZodArray<z.ZodISODate>;
3024
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3025
+ BAD_REQUEST: {
3026
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3027
+ };
3028
+ UNAUTHORIZED: {};
3029
+ FORBIDDEN: {
3030
+ data: z.ZodOptional<z.ZodObject<{
3031
+ permission: z.ZodOptional<z.ZodString>;
3032
+ }, z.core.$strip>>;
3033
+ };
3034
+ NOT_FOUND: {};
3035
+ CONFLICT: {
3036
+ data: z.ZodOptional<z.ZodObject<{
3037
+ reason: z.ZodOptional<z.ZodString>;
3038
+ }, z.core.$strip>>;
3039
+ };
3040
+ RATE_LIMITED: {};
3041
+ MODULE_DISABLED: {
3042
+ data: z.ZodObject<{
3043
+ module: z.ZodString;
3044
+ }, z.core.$strip>;
3045
+ };
3046
+ }>, Record<never, never>>;
3047
+ };
3048
+ schedules: {
3049
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3050
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3051
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
3052
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
3053
+ name: z.ZodString;
3054
+ kind: z.ZodEnum<{
3055
+ fixed: "fixed";
3056
+ flexible: "flexible";
3057
+ shift: "shift";
3058
+ }>;
3059
+ week: z.ZodRecord<z.ZodEnum<{
3060
+ mon: "mon";
3061
+ tue: "tue";
3062
+ wed: "wed";
3063
+ thu: "thu";
3064
+ fri: "fri";
3065
+ sat: "sat";
3066
+ sun: "sun";
3067
+ }>, z.ZodNullable<z.ZodObject<{
3068
+ start: z.ZodString;
3069
+ end: z.ZodString;
3070
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3071
+ }, z.core.$strip>>>;
3072
+ tzMode: z.ZodEnum<{
3073
+ person: "person";
3074
+ office: "office";
3075
+ fixed: "fixed";
3076
+ }>;
3077
+ tz: z.ZodNullable<z.ZodString>;
3078
+ graceInMinutes: z.ZodNumber;
3079
+ graceOutMinutes: z.ZodNumber;
3080
+ roundingStepMinutes: z.ZodNumber;
3081
+ roundingDirection: z.ZodEnum<{
3082
+ nearest: "nearest";
3083
+ employee: "employee";
3084
+ employer: "employer";
3085
+ }>;
3086
+ autoClockOutAfterMinutes: z.ZodNullable<z.ZodNumber>;
3087
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3088
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3089
+ id: z.ZodUUID;
3090
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3091
+ BAD_REQUEST: {
3092
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3093
+ };
3094
+ UNAUTHORIZED: {};
3095
+ FORBIDDEN: {
3096
+ data: z.ZodOptional<z.ZodObject<{
3097
+ permission: z.ZodOptional<z.ZodString>;
3098
+ }, z.core.$strip>>;
3099
+ };
3100
+ NOT_FOUND: {};
3101
+ CONFLICT: {
3102
+ data: z.ZodOptional<z.ZodObject<{
3103
+ reason: z.ZodOptional<z.ZodString>;
3104
+ }, z.core.$strip>>;
3105
+ };
3106
+ RATE_LIMITED: {};
3107
+ MODULE_DISABLED: {
3108
+ data: z.ZodObject<{
3109
+ module: z.ZodString;
3110
+ }, z.core.$strip>;
3111
+ };
3112
+ }>, Record<never, never>>;
3113
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3114
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3115
+ name: z.ZodString;
3116
+ kind: z.ZodDefault<z.ZodEnum<{
3117
+ fixed: "fixed";
3118
+ flexible: "flexible";
3119
+ shift: "shift";
3120
+ }>>;
3121
+ week: z.ZodRecord<z.ZodEnum<{
3122
+ mon: "mon";
3123
+ tue: "tue";
3124
+ wed: "wed";
3125
+ thu: "thu";
3126
+ fri: "fri";
3127
+ sat: "sat";
3128
+ sun: "sun";
3129
+ }>, z.ZodNullable<z.ZodObject<{
3130
+ start: z.ZodString;
3131
+ end: z.ZodString;
3132
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3133
+ }, z.core.$strip>>>;
3134
+ tzMode: z.ZodDefault<z.ZodEnum<{
3135
+ person: "person";
3136
+ office: "office";
3137
+ fixed: "fixed";
3138
+ }>>;
3139
+ tz: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3140
+ graceInMinutes: z.ZodDefault<z.ZodNumber>;
3141
+ graceOutMinutes: z.ZodDefault<z.ZodNumber>;
3142
+ roundingStepMinutes: z.ZodDefault<z.ZodNumber>;
3143
+ roundingDirection: z.ZodDefault<z.ZodEnum<{
3144
+ nearest: "nearest";
3145
+ employee: "employee";
3146
+ employer: "employer";
3147
+ }>>;
3148
+ autoClockOutAfterMinutes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3149
+ }, z.core.$strip>, z.ZodObject<{
3150
+ name: z.ZodString;
3151
+ kind: z.ZodEnum<{
3152
+ fixed: "fixed";
3153
+ flexible: "flexible";
3154
+ shift: "shift";
3155
+ }>;
3156
+ week: z.ZodRecord<z.ZodEnum<{
3157
+ mon: "mon";
3158
+ tue: "tue";
3159
+ wed: "wed";
3160
+ thu: "thu";
3161
+ fri: "fri";
3162
+ sat: "sat";
3163
+ sun: "sun";
3164
+ }>, z.ZodNullable<z.ZodObject<{
3165
+ start: z.ZodString;
3166
+ end: z.ZodString;
3167
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3168
+ }, z.core.$strip>>>;
3169
+ tzMode: z.ZodEnum<{
3170
+ person: "person";
3171
+ office: "office";
3172
+ fixed: "fixed";
3173
+ }>;
3174
+ tz: z.ZodNullable<z.ZodString>;
3175
+ graceInMinutes: z.ZodNumber;
3176
+ graceOutMinutes: z.ZodNumber;
3177
+ roundingStepMinutes: z.ZodNumber;
3178
+ roundingDirection: z.ZodEnum<{
3179
+ nearest: "nearest";
3180
+ employee: "employee";
3181
+ employer: "employer";
3182
+ }>;
3183
+ autoClockOutAfterMinutes: z.ZodNullable<z.ZodNumber>;
3184
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3185
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3186
+ id: z.ZodUUID;
3187
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3188
+ BAD_REQUEST: {
3189
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3190
+ };
3191
+ UNAUTHORIZED: {};
3192
+ FORBIDDEN: {
3193
+ data: z.ZodOptional<z.ZodObject<{
3194
+ permission: z.ZodOptional<z.ZodString>;
3195
+ }, z.core.$strip>>;
3196
+ };
3197
+ NOT_FOUND: {};
3198
+ CONFLICT: {
3199
+ data: z.ZodOptional<z.ZodObject<{
3200
+ reason: z.ZodOptional<z.ZodString>;
3201
+ }, z.core.$strip>>;
3202
+ };
3203
+ RATE_LIMITED: {};
3204
+ MODULE_DISABLED: {
3205
+ data: z.ZodObject<{
3206
+ module: z.ZodString;
3207
+ }, z.core.$strip>;
3208
+ };
3209
+ }>, Record<never, never>>;
3210
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3211
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3212
+ scheduleId: z.ZodUUID;
3213
+ name: z.ZodOptional<z.ZodString>;
3214
+ week: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
3215
+ mon: "mon";
3216
+ tue: "tue";
3217
+ wed: "wed";
3218
+ thu: "thu";
3219
+ fri: "fri";
3220
+ sat: "sat";
3221
+ sun: "sun";
3222
+ }>, z.ZodNullable<z.ZodObject<{
3223
+ start: z.ZodString;
3224
+ end: z.ZodString;
3225
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3226
+ }, z.core.$strip>>>>;
3227
+ graceInMinutes: z.ZodOptional<z.ZodNumber>;
3228
+ graceOutMinutes: z.ZodOptional<z.ZodNumber>;
3229
+ roundingStepMinutes: z.ZodOptional<z.ZodNumber>;
3230
+ roundingDirection: z.ZodOptional<z.ZodEnum<{
3231
+ nearest: "nearest";
3232
+ employee: "employee";
3233
+ employer: "employer";
3234
+ }>>;
3235
+ autoClockOutAfterMinutes: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
3236
+ }, z.core.$strip>, z.ZodObject<{
3237
+ name: z.ZodString;
3238
+ kind: z.ZodEnum<{
3239
+ fixed: "fixed";
3240
+ flexible: "flexible";
3241
+ shift: "shift";
3242
+ }>;
3243
+ week: z.ZodRecord<z.ZodEnum<{
3244
+ mon: "mon";
3245
+ tue: "tue";
3246
+ wed: "wed";
3247
+ thu: "thu";
3248
+ fri: "fri";
3249
+ sat: "sat";
3250
+ sun: "sun";
3251
+ }>, z.ZodNullable<z.ZodObject<{
3252
+ start: z.ZodString;
3253
+ end: z.ZodString;
3254
+ breakMinutes: z.ZodDefault<z.ZodNumber>;
3255
+ }, z.core.$strip>>>;
3256
+ tzMode: z.ZodEnum<{
3257
+ person: "person";
3258
+ office: "office";
3259
+ fixed: "fixed";
3260
+ }>;
3261
+ tz: z.ZodNullable<z.ZodString>;
3262
+ graceInMinutes: z.ZodNumber;
3263
+ graceOutMinutes: z.ZodNumber;
3264
+ roundingStepMinutes: z.ZodNumber;
3265
+ roundingDirection: z.ZodEnum<{
3266
+ nearest: "nearest";
3267
+ employee: "employee";
3268
+ employer: "employer";
3269
+ }>;
3270
+ autoClockOutAfterMinutes: z.ZodNullable<z.ZodNumber>;
3271
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
3272
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3273
+ id: z.ZodUUID;
3274
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3275
+ BAD_REQUEST: {
3276
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3277
+ };
3278
+ UNAUTHORIZED: {};
3279
+ FORBIDDEN: {
3280
+ data: z.ZodOptional<z.ZodObject<{
3281
+ permission: z.ZodOptional<z.ZodString>;
3282
+ }, z.core.$strip>>;
3283
+ };
3284
+ NOT_FOUND: {};
3285
+ CONFLICT: {
3286
+ data: z.ZodOptional<z.ZodObject<{
3287
+ reason: z.ZodOptional<z.ZodString>;
3288
+ }, z.core.$strip>>;
3289
+ };
3290
+ RATE_LIMITED: {};
3291
+ MODULE_DISABLED: {
3292
+ data: z.ZodObject<{
3293
+ module: z.ZodString;
3294
+ }, z.core.$strip>;
3295
+ };
3296
+ }>, Record<never, never>>;
3297
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3298
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3299
+ scheduleId: z.ZodUUID;
3300
+ }, z.core.$strip>, z.ZodObject<{
3301
+ ok: z.ZodLiteral<true>;
3302
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3303
+ BAD_REQUEST: {
3304
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3305
+ };
3306
+ UNAUTHORIZED: {};
3307
+ FORBIDDEN: {
3308
+ data: z.ZodOptional<z.ZodObject<{
3309
+ permission: z.ZodOptional<z.ZodString>;
3310
+ }, z.core.$strip>>;
3311
+ };
3312
+ NOT_FOUND: {};
3313
+ CONFLICT: {
3314
+ data: z.ZodOptional<z.ZodObject<{
3315
+ reason: z.ZodOptional<z.ZodString>;
3316
+ }, z.core.$strip>>;
3317
+ };
3318
+ RATE_LIMITED: {};
3319
+ MODULE_DISABLED: {
3320
+ data: z.ZodObject<{
3321
+ module: z.ZodString;
3322
+ }, z.core.$strip>;
3323
+ };
3324
+ }>, Record<never, never>>;
3325
+ assign: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3326
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3327
+ scheduleId: z.ZodUUID;
3328
+ personId: z.ZodUUID;
3329
+ effectiveFrom: z.ZodISODate;
3330
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
3331
+ personId: z.ZodUUID;
3332
+ scheduleId: z.ZodUUID;
3333
+ effectiveFrom: z.ZodISODate;
3334
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
3335
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3336
+ id: z.ZodUUID;
3337
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3338
+ BAD_REQUEST: {
3339
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3340
+ };
3341
+ UNAUTHORIZED: {};
3342
+ FORBIDDEN: {
3343
+ data: z.ZodOptional<z.ZodObject<{
3344
+ permission: z.ZodOptional<z.ZodString>;
3345
+ }, z.core.$strip>>;
3346
+ };
3347
+ NOT_FOUND: {};
3348
+ CONFLICT: {
3349
+ data: z.ZodOptional<z.ZodObject<{
3350
+ reason: z.ZodOptional<z.ZodString>;
3351
+ }, z.core.$strip>>;
3352
+ };
3353
+ RATE_LIMITED: {};
3354
+ MODULE_DISABLED: {
3355
+ data: z.ZodObject<{
3356
+ module: z.ZodString;
3357
+ }, z.core.$strip>;
3358
+ };
3359
+ }>, Record<never, never>>;
3360
+ };
3361
+ regularizations: {
3362
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3363
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3364
+ cursor: z.ZodOptional<z.ZodString>;
3365
+ limit: z.ZodDefault<z.ZodNumber>;
3366
+ personId: z.ZodOptional<z.ZodUUID>;
3367
+ status: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3368
+ pending: "pending";
3369
+ approved: "approved";
3370
+ rejected: "rejected";
3371
+ cancelled: "cancelled";
3372
+ }>>>;
3373
+ }, z.core.$strip>, z.ZodObject<{
3374
+ items: z.ZodArray<z.ZodObject<{
3375
+ personId: z.ZodUUID;
3376
+ businessDate: z.ZodISODate;
3377
+ punchId: z.ZodNullable<z.ZodUUID>;
3378
+ proposed: z.ZodArray<z.ZodObject<{
3379
+ direction: z.ZodEnum<{
3380
+ out: "out";
3381
+ in: "in";
3382
+ break_start: "break_start";
3383
+ break_end: "break_end";
3384
+ }>;
3385
+ at: z.ZodISODateTime;
3386
+ }, z.core.$strip>>;
3387
+ reason: z.ZodString;
3388
+ status: z.ZodEnum<{
3389
+ pending: "pending";
3390
+ approved: "approved";
3391
+ rejected: "rejected";
3392
+ cancelled: "cancelled";
3393
+ }>;
3394
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
3395
+ appliedAt: z.ZodNullable<z.ZodISODateTime>;
3396
+ createdAt: z.ZodISODateTime;
3397
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3398
+ id: z.ZodUUID;
3399
+ }, z.core.$strip>>;
3400
+ nextCursor: z.ZodNullable<z.ZodString>;
3401
+ total: z.ZodOptional<z.ZodNumber>;
3402
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3403
+ BAD_REQUEST: {
3404
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3405
+ };
3406
+ UNAUTHORIZED: {};
3407
+ FORBIDDEN: {
3408
+ data: z.ZodOptional<z.ZodObject<{
3409
+ permission: z.ZodOptional<z.ZodString>;
3410
+ }, z.core.$strip>>;
3411
+ };
3412
+ NOT_FOUND: {};
3413
+ CONFLICT: {
3414
+ data: z.ZodOptional<z.ZodObject<{
3415
+ reason: z.ZodOptional<z.ZodString>;
3416
+ }, z.core.$strip>>;
3417
+ };
3418
+ RATE_LIMITED: {};
3419
+ MODULE_DISABLED: {
3420
+ data: z.ZodObject<{
3421
+ module: z.ZodString;
3422
+ }, z.core.$strip>;
3423
+ };
3424
+ }>, Record<never, never>>;
3425
+ /** Ask for a wrong or missing punch to be fixed. Goes through the same approval engine. */
3426
+ request: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3427
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3428
+ personId: z.ZodOptional<z.ZodUUID>;
3429
+ businessDate: z.ZodISODate;
3430
+ punchId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
3431
+ proposed: z.ZodArray<z.ZodObject<{
3432
+ direction: z.ZodEnum<{
3433
+ out: "out";
3434
+ in: "in";
3435
+ break_start: "break_start";
3436
+ break_end: "break_end";
3437
+ }>;
3438
+ at: z.ZodISODateTime;
3439
+ }, z.core.$strip>>;
3440
+ reason: z.ZodString;
3441
+ }, z.core.$strip>, z.ZodObject<{
3442
+ personId: z.ZodUUID;
3443
+ businessDate: z.ZodISODate;
3444
+ punchId: z.ZodNullable<z.ZodUUID>;
3445
+ proposed: z.ZodArray<z.ZodObject<{
3446
+ direction: z.ZodEnum<{
3447
+ out: "out";
3448
+ in: "in";
3449
+ break_start: "break_start";
3450
+ break_end: "break_end";
3451
+ }>;
3452
+ at: z.ZodISODateTime;
3453
+ }, z.core.$strip>>;
3454
+ reason: z.ZodString;
3455
+ status: z.ZodEnum<{
3456
+ pending: "pending";
3457
+ approved: "approved";
3458
+ rejected: "rejected";
3459
+ cancelled: "cancelled";
3460
+ }>;
3461
+ approvalRequestId: z.ZodNullable<z.ZodUUID>;
3462
+ appliedAt: z.ZodNullable<z.ZodISODateTime>;
3463
+ createdAt: z.ZodISODateTime;
3464
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3465
+ id: z.ZodUUID;
3466
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3467
+ BAD_REQUEST: {
3468
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3469
+ };
3470
+ UNAUTHORIZED: {};
3471
+ FORBIDDEN: {
3472
+ data: z.ZodOptional<z.ZodObject<{
3473
+ permission: z.ZodOptional<z.ZodString>;
3474
+ }, z.core.$strip>>;
3475
+ };
3476
+ NOT_FOUND: {};
3477
+ CONFLICT: {
3478
+ data: z.ZodOptional<z.ZodObject<{
3479
+ reason: z.ZodOptional<z.ZodString>;
3480
+ }, z.core.$strip>>;
3481
+ };
3482
+ RATE_LIMITED: {};
3483
+ MODULE_DISABLED: {
3484
+ data: z.ZodObject<{
3485
+ module: z.ZodString;
3486
+ }, z.core.$strip>;
3487
+ };
3488
+ }>, Record<never, never>>;
3489
+ };
3490
+ };
2495
3491
  leave: {
2496
3492
  types: {
2497
3493
  list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{