@rippling/rippling-sdk 0.2.0-alpha.86 → 0.2.0-alpha.87

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 (446) hide show
  1. package/client.d.mts +15 -0
  2. package/client.d.mts.map +1 -1
  3. package/client.d.ts +15 -0
  4. package/client.d.ts.map +1 -1
  5. package/client.js +15 -0
  6. package/client.js.map +1 -1
  7. package/client.mjs +15 -0
  8. package/client.mjs.map +1 -1
  9. package/lib/leave-programs/advanced.d.mts +5 -0
  10. package/lib/leave-programs/advanced.d.mts.map +1 -0
  11. package/lib/leave-programs/advanced.d.ts +5 -0
  12. package/lib/leave-programs/advanced.d.ts.map +1 -0
  13. package/lib/leave-programs/advanced.js +13 -0
  14. package/lib/leave-programs/advanced.js.map +1 -0
  15. package/lib/leave-programs/advanced.mjs +4 -0
  16. package/lib/leave-programs/advanced.mjs.map +1 -0
  17. package/lib/leave-programs/context.d.mts +3 -0
  18. package/lib/leave-programs/context.d.mts.map +1 -0
  19. package/lib/leave-programs/context.d.ts +3 -0
  20. package/lib/leave-programs/context.d.ts.map +1 -0
  21. package/lib/leave-programs/context.js +89 -0
  22. package/lib/leave-programs/context.js.map +1 -0
  23. package/lib/leave-programs/context.mjs +86 -0
  24. package/lib/leave-programs/context.mjs.map +1 -0
  25. package/lib/leave-programs/define-company-leave-program.d.mts +3 -0
  26. package/lib/leave-programs/define-company-leave-program.d.mts.map +1 -0
  27. package/lib/leave-programs/define-company-leave-program.d.ts +3 -0
  28. package/lib/leave-programs/define-company-leave-program.d.ts.map +1 -0
  29. package/lib/leave-programs/define-company-leave-program.js +47 -0
  30. package/lib/leave-programs/define-company-leave-program.js.map +1 -0
  31. package/lib/leave-programs/define-company-leave-program.mjs +44 -0
  32. package/lib/leave-programs/define-company-leave-program.mjs.map +1 -0
  33. package/lib/leave-programs/duration.d.mts +5 -0
  34. package/lib/leave-programs/duration.d.mts.map +1 -0
  35. package/lib/leave-programs/duration.d.ts +5 -0
  36. package/lib/leave-programs/duration.d.ts.map +1 -0
  37. package/lib/leave-programs/duration.js +21 -0
  38. package/lib/leave-programs/duration.js.map +1 -0
  39. package/lib/leave-programs/duration.mjs +16 -0
  40. package/lib/leave-programs/duration.mjs.map +1 -0
  41. package/lib/leave-programs/pay.d.mts +4 -0
  42. package/lib/leave-programs/pay.d.mts.map +1 -0
  43. package/lib/leave-programs/pay.d.ts +4 -0
  44. package/lib/leave-programs/pay.d.ts.map +1 -0
  45. package/lib/leave-programs/pay.js +20 -0
  46. package/lib/leave-programs/pay.js.map +1 -0
  47. package/lib/leave-programs/pay.mjs +16 -0
  48. package/lib/leave-programs/pay.mjs.map +1 -0
  49. package/lib/leave-programs/policy-builder.d.mts +20 -0
  50. package/lib/leave-programs/policy-builder.d.mts.map +1 -0
  51. package/lib/leave-programs/policy-builder.d.ts +20 -0
  52. package/lib/leave-programs/policy-builder.d.ts.map +1 -0
  53. package/lib/leave-programs/policy-builder.js +89 -0
  54. package/lib/leave-programs/policy-builder.js.map +1 -0
  55. package/lib/leave-programs/policy-builder.mjs +85 -0
  56. package/lib/leave-programs/policy-builder.mjs.map +1 -0
  57. package/lib/leave-programs/recipes/parental-top-up-policy.d.mts +25 -0
  58. package/lib/leave-programs/recipes/parental-top-up-policy.d.mts.map +1 -0
  59. package/lib/leave-programs/recipes/parental-top-up-policy.d.ts +25 -0
  60. package/lib/leave-programs/recipes/parental-top-up-policy.d.ts.map +1 -0
  61. package/lib/leave-programs/recipes/parental-top-up-policy.js +56 -0
  62. package/lib/leave-programs/recipes/parental-top-up-policy.js.map +1 -0
  63. package/lib/leave-programs/recipes/parental-top-up-policy.mjs +53 -0
  64. package/lib/leave-programs/recipes/parental-top-up-policy.mjs.map +1 -0
  65. package/lib/leave-programs/testing.d.mts +8 -0
  66. package/lib/leave-programs/testing.d.mts.map +1 -0
  67. package/lib/leave-programs/testing.d.ts +8 -0
  68. package/lib/leave-programs/testing.d.ts.map +1 -0
  69. package/lib/leave-programs/testing.js +11 -0
  70. package/lib/leave-programs/testing.js.map +1 -0
  71. package/lib/leave-programs/testing.mjs +7 -0
  72. package/lib/leave-programs/testing.mjs.map +1 -0
  73. package/lib/leave-programs/types.d.mts +223 -0
  74. package/lib/leave-programs/types.d.mts.map +1 -0
  75. package/lib/leave-programs/types.d.ts +223 -0
  76. package/lib/leave-programs/types.d.ts.map +1 -0
  77. package/lib/leave-programs/types.js +10 -0
  78. package/lib/leave-programs/types.js.map +1 -0
  79. package/lib/leave-programs/types.mjs +7 -0
  80. package/lib/leave-programs/types.mjs.map +1 -0
  81. package/lib/leave-programs.d.mts +7 -0
  82. package/lib/leave-programs.d.mts.map +1 -0
  83. package/lib/leave-programs.d.ts +7 -0
  84. package/lib/leave-programs.d.ts.map +1 -0
  85. package/lib/leave-programs.js +19 -0
  86. package/lib/leave-programs.js.map +1 -0
  87. package/lib/leave-programs.mjs +7 -0
  88. package/lib/leave-programs.mjs.map +1 -0
  89. package/package.json +1 -1
  90. package/resources/agents/agents.d.mts +208 -0
  91. package/resources/agents/agents.d.mts.map +1 -0
  92. package/resources/agents/agents.d.ts +208 -0
  93. package/resources/agents/agents.d.ts.map +1 -0
  94. package/resources/agents/agents.js +64 -0
  95. package/resources/agents/agents.js.map +1 -0
  96. package/resources/agents/agents.mjs +59 -0
  97. package/resources/agents/agents.mjs.map +1 -0
  98. package/resources/agents/deployments.d.mts +180 -0
  99. package/resources/agents/deployments.d.mts.map +1 -0
  100. package/resources/agents/deployments.d.ts +180 -0
  101. package/resources/agents/deployments.d.ts.map +1 -0
  102. package/resources/agents/deployments.js +32 -0
  103. package/resources/agents/deployments.js.map +1 -0
  104. package/resources/agents/deployments.mjs +28 -0
  105. package/resources/agents/deployments.mjs.map +1 -0
  106. package/resources/agents/index.d.mts +5 -0
  107. package/resources/agents/index.d.mts.map +1 -0
  108. package/resources/agents/index.d.ts +5 -0
  109. package/resources/agents/index.d.ts.map +1 -0
  110. package/resources/agents/index.js +13 -0
  111. package/resources/agents/index.js.map +1 -0
  112. package/resources/agents/index.mjs +6 -0
  113. package/resources/agents/index.mjs.map +1 -0
  114. package/resources/agents/sessions/events.d.mts +80 -0
  115. package/resources/agents/sessions/events.d.mts.map +1 -0
  116. package/resources/agents/sessions/events.d.ts +80 -0
  117. package/resources/agents/sessions/events.d.ts.map +1 -0
  118. package/resources/agents/sessions/events.js +19 -0
  119. package/resources/agents/sessions/events.js.map +1 -0
  120. package/resources/agents/sessions/events.mjs +15 -0
  121. package/resources/agents/sessions/events.mjs.map +1 -0
  122. package/resources/agents/sessions/index.d.mts +3 -0
  123. package/resources/agents/sessions/index.d.mts.map +1 -0
  124. package/resources/agents/sessions/index.d.ts +3 -0
  125. package/resources/agents/sessions/index.d.ts.map +1 -0
  126. package/resources/agents/sessions/index.js +9 -0
  127. package/resources/agents/sessions/index.js.map +1 -0
  128. package/resources/agents/sessions/index.mjs +4 -0
  129. package/resources/agents/sessions/index.mjs.map +1 -0
  130. package/resources/agents/sessions/sessions.d.mts +153 -0
  131. package/resources/agents/sessions/sessions.d.mts.map +1 -0
  132. package/resources/agents/sessions/sessions.d.ts +153 -0
  133. package/resources/agents/sessions/sessions.d.ts.map +1 -0
  134. package/resources/agents/sessions/sessions.js +44 -0
  135. package/resources/agents/sessions/sessions.js.map +1 -0
  136. package/resources/agents/sessions/sessions.mjs +39 -0
  137. package/resources/agents/sessions/sessions.mjs.map +1 -0
  138. package/resources/agents/sessions.d.mts +2 -0
  139. package/resources/agents/sessions.d.mts.map +1 -0
  140. package/resources/agents/sessions.d.ts +2 -0
  141. package/resources/agents/sessions.d.ts.map +1 -0
  142. package/resources/agents/sessions.js +6 -0
  143. package/resources/agents/sessions.js.map +1 -0
  144. package/resources/agents/sessions.mjs +3 -0
  145. package/resources/agents/sessions.mjs.map +1 -0
  146. package/resources/agents/source-revisions.d.mts +195 -0
  147. package/resources/agents/source-revisions.d.mts.map +1 -0
  148. package/resources/agents/source-revisions.d.ts +195 -0
  149. package/resources/agents/source-revisions.d.ts.map +1 -0
  150. package/resources/agents/source-revisions.js +32 -0
  151. package/resources/agents/source-revisions.js.map +1 -0
  152. package/resources/agents/source-revisions.mjs +28 -0
  153. package/resources/agents/source-revisions.mjs.map +1 -0
  154. package/resources/agents.d.mts +2 -0
  155. package/resources/agents.d.mts.map +1 -0
  156. package/resources/agents.d.ts +2 -0
  157. package/resources/agents.d.ts.map +1 -0
  158. package/resources/agents.js +6 -0
  159. package/resources/agents.js.map +1 -0
  160. package/resources/agents.mjs +3 -0
  161. package/resources/agents.mjs.map +1 -0
  162. package/resources/break-policies.d.mts +1 -1
  163. package/resources/break-policies.d.ts +1 -1
  164. package/resources/break-policies.js +1 -1
  165. package/resources/break-policies.mjs +1 -1
  166. package/resources/break-types.d.mts +1 -1
  167. package/resources/break-types.d.ts +1 -1
  168. package/resources/break-types.js +1 -1
  169. package/resources/break-types.mjs +1 -1
  170. package/resources/business-structure-paths.d.mts +1 -1
  171. package/resources/business-structure-paths.d.ts +1 -1
  172. package/resources/business-structure-paths.js +1 -1
  173. package/resources/business-structure-paths.mjs +1 -1
  174. package/resources/candidate-applications.d.mts +1 -1
  175. package/resources/candidate-applications.d.ts +1 -1
  176. package/resources/candidate-applications.js +1 -1
  177. package/resources/candidate-applications.mjs +1 -1
  178. package/resources/candidates.d.mts +1 -1
  179. package/resources/candidates.d.ts +1 -1
  180. package/resources/candidates.js +1 -1
  181. package/resources/candidates.mjs +1 -1
  182. package/resources/company-legal-entities.d.mts +1 -1
  183. package/resources/company-legal-entities.d.ts +1 -1
  184. package/resources/company-legal-entities.js +1 -1
  185. package/resources/company-legal-entities.mjs +1 -1
  186. package/resources/company-legal-entity-workers.d.mts +1 -1
  187. package/resources/company-legal-entity-workers.d.ts +1 -1
  188. package/resources/company-legal-entity-workers.js +1 -1
  189. package/resources/company-legal-entity-workers.mjs +1 -1
  190. package/resources/compensation-bands-details.d.mts +1 -1
  191. package/resources/compensation-bands-details.d.ts +1 -1
  192. package/resources/compensation-bands-details.js +1 -1
  193. package/resources/compensation-bands-details.mjs +1 -1
  194. package/resources/compensations.d.mts +1 -1
  195. package/resources/compensations.d.ts +1 -1
  196. package/resources/compensations.js +1 -1
  197. package/resources/compensations.mjs +1 -1
  198. package/resources/device-orders.d.mts +1 -1
  199. package/resources/device-orders.d.ts +1 -1
  200. package/resources/device-orders.js +1 -1
  201. package/resources/device-orders.mjs +1 -1
  202. package/resources/devices.d.mts +1 -1
  203. package/resources/devices.d.ts +1 -1
  204. package/resources/devices.js +1 -1
  205. package/resources/devices.mjs +1 -1
  206. package/resources/functions/deployments.d.mts +2 -2
  207. package/resources/functions/deployments.d.ts +2 -2
  208. package/resources/functions/deployments.js +2 -2
  209. package/resources/functions/deployments.mjs +2 -2
  210. package/resources/functions/executions.d.mts +2 -2
  211. package/resources/functions/executions.d.ts +2 -2
  212. package/resources/functions/executions.js +2 -2
  213. package/resources/functions/executions.mjs +2 -2
  214. package/resources/functions/functions.d.mts +1 -1
  215. package/resources/functions/functions.d.ts +1 -1
  216. package/resources/functions/functions.js +1 -1
  217. package/resources/functions/functions.mjs +1 -1
  218. package/resources/headcount-positions.d.mts +1 -1
  219. package/resources/headcount-positions.d.ts +1 -1
  220. package/resources/headcount-positions.js +1 -1
  221. package/resources/headcount-positions.mjs +1 -1
  222. package/resources/headcount-priorities.d.mts +1 -1
  223. package/resources/headcount-priorities.d.ts +1 -1
  224. package/resources/headcount-priorities.js +1 -1
  225. package/resources/headcount-priorities.mjs +1 -1
  226. package/resources/index.d.mts +3 -0
  227. package/resources/index.d.mts.map +1 -1
  228. package/resources/index.d.ts +3 -0
  229. package/resources/index.d.ts.map +1 -1
  230. package/resources/index.js +8 -2
  231. package/resources/index.js.map +1 -1
  232. package/resources/index.mjs +3 -0
  233. package/resources/index.mjs.map +1 -1
  234. package/resources/job-assignments.d.mts +2 -2
  235. package/resources/job-assignments.d.ts +2 -2
  236. package/resources/job-assignments.js +2 -2
  237. package/resources/job-assignments.mjs +2 -2
  238. package/resources/job-codes.d.mts +2 -2
  239. package/resources/job-codes.d.ts +2 -2
  240. package/resources/job-codes.js +2 -2
  241. package/resources/job-codes.mjs +2 -2
  242. package/resources/job-dimensions.d.mts +1 -1
  243. package/resources/job-dimensions.d.ts +1 -1
  244. package/resources/job-dimensions.js +1 -1
  245. package/resources/job-dimensions.mjs +1 -1
  246. package/resources/job-pay-rate-exceptions.d.mts +2 -2
  247. package/resources/job-pay-rate-exceptions.d.ts +2 -2
  248. package/resources/job-pay-rate-exceptions.js +2 -2
  249. package/resources/job-pay-rate-exceptions.mjs +2 -2
  250. package/resources/job-requisitions.d.mts +1 -1
  251. package/resources/job-requisitions.d.ts +1 -1
  252. package/resources/job-requisitions.js +1 -1
  253. package/resources/job-requisitions.mjs +1 -1
  254. package/resources/kiosk-badges.d.mts +1 -1
  255. package/resources/kiosk-badges.d.ts +1 -1
  256. package/resources/kiosk-badges.js +1 -1
  257. package/resources/kiosk-badges.mjs +1 -1
  258. package/resources/leave-accruals.d.mts +1 -1
  259. package/resources/leave-accruals.d.ts +1 -1
  260. package/resources/leave-accruals.js +1 -1
  261. package/resources/leave-accruals.mjs +1 -1
  262. package/resources/leave-balances.d.mts +1 -1
  263. package/resources/leave-balances.d.ts +1 -1
  264. package/resources/leave-balances.js +1 -1
  265. package/resources/leave-balances.mjs +1 -1
  266. package/resources/leave-requests.d.mts +1 -1
  267. package/resources/leave-requests.d.ts +1 -1
  268. package/resources/leave-requests.js +1 -1
  269. package/resources/leave-requests.mjs +1 -1
  270. package/resources/leave-types.d.mts +1 -1
  271. package/resources/leave-types.d.ts +1 -1
  272. package/resources/leave-types.js +1 -1
  273. package/resources/leave-types.mjs +1 -1
  274. package/resources/legal-entities.d.mts +1 -1
  275. package/resources/legal-entities.d.ts +1 -1
  276. package/resources/legal-entities.js +1 -1
  277. package/resources/legal-entities.mjs +1 -1
  278. package/resources/levels.d.mts +1 -1
  279. package/resources/levels.d.ts +1 -1
  280. package/resources/levels.js +1 -1
  281. package/resources/levels.mjs +1 -1
  282. package/resources/location-factors.d.mts +1 -1
  283. package/resources/location-factors.d.ts +1 -1
  284. package/resources/location-factors.js +1 -1
  285. package/resources/location-factors.mjs +1 -1
  286. package/resources/packages/index.d.mts +3 -0
  287. package/resources/packages/index.d.mts.map +1 -0
  288. package/resources/packages/index.d.ts +3 -0
  289. package/resources/packages/index.d.ts.map +1 -0
  290. package/resources/packages/index.js +9 -0
  291. package/resources/packages/index.js.map +1 -0
  292. package/resources/packages/index.mjs +4 -0
  293. package/resources/packages/index.mjs.map +1 -0
  294. package/resources/packages/packages.d.mts +239 -0
  295. package/resources/packages/packages.d.mts.map +1 -0
  296. package/resources/packages/packages.d.ts +239 -0
  297. package/resources/packages/packages.d.ts.map +1 -0
  298. package/resources/packages/packages.js +60 -0
  299. package/resources/packages/packages.js.map +1 -0
  300. package/resources/packages/packages.mjs +55 -0
  301. package/resources/packages/packages.mjs.map +1 -0
  302. package/resources/packages/versions.d.mts +72 -0
  303. package/resources/packages/versions.d.mts.map +1 -0
  304. package/resources/packages/versions.d.ts +72 -0
  305. package/resources/packages/versions.d.ts.map +1 -0
  306. package/resources/packages/versions.js +19 -0
  307. package/resources/packages/versions.js.map +1 -0
  308. package/resources/packages/versions.mjs +15 -0
  309. package/resources/packages/versions.mjs.map +1 -0
  310. package/resources/packages.d.mts +2 -0
  311. package/resources/packages.d.mts.map +1 -0
  312. package/resources/packages.d.ts +2 -0
  313. package/resources/packages.d.ts.map +1 -0
  314. package/resources/packages.js +6 -0
  315. package/resources/packages.js.map +1 -0
  316. package/resources/packages.mjs +3 -0
  317. package/resources/packages.mjs.map +1 -0
  318. package/resources/scheduled-job-assignments.d.mts +1 -1
  319. package/resources/scheduled-job-assignments.d.ts +1 -1
  320. package/resources/scheduled-job-assignments.js +1 -1
  321. package/resources/scheduled-job-assignments.mjs +1 -1
  322. package/resources/schedules.d.mts +1 -1
  323. package/resources/schedules.d.ts +1 -1
  324. package/resources/schedules.js +1 -1
  325. package/resources/schedules.mjs +1 -1
  326. package/resources/shift-assignments.d.mts +1 -1
  327. package/resources/shift-assignments.d.ts +1 -1
  328. package/resources/shift-assignments.js +1 -1
  329. package/resources/shift-assignments.mjs +1 -1
  330. package/resources/shift-inputs.d.mts +1 -1
  331. package/resources/shift-inputs.d.ts +1 -1
  332. package/resources/shift-inputs.js +1 -1
  333. package/resources/shift-inputs.mjs +1 -1
  334. package/resources/shiftassignments.d.mts +1 -1
  335. package/resources/shiftassignments.d.ts +1 -1
  336. package/resources/shiftassignments.js +1 -1
  337. package/resources/shiftassignments.mjs +1 -1
  338. package/resources/sites.d.mts +572 -0
  339. package/resources/sites.d.mts.map +1 -0
  340. package/resources/sites.d.ts +572 -0
  341. package/resources/sites.d.ts.map +1 -0
  342. package/resources/sites.js +154 -0
  343. package/resources/sites.js.map +1 -0
  344. package/resources/sites.mjs +150 -0
  345. package/resources/sites.mjs.map +1 -0
  346. package/resources/software-deployments.d.mts +1 -1
  347. package/resources/software-deployments.d.ts +1 -1
  348. package/resources/software-deployments.js +1 -1
  349. package/resources/software-deployments.mjs +1 -1
  350. package/resources/time-cards.d.mts +1 -1
  351. package/resources/time-cards.d.ts +1 -1
  352. package/resources/time-cards.js +1 -1
  353. package/resources/time-cards.mjs +1 -1
  354. package/resources/time-entries.d.mts +1 -1
  355. package/resources/time-entries.d.ts +1 -1
  356. package/resources/time-entries.js +1 -1
  357. package/resources/time-entries.mjs +1 -1
  358. package/resources/tracks.d.mts +1 -1
  359. package/resources/tracks.d.ts +1 -1
  360. package/resources/tracks.js +1 -1
  361. package/resources/tracks.mjs +1 -1
  362. package/resources/unassigned-shifts.d.mts +2 -2
  363. package/resources/unassigned-shifts.d.ts +2 -2
  364. package/resources/unassigned-shifts.js +2 -2
  365. package/resources/unassigned-shifts.mjs +2 -2
  366. package/resources/unassignedshifts.d.mts +1 -1
  367. package/resources/unassignedshifts.d.ts +1 -1
  368. package/resources/unassignedshifts.js +1 -1
  369. package/resources/unassignedshifts.mjs +1 -1
  370. package/resources/worker-time-splits.d.mts +1 -1
  371. package/resources/worker-time-splits.d.ts +1 -1
  372. package/resources/worker-time-splits.js +1 -1
  373. package/resources/worker-time-splits.mjs +1 -1
  374. package/src/client.ts +91 -0
  375. package/src/lib/leave-programs/README.md +160 -0
  376. package/src/lib/leave-programs/advanced.ts +11 -0
  377. package/src/lib/leave-programs/context.ts +101 -0
  378. package/src/lib/leave-programs/define-company-leave-program.ts +58 -0
  379. package/src/lib/leave-programs/duration.ts +20 -0
  380. package/src/lib/leave-programs/pay.ts +18 -0
  381. package/src/lib/leave-programs/policy-builder.ts +113 -0
  382. package/src/lib/leave-programs/recipes/parental-top-up-policy.ts +85 -0
  383. package/src/lib/leave-programs/testing.ts +16 -0
  384. package/src/lib/leave-programs/types.ts +274 -0
  385. package/src/lib/leave-programs.ts +35 -0
  386. package/src/resources/agents/agents.ts +340 -0
  387. package/src/resources/agents/deployments.ts +249 -0
  388. package/src/resources/agents/index.ts +40 -0
  389. package/src/resources/agents/sessions/events.ts +107 -0
  390. package/src/resources/agents/sessions/index.ts +12 -0
  391. package/src/resources/agents/sessions/sessions.ts +216 -0
  392. package/src/resources/agents/sessions.ts +3 -0
  393. package/src/resources/agents/source-revisions.ts +267 -0
  394. package/src/resources/agents.ts +3 -0
  395. package/src/resources/break-policies.ts +1 -1
  396. package/src/resources/break-types.ts +1 -1
  397. package/src/resources/business-structure-paths.ts +1 -1
  398. package/src/resources/candidate-applications.ts +1 -1
  399. package/src/resources/candidates.ts +1 -1
  400. package/src/resources/company-legal-entities.ts +1 -1
  401. package/src/resources/company-legal-entity-workers.ts +1 -1
  402. package/src/resources/compensation-bands-details.ts +1 -1
  403. package/src/resources/compensations.ts +1 -1
  404. package/src/resources/device-orders.ts +1 -1
  405. package/src/resources/devices.ts +1 -1
  406. package/src/resources/functions/deployments.ts +2 -2
  407. package/src/resources/functions/executions.ts +2 -2
  408. package/src/resources/functions/functions.ts +1 -1
  409. package/src/resources/headcount-positions.ts +1 -1
  410. package/src/resources/headcount-priorities.ts +1 -1
  411. package/src/resources/index.ts +38 -0
  412. package/src/resources/job-assignments.ts +2 -2
  413. package/src/resources/job-codes.ts +2 -2
  414. package/src/resources/job-dimensions.ts +1 -1
  415. package/src/resources/job-pay-rate-exceptions.ts +2 -2
  416. package/src/resources/job-requisitions.ts +1 -1
  417. package/src/resources/kiosk-badges.ts +1 -1
  418. package/src/resources/leave-accruals.ts +1 -1
  419. package/src/resources/leave-balances.ts +1 -1
  420. package/src/resources/leave-requests.ts +1 -1
  421. package/src/resources/leave-types.ts +1 -1
  422. package/src/resources/legal-entities.ts +1 -1
  423. package/src/resources/levels.ts +1 -1
  424. package/src/resources/location-factors.ts +1 -1
  425. package/src/resources/packages/index.ts +14 -0
  426. package/src/resources/packages/packages.ts +329 -0
  427. package/src/resources/packages/versions.ts +98 -0
  428. package/src/resources/packages.ts +3 -0
  429. package/src/resources/scheduled-job-assignments.ts +1 -1
  430. package/src/resources/schedules.ts +1 -1
  431. package/src/resources/shift-assignments.ts +1 -1
  432. package/src/resources/shift-inputs.ts +1 -1
  433. package/src/resources/shiftassignments.ts +1 -1
  434. package/src/resources/sites.ts +736 -0
  435. package/src/resources/software-deployments.ts +1 -1
  436. package/src/resources/time-cards.ts +1 -1
  437. package/src/resources/time-entries.ts +1 -1
  438. package/src/resources/tracks.ts +1 -1
  439. package/src/resources/unassigned-shifts.ts +2 -2
  440. package/src/resources/unassignedshifts.ts +1 -1
  441. package/src/resources/worker-time-splits.ts +1 -1
  442. package/src/version.ts +1 -1
  443. package/version.d.mts +1 -1
  444. package/version.d.ts +1 -1
  445. package/version.js +1 -1
  446. package/version.mjs +1 -1
package/src/client.ts CHANGED
@@ -432,6 +432,22 @@ import {
432
432
  ShiftassignmentUpdateResponse,
433
433
  Shiftassignments,
434
434
  } from './resources/shiftassignments';
435
+ import {
436
+ SiteCreateParams,
437
+ SiteCreateResponse,
438
+ SiteFileOperationsParams,
439
+ SiteFileOperationsResponse,
440
+ SiteFilesParams,
441
+ SiteFilesResponse,
442
+ SiteListResponse,
443
+ SiteListResponsesPageCursorURL,
444
+ SiteRetrieveResponse,
445
+ SiteUpdateParams,
446
+ SiteUpdateResponse,
447
+ SiteUploadBatchesParams,
448
+ SiteUploadBatchesResponse,
449
+ Sites,
450
+ } from './resources/sites';
435
451
  import {
436
452
  SoftwareDeploymentCreateParams,
437
453
  SoftwareDeploymentCreateResponse,
@@ -564,6 +580,17 @@ import {
564
580
  WorkflowActionExecutionCreateResponse,
565
581
  WorkflowActionExecutions,
566
582
  } from './resources/workflow-action-executions';
583
+ import {
584
+ AgentCreateParams,
585
+ AgentCreateResponse,
586
+ AgentListParams,
587
+ AgentListResponse,
588
+ AgentListResponsesPageCursorURL,
589
+ AgentRetrieveResponse,
590
+ AgentUpdateParams,
591
+ AgentUpdateResponse,
592
+ Agents,
593
+ } from './resources/agents/agents';
567
594
  import {
568
595
  CustomObject,
569
596
  CustomObjectCreateParams,
@@ -581,6 +608,17 @@ import {
581
608
  Functions,
582
609
  FunctionsPageCursorURL,
583
610
  } from './resources/functions/functions';
611
+ import {
612
+ PackageCreateParams,
613
+ PackageCreateResponse,
614
+ PackageListParams,
615
+ PackageListResponse,
616
+ PackageListResponsesPageCursorURL,
617
+ PackageRetrieveResponse,
618
+ PackageUpdateParams,
619
+ PackageUpdateResponse,
620
+ Packages,
621
+ } from './resources/packages/packages';
584
622
  import {
585
623
  PayrollRunListParams,
586
624
  PayrollRunListResponse,
@@ -1461,6 +1499,10 @@ export class RipplingSDK {
1461
1499
  * Job related information for the company
1462
1500
  */
1463
1501
  jobPayRateExceptions: API.JobPayRateExceptions = new API.JobPayRateExceptions(this);
1502
+ /**
1503
+ * Agents defined by the company
1504
+ */
1505
+ agents: API.Agents = new API.Agents(this);
1464
1506
  /**
1465
1507
  * Mappings between Rippling workers and their user accounts in third-party apps
1466
1508
  */
@@ -1564,6 +1606,10 @@ export class RipplingSDK {
1564
1606
  * Geographic compensation adjustment factors that modify base compensation based on location-specific market conditions and cost of living
1565
1607
  */
1566
1608
  locationFactors: API.LocationFactors = new API.LocationFactors(this);
1609
+ /**
1610
+ * Author, publish, and install Unity Packages V2 packages
1611
+ */
1612
+ packages: API.Packages = new API.Packages(this);
1567
1613
  /**
1568
1614
  * Payroll runs for the company
1569
1615
  */
@@ -1592,6 +1638,7 @@ export class RipplingSDK {
1592
1638
  * Shift assignments assigned to workers
1593
1639
  */
1594
1640
  shiftassignments: API.Shiftassignments = new API.Shiftassignments(this);
1641
+ sites: API.Sites = new API.Sites(this);
1595
1642
  /**
1596
1643
  * Software deployed to company devices
1597
1644
  */
@@ -1660,6 +1707,7 @@ RipplingSDK.BusinessPartnerGroups = BusinessPartnerGroups;
1660
1707
  RipplingSDK.Functions = Functions;
1661
1708
  RipplingSDK.JobAssignments = JobAssignments;
1662
1709
  RipplingSDK.JobPayRateExceptions = JobPayRateExceptions;
1710
+ RipplingSDK.Agents = Agents;
1663
1711
  RipplingSDK.AppUsers = AppUsers;
1664
1712
  RipplingSDK.BreakPolicies = BreakPolicies;
1665
1713
  RipplingSDK.BreakTypes = BreakTypes;
@@ -1688,6 +1736,7 @@ RipplingSDK.JobRequisitionsWrite = JobRequisitionsWrite;
1688
1736
  RipplingSDK.LeaveAccruals = LeaveAccruals;
1689
1737
  RipplingSDK.LeaveProgramEvaluations = LeaveProgramEvaluations;
1690
1738
  RipplingSDK.LocationFactors = LocationFactors;
1739
+ RipplingSDK.Packages = Packages;
1691
1740
  RipplingSDK.PayrollRuns = PayrollRuns;
1692
1741
  RipplingSDK.PlatformCapabilities = PlatformCapabilities;
1693
1742
  RipplingSDK.Reports = Reports;
@@ -1695,6 +1744,7 @@ RipplingSDK.ReportRuns = ReportRuns;
1695
1744
  RipplingSDK.Schedules = Schedules;
1696
1745
  RipplingSDK.ScheduledJobAssignments = ScheduledJobAssignments;
1697
1746
  RipplingSDK.Shiftassignments = Shiftassignments;
1747
+ RipplingSDK.Sites = Sites;
1698
1748
  RipplingSDK.SoftwareDeployments = SoftwareDeployments;
1699
1749
  RipplingSDK.Titles = Titles;
1700
1750
  RipplingSDK.Unassignedshifts = Unassignedshifts;
@@ -2011,6 +2061,18 @@ export declare namespace RipplingSDK {
2011
2061
  type JobPayRateExceptionListChangeLogParams as JobPayRateExceptionListChangeLogParams,
2012
2062
  };
2013
2063
 
2064
+ export {
2065
+ Agents as Agents,
2066
+ type AgentListResponse as AgentListResponse,
2067
+ type AgentCreateResponse as AgentCreateResponse,
2068
+ type AgentRetrieveResponse as AgentRetrieveResponse,
2069
+ type AgentUpdateResponse as AgentUpdateResponse,
2070
+ type AgentListResponsesPageCursorURL as AgentListResponsesPageCursorURL,
2071
+ type AgentListParams as AgentListParams,
2072
+ type AgentCreateParams as AgentCreateParams,
2073
+ type AgentUpdateParams as AgentUpdateParams,
2074
+ };
2075
+
2014
2076
  export {
2015
2077
  AppUsers as AppUsers,
2016
2078
  type AppUserListResponse as AppUserListResponse,
@@ -2239,6 +2301,18 @@ export declare namespace RipplingSDK {
2239
2301
  type LocationFactorListParams as LocationFactorListParams,
2240
2302
  };
2241
2303
 
2304
+ export {
2305
+ Packages as Packages,
2306
+ type PackageListResponse as PackageListResponse,
2307
+ type PackageCreateResponse as PackageCreateResponse,
2308
+ type PackageRetrieveResponse as PackageRetrieveResponse,
2309
+ type PackageUpdateResponse as PackageUpdateResponse,
2310
+ type PackageListResponsesPageCursorURL as PackageListResponsesPageCursorURL,
2311
+ type PackageListParams as PackageListParams,
2312
+ type PackageCreateParams as PackageCreateParams,
2313
+ type PackageUpdateParams as PackageUpdateParams,
2314
+ };
2315
+
2242
2316
  export {
2243
2317
  PayrollRuns as PayrollRuns,
2244
2318
  type PayrollRunListResponse as PayrollRunListResponse,
@@ -2296,6 +2370,23 @@ export declare namespace RipplingSDK {
2296
2370
  type ShiftassignmentUpdateParams as ShiftassignmentUpdateParams,
2297
2371
  };
2298
2372
 
2373
+ export {
2374
+ Sites as Sites,
2375
+ type SiteListResponse as SiteListResponse,
2376
+ type SiteCreateResponse as SiteCreateResponse,
2377
+ type SiteRetrieveResponse as SiteRetrieveResponse,
2378
+ type SiteUpdateResponse as SiteUpdateResponse,
2379
+ type SiteUploadBatchesResponse as SiteUploadBatchesResponse,
2380
+ type SiteFilesResponse as SiteFilesResponse,
2381
+ type SiteFileOperationsResponse as SiteFileOperationsResponse,
2382
+ type SiteListResponsesPageCursorURL as SiteListResponsesPageCursorURL,
2383
+ type SiteCreateParams as SiteCreateParams,
2384
+ type SiteUpdateParams as SiteUpdateParams,
2385
+ type SiteUploadBatchesParams as SiteUploadBatchesParams,
2386
+ type SiteFilesParams as SiteFilesParams,
2387
+ type SiteFileOperationsParams as SiteFileOperationsParams,
2388
+ };
2389
+
2299
2390
  export {
2300
2391
  SoftwareDeployments as SoftwareDeployments,
2301
2392
  type SoftwareDeploymentListResponse as SoftwareDeploymentListResponse,
@@ -0,0 +1,160 @@
1
+ # Leave Program Authoring
2
+
3
+ Draft handwritten helpers for authoring company leave programs in Rippling
4
+ Functions.
5
+
6
+ This library is intended to be the customer-facing authoring surface for
7
+ company-specific leave policy. A customer should be able to write a Rippling
8
+ Function that imports this package, describes their company leave program, and
9
+ returns a constrained program result that Rippling can evaluate later.
10
+
11
+ This is not the leave engine itself. It does not register programs, hydrate
12
+ employee or payroll facts, run statutory programs, calculate payroll outputs, or
13
+ build leave plans. Those responsibilities stay in `rippling-main`.
14
+
15
+ ## Intended Flow
16
+
17
+ ```text
18
+ Customer Function imports @rippling/rippling-sdk/lib/leave-programs
19
+ -> customer defines a company leave policy
20
+ -> library emits CompanyLeaveProgramResult IR
21
+ -> rippling-main validates and compiles the IR
22
+ -> leave engine runs the company program alongside statutory programs
23
+ -> leave engine composes the final leave plan and program outputs
24
+ ```
25
+
26
+ The important boundary is that customer code describes policy intent. It does
27
+ not emit raw `LeaveProgramResult`, payroll directives, earning lines, balance
28
+ adjustments, or internal leave engine objects.
29
+
30
+ ## What Customers Can Express
31
+
32
+ Company policies should be able to express a small set of leave-domain concepts:
33
+
34
+ - Applicability, such as employee country or jurisdiction.
35
+ - Eligibility, such as leave reason, parental relationship, tenure tiers, and
36
+ required evidence.
37
+ - Entitlement, such as a paid leave bank in weeks, days, or hours.
38
+ - Pay intent, such as no company pay, fixed pay, percent of contractual pay, or
39
+ make-whole top-up.
40
+ - Coordination with Rippling-owned statutory or insurance wage replacement
41
+ programs.
42
+ - Admin requirements that Rippling can surface during review.
43
+
44
+ Pay is intentionally constrained. For example, a customer can say "top the
45
+ employee up to 100% of contractual weekly pay, net of CA-PFL." They cannot say
46
+ "create this payroll earning line with this internal earning code on this
47
+ payrun."
48
+
49
+ ## What Rippling Still Owns
50
+
51
+ `rippling-main` remains responsible for:
52
+
53
+ - Program registration, activation, versioning, effective dates, and company
54
+ scope.
55
+ - Deciding which statutory, insurance, and company programs run for a claim.
56
+ - Dependency ordering between statutory programs and company policies.
57
+ - Hydrating sanitized facts from HRIS, Payroll, PTO, Benefits, and other source
58
+ systems.
59
+ - Validating the program result IR returned by customer code.
60
+ - Missing evidence handling.
61
+ - Payroll-safe pay phase construction, rounding, currency handling, earning type
62
+ mapping, caps, and offsets.
63
+ - Conversion to internal `LeaveProgramResult`, directives, and leave plan
64
+ outputs.
65
+
66
+ ## Example: Common Recipe
67
+
68
+ Recipes are the simplest authoring lane. They cover common company policies
69
+ without requiring customers to write lower-level policy composition code.
70
+
71
+ ```ts
72
+ import { defineCompanyLeaveProgram, parentalTopUpPolicy } from '@rippling/rippling-sdk/lib/leave-programs';
73
+
74
+ export default defineCompanyLeaveProgram(
75
+ parentalTopUpPolicy({
76
+ code: 'ACME_US_PARENTAL_TOPUP',
77
+ displayName: 'Acme US parental top-up',
78
+ jurisdiction: { country: 'US' },
79
+ appliesTo: { employeeCountry: 'US' },
80
+ qualifyingLeaveReasons: ['BONDING', 'PREGNANCY_DISABILITY'],
81
+ paidWeeksByParentalRelationship: {
82
+ birthingParent: 16,
83
+ nonBirthingParent: 6,
84
+ adoptionParent: 10,
85
+ fosterParent: 10,
86
+ },
87
+ pay: {
88
+ type: 'MAKE_WHOLE_TOPUP',
89
+ targetPercentOfPay: 100,
90
+ offsetByPrograms: ['CA-SDI', 'CA-PFL', 'INSURANCE-STD'],
91
+ },
92
+ }),
93
+ );
94
+ ```
95
+
96
+ This emits policy IR that says:
97
+
98
+ - The program applies to US employees.
99
+ - Bonding and pregnancy disability are qualifying leave reasons.
100
+ - The paid leave bank depends on parental relationship.
101
+ - Company pay tops up statutory or insurance wage replacement to 100% of
102
+ contractual weekly pay.
103
+ - The backend should coordinate this policy after `CA-SDI`, `CA-PFL`, and
104
+ `INSURANCE-STD`.
105
+
106
+ ## Example: Composable Builder
107
+
108
+ Builders are for company policies that do not fit a recipe cleanly, but still
109
+ use supported leave-policy primitives.
110
+
111
+ ```ts
112
+ import { defineCompanyLeaveProgram, percentOfPay, weeks } from '@rippling/rippling-sdk/lib/leave-programs';
113
+
114
+ export default defineCompanyLeaveProgram({
115
+ code: 'ACME_TENURE_PARENTAL_TOPUP',
116
+ displayName: 'Acme tenure parental top-up',
117
+ jurisdiction: { country: 'US' },
118
+ dependsOn: ['CA-PFL'],
119
+
120
+ evaluate(ctx) {
121
+ const paidWeeks = ctx.employee.tenure.monthsAt(ctx.leave.startDate).match([
122
+ { gte: 0, lt: 6, value: weeks(4) },
123
+ { gte: 6, lt: 12, value: weeks(8) },
124
+ { gte: 12, value: weeks(12) },
125
+ ]);
126
+
127
+ return ctx
128
+ .policy()
129
+ .eligibleWhen(ctx.employee.country.is('US'))
130
+ .eligibleWhen(ctx.leave.reason.isParental())
131
+ .grantPaidLeave(paidWeeks, { leaveType: 'EMPLOYER_PARENTAL_TOPUP' })
132
+ .topUpTo(percentOfPay(100), {
133
+ base: ctx.pay.contractualWeeklyPay,
134
+ offsetBy: ctx.programs.wageReplacement(['CA-PFL']),
135
+ earningType: 'EMPLOYER_TOPUP_MAKE_WHOLE',
136
+ })
137
+ .build();
138
+ },
139
+ });
140
+ ```
141
+
142
+ The builder still returns the same constrained `CompanyLeaveProgramResult` IR.
143
+ It does not expose raw payroll, PTO, HRIS, Benefits, ZObject, or leave-engine
144
+ records.
145
+
146
+ ## Current Draft Scope
147
+
148
+ This package currently provides the SDK-side authoring shape only:
149
+
150
+ - `defineCompanyLeaveProgram`
151
+ - duration helpers such as `weeks`, `days`, and `hours`
152
+ - pay helpers such as `percentOfPay` and `fixedAmount`
153
+ - the `parentalTopUpPolicy` recipe
154
+ - constrained `CompanyLeaveProgramResult` types
155
+ - draft advanced and testing entry points
156
+
157
+ Backend registration, activation, validation, Function execution, and leave
158
+ engine compilation are intentionally out of scope for this package. Those pieces
159
+ must be implemented in `rippling-main` before a customer-authored Function can
160
+ run in production alongside Rippling-owned statutory programs.
@@ -0,0 +1,11 @@
1
+ export type {
2
+ AdvancedCapability,
3
+ CompanyLeaveProgramDefinitionConfig,
4
+ DurationExpression,
5
+ FactRef,
6
+ PolicyCondition,
7
+ } from './types';
8
+
9
+ export { defineCompanyLeaveProgram as defineAdvancedCompanyLeaveProgram } from './define-company-leave-program';
10
+ export { percentOfPay, fixedAmount } from './pay';
11
+ export { weeks, days, hours } from './duration';
@@ -0,0 +1,101 @@
1
+ import { CompanyPolicyBuilder } from './policy-builder';
2
+ import type {
3
+ CompanyLeaveProgramContext,
4
+ Duration,
5
+ DurationExpression,
6
+ EvidenceRequirement,
7
+ FactRef,
8
+ ParentalRelationship,
9
+ PolicyCondition,
10
+ TenureMatchTier,
11
+ WageReplacementRef,
12
+ } from './types';
13
+
14
+ function fact(path: string): FactRef {
15
+ return { kind: 'fact_ref', path };
16
+ }
17
+
18
+ function isEvidenceRequirement(value: Duration | EvidenceRequirement): value is EvidenceRequirement {
19
+ return 'key' in value;
20
+ }
21
+
22
+ export function createCompanyLeaveProgramContext(): CompanyLeaveProgramContext {
23
+ return {
24
+ employee: {
25
+ country: {
26
+ is(country: string): PolicyCondition {
27
+ return { type: 'employee_country_is', country };
28
+ },
29
+ },
30
+ tenure: {
31
+ monthsAt(asOf: FactRef) {
32
+ return {
33
+ match(tiers: TenureMatchTier[]): DurationExpression {
34
+ return {
35
+ type: 'tenure_months_duration',
36
+ tiers: tiers.map((tier) => ({ ...tier })),
37
+ };
38
+ },
39
+ };
40
+ },
41
+ },
42
+ },
43
+ leave: {
44
+ reason: {
45
+ isParental(): PolicyCondition {
46
+ return { type: 'leave_reason_is_parental' };
47
+ },
48
+ isOneOf(values: string[]): PolicyCondition {
49
+ return { type: 'leave_reason_in', values: [...values] };
50
+ },
51
+ },
52
+ startDate: fact('leave.startDate'),
53
+ parentalRelationship: {
54
+ match(cases): DurationExpression {
55
+ const durationCases: Partial<Record<ParentalRelationship, Duration>> = {};
56
+ let unknown: EvidenceRequirement | undefined;
57
+
58
+ for (const [relationship, value] of Object.entries(cases)) {
59
+ if (value === undefined) {
60
+ continue;
61
+ }
62
+ if (relationship === 'unknown') {
63
+ if (isEvidenceRequirement(value)) {
64
+ unknown = value;
65
+ }
66
+ continue;
67
+ }
68
+ if (!isEvidenceRequirement(value)) {
69
+ durationCases[relationship as ParentalRelationship] = value;
70
+ }
71
+ }
72
+
73
+ return {
74
+ type: 'parental_relationship_duration',
75
+ cases: durationCases,
76
+ ...(unknown === undefined ? {} : { unknown }),
77
+ };
78
+ },
79
+ },
80
+ },
81
+ pay: {
82
+ contractualWeeklyPay: fact('pay.contractualWeeklyPay'),
83
+ },
84
+ programs: {
85
+ wageReplacement(programCodes: string[]): WageReplacementRef {
86
+ return { kind: 'wage_replacement_ref', programCodes: [...programCodes] };
87
+ },
88
+ },
89
+ evidence: {
90
+ require(key: string, message?: string): EvidenceRequirement {
91
+ return {
92
+ key,
93
+ ...(message === undefined ? {} : { message }),
94
+ };
95
+ },
96
+ },
97
+ policy() {
98
+ return new CompanyPolicyBuilder();
99
+ },
100
+ };
101
+ }
@@ -0,0 +1,58 @@
1
+ import { createCompanyLeaveProgramContext } from './context';
2
+ import type {
3
+ CompanyLeaveProgramContext,
4
+ CompanyLeaveProgramResult,
5
+ CompanyLeaveProgramDefinition,
6
+ CompanyLeaveProgramDefinitionConfig,
7
+ PolicyCondition,
8
+ } from './types';
9
+
10
+ function asArray(value: PolicyCondition | PolicyCondition[] | undefined): PolicyCondition[] {
11
+ if (value === undefined) {
12
+ return [];
13
+ }
14
+ return Array.isArray(value) ? value : [value];
15
+ }
16
+
17
+ export function defineCompanyLeaveProgram(
18
+ config: CompanyLeaveProgramDefinitionConfig,
19
+ ): CompanyLeaveProgramDefinition {
20
+ const dependsOn = config.dependsOn === undefined ? [] : [...config.dependsOn];
21
+ const capabilities = config.capabilities === undefined ? [] : [...config.capabilities];
22
+
23
+ return {
24
+ contractVersion: 'company_leave_program.v1',
25
+ code: config.code,
26
+ displayName: config.displayName,
27
+ jurisdiction: { ...config.jurisdiction },
28
+ dependsOn,
29
+
30
+ toResult(
31
+ context: CompanyLeaveProgramContext = createCompanyLeaveProgramContext(),
32
+ ): CompanyLeaveProgramResult {
33
+ const result = config.evaluate(context);
34
+ return {
35
+ contractVersion: 'company_leave_program.v1',
36
+ program: {
37
+ code: config.code,
38
+ displayName: config.displayName,
39
+ ...(config.description === undefined ? {} : { description: config.description }),
40
+ programKind: config.programKind ?? 'COMPANY_POLICY',
41
+ jurisdiction: { ...config.jurisdiction },
42
+ dependsOn,
43
+ capabilities,
44
+ },
45
+ appliesTo: asArray(config.appliesTo?.(context)),
46
+ eligibility: {
47
+ conditions: result.conditions,
48
+ requiredEvidence: result.requiredEvidence,
49
+ },
50
+ ...(result.entitlement === undefined ? {} : { entitlement: result.entitlement }),
51
+ pay: result.pay,
52
+ requirements: result.requirements,
53
+ jobProtection: result.jobProtection,
54
+ diagnostics: result.diagnostics,
55
+ };
56
+ },
57
+ };
58
+ }
@@ -0,0 +1,20 @@
1
+ import type { Duration } from './types';
2
+
3
+ function duration(amount: number, unit: Duration['unit']): Duration {
4
+ if (!Number.isFinite(amount) || amount < 0) {
5
+ throw new Error('Duration amount must be a non-negative finite number.');
6
+ }
7
+ return { kind: 'duration', amount, unit };
8
+ }
9
+
10
+ export function weeks(amount: number): Duration {
11
+ return duration(amount, 'WEEKS');
12
+ }
13
+
14
+ export function days(amount: number): Duration {
15
+ return duration(amount, 'DAYS');
16
+ }
17
+
18
+ export function hours(amount: number): Duration {
19
+ return duration(amount, 'HOURS');
20
+ }
@@ -0,0 +1,18 @@
1
+ import type { MoneyAmount, PercentOfPay } from './types';
2
+
3
+ export function percentOfPay(percent: number): PercentOfPay {
4
+ if (!Number.isFinite(percent) || percent < 0) {
5
+ throw new Error('Percent of pay must be a non-negative finite number.');
6
+ }
7
+ return { kind: 'percent_of_pay', percent };
8
+ }
9
+
10
+ export function fixedAmount(amount: string, currency: string): MoneyAmount {
11
+ if (amount.trim() === '') {
12
+ throw new Error('Fixed amount must be a non-empty decimal string.');
13
+ }
14
+ if (currency.trim() === '') {
15
+ throw new Error('Currency must be a non-empty ISO currency code.');
16
+ }
17
+ return { kind: 'money_amount', amount, currency };
18
+ }
@@ -0,0 +1,113 @@
1
+ import type {
2
+ AdminTask,
3
+ DurationExpression,
4
+ EntitlementDecision,
5
+ FactRef,
6
+ GrantPaidLeaveOptions,
7
+ MoneyAmount,
8
+ PayDecision,
9
+ PayFixedAmountOptions,
10
+ PayPercentOfPayOptions,
11
+ PercentOfPay,
12
+ PolicyBuilder,
13
+ PolicyBuilderResult,
14
+ PolicyCondition,
15
+ RequireKnownOptions,
16
+ RequirementDecision,
17
+ TopUpToOptions,
18
+ WageReplacementRef,
19
+ } from './types';
20
+
21
+ export class CompanyPolicyBuilder implements PolicyBuilder {
22
+ private readonly conditions: PolicyCondition[] = [];
23
+ private readonly requiredEvidence: PolicyBuilderResult['requiredEvidence'] = [];
24
+ private entitlementDecision: EntitlementDecision | undefined;
25
+ private payDecision: PayDecision = { type: 'NO_COMPANY_PAY' };
26
+ private readonly requirementDecisions: RequirementDecision[] = [];
27
+ private jobProtectionDecision: PolicyBuilderResult['jobProtection'] = 'UNCHANGED';
28
+
29
+ eligibleWhen(condition: PolicyCondition): PolicyBuilder {
30
+ this.conditions.push(condition);
31
+ return this;
32
+ }
33
+
34
+ requireKnown(_fact: FactRef | WageReplacementRef, options: RequireKnownOptions): PolicyBuilder {
35
+ this.requiredEvidence.push({
36
+ key: options.evidenceKey,
37
+ ...(options.message === undefined ? {} : { message: options.message }),
38
+ });
39
+ return this;
40
+ }
41
+
42
+ grantPaidLeave(duration: DurationExpression, options: GrantPaidLeaveOptions = {}): PolicyBuilder {
43
+ this.entitlementDecision = {
44
+ type: 'PAID_LEAVE',
45
+ duration,
46
+ ...(options.leaveType === undefined ? {} : { leaveType: options.leaveType }),
47
+ };
48
+ return this;
49
+ }
50
+
51
+ noCompanyPay(): PolicyBuilder {
52
+ this.payDecision = { type: 'NO_COMPANY_PAY' };
53
+ return this;
54
+ }
55
+
56
+ payFixedAmount(amount: MoneyAmount, options: PayFixedAmountOptions): PolicyBuilder {
57
+ this.payDecision = {
58
+ type: 'FIXED_AMOUNT',
59
+ amount,
60
+ duration: options.duration,
61
+ earningType: options.earningType,
62
+ };
63
+ return this;
64
+ }
65
+
66
+ payPercentOfPay(target: PercentOfPay, options: PayPercentOfPayOptions): PolicyBuilder {
67
+ this.payDecision = {
68
+ type: 'PERCENT_OF_PAY',
69
+ target,
70
+ base: options.base,
71
+ duration: options.duration,
72
+ earningType: options.earningType,
73
+ };
74
+ return this;
75
+ }
76
+
77
+ topUpTo(target: PercentOfPay, options: TopUpToOptions): PolicyBuilder {
78
+ this.payDecision = {
79
+ type: 'MAKE_WHOLE_TOPUP',
80
+ target,
81
+ base: options.base,
82
+ offsetBy: options.offsetBy,
83
+ earningType: options.earningType,
84
+ };
85
+ return this;
86
+ }
87
+
88
+ requireAdminTask(key: AdminTask | string): PolicyBuilder {
89
+ this.requirementDecisions.push({
90
+ type: 'ADMIN_TASK',
91
+ key,
92
+ blocksPayment: false,
93
+ });
94
+ return this;
95
+ }
96
+
97
+ doesNotProvideJobProtection(): PolicyBuilder {
98
+ this.jobProtectionDecision = 'NONE';
99
+ return this;
100
+ }
101
+
102
+ build(): PolicyBuilderResult {
103
+ return {
104
+ conditions: [...this.conditions],
105
+ requiredEvidence: [...this.requiredEvidence],
106
+ ...(this.entitlementDecision === undefined ? {} : { entitlement: this.entitlementDecision }),
107
+ pay: this.payDecision,
108
+ requirements: [...this.requirementDecisions],
109
+ jobProtection: this.jobProtectionDecision,
110
+ diagnostics: [],
111
+ };
112
+ }
113
+ }