@kernhq/module-hr 0.3.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 (61) 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 +994 -0
  21. package/dist/contract/router.d.ts.map +1 -1
  22. package/dist/contract/router.js +158 -0
  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 +1085 -0
  40. package/dist/server/router.d.ts.map +1 -1
  41. package/dist/server/router.js +495 -2
  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/contract/attendance.ts +180 -0
  57. package/src/contract/capabilities.ts +36 -0
  58. package/src/contract/events.ts +24 -0
  59. package/src/contract/index.ts +1 -0
  60. package/src/contract/permissions.ts +51 -0
  61. package/src/contract/router.ts +196 -0
@@ -2492,6 +2492,1000 @@ 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
+ };
2495
3489
  leave: {
2496
3490
  types: {
2497
3491
  list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{