@kernhq/module-hr 0.7.0 → 0.9.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 (74) hide show
  1. package/dist/contract/capabilities.d.ts.map +1 -1
  2. package/dist/contract/capabilities.js +31 -0
  3. package/dist/contract/capabilities.js.map +1 -1
  4. package/dist/contract/index.d.ts +1 -0
  5. package/dist/contract/index.d.ts.map +1 -1
  6. package/dist/contract/index.js +1 -0
  7. package/dist/contract/index.js.map +1 -1
  8. package/dist/contract/permissions.d.ts +23 -0
  9. package/dist/contract/permissions.d.ts.map +1 -1
  10. package/dist/contract/permissions.js +27 -0
  11. package/dist/contract/permissions.js.map +1 -1
  12. package/dist/contract/policies.d.ts +256 -0
  13. package/dist/contract/policies.d.ts.map +1 -0
  14. package/dist/contract/policies.js +175 -0
  15. package/dist/contract/policies.js.map +1 -0
  16. package/dist/contract/router.d.ts +707 -0
  17. package/dist/contract/router.d.ts.map +1 -1
  18. package/dist/contract/router.js +127 -0
  19. package/dist/contract/router.js.map +1 -1
  20. package/dist/policy/accrual.d.ts +127 -0
  21. package/dist/policy/accrual.d.ts.map +1 -0
  22. package/dist/policy/accrual.js +134 -0
  23. package/dist/policy/accrual.js.map +1 -0
  24. package/dist/server/jobs.d.ts.map +1 -1
  25. package/dist/server/jobs.js +186 -1
  26. package/dist/server/jobs.js.map +1 -1
  27. package/dist/server/router.d.ts +772 -0
  28. package/dist/server/router.d.ts.map +1 -1
  29. package/dist/server/router.js +462 -1
  30. package/dist/server/router.js.map +1 -1
  31. package/dist/server/schema.d.ts +612 -1
  32. package/dist/server/schema.d.ts.map +1 -1
  33. package/dist/server/schema.js +76 -0
  34. package/dist/server/schema.js.map +1 -1
  35. package/dist/server/services/policies.d.ts +53 -0
  36. package/dist/server/services/policies.d.ts.map +1 -0
  37. package/dist/server/services/policies.js +158 -0
  38. package/dist/server/services/policies.js.map +1 -0
  39. package/migrations/meta/_journal.json +7 -0
  40. package/package.json +22 -2
  41. package/src/client/api-instance.ts +29 -0
  42. package/src/client/components/ClockControls.svelte +127 -0
  43. package/src/client/components/HrSidebar.svelte +73 -0
  44. package/src/client/components/LeaveRequestDialog.svelte +169 -0
  45. package/src/client/components/PersonFormDialog.svelte +184 -0
  46. package/src/client/components/PersonInline.svelte +49 -0
  47. package/src/client/components/PersonPanel.svelte +328 -0
  48. package/src/client/core-api.ts +34 -0
  49. package/src/client/i18n.ts +640 -0
  50. package/src/client/index.ts +3 -0
  51. package/src/client/mock.ts +447 -0
  52. package/src/client/module.ts +295 -0
  53. package/src/client/pages/ApprovalsPage.svelte +129 -0
  54. package/src/client/pages/AttendancePage.svelte +147 -0
  55. package/src/client/pages/DirectoryPage.svelte +428 -0
  56. package/src/client/pages/LeavePage.svelte +180 -0
  57. package/src/client/pages/OfficesPage.svelte +119 -0
  58. package/src/client/permissions.ts +31 -0
  59. package/src/client/query.test.ts +70 -0
  60. package/src/client/query.ts +69 -0
  61. package/src/client/settings/CalendarsSettings.svelte +21 -0
  62. package/src/client/settings/CapabilitiesSettings.svelte +122 -0
  63. package/src/client/settings/LeaveSettings.svelte +21 -0
  64. package/src/client/settings/OfficesSettings.svelte +21 -0
  65. package/src/client/settings/SchedulesSettings.svelte +21 -0
  66. package/src/client/widgets/ApprovalsWidget.svelte +86 -0
  67. package/src/client/widgets/ClockWidget.svelte +9 -0
  68. package/src/client/widgets/HeadcountWidget.svelte +29 -0
  69. package/src/client/widgets/LeaveBalanceWidget.svelte +67 -0
  70. package/src/client/widgets/WhosOutWidget.svelte +75 -0
  71. package/src/contract/capabilities.ts +31 -0
  72. package/src/contract/index.ts +1 -0
  73. package/src/contract/permissions.ts +28 -0
  74. package/src/contract/router.ts +148 -0
@@ -2494,6 +2494,713 @@ export declare const hrContract: {
2494
2494
  };
2495
2495
  }>, Record<never, never>>;
2496
2496
  };
2497
+ policies: {
2498
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2499
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2500
+ kind: z.ZodOptional<z.ZodEnum<{
2501
+ overtime: "overtime";
2502
+ accrual: "accrual";
2503
+ carry_forward: "carry_forward";
2504
+ rounding: "rounding";
2505
+ working_time: "working_time";
2506
+ }>>;
2507
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
2508
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
2509
+ kind: z.ZodEnum<{
2510
+ overtime: "overtime";
2511
+ accrual: "accrual";
2512
+ carry_forward: "carry_forward";
2513
+ rounding: "rounding";
2514
+ working_time: "working_time";
2515
+ }>;
2516
+ name: z.ZodString;
2517
+ config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2518
+ effectiveFrom: z.ZodISODate;
2519
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2520
+ source: z.ZodEnum<{
2521
+ custom: "custom";
2522
+ pack: "pack";
2523
+ }>;
2524
+ packKey: z.ZodNullable<z.ZodString>;
2525
+ configHash: z.ZodString;
2526
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
2527
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2528
+ id: z.ZodUUID;
2529
+ assignments: z.ZodArray<z.ZodObject<{
2530
+ policyId: z.ZodUUID;
2531
+ subjectKind: z.ZodEnum<{
2532
+ person: "person";
2533
+ office: "office";
2534
+ legal_entity: "legal_entity";
2535
+ org_unit: "org_unit";
2536
+ position: "position";
2537
+ workspace: "workspace";
2538
+ }>;
2539
+ subjectId: z.ZodNullable<z.ZodUUID>;
2540
+ effectiveFrom: z.ZodISODate;
2541
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2542
+ priority: z.ZodNumber;
2543
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2544
+ id: z.ZodUUID;
2545
+ }, z.core.$strip>>;
2546
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2547
+ BAD_REQUEST: {
2548
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2549
+ };
2550
+ UNAUTHORIZED: {};
2551
+ FORBIDDEN: {
2552
+ data: z.ZodOptional<z.ZodObject<{
2553
+ permission: z.ZodOptional<z.ZodString>;
2554
+ }, z.core.$strip>>;
2555
+ };
2556
+ NOT_FOUND: {};
2557
+ CONFLICT: {
2558
+ data: z.ZodOptional<z.ZodObject<{
2559
+ reason: z.ZodOptional<z.ZodString>;
2560
+ }, z.core.$strip>>;
2561
+ };
2562
+ RATE_LIMITED: {};
2563
+ MODULE_DISABLED: {
2564
+ data: z.ZodObject<{
2565
+ module: z.ZodString;
2566
+ }, z.core.$strip>;
2567
+ };
2568
+ }>, Record<never, never>>;
2569
+ get: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2570
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2571
+ policyId: z.ZodUUID;
2572
+ }, z.core.$strip>, z.ZodObject<{
2573
+ kind: z.ZodEnum<{
2574
+ overtime: "overtime";
2575
+ accrual: "accrual";
2576
+ carry_forward: "carry_forward";
2577
+ rounding: "rounding";
2578
+ working_time: "working_time";
2579
+ }>;
2580
+ name: z.ZodString;
2581
+ config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2582
+ effectiveFrom: z.ZodISODate;
2583
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2584
+ source: z.ZodEnum<{
2585
+ custom: "custom";
2586
+ pack: "pack";
2587
+ }>;
2588
+ packKey: z.ZodNullable<z.ZodString>;
2589
+ configHash: z.ZodString;
2590
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
2591
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2592
+ id: z.ZodUUID;
2593
+ assignments: z.ZodArray<z.ZodObject<{
2594
+ policyId: z.ZodUUID;
2595
+ subjectKind: z.ZodEnum<{
2596
+ person: "person";
2597
+ office: "office";
2598
+ legal_entity: "legal_entity";
2599
+ org_unit: "org_unit";
2600
+ position: "position";
2601
+ workspace: "workspace";
2602
+ }>;
2603
+ subjectId: z.ZodNullable<z.ZodUUID>;
2604
+ effectiveFrom: z.ZodISODate;
2605
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2606
+ priority: z.ZodNumber;
2607
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2608
+ id: z.ZodUUID;
2609
+ }, z.core.$strip>>;
2610
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2611
+ BAD_REQUEST: {
2612
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2613
+ };
2614
+ UNAUTHORIZED: {};
2615
+ FORBIDDEN: {
2616
+ data: z.ZodOptional<z.ZodObject<{
2617
+ permission: z.ZodOptional<z.ZodString>;
2618
+ }, z.core.$strip>>;
2619
+ };
2620
+ NOT_FOUND: {};
2621
+ CONFLICT: {
2622
+ data: z.ZodOptional<z.ZodObject<{
2623
+ reason: z.ZodOptional<z.ZodString>;
2624
+ }, z.core.$strip>>;
2625
+ };
2626
+ RATE_LIMITED: {};
2627
+ MODULE_DISABLED: {
2628
+ data: z.ZodObject<{
2629
+ module: z.ZodString;
2630
+ }, z.core.$strip>;
2631
+ };
2632
+ }>, Record<never, never>>;
2633
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2634
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2635
+ kind: z.ZodEnum<{
2636
+ overtime: "overtime";
2637
+ accrual: "accrual";
2638
+ carry_forward: "carry_forward";
2639
+ rounding: "rounding";
2640
+ working_time: "working_time";
2641
+ }>;
2642
+ name: z.ZodString;
2643
+ config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2644
+ effectiveFrom: z.ZodISODate;
2645
+ effectiveTo: z.ZodOptional<z.ZodNullable<z.ZodISODate>>;
2646
+ }, z.core.$strip>, z.ZodObject<{
2647
+ kind: z.ZodEnum<{
2648
+ overtime: "overtime";
2649
+ accrual: "accrual";
2650
+ carry_forward: "carry_forward";
2651
+ rounding: "rounding";
2652
+ working_time: "working_time";
2653
+ }>;
2654
+ name: z.ZodString;
2655
+ config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2656
+ effectiveFrom: z.ZodISODate;
2657
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2658
+ source: z.ZodEnum<{
2659
+ custom: "custom";
2660
+ pack: "pack";
2661
+ }>;
2662
+ packKey: z.ZodNullable<z.ZodString>;
2663
+ configHash: z.ZodString;
2664
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
2665
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2666
+ id: z.ZodUUID;
2667
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2668
+ BAD_REQUEST: {
2669
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2670
+ };
2671
+ UNAUTHORIZED: {};
2672
+ FORBIDDEN: {
2673
+ data: z.ZodOptional<z.ZodObject<{
2674
+ permission: z.ZodOptional<z.ZodString>;
2675
+ }, z.core.$strip>>;
2676
+ };
2677
+ NOT_FOUND: {};
2678
+ CONFLICT: {
2679
+ data: z.ZodOptional<z.ZodObject<{
2680
+ reason: z.ZodOptional<z.ZodString>;
2681
+ }, z.core.$strip>>;
2682
+ };
2683
+ RATE_LIMITED: {};
2684
+ MODULE_DISABLED: {
2685
+ data: z.ZodObject<{
2686
+ module: z.ZodString;
2687
+ }, z.core.$strip>;
2688
+ };
2689
+ }>, Record<never, never>>;
2690
+ /**
2691
+ * Edits a policy in place.
2692
+ *
2693
+ * A change that should apply from a date rather than retroactively is a **new** policy with a
2694
+ * later `effectiveFrom`, not an edit — editing rewrites what was true in the past, and anything
2695
+ * already derived from it becomes unexplainable.
2696
+ */
2697
+ update: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2698
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2699
+ policyId: z.ZodUUID;
2700
+ name: z.ZodOptional<z.ZodString>;
2701
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2702
+ effectiveTo: z.ZodOptional<z.ZodNullable<z.ZodISODate>>;
2703
+ }, z.core.$strip>, z.ZodObject<{
2704
+ kind: z.ZodEnum<{
2705
+ overtime: "overtime";
2706
+ accrual: "accrual";
2707
+ carry_forward: "carry_forward";
2708
+ rounding: "rounding";
2709
+ working_time: "working_time";
2710
+ }>;
2711
+ name: z.ZodString;
2712
+ config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2713
+ effectiveFrom: z.ZodISODate;
2714
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2715
+ source: z.ZodEnum<{
2716
+ custom: "custom";
2717
+ pack: "pack";
2718
+ }>;
2719
+ packKey: z.ZodNullable<z.ZodString>;
2720
+ configHash: z.ZodString;
2721
+ archivedAt: z.ZodNullable<z.ZodISODateTime>;
2722
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2723
+ id: z.ZodUUID;
2724
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2725
+ BAD_REQUEST: {
2726
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2727
+ };
2728
+ UNAUTHORIZED: {};
2729
+ FORBIDDEN: {
2730
+ data: z.ZodOptional<z.ZodObject<{
2731
+ permission: z.ZodOptional<z.ZodString>;
2732
+ }, z.core.$strip>>;
2733
+ };
2734
+ NOT_FOUND: {};
2735
+ CONFLICT: {
2736
+ data: z.ZodOptional<z.ZodObject<{
2737
+ reason: z.ZodOptional<z.ZodString>;
2738
+ }, z.core.$strip>>;
2739
+ };
2740
+ RATE_LIMITED: {};
2741
+ MODULE_DISABLED: {
2742
+ data: z.ZodObject<{
2743
+ module: z.ZodString;
2744
+ }, z.core.$strip>;
2745
+ };
2746
+ }>, Record<never, never>>;
2747
+ archive: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2748
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2749
+ policyId: z.ZodUUID;
2750
+ }, z.core.$strip>, z.ZodObject<{
2751
+ ok: z.ZodLiteral<true>;
2752
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2753
+ BAD_REQUEST: {
2754
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2755
+ };
2756
+ UNAUTHORIZED: {};
2757
+ FORBIDDEN: {
2758
+ data: z.ZodOptional<z.ZodObject<{
2759
+ permission: z.ZodOptional<z.ZodString>;
2760
+ }, z.core.$strip>>;
2761
+ };
2762
+ NOT_FOUND: {};
2763
+ CONFLICT: {
2764
+ data: z.ZodOptional<z.ZodObject<{
2765
+ reason: z.ZodOptional<z.ZodString>;
2766
+ }, z.core.$strip>>;
2767
+ };
2768
+ RATE_LIMITED: {};
2769
+ MODULE_DISABLED: {
2770
+ data: z.ZodObject<{
2771
+ module: z.ZodString;
2772
+ }, z.core.$strip>;
2773
+ };
2774
+ }>, Record<never, never>>;
2775
+ assign: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2776
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2777
+ policyId: z.ZodUUID;
2778
+ subjectKind: z.ZodEnum<{
2779
+ person: "person";
2780
+ office: "office";
2781
+ legal_entity: "legal_entity";
2782
+ org_unit: "org_unit";
2783
+ position: "position";
2784
+ workspace: "workspace";
2785
+ }>;
2786
+ subjectId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
2787
+ effectiveFrom: z.ZodISODate;
2788
+ effectiveTo: z.ZodOptional<z.ZodNullable<z.ZodISODate>>;
2789
+ }, z.core.$strip>, z.ZodObject<{
2790
+ policyId: z.ZodUUID;
2791
+ subjectKind: z.ZodEnum<{
2792
+ person: "person";
2793
+ office: "office";
2794
+ legal_entity: "legal_entity";
2795
+ org_unit: "org_unit";
2796
+ position: "position";
2797
+ workspace: "workspace";
2798
+ }>;
2799
+ subjectId: z.ZodNullable<z.ZodUUID>;
2800
+ effectiveFrom: z.ZodISODate;
2801
+ effectiveTo: z.ZodNullable<z.ZodISODate>;
2802
+ priority: z.ZodNumber;
2803
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2804
+ id: z.ZodUUID;
2805
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2806
+ BAD_REQUEST: {
2807
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2808
+ };
2809
+ UNAUTHORIZED: {};
2810
+ FORBIDDEN: {
2811
+ data: z.ZodOptional<z.ZodObject<{
2812
+ permission: z.ZodOptional<z.ZodString>;
2813
+ }, z.core.$strip>>;
2814
+ };
2815
+ NOT_FOUND: {};
2816
+ CONFLICT: {
2817
+ data: z.ZodOptional<z.ZodObject<{
2818
+ reason: z.ZodOptional<z.ZodString>;
2819
+ }, z.core.$strip>>;
2820
+ };
2821
+ RATE_LIMITED: {};
2822
+ MODULE_DISABLED: {
2823
+ data: z.ZodObject<{
2824
+ module: z.ZodString;
2825
+ }, z.core.$strip>;
2826
+ };
2827
+ }>, Record<never, never>>;
2828
+ unassign: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2829
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2830
+ assignmentId: z.ZodUUID;
2831
+ }, z.core.$strip>, z.ZodObject<{
2832
+ ok: z.ZodLiteral<true>;
2833
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2834
+ BAD_REQUEST: {
2835
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2836
+ };
2837
+ UNAUTHORIZED: {};
2838
+ FORBIDDEN: {
2839
+ data: z.ZodOptional<z.ZodObject<{
2840
+ permission: z.ZodOptional<z.ZodString>;
2841
+ }, z.core.$strip>>;
2842
+ };
2843
+ NOT_FOUND: {};
2844
+ CONFLICT: {
2845
+ data: z.ZodOptional<z.ZodObject<{
2846
+ reason: z.ZodOptional<z.ZodString>;
2847
+ }, z.core.$strip>>;
2848
+ };
2849
+ RATE_LIMITED: {};
2850
+ MODULE_DISABLED: {
2851
+ data: z.ZodObject<{
2852
+ module: z.ZodString;
2853
+ }, z.core.$strip>;
2854
+ };
2855
+ }>, Record<never, never>>;
2856
+ /**
2857
+ * Which policy of each kind applies to this person on this date, and which rung answered.
2858
+ *
2859
+ * "Why does she accrue differently from her team" is the question this module gets asked, and
2860
+ * this is what answers it without a database session.
2861
+ */
2862
+ resolveFor: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2863
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2864
+ personId: z.ZodUUID;
2865
+ on: z.ZodOptional<z.ZodISODate>;
2866
+ }, z.core.$strip>, z.ZodArray<z.ZodObject<{
2867
+ kind: z.ZodEnum<{
2868
+ overtime: "overtime";
2869
+ accrual: "accrual";
2870
+ carry_forward: "carry_forward";
2871
+ rounding: "rounding";
2872
+ working_time: "working_time";
2873
+ }>;
2874
+ policyId: z.ZodNullable<z.ZodUUID>;
2875
+ policyName: z.ZodNullable<z.ZodString>;
2876
+ config: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2877
+ from: z.ZodNullable<z.ZodEnum<{
2878
+ person: "person";
2879
+ office: "office";
2880
+ legal_entity: "legal_entity";
2881
+ org_unit: "org_unit";
2882
+ position: "position";
2883
+ workspace: "workspace";
2884
+ }>>;
2885
+ fromSubjectId: z.ZodNullable<z.ZodUUID>;
2886
+ }, z.core.$strip>>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2887
+ BAD_REQUEST: {
2888
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2889
+ };
2890
+ UNAUTHORIZED: {};
2891
+ FORBIDDEN: {
2892
+ data: z.ZodOptional<z.ZodObject<{
2893
+ permission: z.ZodOptional<z.ZodString>;
2894
+ }, z.core.$strip>>;
2895
+ };
2896
+ NOT_FOUND: {};
2897
+ CONFLICT: {
2898
+ data: z.ZodOptional<z.ZodObject<{
2899
+ reason: z.ZodOptional<z.ZodString>;
2900
+ }, z.core.$strip>>;
2901
+ };
2902
+ RATE_LIMITED: {};
2903
+ MODULE_DISABLED: {
2904
+ data: z.ZodObject<{
2905
+ module: z.ZodString;
2906
+ }, z.core.$strip>;
2907
+ };
2908
+ }>, Record<never, never>>;
2909
+ };
2910
+ accrual: {
2911
+ /**
2912
+ * What a run would credit, per person, before it writes anything.
2913
+ *
2914
+ * Runs the same code the run does. A preview computed differently from the thing it previews is
2915
+ * a preview that eventually lies.
2916
+ */
2917
+ preview: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2918
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2919
+ from: z.ZodISODate;
2920
+ to: z.ZodISODate;
2921
+ personId: z.ZodOptional<z.ZodUUID>;
2922
+ }, z.core.$strip>, z.ZodObject<{
2923
+ periodFrom: z.ZodISODate;
2924
+ periodTo: z.ZodISODate;
2925
+ rows: z.ZodArray<z.ZodObject<{
2926
+ personId: z.ZodUUID;
2927
+ displayName: z.ZodString;
2928
+ leaveTypeId: z.ZodUUID;
2929
+ leaveTypeName: z.ZodString;
2930
+ minutes: z.ZodNumber;
2931
+ days: z.ZodNumber;
2932
+ reason: z.ZodString;
2933
+ alreadyAccrued: z.ZodBoolean;
2934
+ }, z.core.$strip>>;
2935
+ totalMinutes: z.ZodNumber;
2936
+ skipped: z.ZodArray<z.ZodObject<{
2937
+ personId: z.ZodUUID;
2938
+ displayName: z.ZodString;
2939
+ reason: z.ZodString;
2940
+ }, z.core.$strip>>;
2941
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2942
+ BAD_REQUEST: {
2943
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2944
+ };
2945
+ UNAUTHORIZED: {};
2946
+ FORBIDDEN: {
2947
+ data: z.ZodOptional<z.ZodObject<{
2948
+ permission: z.ZodOptional<z.ZodString>;
2949
+ }, z.core.$strip>>;
2950
+ };
2951
+ NOT_FOUND: {};
2952
+ CONFLICT: {
2953
+ data: z.ZodOptional<z.ZodObject<{
2954
+ reason: z.ZodOptional<z.ZodString>;
2955
+ }, z.core.$strip>>;
2956
+ };
2957
+ RATE_LIMITED: {};
2958
+ MODULE_DISABLED: {
2959
+ data: z.ZodObject<{
2960
+ module: z.ZodString;
2961
+ }, z.core.$strip>;
2962
+ };
2963
+ }>, Record<never, never>>;
2964
+ /**
2965
+ * Credits the ledger.
2966
+ *
2967
+ * Idempotent per person, per leave type, per period: a second run for the same window credits
2968
+ * nothing, because an accrual job that double-credits when somebody clicks twice is worse than
2969
+ * one that never ran.
2970
+ */
2971
+ run: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
2972
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
2973
+ from: z.ZodISODate;
2974
+ to: z.ZodISODate;
2975
+ personId: z.ZodOptional<z.ZodUUID>;
2976
+ }, z.core.$strip>, z.ZodObject<{
2977
+ credited: z.ZodNumber;
2978
+ skipped: z.ZodNumber;
2979
+ totalMinutes: z.ZodNumber;
2980
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
2981
+ BAD_REQUEST: {
2982
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2983
+ };
2984
+ UNAUTHORIZED: {};
2985
+ FORBIDDEN: {
2986
+ data: z.ZodOptional<z.ZodObject<{
2987
+ permission: z.ZodOptional<z.ZodString>;
2988
+ }, z.core.$strip>>;
2989
+ };
2990
+ NOT_FOUND: {};
2991
+ CONFLICT: {
2992
+ data: z.ZodOptional<z.ZodObject<{
2993
+ reason: z.ZodOptional<z.ZodString>;
2994
+ }, z.core.$strip>>;
2995
+ };
2996
+ RATE_LIMITED: {};
2997
+ MODULE_DISABLED: {
2998
+ data: z.ZodObject<{
2999
+ module: z.ZodString;
3000
+ }, z.core.$strip>;
3001
+ };
3002
+ }>, Record<never, never>>;
3003
+ };
3004
+ periods: {
3005
+ list: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3006
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3007
+ cursor: z.ZodOptional<z.ZodString>;
3008
+ limit: z.ZodDefault<z.ZodNumber>;
3009
+ kind: z.ZodOptional<z.ZodEnum<{
3010
+ attendance: "attendance";
3011
+ payroll: "payroll";
3012
+ }>>;
3013
+ }, z.core.$strip>, z.ZodObject<{
3014
+ items: z.ZodArray<z.ZodObject<{
3015
+ kind: z.ZodEnum<{
3016
+ attendance: "attendance";
3017
+ payroll: "payroll";
3018
+ }>;
3019
+ legalEntityId: z.ZodNullable<z.ZodUUID>;
3020
+ startsOn: z.ZodISODate;
3021
+ endsOn: z.ZodISODate;
3022
+ status: z.ZodEnum<{
3023
+ locked: "locked";
3024
+ open: "open";
3025
+ }>;
3026
+ lockedAt: z.ZodNullable<z.ZodISODateTime>;
3027
+ lockedBy: z.ZodNullable<z.ZodUUID>;
3028
+ note: z.ZodNullable<z.ZodString>;
3029
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3030
+ id: z.ZodUUID;
3031
+ }, z.core.$strip>>;
3032
+ nextCursor: z.ZodNullable<z.ZodString>;
3033
+ total: z.ZodOptional<z.ZodNumber>;
3034
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3035
+ BAD_REQUEST: {
3036
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3037
+ };
3038
+ UNAUTHORIZED: {};
3039
+ FORBIDDEN: {
3040
+ data: z.ZodOptional<z.ZodObject<{
3041
+ permission: z.ZodOptional<z.ZodString>;
3042
+ }, z.core.$strip>>;
3043
+ };
3044
+ NOT_FOUND: {};
3045
+ CONFLICT: {
3046
+ data: z.ZodOptional<z.ZodObject<{
3047
+ reason: z.ZodOptional<z.ZodString>;
3048
+ }, z.core.$strip>>;
3049
+ };
3050
+ RATE_LIMITED: {};
3051
+ MODULE_DISABLED: {
3052
+ data: z.ZodObject<{
3053
+ module: z.ZodString;
3054
+ }, z.core.$strip>;
3055
+ };
3056
+ }>, Record<never, never>>;
3057
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3058
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3059
+ kind: z.ZodDefault<z.ZodEnum<{
3060
+ attendance: "attendance";
3061
+ payroll: "payroll";
3062
+ }>>;
3063
+ legalEntityId: z.ZodOptional<z.ZodNullable<z.ZodUUID>>;
3064
+ startsOn: z.ZodISODate;
3065
+ endsOn: z.ZodISODate;
3066
+ }, z.core.$strip>, z.ZodObject<{
3067
+ kind: z.ZodEnum<{
3068
+ attendance: "attendance";
3069
+ payroll: "payroll";
3070
+ }>;
3071
+ legalEntityId: z.ZodNullable<z.ZodUUID>;
3072
+ startsOn: z.ZodISODate;
3073
+ endsOn: z.ZodISODate;
3074
+ status: z.ZodEnum<{
3075
+ locked: "locked";
3076
+ open: "open";
3077
+ }>;
3078
+ lockedAt: z.ZodNullable<z.ZodISODateTime>;
3079
+ lockedBy: z.ZodNullable<z.ZodUUID>;
3080
+ note: z.ZodNullable<z.ZodString>;
3081
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3082
+ id: z.ZodUUID;
3083
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3084
+ BAD_REQUEST: {
3085
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3086
+ };
3087
+ UNAUTHORIZED: {};
3088
+ FORBIDDEN: {
3089
+ data: z.ZodOptional<z.ZodObject<{
3090
+ permission: z.ZodOptional<z.ZodString>;
3091
+ }, z.core.$strip>>;
3092
+ };
3093
+ NOT_FOUND: {};
3094
+ CONFLICT: {
3095
+ data: z.ZodOptional<z.ZodObject<{
3096
+ reason: z.ZodOptional<z.ZodString>;
3097
+ }, z.core.$strip>>;
3098
+ };
3099
+ RATE_LIMITED: {};
3100
+ MODULE_DISABLED: {
3101
+ data: z.ZodObject<{
3102
+ module: z.ZodString;
3103
+ }, z.core.$strip>;
3104
+ };
3105
+ }>, Record<never, never>>;
3106
+ /** Freezes the month. Every derived day inside it stops being recomputable. */
3107
+ lock: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3108
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3109
+ periodId: z.ZodUUID;
3110
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3111
+ }, z.core.$strip>, z.ZodObject<{
3112
+ kind: z.ZodEnum<{
3113
+ attendance: "attendance";
3114
+ payroll: "payroll";
3115
+ }>;
3116
+ legalEntityId: z.ZodNullable<z.ZodUUID>;
3117
+ startsOn: z.ZodISODate;
3118
+ endsOn: z.ZodISODate;
3119
+ status: z.ZodEnum<{
3120
+ locked: "locked";
3121
+ open: "open";
3122
+ }>;
3123
+ lockedAt: z.ZodNullable<z.ZodISODateTime>;
3124
+ lockedBy: z.ZodNullable<z.ZodUUID>;
3125
+ note: z.ZodNullable<z.ZodString>;
3126
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3127
+ id: z.ZodUUID;
3128
+ lockedDays: z.ZodNumber;
3129
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3130
+ BAD_REQUEST: {
3131
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3132
+ };
3133
+ UNAUTHORIZED: {};
3134
+ FORBIDDEN: {
3135
+ data: z.ZodOptional<z.ZodObject<{
3136
+ permission: z.ZodOptional<z.ZodString>;
3137
+ }, z.core.$strip>>;
3138
+ };
3139
+ NOT_FOUND: {};
3140
+ CONFLICT: {
3141
+ data: z.ZodOptional<z.ZodObject<{
3142
+ reason: z.ZodOptional<z.ZodString>;
3143
+ }, z.core.$strip>>;
3144
+ };
3145
+ RATE_LIMITED: {};
3146
+ MODULE_DISABLED: {
3147
+ data: z.ZodObject<{
3148
+ module: z.ZodString;
3149
+ }, z.core.$strip>;
3150
+ };
3151
+ }>, Record<never, never>>;
3152
+ /**
3153
+ * Reopens it.
3154
+ *
3155
+ * Dangerous on purpose: a payroll has usually been filed against a locked month, and reopening
3156
+ * lets figures move underneath it. The response says how many days became recomputable again.
3157
+ */
3158
+ unlock: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
3159
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3160
+ periodId: z.ZodUUID;
3161
+ reason: z.ZodString;
3162
+ }, z.core.$strip>, z.ZodObject<{
3163
+ kind: z.ZodEnum<{
3164
+ attendance: "attendance";
3165
+ payroll: "payroll";
3166
+ }>;
3167
+ legalEntityId: z.ZodNullable<z.ZodUUID>;
3168
+ startsOn: z.ZodISODate;
3169
+ endsOn: z.ZodISODate;
3170
+ status: z.ZodEnum<{
3171
+ locked: "locked";
3172
+ open: "open";
3173
+ }>;
3174
+ lockedAt: z.ZodNullable<z.ZodISODateTime>;
3175
+ lockedBy: z.ZodNullable<z.ZodUUID>;
3176
+ note: z.ZodNullable<z.ZodString>;
3177
+ workspaceId: z.core.$ZodBranded<z.ZodUUID, "WorkspaceId", "out">;
3178
+ id: z.ZodUUID;
3179
+ unlockedDays: z.ZodNumber;
3180
+ }, z.core.$strip>, import("@orpc/contract").MergedErrorMap<Record<never, never>, {
3181
+ BAD_REQUEST: {
3182
+ data: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3183
+ };
3184
+ UNAUTHORIZED: {};
3185
+ FORBIDDEN: {
3186
+ data: z.ZodOptional<z.ZodObject<{
3187
+ permission: z.ZodOptional<z.ZodString>;
3188
+ }, z.core.$strip>>;
3189
+ };
3190
+ NOT_FOUND: {};
3191
+ CONFLICT: {
3192
+ data: z.ZodOptional<z.ZodObject<{
3193
+ reason: z.ZodOptional<z.ZodString>;
3194
+ }, z.core.$strip>>;
3195
+ };
3196
+ RATE_LIMITED: {};
3197
+ MODULE_DISABLED: {
3198
+ data: z.ZodObject<{
3199
+ module: z.ZodString;
3200
+ }, z.core.$strip>;
3201
+ };
3202
+ }>, Record<never, never>>;
3203
+ };
2497
3204
  attendance: {
2498
3205
  /** Am I clocked in? The one call a clock widget makes. */
2499
3206
  state: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{