@elaraai/e3-ui 1.0.94 → 1.0.95

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 (303) hide show
  1. package/dist/src/allocation/adapters.d.ts +159 -0
  2. package/dist/src/allocation/adapters.d.ts.map +1 -0
  3. package/dist/src/allocation/adapters.js +241 -0
  4. package/dist/src/allocation/adapters.js.map +1 -0
  5. package/dist/src/allocation/functions.d.ts +664 -0
  6. package/dist/src/allocation/functions.d.ts.map +1 -0
  7. package/dist/src/allocation/functions.js +782 -0
  8. package/dist/src/allocation/functions.js.map +1 -0
  9. package/dist/src/allocation/index.d.ts +2985 -0
  10. package/dist/src/allocation/index.d.ts.map +1 -0
  11. package/dist/src/allocation/index.js +499 -0
  12. package/dist/src/allocation/index.js.map +1 -0
  13. package/dist/src/allocation/types.d.ts +832 -0
  14. package/dist/src/allocation/types.d.ts.map +1 -0
  15. package/dist/src/allocation/types.js +360 -0
  16. package/dist/src/allocation/types.js.map +1 -0
  17. package/dist/src/bind/func.d.ts +14 -0
  18. package/dist/src/bind/func.d.ts.map +1 -1
  19. package/dist/src/bind/func.js +22 -1
  20. package/dist/src/bind/func.js.map +1 -1
  21. package/dist/src/calendar/index.d.ts +510 -1639
  22. package/dist/src/calendar/index.d.ts.map +1 -1
  23. package/dist/src/calendar/index.js +56 -29
  24. package/dist/src/calendar/index.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +9 -21
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -1
  27. package/dist/src/flowchart/canvas.js +10 -22
  28. package/dist/src/flowchart/canvas.js.map +1 -1
  29. package/dist/src/flowchart/flowchart.d.ts +19 -13
  30. package/dist/src/flowchart/flowchart.d.ts.map +1 -1
  31. package/dist/src/flowchart/flowchart.js.map +1 -1
  32. package/dist/src/flowchart/index.d.ts +44 -21
  33. package/dist/src/flowchart/index.d.ts.map +1 -1
  34. package/dist/src/flowchart/index.js +43 -20
  35. package/dist/src/flowchart/index.js.map +1 -1
  36. package/dist/src/flowchart/library.d.ts +166 -81
  37. package/dist/src/flowchart/library.d.ts.map +1 -1
  38. package/dist/src/flowchart/library.js +232 -105
  39. package/dist/src/flowchart/library.js.map +1 -1
  40. package/dist/src/flowchart/over.d.ts +9 -16
  41. package/dist/src/flowchart/over.d.ts.map +1 -1
  42. package/dist/src/flowchart/over.js +9 -16
  43. package/dist/src/flowchart/over.js.map +1 -1
  44. package/dist/src/flowchart/payload.d.ts +710 -508
  45. package/dist/src/flowchart/payload.d.ts.map +1 -1
  46. package/dist/src/flowchart/payload.js +128 -74
  47. package/dist/src/flowchart/payload.js.map +1 -1
  48. package/dist/src/flowchart/window.d.ts +132 -347
  49. package/dist/src/flowchart/window.d.ts.map +1 -1
  50. package/dist/src/flowchart/window.js +48 -55
  51. package/dist/src/flowchart/window.js.map +1 -1
  52. package/dist/src/index.d.ts +11 -7
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +14 -6
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/internal.d.ts +18 -7
  57. package/dist/src/internal.d.ts.map +1 -1
  58. package/dist/src/internal.js +28 -9
  59. package/dist/src/internal.js.map +1 -1
  60. package/dist/src/plan/event-rows.d.ts +26 -10
  61. package/dist/src/plan/event-rows.d.ts.map +1 -1
  62. package/dist/src/plan/event-rows.js +39 -13
  63. package/dist/src/plan/event-rows.js.map +1 -1
  64. package/dist/src/plan/ir.d.ts +244 -815
  65. package/dist/src/plan/ir.d.ts.map +1 -1
  66. package/dist/src/plan/ir.js +8 -6
  67. package/dist/src/plan/ir.js.map +1 -1
  68. package/dist/src/plan/library.d.ts +3 -0
  69. package/dist/src/plan/library.d.ts.map +1 -1
  70. package/dist/src/plan/library.js +1 -1
  71. package/dist/src/plan/library.js.map +1 -1
  72. package/dist/src/plan/ordered-source.d.ts +1 -0
  73. package/dist/src/plan/ordered-source.d.ts.map +1 -1
  74. package/dist/src/plan/plan.d.ts +559 -1667
  75. package/dist/src/plan/plan.d.ts.map +1 -1
  76. package/dist/src/plan/plan.js +123 -45
  77. package/dist/src/plan/plan.js.map +1 -1
  78. package/dist/src/plan/root.d.ts +16 -20
  79. package/dist/src/plan/root.d.ts.map +1 -1
  80. package/dist/src/plan/root.js +23 -33
  81. package/dist/src/plan/root.js.map +1 -1
  82. package/dist/src/roster/coverage.d.ts +17 -231
  83. package/dist/src/roster/coverage.d.ts.map +1 -1
  84. package/dist/src/roster/coverage.js +94 -90
  85. package/dist/src/roster/coverage.js.map +1 -1
  86. package/dist/src/roster/fit.d.ts +59 -0
  87. package/dist/src/roster/fit.d.ts.map +1 -0
  88. package/dist/src/roster/fit.js +155 -0
  89. package/dist/src/roster/fit.js.map +1 -0
  90. package/dist/src/roster/index.d.ts +2862 -3662
  91. package/dist/src/roster/index.d.ts.map +1 -1
  92. package/dist/src/roster/index.js +383 -81
  93. package/dist/src/roster/index.js.map +1 -1
  94. package/dist/src/roster/library.d.ts +37 -92
  95. package/dist/src/roster/library.d.ts.map +1 -1
  96. package/dist/src/roster/library.js +25 -64
  97. package/dist/src/roster/library.js.map +1 -1
  98. package/dist/src/roster/lists.d.ts +195 -0
  99. package/dist/src/roster/lists.d.ts.map +1 -0
  100. package/dist/src/roster/lists.js +233 -0
  101. package/dist/src/roster/lists.js.map +1 -0
  102. package/dist/src/roster/rules.d.ts +17 -260
  103. package/dist/src/roster/rules.d.ts.map +1 -1
  104. package/dist/src/roster/rules.js +135 -132
  105. package/dist/src/roster/rules.js.map +1 -1
  106. package/dist/src/roster/targets.d.ts +115 -0
  107. package/dist/src/roster/targets.d.ts.map +1 -0
  108. package/dist/src/roster/targets.js +213 -0
  109. package/dist/src/roster/targets.js.map +1 -0
  110. package/dist/src/roster/times.d.ts +251 -0
  111. package/dist/src/roster/times.d.ts.map +1 -0
  112. package/dist/src/roster/times.js +174 -0
  113. package/dist/src/roster/times.js.map +1 -0
  114. package/dist/src/roster/types.d.ts +828 -183
  115. package/dist/src/roster/types.d.ts.map +1 -1
  116. package/dist/src/roster/types.js +224 -97
  117. package/dist/src/roster/types.js.map +1 -1
  118. package/dist/src/schedule/accessor.d.ts +28 -0
  119. package/dist/src/schedule/accessor.d.ts.map +1 -0
  120. package/dist/src/schedule/accessor.js +39 -0
  121. package/dist/src/schedule/accessor.js.map +1 -0
  122. package/dist/src/schedule/events.d.ts +170 -42
  123. package/dist/src/schedule/events.d.ts.map +1 -1
  124. package/dist/src/schedule/events.js +431 -171
  125. package/dist/src/schedule/events.js.map +1 -1
  126. package/dist/src/schedule/index.d.ts +41 -4
  127. package/dist/src/schedule/index.d.ts.map +1 -1
  128. package/dist/src/schedule/index.js +35 -3
  129. package/dist/src/schedule/index.js.map +1 -1
  130. package/dist/src/schedule/library.d.ts +13 -3
  131. package/dist/src/schedule/library.d.ts.map +1 -1
  132. package/dist/src/schedule/library.js +11 -4
  133. package/dist/src/schedule/library.js.map +1 -1
  134. package/dist/src/schedule/periods.d.ts +115 -0
  135. package/dist/src/schedule/periods.d.ts.map +1 -0
  136. package/dist/src/schedule/periods.js +215 -0
  137. package/dist/src/schedule/periods.js.map +1 -0
  138. package/dist/src/schedule/record-window.d.ts +25 -3
  139. package/dist/src/schedule/record-window.d.ts.map +1 -1
  140. package/dist/src/schedule/record-window.js +31 -18
  141. package/dist/src/schedule/record-window.js.map +1 -1
  142. package/dist/src/schedule/resources.d.ts +82 -4
  143. package/dist/src/schedule/resources.d.ts.map +1 -1
  144. package/dist/src/schedule/resources.js +44 -14
  145. package/dist/src/schedule/resources.js.map +1 -1
  146. package/dist/src/schedule/session.d.ts +69 -0
  147. package/dist/src/schedule/session.d.ts.map +1 -0
  148. package/dist/src/schedule/session.js +121 -0
  149. package/dist/src/schedule/session.js.map +1 -0
  150. package/dist/src/schedule/templates.d.ts +14 -2
  151. package/dist/src/schedule/templates.d.ts.map +1 -1
  152. package/dist/src/schedule/templates.js +5 -3
  153. package/dist/src/schedule/templates.js.map +1 -1
  154. package/dist/src/schedule/types.d.ts +1671 -37
  155. package/dist/src/schedule/types.d.ts.map +1 -1
  156. package/dist/src/schedule/types.js +196 -5
  157. package/dist/src/schedule/types.js.map +1 -1
  158. package/dist/src/schedule/window.d.ts +14 -0
  159. package/dist/src/schedule/window.d.ts.map +1 -1
  160. package/dist/src/schedule/window.js +14 -4
  161. package/dist/src/schedule/window.js.map +1 -1
  162. package/dist/src/schedule/words.d.ts +22 -0
  163. package/dist/src/schedule/words.d.ts.map +1 -0
  164. package/dist/src/schedule/words.js +25 -0
  165. package/dist/src/schedule/words.js.map +1 -0
  166. package/dist/src/sheet/index.d.ts +61 -27
  167. package/dist/src/sheet/index.d.ts.map +1 -1
  168. package/dist/src/sheet/index.js +59 -25
  169. package/dist/src/sheet/index.js.map +1 -1
  170. package/dist/src/sheet/library.d.ts +21 -3
  171. package/dist/src/sheet/library.d.ts.map +1 -1
  172. package/dist/src/sheet/library.js +23 -6
  173. package/dist/src/sheet/library.js.map +1 -1
  174. package/dist/src/sheet/registers.d.ts +100 -85
  175. package/dist/src/sheet/registers.d.ts.map +1 -1
  176. package/dist/src/sheet/registers.js +100 -85
  177. package/dist/src/sheet/registers.js.map +1 -1
  178. package/dist/src/sheet/root.d.ts +8 -12
  179. package/dist/src/sheet/root.d.ts.map +1 -1
  180. package/dist/src/sheet/root.js +6 -40
  181. package/dist/src/sheet/root.js.map +1 -1
  182. package/dist/src/sheet/sheet.d.ts +598 -2349
  183. package/dist/src/sheet/sheet.d.ts.map +1 -1
  184. package/dist/src/sheet/sheet.js +124 -37
  185. package/dist/src/sheet/sheet.js.map +1 -1
  186. package/dist/src/sheet/sub-rows.d.ts +74 -28
  187. package/dist/src/sheet/sub-rows.d.ts.map +1 -1
  188. package/dist/src/sheet/sub-rows.js +74 -28
  189. package/dist/src/sheet/sub-rows.js.map +1 -1
  190. package/dist/src/sheet/templates.d.ts +98 -34
  191. package/dist/src/sheet/templates.d.ts.map +1 -1
  192. package/dist/src/sheet/templates.js +102 -58
  193. package/dist/src/sheet/templates.js.map +1 -1
  194. package/dist/src/sheet/types.d.ts +289 -1359
  195. package/dist/src/sheet/types.d.ts.map +1 -1
  196. package/dist/src/sheet/types.js +20 -26
  197. package/dist/src/sheet/types.js.map +1 -1
  198. package/dist/src/sheet/views.d.ts +10 -11
  199. package/dist/src/sheet/views.d.ts.map +1 -1
  200. package/dist/src/sheet/views.js +15 -20
  201. package/dist/src/sheet/views.js.map +1 -1
  202. package/dist/src/{roster/visibility.d.ts → utils/key-visibility.d.ts} +42 -7
  203. package/dist/src/utils/key-visibility.d.ts.map +1 -0
  204. package/dist/src/utils/key-visibility.js +36 -0
  205. package/dist/src/utils/key-visibility.js.map +1 -0
  206. package/dist/src/utils/ordered-source.d.ts +1 -0
  207. package/dist/src/utils/ordered-source.d.ts.map +1 -1
  208. package/dist/src/utils/ordered-source.js +8 -3
  209. package/dist/src/utils/ordered-source.js.map +1 -1
  210. package/dist/src/utils/record-sources.d.ts +107 -0
  211. package/dist/src/utils/record-sources.d.ts.map +1 -0
  212. package/dist/src/utils/record-sources.js +132 -0
  213. package/dist/src/utils/record-sources.js.map +1 -0
  214. package/dist/test/allocation/allocation.examples.d.ts +2902 -0
  215. package/dist/test/allocation/allocation.examples.d.ts.map +1 -0
  216. package/dist/test/allocation/allocation.examples.js +643 -0
  217. package/dist/test/allocation/allocation.examples.js.map +1 -0
  218. package/dist/test/allocation/fit.examples.d.ts +546 -0
  219. package/dist/test/allocation/fit.examples.d.ts.map +1 -0
  220. package/dist/test/allocation/fit.examples.js +171 -0
  221. package/dist/test/allocation/fit.examples.js.map +1 -0
  222. package/dist/test/allocation/kiln-yard.d.ts +181 -0
  223. package/dist/test/allocation/kiln-yard.d.ts.map +1 -0
  224. package/dist/test/allocation/kiln-yard.js +228 -0
  225. package/dist/test/allocation/kiln-yard.js.map +1 -0
  226. package/dist/test/bind/data/data.examples.d.ts +651 -1
  227. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  228. package/dist/test/bind/data/data.examples.js +140 -2
  229. package/dist/test/bind/data/data.examples.js.map +1 -1
  230. package/dist/test/bind/func/func.examples.d.ts +10 -1
  231. package/dist/test/bind/func/func.examples.d.ts.map +1 -1
  232. package/dist/test/bind/func/func.examples.js +8 -1
  233. package/dist/test/bind/func/func.examples.js.map +1 -1
  234. package/dist/test/bind/record/record.examples.d.ts +633 -1
  235. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  236. package/dist/test/bind/record/record.examples.js +26 -2
  237. package/dist/test/bind/record/record.examples.js.map +1 -1
  238. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
  239. package/dist/test/calendar/calendar-records.examples.js +18 -14
  240. package/dist/test/calendar/calendar-records.examples.js.map +1 -1
  241. package/dist/test/calendar/calendar.examples.d.ts +521 -16
  242. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  243. package/dist/test/calendar/calendar.examples.js +182 -135
  244. package/dist/test/calendar/calendar.examples.js.map +1 -1
  245. package/dist/test/examples-package.d.ts +75 -0
  246. package/dist/test/examples-package.d.ts.map +1 -0
  247. package/dist/test/examples-package.js +263 -0
  248. package/dist/test/examples-package.js.map +1 -0
  249. package/dist/test/flowchart/flowchart.examples.d.ts +211 -19
  250. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  251. package/dist/test/flowchart/flowchart.examples.js +102 -75
  252. package/dist/test/flowchart/flowchart.examples.js.map +1 -1
  253. package/dist/test/plan/plan-events.examples.d.ts +1439 -209
  254. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  255. package/dist/test/plan/plan-events.examples.js +199 -59
  256. package/dist/test/plan/plan-events.examples.js.map +1 -1
  257. package/dist/test/plan/plan-records.examples.d.ts +420 -0
  258. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  259. package/dist/test/plan/plan-records.examples.js +70 -19
  260. package/dist/test/plan/plan-records.examples.js.map +1 -1
  261. package/dist/test/plan/plan-windows.examples.d.ts +636 -55
  262. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
  263. package/dist/test/plan/plan-windows.examples.js +69 -33
  264. package/dist/test/plan/plan-windows.examples.js.map +1 -1
  265. package/dist/test/plan/plan.examples.d.ts +153 -31
  266. package/dist/test/plan/plan.examples.d.ts.map +1 -1
  267. package/dist/test/plan/plan.examples.js +178 -101
  268. package/dist/test/plan/plan.examples.js.map +1 -1
  269. package/dist/test/roster/domain.examples.d.ts +467 -250
  270. package/dist/test/roster/domain.examples.d.ts.map +1 -1
  271. package/dist/test/roster/domain.examples.js +92 -29
  272. package/dist/test/roster/domain.examples.js.map +1 -1
  273. package/dist/test/roster/roster-records.examples.d.ts +430 -586
  274. package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
  275. package/dist/test/roster/roster-records.examples.js +102 -43
  276. package/dist/test/roster/roster-records.examples.js.map +1 -1
  277. package/dist/test/roster/roster.examples.d.ts +2319 -606
  278. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  279. package/dist/test/roster/roster.examples.js +456 -148
  280. package/dist/test/roster/roster.examples.js.map +1 -1
  281. package/dist/test/roster/warehouse.d.ts +172 -63
  282. package/dist/test/roster/warehouse.d.ts.map +1 -1
  283. package/dist/test/roster/warehouse.js +172 -39
  284. package/dist/test/roster/warehouse.js.map +1 -1
  285. package/dist/test/schedule/schedule.examples.d.ts +3499 -0
  286. package/dist/test/schedule/schedule.examples.d.ts.map +1 -0
  287. package/dist/test/schedule/schedule.examples.js +192 -0
  288. package/dist/test/schedule/schedule.examples.js.map +1 -0
  289. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
  290. package/dist/test/sheet/sheet-records.examples.js +22 -18
  291. package/dist/test/sheet/sheet-records.examples.js.map +1 -1
  292. package/dist/test/sheet/sheet.examples.d.ts +715 -26
  293. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  294. package/dist/test/sheet/sheet.examples.js +204 -130
  295. package/dist/test/sheet/sheet.examples.js.map +1 -1
  296. package/package.json +17 -10
  297. package/dist/src/roster/people.d.ts +0 -50
  298. package/dist/src/roster/people.d.ts.map +0 -1
  299. package/dist/src/roster/people.js +0 -32
  300. package/dist/src/roster/people.js.map +0 -1
  301. package/dist/src/roster/visibility.d.ts.map +0 -1
  302. package/dist/src/roster/visibility.js +0 -25
  303. package/dist/src/roster/visibility.js.map +0 -1
@@ -2,11 +2,21 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { ArrayType, BooleanType, DateTimeType, DictType, FloatType, IntegerType, NullType, OptionType, SetType, StringType, StructType, VariantType } from "@elaraai/east";
6
5
  /**
7
- * One shift of one group on one day. Day zero is the record key's UTC date.
6
+ * The Roster's East types (#1368, `Builder Interfaces Spec.md` §5.3). A week
7
+ * is the Roster's reading of the app's own rows — each duty the app's row,
8
+ * with the roles the Roster reads from it — carried in the fit's, the pay's
9
+ * and the check's requests and in the renderer, and stored nowhere. The types
10
+ * over a week take the app's duty row type, `R`: each is a constructor, and
11
+ * the same `R` gives the same East type (`isTypeEqual`).
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ import { ArrayType, BlobType, BooleanType, DateTimeType, DictType, FloatType, FunctionType, IntegerType, NullType, OptionType, SetType, StringType, StructType, VariantType, type EastType } from "@elaraai/east";
16
+ /**
17
+ * One shift of one group on one day of the week.
8
18
  * @remarks Slot keys compare by East value, including when decoded in the browser.
9
- * @property day - Day within the week, from zero to six
19
+ * @property day - Day within the week, from zero to six: the duty's day (§5.5, rule 1) less the week's first
10
20
  * @property group - Group key
11
21
  * @property shift - Shift key
12
22
  */
@@ -17,10 +27,10 @@ export declare const RosterSlotType: StructType<{
17
27
  }>;
18
28
  export type RosterSlotType = typeof RosterSlotType;
19
29
  /**
20
- * The subject of an assignment.
30
+ * Who a duty is: a person, or an agency asked to send someone.
21
31
  * @remarks Requests reserve positions without pretending an agency has supplied a named person.
22
- * @property person - The original staff record key
23
- * @property request - The agency asked to supply someone
32
+ * @property person - The person's key, of the `people` resource kind
33
+ * @property request - The agency's key, of the `agencies` resource kind
24
34
  */
25
35
  export declare const RosterWhoType: VariantType<{
26
36
  readonly person: StringType;
@@ -28,17 +38,15 @@ export declare const RosterWhoType: VariantType<{
28
38
  }>;
29
39
  export type RosterWhoType = typeof RosterWhoType;
30
40
  /**
31
- * An assignment stored within one week.
32
- * @remarks A start offset moves the start; overtime extends the end. Agreement is absent for an unchanged shift.
33
- * @property slot - The day, group and shift
34
- * @property who - A named person or an agency request
35
- * @property position - Position held on this assignment
36
- * @property activity - One skill or duty, or none
37
- * @property offset - Start offset in hours, negative for an early start
38
- * @property overtime - Additional hours after the shift
39
- * @property agreed - Whether the person agreed to changed hours
40
- */
41
- export declare const RosterAssignmentType: StructType<{
41
+ * One duty, as the Roster reads it from the app's row (`R`): its slot, who it
42
+ * is, and its roles, beside the row itself, every field of it.
43
+ *
44
+ * @typeParam R - The app's duty row type
45
+ * @param row - The app's duty row type
46
+ * @returns The assignment type over it
47
+ * @remarks Its times are the duty's own; the Roster gives them no name and no worth (§5.5). Its `hours` are what the duty counts.
48
+ */
49
+ export declare function RosterAssignmentTypeFor<R extends EastType>(row: R): StructType<{
42
50
  readonly slot: StructType<{
43
51
  readonly day: IntegerType;
44
52
  readonly group: StringType;
@@ -50,11 +58,13 @@ export declare const RosterAssignmentType: StructType<{
50
58
  }>;
51
59
  readonly position: StringType;
52
60
  readonly activity: OptionType<StringType>;
53
- readonly offset: FloatType;
54
- readonly overtime: FloatType;
55
- readonly agreed: OptionType<BooleanType>;
61
+ readonly start: DateTimeType;
62
+ readonly end: DateTimeType;
63
+ readonly hours: FloatType;
64
+ readonly row: R;
56
65
  }>;
57
- export type RosterAssignmentType = typeof RosterAssignmentType;
66
+ /** Type representing {@link RosterAssignmentTypeFor}. */
67
+ export type RosterAssignmentTypeFor<R extends EastType> = ReturnType<typeof RosterAssignmentTypeFor<R>>;
58
68
  /**
59
69
  * A slot's staffing and work targets.
60
70
  * @remarks A duty needs assigned hours, whereas a skill also has holder capacity.
@@ -77,32 +87,35 @@ export declare const RosterRequirementsType: DictType<StructType<{
77
87
  }>>;
78
88
  export type RosterRequirementsType = typeof RosterRequirementsType;
79
89
  /**
80
- * The durable status of a week.
81
- * @remarks Publishing saves the complete week and its status atomically.
90
+ * A week's status: Schedule's period status, read from the app's weeks record
91
+ * (`Schedule.periods`).
82
92
  * @property draft - An editable week
83
- * @property published - A read-only week and its publication instant
93
+ * @property published - A read-only week, and when it was published when the app's published case holds the time
94
+ * @property other - Another case of the app's status, by its name: read-only
84
95
  */
85
96
  export declare const RosterStatusType: VariantType<{
86
97
  readonly draft: NullType;
87
98
  readonly published: StructType<{
88
- readonly at: DateTimeType;
99
+ readonly at: OptionType<DateTimeType>;
89
100
  }>;
101
+ readonly other: StringType;
90
102
  }>;
91
103
  export type RosterStatusType = typeof RosterStatusType;
92
104
  /**
93
- * The single atomic entry in the roster record.
94
- * @remarks Assignments, targets, dismissals and publication share one optimistic patch baseline.
95
- * @property status - Draft or published
96
- * @property assignments - Assignments by stable identifier
97
- * @property requirements - Targets by slot
98
- * @property dismissed - Proposal identifiers rejected for this week
105
+ * One week of the app's rows, as the Roster reads them.
106
+ *
107
+ * @typeParam R - The app's duty row type
108
+ * @param row - The app's duty row type
109
+ * @returns The week type over it
110
+ * @remarks Its assignments are the week's duties by their keys; its requirements the app's targets by slot; its status and its dismissals the app's week row's.
99
111
  */
100
- export declare const RosterWeekType: StructType<{
112
+ export declare function RosterWeekTypeFor<R extends EastType>(row: R): StructType<{
101
113
  readonly status: VariantType<{
102
114
  readonly draft: NullType;
103
115
  readonly published: StructType<{
104
- readonly at: DateTimeType;
116
+ readonly at: OptionType<DateTimeType>;
105
117
  }>;
118
+ readonly other: StringType;
106
119
  }>;
107
120
  readonly assignments: DictType<StringType, StructType<{
108
121
  readonly slot: StructType<{
@@ -116,9 +129,10 @@ export declare const RosterWeekType: StructType<{
116
129
  }>;
117
130
  readonly position: StringType;
118
131
  readonly activity: OptionType<StringType>;
119
- readonly offset: FloatType;
120
- readonly overtime: FloatType;
121
- readonly agreed: OptionType<BooleanType>;
132
+ readonly start: DateTimeType;
133
+ readonly end: DateTimeType;
134
+ readonly hours: FloatType;
135
+ readonly row: R;
122
136
  }>>;
123
137
  readonly requirements: DictType<StructType<{
124
138
  readonly day: IntegerType;
@@ -130,80 +144,57 @@ export declare const RosterWeekType: StructType<{
130
144
  }>>;
131
145
  readonly dismissed: SetType<StringType>;
132
146
  }>;
133
- export type RosterWeekType = typeof RosterWeekType;
134
- /** Weeks keyed by their first day at UTC midnight. @remarks This is the roster record's stored wire type. */
135
- export declare const RosterWeeksType: DictType<DateTimeType, StructType<{
136
- readonly status: VariantType<{
137
- readonly draft: NullType;
138
- readonly published: StructType<{
139
- readonly at: DateTimeType;
140
- }>;
141
- }>;
142
- readonly assignments: DictType<StringType, StructType<{
143
- readonly slot: StructType<{
144
- readonly day: IntegerType;
145
- readonly group: StringType;
146
- readonly shift: StringType;
147
- }>;
148
- readonly who: VariantType<{
149
- readonly person: StringType;
150
- readonly request: StringType;
151
- }>;
152
- readonly position: StringType;
153
- readonly activity: OptionType<StringType>;
154
- readonly offset: FloatType;
155
- readonly overtime: FloatType;
156
- readonly agreed: OptionType<BooleanType>;
157
- }>>;
158
- readonly requirements: DictType<StructType<{
159
- readonly day: IntegerType;
160
- readonly group: StringType;
161
- readonly shift: StringType;
162
- }>, StructType<{
163
- readonly positions: IntegerType;
164
- readonly hours: DictType<StringType, FloatType>;
165
- }>>;
166
- readonly dismissed: SetType<StringType>;
167
- }>>;
168
- export type RosterWeeksType = typeof RosterWeeksType;
147
+ /** Type representing {@link RosterWeekTypeFor}. */
148
+ export type RosterWeekTypeFor<R extends EastType> = ReturnType<typeof RosterWeekTypeFor<R>>;
169
149
  /**
170
- * A skill within a group, or a duty available to every group.
171
- * @remarks Keys are unique across all skills and duties.
172
- * @property key - Stable identifier
150
+ * One row of an activities record, keyed by the activity's key: a skill of one
151
+ * group, or a duty of none, which every group may assign (#1342).
152
+ * @remarks `Roster.activities` reads a record of these, or of the app's own rows through its accessors.
173
153
  * @property label - Display name
174
154
  * @property code - Short code on assignment chips
155
+ * @property group - The group whose skill it is; none, a duty every group shares
156
+ */
157
+ export declare const RosterActivityType: StructType<{
158
+ readonly label: StringType;
159
+ readonly code: StringType;
160
+ readonly group: OptionType<StringType>;
161
+ }>;
162
+ export type RosterActivityType = typeof RosterActivityType;
163
+ /**
164
+ * An activity resolved from the author's keyed activities: a skill within a
165
+ * group, or a duty available to every group.
166
+ * @remarks Keys are unique across all skills and duties: they are the activities record's keys.
167
+ * @property key - Stable identifier: its key in the activities record
168
+ * @property label - Display name
169
+ * @property code - Short code on assignment chips
170
+ * @property group - The group whose skill it is; none, a duty
175
171
  */
176
172
  export declare const RosterSkillType: StructType<{
177
173
  readonly key: StringType;
178
174
  readonly label: StringType;
179
175
  readonly code: StringType;
176
+ readonly group: OptionType<StringType>;
180
177
  }>;
181
178
  export type RosterSkillType = typeof RosterSkillType;
182
179
  /**
183
- * A group of people and the skills its work requires.
180
+ * A group of people. Its skills are the activities of that group.
184
181
  * @remarks The array order controls the grid and library order.
185
182
  * @property key - Stable identifier
186
183
  * @property label - Display name
187
- * @property skills - Skills in display order
188
184
  */
189
185
  export declare const RosterGroupType: StructType<{
190
186
  readonly key: StringType;
191
187
  readonly label: StringType;
192
- readonly skills: ArrayType<StructType<{
193
- readonly key: StringType;
194
- readonly label: StringType;
195
- readonly code: StringType;
196
- }>>;
197
188
  }>;
198
189
  export type RosterGroupType = typeof RosterGroupType;
199
190
  /**
200
- * A recurring shift's time and nominal hours.
201
- * @remarks An end past midnight belongs to the following day; the assignment still belongs to its start day.
191
+ * A recurring shift's start and nominal hours.
192
+ * @remarks An end past midnight belongs to the following day; a duty still belongs to its shift's start day.
202
193
  * @property key - Stable identifier
203
194
  * @property label - Display name
204
195
  * @property code - Short code in the week layout
205
196
  * @property start - Start time in UTC, shared with Schedule
206
- * @property hours - Nominal shift duration
197
+ * @property hours - Nominal shift duration: what a new duty runs, and a skill holder's capacity
207
198
  */
208
199
  export declare const RosterShiftType: StructType<{
209
200
  readonly key: StringType;
@@ -234,7 +225,7 @@ export type RosterPositionType = typeof RosterPositionType;
234
225
  /**
235
226
  * An agency from which positions may be requested.
236
227
  * @remarks The first agency supplies the suggested open-position fix.
237
- * @property key - Stable identifier
228
+ * @property key - Stable identifier: its key in the `agencies` resource kind
238
229
  * @property name - Display name
239
230
  */
240
231
  export declare const RosterAgencyType: StructType<{
@@ -243,8 +234,8 @@ export declare const RosterAgencyType: StructType<{
243
234
  }>;
244
235
  export type RosterAgencyType = typeof RosterAgencyType;
245
236
  /**
246
- * A person resolved from the author's keyed staff data.
247
- * @remarks Roster reads staff; all edits go to the weeks record.
237
+ * A person resolved from the app's staff rows (the `people` resource kind).
238
+ * @remarks Roster reads staff; it never writes them.
248
239
  * @property key - Original staff key
249
240
  * @property name - Display name
250
241
  * @property group - Home group
@@ -272,48 +263,28 @@ export type RosterPersonType = typeof RosterPersonType;
272
263
  /**
273
264
  * Built-in checks enabled for the roster.
274
265
  * @remarks Rest reads this week only; double booking is always reported.
275
- * @property rest - Minimum hours between shifts; zero disables the rest check
266
+ * @property rest - Minimum hours between duties; zero disables the rest check
276
267
  * @property lead - Check staffed slots for a lead
277
268
  * @property trainer - Check trainees have a trainer
278
269
  * @property skill - Check activities against held skills
279
- * @property agree - Report unagreed changed hours
280
270
  */
281
271
  export declare const RosterRulesType: StructType<{
282
272
  readonly rest: FloatType;
283
273
  readonly lead: BooleanType;
284
274
  readonly trainer: BooleanType;
285
275
  readonly skill: BooleanType;
286
- readonly agree: BooleanType;
287
276
  }>;
288
277
  export type RosterRulesType = typeof RosterRulesType;
289
- /**
290
- * Optional costing configuration.
291
- * @remarks Omitting costs hides monetary readouts; it does not affect staffing checks.
292
- * @property currency - Currency identifier for the shared formatter
293
- * @property rates - Permanent, overtime and agency hourly rates
294
- * @property budget - Daily budget, or none
295
- */
296
- export declare const RosterCostsType: StructType<{
297
- readonly currency: StringType;
298
- readonly rates: StructType<{
299
- readonly permanent: FloatType;
300
- readonly overtime: FloatType;
301
- readonly agency: FloatType;
302
- }>;
303
- readonly budget: OptionType<FloatType>;
304
- }>;
305
- export type RosterCostsType = typeof RosterCostsType;
306
278
  /**
307
279
  * Complete reference data used by coverage and checks.
308
- * @remarks Visibility filters never remove people from this context.
280
+ * @remarks Visibility filters never remove people or activities from this context.
309
281
  * @property people - All resolved staff by original key
310
- * @property groups - Groups and their skills
311
- * @property duties - Activities available to every group
282
+ * @property groups - Groups
283
+ * @property activities - Every activity: each group's skills, and the duties of no group
312
284
  * @property shifts - Shift definitions
313
285
  * @property positions - Position definitions
314
286
  * @property agencies - Agencies available for gap fixes
315
287
  * @property rules - Enabled rules
316
- * @property costs - Optional monetary configuration
317
288
  */
318
289
  export declare const RosterContextType: StructType<{
319
290
  readonly people: DictType<StringType, StructType<{
@@ -331,16 +302,12 @@ export declare const RosterContextType: StructType<{
331
302
  readonly groups: ArrayType<StructType<{
332
303
  readonly key: StringType;
333
304
  readonly label: StringType;
334
- readonly skills: ArrayType<StructType<{
335
- readonly key: StringType;
336
- readonly label: StringType;
337
- readonly code: StringType;
338
- }>>;
339
305
  }>>;
340
- readonly duties: ArrayType<StructType<{
306
+ readonly activities: ArrayType<StructType<{
341
307
  readonly key: StringType;
342
308
  readonly label: StringType;
343
309
  readonly code: StringType;
310
+ readonly group: OptionType<StringType>;
344
311
  }>>;
345
312
  readonly shifts: ArrayType<StructType<{
346
313
  readonly key: StringType;
@@ -367,17 +334,7 @@ export declare const RosterContextType: StructType<{
367
334
  readonly lead: BooleanType;
368
335
  readonly trainer: BooleanType;
369
336
  readonly skill: BooleanType;
370
- readonly agree: BooleanType;
371
337
  }>;
372
- readonly costs: OptionType<StructType<{
373
- readonly currency: StringType;
374
- readonly rates: StructType<{
375
- readonly permanent: FloatType;
376
- readonly overtime: FloatType;
377
- readonly agency: FloatType;
378
- }>;
379
- readonly budget: OptionType<FloatType>;
380
- }>>;
381
338
  }>;
382
339
  export type RosterContextType = typeof RosterContextType;
383
340
  /**
@@ -388,7 +345,7 @@ export type RosterContextType = typeof RosterContextType;
388
345
  * @property holders - Number of people holding the skill, or none for a duty
389
346
  * @property capacity - Nominal hours available from holders, or none for a duty
390
347
  * @property gap - Positive shortfall in skill capacity
391
- * @property assigned - Hours explicitly assigned to this activity
348
+ * @property assigned - Hours of the duties assigned to this activity
392
349
  */
393
350
  export declare const RosterCoverageLineType: StructType<{
394
351
  readonly skill: StringType;
@@ -400,15 +357,15 @@ export declare const RosterCoverageLineType: StructType<{
400
357
  }>;
401
358
  export type RosterCoverageLineType = typeof RosterCoverageLineType;
402
359
  /**
403
- * Staffing, work and costs for a complete slot.
404
- * @remarks Requests fill positions and contribute requested hours, but never count as named people or skilled holders.
360
+ * Staffing, work and pay for a complete slot.
361
+ * @remarks Requests fill positions and contribute their hours, but never count as named people or skilled holders.
405
362
  * @property positions - Required positions
406
363
  * @property filled - Assignments including requests
407
364
  * @property open - Unfilled positions, at least zero
408
365
  * @property people - Named people assigned
409
- * @property hours - Permanent, agency, overtime, requested, needed and total rostered hours
366
+ * @property hours - Permanent, agency, requested, needed and total rostered hours: each duty's hours
410
367
  * @property lines - Required skills in group order, then duties
411
- * @property cost - Total cost, zero when costs are absent
368
+ * @property cost - The slot's pay: its duties' costs summed over every code; zero without `pay`
412
369
  * @property lead - A named person holds a lead position
413
370
  * @property trainer - A trainer is assigned
414
371
  */
@@ -420,7 +377,6 @@ export declare const RosterCoverageType: StructType<{
420
377
  readonly hours: StructType<{
421
378
  readonly permanent: FloatType;
422
379
  readonly agency: FloatType;
423
- readonly overtime: FloatType;
424
380
  readonly requested: FloatType;
425
381
  readonly needed: FloatType;
426
382
  readonly rostered: FloatType;
@@ -439,42 +395,51 @@ export declare const RosterCoverageType: StructType<{
439
395
  }>;
440
396
  export type RosterCoverageType = typeof RosterCoverageType;
441
397
  /**
442
- * An externally computed staffing proposal.
443
- * @remarks Acceptance creates an assignment; rejection stores this key in the week's dismissed set.
444
- * @property key - Proposal identifier
445
- * @property week - Week's first day
446
- * @property slot - Suggested destination
398
+ * A suggested placement, as the Roster reads it from the app's rows
399
+ * (`Roster.proposals`).
400
+ * @remarks Acceptance creates a duty; rejection keeps this key in the week's dismissed set.
401
+ * @property key - Its row's key
402
+ * @property day - The day it suggests, a UTC midnight
403
+ * @property group - The group it suggests
404
+ * @property shift - The shift it suggests
447
405
  * @property person - Original staff key
448
406
  * @property reason - Explanation presented to the planner
449
407
  */
450
408
  export declare const RosterProposalType: StructType<{
451
409
  readonly key: StringType;
452
- readonly week: DateTimeType;
453
- readonly slot: StructType<{
454
- readonly day: IntegerType;
455
- readonly group: StringType;
456
- readonly shift: StringType;
457
- }>;
410
+ readonly day: DateTimeType;
411
+ readonly group: StringType;
412
+ readonly shift: StringType;
458
413
  readonly person: StringType;
459
414
  readonly reason: StringType;
460
415
  }>;
461
416
  export type RosterProposalType = typeof RosterProposalType;
417
+ /**
418
+ * What a Find fix looks for (#1334): what the app's fit is asked who fits.
419
+ * @property leads - Someone in a lead position
420
+ * @property trainers - Someone who trains others
421
+ * @property skill - Someone who holds this skill, by its activity key
422
+ */
423
+ export declare const RosterNeedType: VariantType<{
424
+ readonly leads: NullType;
425
+ readonly trainers: NullType;
426
+ readonly skill: StringType;
427
+ }>;
428
+ export type RosterNeedType = typeof RosterNeedType;
462
429
  /**
463
430
  * A corrective action offered for an issue.
464
- * @remarks Every data-changing action is one gesture of the shared edit session.
431
+ * @remarks Every data-changing action is one gesture of the shared edit history. A find edits nothing: it asks the app's fit who fits its need on the issue's slot, and is offered only when the Roster has a `fit` (#1334).
465
432
  * @property request - Request someone from this agency
466
- * @property agree - Mark the assignment agreed
467
433
  * @property accept - Accept this proposal key
468
- * @property move - Move the assignment to this shift
469
- * @property start - Set this start offset in hours
470
- * @property find - Show leads, trainers or holders of a skill in the library
434
+ * @property move - Move the duty to this shift
435
+ * @property start - Move the duty to start at this later time, its length kept
436
+ * @property find - Find who fits this need on the issue's slot: the app's fit's answer, in the People tab
471
437
  */
472
438
  export declare const RosterFixType: VariantType<{
473
439
  readonly request: StringType;
474
- readonly agree: NullType;
475
440
  readonly accept: StringType;
476
441
  readonly move: StringType;
477
- readonly start: FloatType;
442
+ readonly start: DateTimeType;
478
443
  readonly find: VariantType<{
479
444
  readonly leads: NullType;
480
445
  readonly trainers: NullType;
@@ -485,12 +450,12 @@ export type RosterFixType = typeof RosterFixType;
485
450
  /**
486
451
  * One explanation or warning about the drafted roster.
487
452
  * @remarks Warnings do not introduce a separate validation barrier to Save or Publish.
488
- * @property kind - Breach, gap, agreement or proposal
453
+ * @property kind - Breach, gap or proposal
489
454
  * @property tone - Shared semantic tone
490
455
  * @property title - Short explanation
491
456
  * @property detail - Supporting explanation
492
457
  * @property slot - Affected slot, or none
493
- * @property assignment - Affected assignment key, or none
458
+ * @property assignment - Affected duty key, or none
494
459
  * @property flag - Short text on a chip, or none
495
460
  * @property fix - Offered action, or none
496
461
  */
@@ -498,7 +463,6 @@ export declare const RosterIssueType: StructType<{
498
463
  readonly kind: VariantType<{
499
464
  readonly breach: NullType;
500
465
  readonly gap: NullType;
501
- readonly agree: NullType;
502
466
  readonly proposal: NullType;
503
467
  }>;
504
468
  readonly tone: VariantType<{
@@ -519,10 +483,9 @@ export declare const RosterIssueType: StructType<{
519
483
  readonly flag: OptionType<StringType>;
520
484
  readonly fix: OptionType<VariantType<{
521
485
  readonly request: StringType;
522
- readonly agree: NullType;
523
486
  readonly accept: StringType;
524
487
  readonly move: StringType;
525
- readonly start: FloatType;
488
+ readonly start: DateTimeType;
526
489
  readonly find: VariantType<{
527
490
  readonly leads: NullType;
528
491
  readonly trainers: NullType;
@@ -531,22 +494,115 @@ export declare const RosterIssueType: StructType<{
531
494
  }>>;
532
495
  }>;
533
496
  export type RosterIssueType = typeof RosterIssueType;
497
+ /**
498
+ * The app's pay's answer (§5.6): each duty's cost, by its key, in the app's
499
+ * own pay codes.
500
+ * @remarks The Roster knows no pay code in advance: it totals what the app gives, by code and in all.
501
+ */
502
+ export declare const RosterPayType: DictType<StringType, DictType<StringType, FloatType>>;
503
+ export type RosterPayType = typeof RosterPayType;
504
+ /**
505
+ * One question to the app's pay (§5.6): one person's duties for the week, or
506
+ * one agency's requests.
507
+ *
508
+ * @typeParam R - The app's duty row type
509
+ * @param row - The app's duty row type
510
+ * @returns The request type over it
511
+ * @remarks `who` is the person or the agency; `duties` its duties, by key; `context` the complete staff and configuration.
512
+ */
513
+ export declare function RosterPayRequestTypeFor<R extends EastType>(row: R): StructType<{
514
+ readonly who: VariantType<{
515
+ readonly person: StringType;
516
+ readonly request: StringType;
517
+ }>;
518
+ readonly start: DateTimeType;
519
+ readonly duties: DictType<StringType, StructType<{
520
+ readonly slot: StructType<{
521
+ readonly day: IntegerType;
522
+ readonly group: StringType;
523
+ readonly shift: StringType;
524
+ }>;
525
+ readonly who: VariantType<{
526
+ readonly person: StringType;
527
+ readonly request: StringType;
528
+ }>;
529
+ readonly position: StringType;
530
+ readonly activity: OptionType<StringType>;
531
+ readonly start: DateTimeType;
532
+ readonly end: DateTimeType;
533
+ readonly hours: FloatType;
534
+ readonly row: R;
535
+ }>>;
536
+ readonly context: StructType<{
537
+ readonly people: DictType<StringType, StructType<{
538
+ readonly key: StringType;
539
+ readonly name: StringType;
540
+ readonly group: StringType;
541
+ readonly position: StringType;
542
+ readonly skills: SetType<StringType>;
543
+ readonly contract: FloatType;
544
+ readonly agency: BooleanType;
545
+ readonly trainer: BooleanType;
546
+ readonly trainee: BooleanType;
547
+ readonly usual: OptionType<StringType>;
548
+ }>>;
549
+ readonly groups: ArrayType<StructType<{
550
+ readonly key: StringType;
551
+ readonly label: StringType;
552
+ }>>;
553
+ readonly activities: ArrayType<StructType<{
554
+ readonly key: StringType;
555
+ readonly label: StringType;
556
+ readonly code: StringType;
557
+ readonly group: OptionType<StringType>;
558
+ }>>;
559
+ readonly shifts: ArrayType<StructType<{
560
+ readonly key: StringType;
561
+ readonly label: StringType;
562
+ readonly code: StringType;
563
+ readonly start: StructType<{
564
+ readonly hour: IntegerType;
565
+ readonly minute: IntegerType;
566
+ }>;
567
+ readonly hours: FloatType;
568
+ }>>;
569
+ readonly positions: ArrayType<StructType<{
570
+ readonly key: StringType;
571
+ readonly label: StringType;
572
+ readonly code: StringType;
573
+ readonly lead: BooleanType;
574
+ }>>;
575
+ readonly agencies: ArrayType<StructType<{
576
+ readonly key: StringType;
577
+ readonly name: StringType;
578
+ }>>;
579
+ readonly rules: StructType<{
580
+ readonly rest: FloatType;
581
+ readonly lead: BooleanType;
582
+ readonly trainer: BooleanType;
583
+ readonly skill: BooleanType;
584
+ }>;
585
+ }>;
586
+ }>;
587
+ /** Type representing {@link RosterPayRequestTypeFor}. */
588
+ export type RosterPayRequestTypeFor<R extends EastType> = ReturnType<typeof RosterPayRequestTypeFor<R>>;
534
589
  /**
535
590
  * Input to an application's additional roster checks.
536
- * @remarks The built-in coverage has already been calculated for the same draft.
537
- * @property start - Week's first day
538
- * @property week - Drafted week
539
- * @property context - Complete reference data
540
- * @property coverage - Coverage for every configured slot
591
+ *
592
+ * @typeParam R - The app's duty row type
593
+ * @param row - The app's duty row type
594
+ * @returns The check's context over it
595
+ * @remarks The built-in coverage has already been calculated for the same draft, and so have the pay's costs: `start` the week's first day, `week` the drafted week, `context` the complete reference data, `coverage` every configured slot's, `pay` each duty's costs by code.
541
596
  */
542
- export declare const RosterCheckContextType: StructType<{
597
+ export declare function RosterCheckContextTypeFor<R extends EastType>(row: R): StructType<{
543
598
  readonly start: DateTimeType;
544
599
  readonly week: StructType<{
545
600
  readonly status: VariantType<{
546
601
  readonly draft: NullType;
547
602
  readonly published: StructType<{
548
- readonly at: DateTimeType;
603
+ readonly at: OptionType<DateTimeType>;
549
604
  }>;
605
+ readonly other: StringType;
550
606
  }>;
551
607
  readonly assignments: DictType<StringType, StructType<{
552
608
  readonly slot: StructType<{
@@ -560,9 +616,10 @@ export declare const RosterCheckContextType: StructType<{
560
616
  }>;
561
617
  readonly position: StringType;
562
618
  readonly activity: OptionType<StringType>;
563
- readonly offset: FloatType;
564
- readonly overtime: FloatType;
565
- readonly agreed: OptionType<BooleanType>;
619
+ readonly start: DateTimeType;
620
+ readonly end: DateTimeType;
621
+ readonly hours: FloatType;
622
+ readonly row: R;
566
623
  }>>;
567
624
  readonly requirements: DictType<StructType<{
568
625
  readonly day: IntegerType;
@@ -590,16 +647,12 @@ export declare const RosterCheckContextType: StructType<{
590
647
  readonly groups: ArrayType<StructType<{
591
648
  readonly key: StringType;
592
649
  readonly label: StringType;
593
- readonly skills: ArrayType<StructType<{
594
- readonly key: StringType;
595
- readonly label: StringType;
596
- readonly code: StringType;
597
- }>>;
598
650
  }>>;
599
- readonly duties: ArrayType<StructType<{
651
+ readonly activities: ArrayType<StructType<{
600
652
  readonly key: StringType;
601
653
  readonly label: StringType;
602
654
  readonly code: StringType;
655
+ readonly group: OptionType<StringType>;
603
656
  }>>;
604
657
  readonly shifts: ArrayType<StructType<{
605
658
  readonly key: StringType;
@@ -626,17 +679,186 @@ export declare const RosterCheckContextType: StructType<{
626
679
  readonly lead: BooleanType;
627
680
  readonly trainer: BooleanType;
628
681
  readonly skill: BooleanType;
629
- readonly agree: BooleanType;
630
682
  }>;
631
- readonly costs: OptionType<StructType<{
632
- readonly currency: StringType;
633
- readonly rates: StructType<{
634
- readonly permanent: FloatType;
635
- readonly overtime: FloatType;
636
- readonly agency: FloatType;
683
+ }>;
684
+ readonly coverage: DictType<StructType<{
685
+ readonly day: IntegerType;
686
+ readonly group: StringType;
687
+ readonly shift: StringType;
688
+ }>, StructType<{
689
+ readonly positions: IntegerType;
690
+ readonly filled: IntegerType;
691
+ readonly open: IntegerType;
692
+ readonly people: IntegerType;
693
+ readonly hours: StructType<{
694
+ readonly permanent: FloatType;
695
+ readonly agency: FloatType;
696
+ readonly requested: FloatType;
697
+ readonly needed: FloatType;
698
+ readonly rostered: FloatType;
699
+ }>;
700
+ readonly lines: ArrayType<StructType<{
701
+ readonly skill: StringType;
702
+ readonly needed: FloatType;
703
+ readonly holders: OptionType<IntegerType>;
704
+ readonly capacity: OptionType<FloatType>;
705
+ readonly gap: FloatType;
706
+ readonly assigned: FloatType;
707
+ }>>;
708
+ readonly cost: FloatType;
709
+ readonly lead: BooleanType;
710
+ readonly trainer: BooleanType;
711
+ }>>;
712
+ readonly pay: DictType<StringType, DictType<StringType, FloatType>>;
713
+ }>;
714
+ /** Type representing {@link RosterCheckContextTypeFor}. */
715
+ export type RosterCheckContextTypeFor<R extends EastType> = ReturnType<typeof RosterCheckContextTypeFor<R>>;
716
+ /** Why someone does not fit a need: Schedule's, shared with the Allocation (#1334). */
717
+ export declare const RosterRefusalType: StructType<{
718
+ readonly group: StringType;
719
+ readonly reason: StringType;
720
+ readonly measure: VariantType<{
721
+ readonly none: NullType;
722
+ readonly amount: StructType<{
723
+ readonly lead: StringType;
724
+ readonly value: FloatType;
725
+ }>;
726
+ readonly day: StructType<{
727
+ readonly lead: StringType;
728
+ readonly at: DateTimeType;
729
+ }>;
730
+ }>;
731
+ }>;
732
+ export type RosterRefusalType = typeof RosterRefusalType;
733
+ /** One verdict of the app's fit: Schedule's, shared with the Allocation — it fits with a score, a reason and a warning, or it is refused (#1334). */
734
+ export declare const RosterFitType: VariantType<{
735
+ readonly fits: StructType<{
736
+ readonly score: FloatType;
737
+ readonly why: StringType;
738
+ readonly warn: OptionType<StringType>;
739
+ }>;
740
+ readonly refused: StructType<{
741
+ readonly group: StringType;
742
+ readonly reason: StringType;
743
+ readonly measure: VariantType<{
744
+ readonly none: NullType;
745
+ readonly amount: StructType<{
746
+ readonly lead: StringType;
747
+ readonly value: FloatType;
748
+ }>;
749
+ readonly day: StructType<{
750
+ readonly lead: StringType;
751
+ readonly at: DateTimeType;
637
752
  }>;
638
- readonly budget: OptionType<FloatType>;
753
+ }>;
754
+ }>;
755
+ }>;
756
+ export type RosterFitType = typeof RosterFitType;
757
+ /**
758
+ * One question to the app's fit (#1334): who fits a Find fix's need on its
759
+ * issue's slot, over the drafted week.
760
+ *
761
+ * @typeParam R - The app's duty row type
762
+ * @param row - The app's duty row type
763
+ * @returns The request type over it
764
+ * @remarks `need` what is looked for, `slot` the issue's, `start` the week's first day, `week` the drafted week, `context` the complete staff and configuration — every person, whatever the rail shows — and `coverage` the drafted week's.
765
+ */
766
+ export declare function RosterFitRequestTypeFor<R extends EastType>(row: R): StructType<{
767
+ readonly need: VariantType<{
768
+ readonly leads: NullType;
769
+ readonly trainers: NullType;
770
+ readonly skill: StringType;
771
+ }>;
772
+ readonly slot: StructType<{
773
+ readonly day: IntegerType;
774
+ readonly group: StringType;
775
+ readonly shift: StringType;
776
+ }>;
777
+ readonly start: DateTimeType;
778
+ readonly week: StructType<{
779
+ readonly status: VariantType<{
780
+ readonly draft: NullType;
781
+ readonly published: StructType<{
782
+ readonly at: OptionType<DateTimeType>;
783
+ }>;
784
+ readonly other: StringType;
785
+ }>;
786
+ readonly assignments: DictType<StringType, StructType<{
787
+ readonly slot: StructType<{
788
+ readonly day: IntegerType;
789
+ readonly group: StringType;
790
+ readonly shift: StringType;
791
+ }>;
792
+ readonly who: VariantType<{
793
+ readonly person: StringType;
794
+ readonly request: StringType;
795
+ }>;
796
+ readonly position: StringType;
797
+ readonly activity: OptionType<StringType>;
798
+ readonly start: DateTimeType;
799
+ readonly end: DateTimeType;
800
+ readonly hours: FloatType;
801
+ readonly row: R;
802
+ }>>;
803
+ readonly requirements: DictType<StructType<{
804
+ readonly day: IntegerType;
805
+ readonly group: StringType;
806
+ readonly shift: StringType;
807
+ }>, StructType<{
808
+ readonly positions: IntegerType;
809
+ readonly hours: DictType<StringType, FloatType>;
810
+ }>>;
811
+ readonly dismissed: SetType<StringType>;
812
+ }>;
813
+ readonly context: StructType<{
814
+ readonly people: DictType<StringType, StructType<{
815
+ readonly key: StringType;
816
+ readonly name: StringType;
817
+ readonly group: StringType;
818
+ readonly position: StringType;
819
+ readonly skills: SetType<StringType>;
820
+ readonly contract: FloatType;
821
+ readonly agency: BooleanType;
822
+ readonly trainer: BooleanType;
823
+ readonly trainee: BooleanType;
824
+ readonly usual: OptionType<StringType>;
825
+ }>>;
826
+ readonly groups: ArrayType<StructType<{
827
+ readonly key: StringType;
828
+ readonly label: StringType;
829
+ }>>;
830
+ readonly activities: ArrayType<StructType<{
831
+ readonly key: StringType;
832
+ readonly label: StringType;
833
+ readonly code: StringType;
834
+ readonly group: OptionType<StringType>;
835
+ }>>;
836
+ readonly shifts: ArrayType<StructType<{
837
+ readonly key: StringType;
838
+ readonly label: StringType;
839
+ readonly code: StringType;
840
+ readonly start: StructType<{
841
+ readonly hour: IntegerType;
842
+ readonly minute: IntegerType;
843
+ }>;
844
+ readonly hours: FloatType;
845
+ }>>;
846
+ readonly positions: ArrayType<StructType<{
847
+ readonly key: StringType;
848
+ readonly label: StringType;
849
+ readonly code: StringType;
850
+ readonly lead: BooleanType;
851
+ }>>;
852
+ readonly agencies: ArrayType<StructType<{
853
+ readonly key: StringType;
854
+ readonly name: StringType;
639
855
  }>>;
856
+ readonly rules: StructType<{
857
+ readonly rest: FloatType;
858
+ readonly lead: BooleanType;
859
+ readonly trainer: BooleanType;
860
+ readonly skill: BooleanType;
861
+ }>;
640
862
  }>;
641
863
  readonly coverage: DictType<StructType<{
642
864
  readonly day: IntegerType;
@@ -650,7 +872,6 @@ export declare const RosterCheckContextType: StructType<{
650
872
  readonly hours: StructType<{
651
873
  readonly permanent: FloatType;
652
874
  readonly agency: FloatType;
653
- readonly overtime: FloatType;
654
875
  readonly requested: FloatType;
655
876
  readonly needed: FloatType;
656
877
  readonly rostered: FloatType;
@@ -668,5 +889,429 @@ export declare const RosterCheckContextType: StructType<{
668
889
  readonly trainer: BooleanType;
669
890
  }>>;
670
891
  }>;
671
- export type RosterCheckContextType = typeof RosterCheckContextType;
892
+ /** Type representing {@link RosterFitRequestTypeFor}. */
893
+ export type RosterFitRequestTypeFor<R extends EastType> = ReturnType<typeof RosterFitRequestTypeFor<R>>;
894
+ /**
895
+ * Where a duty sits, as the Roster reads it from its roles (§5.5, rules 1 and
896
+ * 8): placed in the week, another week's, or a duty the Roster cannot place —
897
+ * one whose shift or group isn't configured, or that names no one — which it
898
+ * lists in Issues and keeps as stored.
899
+ *
900
+ * @typeParam R - The app's duty row type
901
+ * @param row - The app's duty row type
902
+ * @returns The placement type over it
903
+ * @remarks `placed` the duty as the week holds it; `elsewhere` a duty of another week; `unplaced` the issue that lists it.
904
+ */
905
+ export declare function RosterPlacementTypeFor<R extends EastType>(row: R): VariantType<{
906
+ readonly placed: StructType<{
907
+ readonly slot: StructType<{
908
+ readonly day: IntegerType;
909
+ readonly group: StringType;
910
+ readonly shift: StringType;
911
+ }>;
912
+ readonly who: VariantType<{
913
+ readonly person: StringType;
914
+ readonly request: StringType;
915
+ }>;
916
+ readonly position: StringType;
917
+ readonly activity: OptionType<StringType>;
918
+ readonly start: DateTimeType;
919
+ readonly end: DateTimeType;
920
+ readonly hours: FloatType;
921
+ readonly row: R;
922
+ }>;
923
+ readonly elsewhere: NullType;
924
+ readonly unplaced: StructType<{
925
+ readonly kind: VariantType<{
926
+ readonly breach: NullType;
927
+ readonly gap: NullType;
928
+ readonly proposal: NullType;
929
+ }>;
930
+ readonly tone: VariantType<{
931
+ readonly success: NullType;
932
+ readonly warning: NullType;
933
+ readonly danger: NullType;
934
+ readonly info: NullType;
935
+ readonly neutral: NullType;
936
+ }>;
937
+ readonly title: StringType;
938
+ readonly detail: StringType;
939
+ readonly slot: OptionType<StructType<{
940
+ readonly day: IntegerType;
941
+ readonly group: StringType;
942
+ readonly shift: StringType;
943
+ }>>;
944
+ readonly assignment: OptionType<StringType>;
945
+ readonly flag: OptionType<StringType>;
946
+ readonly fix: OptionType<VariantType<{
947
+ readonly request: StringType;
948
+ readonly accept: StringType;
949
+ readonly move: StringType;
950
+ readonly start: DateTimeType;
951
+ readonly find: VariantType<{
952
+ readonly leads: NullType;
953
+ readonly trainers: NullType;
954
+ readonly skill: StringType;
955
+ }>;
956
+ }>>;
957
+ }>;
958
+ }>;
959
+ /** Type representing {@link RosterPlacementTypeFor}. */
960
+ export type RosterPlacementTypeFor<R extends EastType> = ReturnType<typeof RosterPlacementTypeFor<R>>;
961
+ /**
962
+ * A target's roles, as the Roster reads them from the app's row
963
+ * (`Roster.targets`): the slot it is for, and what it asks of it.
964
+ * @property day - The day, a UTC midnight
965
+ * @property group - The group's key
966
+ * @property shift - The shift's key
967
+ * @property positions - Positions to fill
968
+ * @property hours - Hours required, by activity key
969
+ */
970
+ export declare const RosterTargetRolesType: StructType<{
971
+ readonly day: DateTimeType;
972
+ readonly group: StringType;
973
+ readonly shift: StringType;
974
+ readonly positions: IntegerType;
975
+ readonly hours: DictType<StringType, FloatType>;
976
+ }>;
977
+ export type RosterTargetRolesType = typeof RosterTargetRolesType;
978
+ /**
979
+ * One stored target, as the targets' `rows` gives it: its roles, read in the
980
+ * pass that reads the row, and the row as bytes at the row type.
981
+ * @property roles - Its roles
982
+ * @property row - Its row, as bytes at the row type
983
+ */
984
+ export declare const RosterTargetEntryType: StructType<{
985
+ readonly roles: StructType<{
986
+ readonly day: DateTimeType;
987
+ readonly group: StringType;
988
+ readonly shift: StringType;
989
+ readonly positions: IntegerType;
990
+ readonly hours: DictType<StringType, FloatType>;
991
+ }>;
992
+ readonly row: BlobType;
993
+ }>;
994
+ export type RosterTargetEntryType = typeof RosterTargetEntryType;
995
+ /**
996
+ * The app's targets, closed (`Roster.targets`): its record of targets, a row
997
+ * per slot, read and written through its roles over bytes, so the Roster's
998
+ * payload is one type whatever the record holds.
999
+ * @property editing - The shared session over the record: whole rows by their key, its patch door
1000
+ * @property entries - The record read by key, when it is given `entries`; `none` for a record read whole
1001
+ * @property rows - The targets whose day falls in `[from, to)`, by key, each its roles and its row; `none` while a read is in flight
1002
+ * @property read - A drafted row's roles, from its bytes
1003
+ * @property write - The row with its roles written, and every other field as it was
1004
+ * @property create - A new row from the roles, every other field its type's default
1005
+ * @property history - The record's commits, newest first
1006
+ * @property inspector - The app's own form for one target, over its row as bytes; `none`, the Roster's
1007
+ * @property rowType - The row type
1008
+ */
1009
+ export declare const RosterTargetsKindType: StructType<{
1010
+ readonly editing: StructType<{
1011
+ sourceId: StringType;
1012
+ entryType: import("@elaraai/east").RecursiveType<VariantType<{
1013
+ readonly Never: NullType;
1014
+ readonly Null: NullType;
1015
+ readonly Boolean: NullType;
1016
+ readonly Integer: NullType;
1017
+ readonly Float: NullType;
1018
+ readonly String: NullType;
1019
+ readonly DateTime: NullType;
1020
+ readonly Blob: NullType;
1021
+ readonly Ref: import("@elaraai/east").RecursiveTypeMarker;
1022
+ readonly Array: import("@elaraai/east").RecursiveTypeMarker;
1023
+ readonly Set: import("@elaraai/east").RecursiveTypeMarker;
1024
+ readonly Dict: StructType<{
1025
+ readonly key: import("@elaraai/east").RecursiveTypeMarker;
1026
+ readonly value: import("@elaraai/east").RecursiveTypeMarker;
1027
+ }>;
1028
+ readonly Struct: ArrayType<StructType<{
1029
+ readonly name: StringType;
1030
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1031
+ }>>;
1032
+ readonly Variant: ArrayType<StructType<{
1033
+ readonly name: StringType;
1034
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1035
+ }>>;
1036
+ readonly Recursive: VariantType<{
1037
+ readonly ref: IntegerType;
1038
+ readonly wrapper: StructType<{
1039
+ readonly id: IntegerType;
1040
+ readonly inner: import("@elaraai/east").RecursiveTypeMarker;
1041
+ }>;
1042
+ }>;
1043
+ readonly Function: StructType<{
1044
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1045
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1046
+ }>;
1047
+ readonly AsyncFunction: StructType<{
1048
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1049
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1050
+ }>;
1051
+ readonly Vector: import("@elaraai/east").RecursiveTypeMarker;
1052
+ readonly Matrix: import("@elaraai/east").RecursiveTypeMarker;
1053
+ }>>;
1054
+ idField: OptionType<StringType>;
1055
+ draftType: import("@elaraai/east").RecursiveType<VariantType<{
1056
+ readonly Never: NullType;
1057
+ readonly Null: NullType;
1058
+ readonly Boolean: NullType;
1059
+ readonly Integer: NullType;
1060
+ readonly Float: NullType;
1061
+ readonly String: NullType;
1062
+ readonly DateTime: NullType;
1063
+ readonly Blob: NullType;
1064
+ readonly Ref: import("@elaraai/east").RecursiveTypeMarker;
1065
+ readonly Array: import("@elaraai/east").RecursiveTypeMarker;
1066
+ readonly Set: import("@elaraai/east").RecursiveTypeMarker;
1067
+ readonly Dict: StructType<{
1068
+ readonly key: import("@elaraai/east").RecursiveTypeMarker;
1069
+ readonly value: import("@elaraai/east").RecursiveTypeMarker;
1070
+ }>;
1071
+ readonly Struct: ArrayType<StructType<{
1072
+ readonly name: StringType;
1073
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1074
+ }>>;
1075
+ readonly Variant: ArrayType<StructType<{
1076
+ readonly name: StringType;
1077
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1078
+ }>>;
1079
+ readonly Recursive: VariantType<{
1080
+ readonly ref: IntegerType;
1081
+ readonly wrapper: StructType<{
1082
+ readonly id: IntegerType;
1083
+ readonly inner: import("@elaraai/east").RecursiveTypeMarker;
1084
+ }>;
1085
+ }>;
1086
+ readonly Function: StructType<{
1087
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1088
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1089
+ }>;
1090
+ readonly AsyncFunction: StructType<{
1091
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1092
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1093
+ }>;
1094
+ readonly Vector: import("@elaraai/east").RecursiveTypeMarker;
1095
+ readonly Matrix: import("@elaraai/east").RecursiveTypeMarker;
1096
+ }>>;
1097
+ children: OptionType<StringType>;
1098
+ keyType: OptionType<import("@elaraai/east").RecursiveType<VariantType<{
1099
+ readonly Never: NullType;
1100
+ readonly Null: NullType;
1101
+ readonly Boolean: NullType;
1102
+ readonly Integer: NullType;
1103
+ readonly Float: NullType;
1104
+ readonly String: NullType;
1105
+ readonly DateTime: NullType;
1106
+ readonly Blob: NullType;
1107
+ readonly Ref: import("@elaraai/east").RecursiveTypeMarker;
1108
+ readonly Array: import("@elaraai/east").RecursiveTypeMarker;
1109
+ readonly Set: import("@elaraai/east").RecursiveTypeMarker;
1110
+ readonly Dict: StructType<{
1111
+ readonly key: import("@elaraai/east").RecursiveTypeMarker;
1112
+ readonly value: import("@elaraai/east").RecursiveTypeMarker;
1113
+ }>;
1114
+ readonly Struct: ArrayType<StructType<{
1115
+ readonly name: StringType;
1116
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1117
+ }>>;
1118
+ readonly Variant: ArrayType<StructType<{
1119
+ readonly name: StringType;
1120
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1121
+ }>>;
1122
+ readonly Recursive: VariantType<{
1123
+ readonly ref: IntegerType;
1124
+ readonly wrapper: StructType<{
1125
+ readonly id: IntegerType;
1126
+ readonly inner: import("@elaraai/east").RecursiveTypeMarker;
1127
+ }>;
1128
+ }>;
1129
+ readonly Function: StructType<{
1130
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1131
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1132
+ }>;
1133
+ readonly AsyncFunction: StructType<{
1134
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1135
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1136
+ }>;
1137
+ readonly Vector: import("@elaraai/east").RecursiveTypeMarker;
1138
+ readonly Matrix: import("@elaraai/east").RecursiveTypeMarker;
1139
+ }>>>;
1140
+ snapshot: OptionType<BlobType>;
1141
+ readEntry: FunctionType<[StringType, IntegerType], OptionType<BlobType>>;
1142
+ onPatch: OptionType<FunctionType<[BlobType], NullType>>;
1143
+ onApply: OptionType<VariantType<{
1144
+ readonly sync: FunctionType<[BlobType], VariantType<{
1145
+ readonly applied: StructType<{
1146
+ readonly revision: OptionType<StringType>;
1147
+ }>;
1148
+ readonly rejected: ArrayType<StructType<{
1149
+ readonly entry: StringType;
1150
+ readonly row: OptionType<IntegerType>;
1151
+ readonly field: OptionType<StringType>;
1152
+ readonly message: StringType;
1153
+ }>>;
1154
+ readonly conflict: ArrayType<StructType<{
1155
+ readonly entry: StringType;
1156
+ readonly row: OptionType<IntegerType>;
1157
+ readonly field: OptionType<StringType>;
1158
+ readonly message: StringType;
1159
+ }>>;
1160
+ }>>;
1161
+ readonly async: import("@elaraai/east").AsyncFunctionType<[BlobType], VariantType<{
1162
+ readonly applied: StructType<{
1163
+ readonly revision: OptionType<StringType>;
1164
+ }>;
1165
+ readonly rejected: ArrayType<StructType<{
1166
+ readonly entry: StringType;
1167
+ readonly row: OptionType<IntegerType>;
1168
+ readonly field: OptionType<StringType>;
1169
+ readonly message: StringType;
1170
+ }>>;
1171
+ readonly conflict: ArrayType<StructType<{
1172
+ readonly entry: StringType;
1173
+ readonly row: OptionType<IntegerType>;
1174
+ readonly field: OptionType<StringType>;
1175
+ readonly message: StringType;
1176
+ }>>;
1177
+ }>>;
1178
+ }>>;
1179
+ mode: VariantType<{
1180
+ readonly batch: NullType;
1181
+ readonly auto: NullType;
1182
+ }>;
1183
+ }>;
1184
+ readonly entries: OptionType<StructType<{
1185
+ readonly revision: FunctionType<[], OptionType<StringType>>;
1186
+ readonly refresh: FunctionType<[OptionType<StringType>], NullType>;
1187
+ readonly entry: FunctionType<[StringType], OptionType<OptionType<BlobType>>>;
1188
+ readonly last: FunctionType<[], OptionType<OptionType<StringType>>>;
1189
+ }>>;
1190
+ readonly rows: FunctionType<[DateTimeType, DateTimeType], OptionType<DictType<StringType, StructType<{
1191
+ readonly roles: StructType<{
1192
+ readonly day: DateTimeType;
1193
+ readonly group: StringType;
1194
+ readonly shift: StringType;
1195
+ readonly positions: IntegerType;
1196
+ readonly hours: DictType<StringType, FloatType>;
1197
+ }>;
1198
+ readonly row: BlobType;
1199
+ }>>>>;
1200
+ readonly read: FunctionType<[BlobType], StructType<{
1201
+ readonly day: DateTimeType;
1202
+ readonly group: StringType;
1203
+ readonly shift: StringType;
1204
+ readonly positions: IntegerType;
1205
+ readonly hours: DictType<StringType, FloatType>;
1206
+ }>>;
1207
+ readonly write: FunctionType<[BlobType, StructType<{
1208
+ readonly day: DateTimeType;
1209
+ readonly group: StringType;
1210
+ readonly shift: StringType;
1211
+ readonly positions: IntegerType;
1212
+ readonly hours: DictType<StringType, FloatType>;
1213
+ }>], BlobType>;
1214
+ readonly create: FunctionType<[StructType<{
1215
+ readonly day: DateTimeType;
1216
+ readonly group: StringType;
1217
+ readonly shift: StringType;
1218
+ readonly positions: IntegerType;
1219
+ readonly hours: DictType<StringType, FloatType>;
1220
+ }>], BlobType>;
1221
+ readonly history: FunctionType<[], OptionType<ArrayType<StructType<{
1222
+ readonly hash: StringType;
1223
+ readonly parent: OptionType<StringType>;
1224
+ readonly state: StringType;
1225
+ readonly mutation: StringType;
1226
+ readonly actor: StringType;
1227
+ readonly at: DateTimeType;
1228
+ readonly delta: OptionType<StringType>;
1229
+ }>>>>;
1230
+ readonly inspector: OptionType<FunctionType<[BlobType, FunctionType<[BlobType], NullType>], import("@elaraai/east").RecursiveType<import("@elaraai/east-ui").UIComponentNode>>>;
1231
+ readonly rowType: import("@elaraai/east").RecursiveType<VariantType<{
1232
+ readonly Never: NullType;
1233
+ readonly Null: NullType;
1234
+ readonly Boolean: NullType;
1235
+ readonly Integer: NullType;
1236
+ readonly Float: NullType;
1237
+ readonly String: NullType;
1238
+ readonly DateTime: NullType;
1239
+ readonly Blob: NullType;
1240
+ readonly Ref: import("@elaraai/east").RecursiveTypeMarker;
1241
+ readonly Array: import("@elaraai/east").RecursiveTypeMarker;
1242
+ readonly Set: import("@elaraai/east").RecursiveTypeMarker;
1243
+ readonly Dict: StructType<{
1244
+ readonly key: import("@elaraai/east").RecursiveTypeMarker;
1245
+ readonly value: import("@elaraai/east").RecursiveTypeMarker;
1246
+ }>;
1247
+ readonly Struct: ArrayType<StructType<{
1248
+ readonly name: StringType;
1249
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1250
+ }>>;
1251
+ readonly Variant: ArrayType<StructType<{
1252
+ readonly name: StringType;
1253
+ readonly type: import("@elaraai/east").RecursiveTypeMarker;
1254
+ }>>;
1255
+ readonly Recursive: VariantType<{
1256
+ readonly ref: IntegerType;
1257
+ readonly wrapper: StructType<{
1258
+ readonly id: IntegerType;
1259
+ readonly inner: import("@elaraai/east").RecursiveTypeMarker;
1260
+ }>;
1261
+ }>;
1262
+ readonly Function: StructType<{
1263
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1264
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1265
+ }>;
1266
+ readonly AsyncFunction: StructType<{
1267
+ readonly inputs: ArrayType<import("@elaraai/east").RecursiveTypeMarker>;
1268
+ readonly output: import("@elaraai/east").RecursiveTypeMarker;
1269
+ }>;
1270
+ readonly Vector: import("@elaraai/east").RecursiveTypeMarker;
1271
+ readonly Matrix: import("@elaraai/east").RecursiveTypeMarker;
1272
+ }>>;
1273
+ }>;
1274
+ export type RosterTargetsKindType = typeof RosterTargetsKindType;
1275
+ /**
1276
+ * The app's fit's answer (#1334). It echoes its question, so the Roster
1277
+ * matches each answer to the question it asked.
1278
+ * @property need - The need answered
1279
+ * @property slot - The slot answered
1280
+ * @property people - A verdict for every person, by staff key; the People tab shows the fits, best first
1281
+ */
1282
+ export declare const RosterFitResultType: StructType<{
1283
+ readonly need: VariantType<{
1284
+ readonly leads: NullType;
1285
+ readonly trainers: NullType;
1286
+ readonly skill: StringType;
1287
+ }>;
1288
+ readonly slot: StructType<{
1289
+ readonly day: IntegerType;
1290
+ readonly group: StringType;
1291
+ readonly shift: StringType;
1292
+ }>;
1293
+ readonly people: DictType<StringType, VariantType<{
1294
+ readonly fits: StructType<{
1295
+ readonly score: FloatType;
1296
+ readonly why: StringType;
1297
+ readonly warn: OptionType<StringType>;
1298
+ }>;
1299
+ readonly refused: StructType<{
1300
+ readonly group: StringType;
1301
+ readonly reason: StringType;
1302
+ readonly measure: VariantType<{
1303
+ readonly none: NullType;
1304
+ readonly amount: StructType<{
1305
+ readonly lead: StringType;
1306
+ readonly value: FloatType;
1307
+ }>;
1308
+ readonly day: StructType<{
1309
+ readonly lead: StringType;
1310
+ readonly at: DateTimeType;
1311
+ }>;
1312
+ }>;
1313
+ }>;
1314
+ }>>;
1315
+ }>;
1316
+ export type RosterFitResultType = typeof RosterFitResultType;
672
1317
  //# sourceMappingURL=types.d.ts.map