@voyant-travel/inventory 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/LICENSE +201 -0
  2. package/dist/action-ledger-drift.d.ts +29 -0
  3. package/dist/action-ledger-drift.d.ts.map +1 -0
  4. package/dist/action-ledger-drift.js +338 -0
  5. package/dist/action-ledger.d.ts +104 -0
  6. package/dist/action-ledger.d.ts.map +1 -0
  7. package/dist/action-ledger.js +100 -0
  8. package/dist/authoring/builder.d.ts +37 -0
  9. package/dist/authoring/builder.d.ts.map +1 -0
  10. package/dist/authoring/builder.js +248 -0
  11. package/dist/authoring/clone-content.d.ts +38 -0
  12. package/dist/authoring/clone-content.d.ts.map +1 -0
  13. package/dist/authoring/clone-content.js +367 -0
  14. package/dist/authoring/clone-pricing.d.ts +9 -0
  15. package/dist/authoring/clone-pricing.d.ts.map +1 -0
  16. package/dist/authoring/clone-pricing.js +242 -0
  17. package/dist/authoring/clone.d.ts +45 -0
  18. package/dist/authoring/clone.d.ts.map +1 -0
  19. package/dist/authoring/clone.js +142 -0
  20. package/dist/authoring/errors.d.ts +21 -0
  21. package/dist/authoring/errors.d.ts.map +1 -0
  22. package/dist/authoring/errors.js +13 -0
  23. package/dist/authoring/extension.d.ts +248 -0
  24. package/dist/authoring/extension.d.ts.map +1 -0
  25. package/dist/authoring/extension.js +116 -0
  26. package/dist/authoring/index.d.ts +12 -0
  27. package/dist/authoring/index.d.ts.map +1 -0
  28. package/dist/authoring/index.js +11 -0
  29. package/dist/authoring/schema.d.ts +85 -0
  30. package/dist/authoring/schema.d.ts.map +1 -0
  31. package/dist/authoring/schema.js +16 -0
  32. package/dist/authoring/service.d.ts +28 -0
  33. package/dist/authoring/service.d.ts.map +1 -0
  34. package/dist/authoring/service.js +66 -0
  35. package/dist/authoring/spec.d.ts +524 -0
  36. package/dist/authoring/spec.d.ts.map +1 -0
  37. package/dist/authoring/spec.js +167 -0
  38. package/dist/authoring/validate.d.ts +17 -0
  39. package/dist/authoring/validate.d.ts.map +1 -0
  40. package/dist/authoring/validate.js +83 -0
  41. package/dist/authoring.d.ts +2 -0
  42. package/dist/authoring.d.ts.map +1 -0
  43. package/dist/authoring.js +1 -0
  44. package/dist/booking-engine/handler-support.d.ts +91 -0
  45. package/dist/booking-engine/handler-support.d.ts.map +1 -0
  46. package/dist/booking-engine/handler-support.js +355 -0
  47. package/dist/booking-engine/handler.d.ts +404 -0
  48. package/dist/booking-engine/handler.d.ts.map +1 -0
  49. package/dist/booking-engine/handler.js +398 -0
  50. package/dist/booking-engine/index.d.ts +8 -0
  51. package/dist/booking-engine/index.d.ts.map +1 -0
  52. package/dist/booking-engine/index.js +7 -0
  53. package/dist/booking-engine.d.ts +2 -0
  54. package/dist/booking-engine.d.ts.map +1 -0
  55. package/dist/booking-engine.js +1 -0
  56. package/dist/booking-extension.d.ts +278 -0
  57. package/dist/booking-extension.d.ts.map +1 -0
  58. package/dist/booking-extension.js +161 -0
  59. package/dist/catalog-policy-departures.d.ts +52 -0
  60. package/dist/catalog-policy-departures.d.ts.map +1 -0
  61. package/dist/catalog-policy-departures.js +169 -0
  62. package/dist/catalog-policy-destinations.d.ts +43 -0
  63. package/dist/catalog-policy-destinations.d.ts.map +1 -0
  64. package/dist/catalog-policy-destinations.js +165 -0
  65. package/dist/catalog-policy-pricing.d.ts +55 -0
  66. package/dist/catalog-policy-pricing.d.ts.map +1 -0
  67. package/dist/catalog-policy-pricing.js +109 -0
  68. package/dist/catalog-policy-promotions.d.ts +52 -0
  69. package/dist/catalog-policy-promotions.d.ts.map +1 -0
  70. package/dist/catalog-policy-promotions.js +270 -0
  71. package/dist/catalog-policy-taxonomy.d.ts +51 -0
  72. package/dist/catalog-policy-taxonomy.d.ts.map +1 -0
  73. package/dist/catalog-policy-taxonomy.js +191 -0
  74. package/dist/catalog-policy.d.ts +33 -0
  75. package/dist/catalog-policy.d.ts.map +1 -0
  76. package/dist/catalog-policy.js +733 -0
  77. package/dist/content-shape.d.ts +15 -0
  78. package/dist/content-shape.d.ts.map +1 -0
  79. package/dist/content-shape.js +28 -0
  80. package/dist/draft-shape.d.ts +43 -0
  81. package/dist/draft-shape.d.ts.map +1 -0
  82. package/dist/draft-shape.js +48 -0
  83. package/dist/events.d.ts +37 -0
  84. package/dist/events.d.ts.map +1 -0
  85. package/dist/events.js +32 -0
  86. package/dist/extras/catalog-policy.d.ts +30 -0
  87. package/dist/extras/catalog-policy.d.ts.map +1 -0
  88. package/dist/extras/catalog-policy.js +319 -0
  89. package/dist/extras/content-shape.d.ts +5 -0
  90. package/dist/extras/content-shape.d.ts.map +1 -0
  91. package/dist/extras/content-shape.js +13 -0
  92. package/dist/extras/draft-shape.d.ts +34 -0
  93. package/dist/extras/draft-shape.d.ts.map +1 -0
  94. package/dist/extras/draft-shape.js +69 -0
  95. package/dist/extras/routes.d.ts +380 -0
  96. package/dist/extras/routes.d.ts.map +1 -0
  97. package/dist/extras/routes.js +59 -0
  98. package/dist/extras/schema-sourced-content.d.ts +254 -0
  99. package/dist/extras/schema-sourced-content.d.ts.map +1 -0
  100. package/dist/extras/schema-sourced-content.js +45 -0
  101. package/dist/extras/schema.d.ts +628 -0
  102. package/dist/extras/schema.d.ts.map +1 -0
  103. package/dist/extras/schema.js +87 -0
  104. package/dist/extras/service-catalog-plane.d.ts +77 -0
  105. package/dist/extras/service-catalog-plane.d.ts.map +1 -0
  106. package/dist/extras/service-catalog-plane.js +219 -0
  107. package/dist/extras/service-content-synthesizer.d.ts +41 -0
  108. package/dist/extras/service-content-synthesizer.d.ts.map +1 -0
  109. package/dist/extras/service-content-synthesizer.js +138 -0
  110. package/dist/extras/service-content.d.ts +48 -0
  111. package/dist/extras/service-content.d.ts.map +1 -0
  112. package/dist/extras/service-content.js +253 -0
  113. package/dist/extras/service.d.ts +185 -0
  114. package/dist/extras/service.d.ts.map +1 -0
  115. package/dist/extras/service.js +96 -0
  116. package/dist/extras/validation.d.ts +437 -0
  117. package/dist/extras/validation.d.ts.map +1 -0
  118. package/dist/extras/validation.js +149 -0
  119. package/dist/extras.d.ts +267 -0
  120. package/dist/extras.d.ts.map +1 -0
  121. package/dist/extras.js +19 -0
  122. package/dist/index.d.ts +22 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +32 -0
  125. package/dist/interface.d.ts +5869 -0
  126. package/dist/interface.d.ts.map +1 -0
  127. package/dist/interface.js +54 -0
  128. package/dist/public-routes.d.ts +2 -0
  129. package/dist/public-routes.d.ts.map +1 -0
  130. package/dist/public-routes.js +1 -0
  131. package/dist/public-validation.d.ts +2 -0
  132. package/dist/public-validation.d.ts.map +1 -0
  133. package/dist/public-validation.js +1 -0
  134. package/dist/read-model.d.ts +25 -0
  135. package/dist/read-model.d.ts.map +1 -0
  136. package/dist/read-model.js +99 -0
  137. package/dist/route-env.d.ts +22 -0
  138. package/dist/route-env.d.ts.map +1 -0
  139. package/dist/route-env.js +1 -0
  140. package/dist/routes-associations.d.ts +164 -0
  141. package/dist/routes-associations.d.ts.map +1 -0
  142. package/dist/routes-associations.js +100 -0
  143. package/dist/routes-catalog.d.ts +436 -0
  144. package/dist/routes-catalog.d.ts.map +1 -0
  145. package/dist/routes-catalog.js +104 -0
  146. package/dist/routes-configuration.d.ts +773 -0
  147. package/dist/routes-configuration.d.ts.map +1 -0
  148. package/dist/routes-configuration.js +364 -0
  149. package/dist/routes-content.d.ts +74 -0
  150. package/dist/routes-content.d.ts.map +1 -0
  151. package/dist/routes-content.js +117 -0
  152. package/dist/routes-core.d.ts +331 -0
  153. package/dist/routes-core.d.ts.map +1 -0
  154. package/dist/routes-core.js +95 -0
  155. package/dist/routes-itinerary.d.ts +759 -0
  156. package/dist/routes-itinerary.d.ts.map +1 -0
  157. package/dist/routes-itinerary.js +387 -0
  158. package/dist/routes-maintenance.d.ts +32 -0
  159. package/dist/routes-maintenance.d.ts.map +1 -0
  160. package/dist/routes-maintenance.js +14 -0
  161. package/dist/routes-media.d.ts +634 -0
  162. package/dist/routes-media.d.ts.map +1 -0
  163. package/dist/routes-media.js +245 -0
  164. package/dist/routes-merchandising.d.ts +1120 -0
  165. package/dist/routes-merchandising.d.ts.map +1 -0
  166. package/dist/routes-merchandising.js +377 -0
  167. package/dist/routes-options.d.ts +363 -0
  168. package/dist/routes-options.d.ts.map +1 -0
  169. package/dist/routes-options.js +173 -0
  170. package/dist/routes-public.d.ts +776 -0
  171. package/dist/routes-public.d.ts.map +1 -0
  172. package/dist/routes-public.js +119 -0
  173. package/dist/routes-translations.d.ts +489 -0
  174. package/dist/routes-translations.d.ts.map +1 -0
  175. package/dist/routes-translations.js +258 -0
  176. package/dist/routes.d.ts +5097 -0
  177. package/dist/routes.d.ts.map +1 -0
  178. package/dist/routes.js +64 -0
  179. package/dist/schema-core.d.ts +1238 -0
  180. package/dist/schema-core.d.ts.map +1 -0
  181. package/dist/schema-core.js +157 -0
  182. package/dist/schema-itinerary.d.ts +1169 -0
  183. package/dist/schema-itinerary.d.ts.map +1 -0
  184. package/dist/schema-itinerary.js +130 -0
  185. package/dist/schema-relations.d.ts +117 -0
  186. package/dist/schema-relations.d.ts.map +1 -0
  187. package/dist/schema-relations.js +192 -0
  188. package/dist/schema-settings.d.ts +1800 -0
  189. package/dist/schema-settings.d.ts.map +1 -0
  190. package/dist/schema-settings.js +220 -0
  191. package/dist/schema-shared.d.ts +15 -0
  192. package/dist/schema-shared.d.ts.map +1 -0
  193. package/dist/schema-shared.js +91 -0
  194. package/dist/schema-sourced-content.d.ts +262 -0
  195. package/dist/schema-sourced-content.d.ts.map +1 -0
  196. package/dist/schema-sourced-content.js +69 -0
  197. package/dist/schema-taxonomy.d.ts +1363 -0
  198. package/dist/schema-taxonomy.d.ts.map +1 -0
  199. package/dist/schema-taxonomy.js +203 -0
  200. package/dist/schema.d.ts +10 -0
  201. package/dist/schema.d.ts.map +1 -0
  202. package/dist/schema.js +9 -0
  203. package/dist/service-aggregates.d.ts +29 -0
  204. package/dist/service-aggregates.d.ts.map +1 -0
  205. package/dist/service-aggregates.js +56 -0
  206. package/dist/service-catalog-plane-destinations.d.ts +30 -0
  207. package/dist/service-catalog-plane-destinations.d.ts.map +1 -0
  208. package/dist/service-catalog-plane-destinations.js +143 -0
  209. package/dist/service-catalog-plane-taxonomy.d.ts +73 -0
  210. package/dist/service-catalog-plane-taxonomy.d.ts.map +1 -0
  211. package/dist/service-catalog-plane-taxonomy.js +242 -0
  212. package/dist/service-catalog-plane.d.ts +179 -0
  213. package/dist/service-catalog-plane.d.ts.map +1 -0
  214. package/dist/service-catalog-plane.js +431 -0
  215. package/dist/service-catalog.d.ts +251 -0
  216. package/dist/service-catalog.d.ts.map +1 -0
  217. package/dist/service-catalog.js +517 -0
  218. package/dist/service-configuration.d.ts +261 -0
  219. package/dist/service-configuration.d.ts.map +1 -0
  220. package/dist/service-configuration.js +343 -0
  221. package/dist/service-content-owned.d.ts +68 -0
  222. package/dist/service-content-owned.d.ts.map +1 -0
  223. package/dist/service-content-owned.js +329 -0
  224. package/dist/service-content-synthesizer.d.ts +90 -0
  225. package/dist/service-content-synthesizer.d.ts.map +1 -0
  226. package/dist/service-content-synthesizer.js +178 -0
  227. package/dist/service-content.d.ts +106 -0
  228. package/dist/service-content.d.ts.map +1 -0
  229. package/dist/service-content.js +388 -0
  230. package/dist/service-core.d.ts +194 -0
  231. package/dist/service-core.d.ts.map +1 -0
  232. package/dist/service-core.js +213 -0
  233. package/dist/service-delivery-formats.d.ts +58 -0
  234. package/dist/service-delivery-formats.d.ts.map +1 -0
  235. package/dist/service-delivery-formats.js +107 -0
  236. package/dist/service-destinations.d.ts +223 -0
  237. package/dist/service-destinations.d.ts.map +1 -0
  238. package/dist/service-destinations.js +310 -0
  239. package/dist/service-itinerary-history.d.ts +457 -0
  240. package/dist/service-itinerary-history.d.ts.map +1 -0
  241. package/dist/service-itinerary-history.js +135 -0
  242. package/dist/service-itinerary.d.ts +1149 -0
  243. package/dist/service-itinerary.d.ts.map +1 -0
  244. package/dist/service-itinerary.js +419 -0
  245. package/dist/service-media.d.ts +272 -0
  246. package/dist/service-media.d.ts.map +1 -0
  247. package/dist/service-media.js +320 -0
  248. package/dist/service-merchandising.d.ts +184 -0
  249. package/dist/service-merchandising.d.ts.map +1 -0
  250. package/dist/service-merchandising.js +181 -0
  251. package/dist/service-option-translations.d.ts +268 -0
  252. package/dist/service-option-translations.d.ts.map +1 -0
  253. package/dist/service-option-translations.js +300 -0
  254. package/dist/service-options.d.ts +181 -0
  255. package/dist/service-options.d.ts.map +1 -0
  256. package/dist/service-options.js +179 -0
  257. package/dist/service-product-destinations.d.ts +37 -0
  258. package/dist/service-product-destinations.d.ts.map +1 -0
  259. package/dist/service-product-destinations.js +94 -0
  260. package/dist/service-public.d.ts +664 -0
  261. package/dist/service-public.d.ts.map +1 -0
  262. package/dist/service-public.js +374 -0
  263. package/dist/service-taxonomy.d.ts +197 -0
  264. package/dist/service-taxonomy.d.ts.map +1 -0
  265. package/dist/service-taxonomy.js +221 -0
  266. package/dist/service.d.ts +3929 -0
  267. package/dist/service.d.ts.map +1 -0
  268. package/dist/service.js +28 -0
  269. package/dist/tasks/brochure-printers.d.ts +31 -0
  270. package/dist/tasks/brochure-printers.d.ts.map +1 -0
  271. package/dist/tasks/brochure-printers.js +149 -0
  272. package/dist/tasks/brochure-templates.d.ts +36 -0
  273. package/dist/tasks/brochure-templates.d.ts.map +1 -0
  274. package/dist/tasks/brochure-templates.js +110 -0
  275. package/dist/tasks/brochures.d.ts +43 -0
  276. package/dist/tasks/brochures.d.ts.map +1 -0
  277. package/dist/tasks/brochures.js +72 -0
  278. package/dist/tasks/generate-pdf.d.ts +8 -0
  279. package/dist/tasks/generate-pdf.d.ts.map +1 -0
  280. package/dist/tasks/generate-pdf.js +106 -0
  281. package/dist/tasks/index.d.ts +5 -0
  282. package/dist/tasks/index.d.ts.map +1 -0
  283. package/dist/tasks/index.js +4 -0
  284. package/dist/tasks/pdf-text.d.ts +2 -0
  285. package/dist/tasks/pdf-text.d.ts.map +1 -0
  286. package/dist/tasks/pdf-text.js +40 -0
  287. package/dist/tasks.d.ts +2 -0
  288. package/dist/tasks.d.ts.map +1 -0
  289. package/dist/tasks.js +1 -0
  290. package/dist/validation-catalog.d.ts +2 -0
  291. package/dist/validation-catalog.d.ts.map +1 -0
  292. package/dist/validation-catalog.js +3 -0
  293. package/dist/validation-config.d.ts +2 -0
  294. package/dist/validation-config.d.ts.map +1 -0
  295. package/dist/validation-config.js +3 -0
  296. package/dist/validation-content.d.ts +2 -0
  297. package/dist/validation-content.d.ts.map +1 -0
  298. package/dist/validation-content.js +3 -0
  299. package/dist/validation-core.d.ts +2 -0
  300. package/dist/validation-core.d.ts.map +1 -0
  301. package/dist/validation-core.js +3 -0
  302. package/dist/validation-public.d.ts +2 -0
  303. package/dist/validation-public.d.ts.map +1 -0
  304. package/dist/validation-public.js +3 -0
  305. package/dist/validation-shared.d.ts +2 -0
  306. package/dist/validation-shared.d.ts.map +1 -0
  307. package/dist/validation-shared.js +3 -0
  308. package/dist/validation.d.ts +2 -0
  309. package/dist/validation.d.ts.map +1 -0
  310. package/dist/validation.js +3 -0
  311. package/package.json +204 -0
@@ -0,0 +1,437 @@
1
+ import { z } from "zod";
2
+ export declare const extraSelectionTypeSchema: z.ZodEnum<{
3
+ required: "required";
4
+ optional: "optional";
5
+ unavailable: "unavailable";
6
+ default_selected: "default_selected";
7
+ }>;
8
+ export declare const extraPricingModeSchema: z.ZodEnum<{
9
+ on_request: "on_request";
10
+ per_booking: "per_booking";
11
+ included: "included";
12
+ per_person: "per_person";
13
+ quantity_based: "quantity_based";
14
+ free: "free";
15
+ }>;
16
+ export declare const bookingExtraStatusSchema: z.ZodEnum<{
17
+ cancelled: "cancelled";
18
+ draft: "draft";
19
+ confirmed: "confirmed";
20
+ selected: "selected";
21
+ fulfilled: "fulfilled";
22
+ }>;
23
+ export declare const extraCollectionModeSchema: z.ZodEnum<{
24
+ none: "none";
25
+ external: "external";
26
+ included: "included";
27
+ booking_total: "booking_total";
28
+ cash_on_trip: "cash_on_trip";
29
+ }>;
30
+ export declare const extraParticipantSelectionStatusSchema: z.ZodEnum<{
31
+ cancelled: "cancelled";
32
+ no_show: "no_show";
33
+ selected: "selected";
34
+ fulfilled: "fulfilled";
35
+ }>;
36
+ export declare const extraCollectionStatusSchema: z.ZodEnum<{
37
+ pending: "pending";
38
+ not_required: "not_required";
39
+ collected: "collected";
40
+ waived: "waived";
41
+ refunded: "refunded";
42
+ }>;
43
+ export declare const productExtraCoreSchema: z.ZodObject<{
44
+ productId: z.ZodString;
45
+ supplierId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
+ name: z.ZodString;
48
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ selectionType: z.ZodDefault<z.ZodEnum<{
50
+ required: "required";
51
+ optional: "optional";
52
+ unavailable: "unavailable";
53
+ default_selected: "default_selected";
54
+ }>>;
55
+ pricingMode: z.ZodDefault<z.ZodEnum<{
56
+ on_request: "on_request";
57
+ per_booking: "per_booking";
58
+ included: "included";
59
+ per_person: "per_person";
60
+ quantity_based: "quantity_based";
61
+ free: "free";
62
+ }>>;
63
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
64
+ collectionMode: z.ZodDefault<z.ZodEnum<{
65
+ none: "none";
66
+ external: "external";
67
+ included: "included";
68
+ booking_total: "booking_total";
69
+ cash_on_trip: "cash_on_trip";
70
+ }>>;
71
+ showOnSlotManifest: z.ZodDefault<z.ZodBoolean>;
72
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
73
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
74
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
75
+ active: z.ZodDefault<z.ZodBoolean>;
76
+ sortOrder: z.ZodDefault<z.ZodNumber>;
77
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
78
+ }, z.core.$strip>;
79
+ export declare const insertProductExtraSchema: z.ZodObject<{
80
+ productId: z.ZodString;
81
+ supplierId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
+ code: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ name: z.ZodString;
84
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
85
+ selectionType: z.ZodDefault<z.ZodEnum<{
86
+ required: "required";
87
+ optional: "optional";
88
+ unavailable: "unavailable";
89
+ default_selected: "default_selected";
90
+ }>>;
91
+ pricingMode: z.ZodDefault<z.ZodEnum<{
92
+ on_request: "on_request";
93
+ per_booking: "per_booking";
94
+ included: "included";
95
+ per_person: "per_person";
96
+ quantity_based: "quantity_based";
97
+ free: "free";
98
+ }>>;
99
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
100
+ collectionMode: z.ZodDefault<z.ZodEnum<{
101
+ none: "none";
102
+ external: "external";
103
+ included: "included";
104
+ booking_total: "booking_total";
105
+ cash_on_trip: "cash_on_trip";
106
+ }>>;
107
+ showOnSlotManifest: z.ZodDefault<z.ZodBoolean>;
108
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
109
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
110
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
111
+ active: z.ZodDefault<z.ZodBoolean>;
112
+ sortOrder: z.ZodDefault<z.ZodNumber>;
113
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
114
+ }, z.core.$strip>;
115
+ export declare const updateProductExtraSchema: z.ZodObject<{
116
+ productId: z.ZodOptional<z.ZodString>;
117
+ supplierId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
118
+ code: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
119
+ name: z.ZodOptional<z.ZodString>;
120
+ description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
121
+ selectionType: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
122
+ required: "required";
123
+ optional: "optional";
124
+ unavailable: "unavailable";
125
+ default_selected: "default_selected";
126
+ }>>>;
127
+ pricingMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
128
+ on_request: "on_request";
129
+ per_booking: "per_booking";
130
+ included: "included";
131
+ per_person: "per_person";
132
+ quantity_based: "quantity_based";
133
+ free: "free";
134
+ }>>>;
135
+ pricedPerPerson: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
136
+ collectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
137
+ none: "none";
138
+ external: "external";
139
+ included: "included";
140
+ booking_total: "booking_total";
141
+ cash_on_trip: "cash_on_trip";
142
+ }>>>;
143
+ showOnSlotManifest: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
144
+ minQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
145
+ maxQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
146
+ defaultQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
147
+ active: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
148
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
149
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
150
+ }, z.core.$strip>;
151
+ export declare const productExtraListQuerySchema: z.ZodObject<{
152
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
153
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
154
+ productId: z.ZodOptional<z.ZodString>;
155
+ supplierId: z.ZodOptional<z.ZodString>;
156
+ active: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
157
+ 0: "0";
158
+ 1: "1";
159
+ true: "true";
160
+ false: "false";
161
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>;
162
+ search: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strip>;
164
+ export declare const optionExtraConfigCoreSchema: z.ZodObject<{
165
+ optionId: z.ZodString;
166
+ productExtraId: z.ZodString;
167
+ selectionType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
168
+ required: "required";
169
+ optional: "optional";
170
+ unavailable: "unavailable";
171
+ default_selected: "default_selected";
172
+ }>>>;
173
+ pricingMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
174
+ on_request: "on_request";
175
+ per_booking: "per_booking";
176
+ included: "included";
177
+ per_person: "per_person";
178
+ quantity_based: "quantity_based";
179
+ free: "free";
180
+ }>>>;
181
+ pricedPerPerson: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
182
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
183
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
184
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
185
+ isDefault: z.ZodDefault<z.ZodBoolean>;
186
+ active: z.ZodDefault<z.ZodBoolean>;
187
+ sortOrder: z.ZodDefault<z.ZodNumber>;
188
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
189
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
190
+ }, z.core.$strip>;
191
+ export declare const insertOptionExtraConfigSchema: z.ZodObject<{
192
+ optionId: z.ZodString;
193
+ productExtraId: z.ZodString;
194
+ selectionType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
195
+ required: "required";
196
+ optional: "optional";
197
+ unavailable: "unavailable";
198
+ default_selected: "default_selected";
199
+ }>>>;
200
+ pricingMode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
201
+ on_request: "on_request";
202
+ per_booking: "per_booking";
203
+ included: "included";
204
+ per_person: "per_person";
205
+ quantity_based: "quantity_based";
206
+ free: "free";
207
+ }>>>;
208
+ pricedPerPerson: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
209
+ minQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
210
+ maxQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
211
+ defaultQuantity: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
212
+ isDefault: z.ZodDefault<z.ZodBoolean>;
213
+ active: z.ZodDefault<z.ZodBoolean>;
214
+ sortOrder: z.ZodDefault<z.ZodNumber>;
215
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
216
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
217
+ }, z.core.$strip>;
218
+ export declare const updateOptionExtraConfigSchema: z.ZodObject<{
219
+ optionId: z.ZodOptional<z.ZodString>;
220
+ productExtraId: z.ZodOptional<z.ZodString>;
221
+ selectionType: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
222
+ required: "required";
223
+ optional: "optional";
224
+ unavailable: "unavailable";
225
+ default_selected: "default_selected";
226
+ }>>>>;
227
+ pricingMode: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
228
+ on_request: "on_request";
229
+ per_booking: "per_booking";
230
+ included: "included";
231
+ per_person: "per_person";
232
+ quantity_based: "quantity_based";
233
+ free: "free";
234
+ }>>>>;
235
+ pricedPerPerson: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodBoolean>>>;
236
+ minQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
237
+ maxQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
238
+ defaultQuantity: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
239
+ isDefault: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
240
+ active: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
241
+ sortOrder: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
242
+ notes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
243
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
244
+ }, z.core.$strip>;
245
+ export declare const optionExtraConfigListQuerySchema: z.ZodObject<{
246
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
247
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
248
+ optionId: z.ZodOptional<z.ZodString>;
249
+ productExtraId: z.ZodOptional<z.ZodString>;
250
+ active: z.ZodOptional<z.ZodPipe<z.ZodEnum<{
251
+ 0: "0";
252
+ 1: "1";
253
+ true: "true";
254
+ false: "false";
255
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>;
256
+ }, z.core.$strip>;
257
+ export declare const bookingExtraCoreSchema: z.ZodObject<{
258
+ bookingId: z.ZodString;
259
+ productExtraId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
260
+ optionExtraConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
261
+ name: z.ZodString;
262
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
263
+ status: z.ZodDefault<z.ZodEnum<{
264
+ cancelled: "cancelled";
265
+ draft: "draft";
266
+ confirmed: "confirmed";
267
+ selected: "selected";
268
+ fulfilled: "fulfilled";
269
+ }>>;
270
+ pricingMode: z.ZodDefault<z.ZodEnum<{
271
+ on_request: "on_request";
272
+ per_booking: "per_booking";
273
+ included: "included";
274
+ per_person: "per_person";
275
+ quantity_based: "quantity_based";
276
+ free: "free";
277
+ }>>;
278
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
279
+ quantity: z.ZodDefault<z.ZodNumber>;
280
+ sellCurrency: z.ZodString;
281
+ unitSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
282
+ totalSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
283
+ costCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
284
+ unitCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
285
+ totalCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
286
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
287
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
288
+ }, z.core.$strip>;
289
+ export declare const insertBookingExtraSchema: z.ZodObject<{
290
+ bookingId: z.ZodString;
291
+ productExtraId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
292
+ optionExtraConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
293
+ name: z.ZodString;
294
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
295
+ status: z.ZodDefault<z.ZodEnum<{
296
+ cancelled: "cancelled";
297
+ draft: "draft";
298
+ confirmed: "confirmed";
299
+ selected: "selected";
300
+ fulfilled: "fulfilled";
301
+ }>>;
302
+ pricingMode: z.ZodDefault<z.ZodEnum<{
303
+ on_request: "on_request";
304
+ per_booking: "per_booking";
305
+ included: "included";
306
+ per_person: "per_person";
307
+ quantity_based: "quantity_based";
308
+ free: "free";
309
+ }>>;
310
+ pricedPerPerson: z.ZodDefault<z.ZodBoolean>;
311
+ quantity: z.ZodDefault<z.ZodNumber>;
312
+ sellCurrency: z.ZodString;
313
+ unitSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
314
+ totalSellAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
315
+ costCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
316
+ unitCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
317
+ totalCostAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
318
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
319
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
320
+ }, z.core.$strip>;
321
+ export declare const updateBookingExtraSchema: z.ZodObject<{
322
+ bookingId: z.ZodOptional<z.ZodString>;
323
+ productExtraId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
324
+ optionExtraConfigId: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
325
+ name: z.ZodOptional<z.ZodString>;
326
+ description: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
327
+ status: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
328
+ cancelled: "cancelled";
329
+ draft: "draft";
330
+ confirmed: "confirmed";
331
+ selected: "selected";
332
+ fulfilled: "fulfilled";
333
+ }>>>;
334
+ pricingMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
335
+ on_request: "on_request";
336
+ per_booking: "per_booking";
337
+ included: "included";
338
+ per_person: "per_person";
339
+ quantity_based: "quantity_based";
340
+ free: "free";
341
+ }>>>;
342
+ pricedPerPerson: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
343
+ quantity: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
344
+ sellCurrency: z.ZodOptional<z.ZodString>;
345
+ unitSellAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
346
+ totalSellAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
347
+ costCurrency: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
348
+ unitCostAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
349
+ totalCostAmountCents: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
350
+ notes: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
351
+ metadata: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
352
+ }, z.core.$strip>;
353
+ export declare const bookingExtraListQuerySchema: z.ZodObject<{
354
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
355
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
356
+ bookingId: z.ZodOptional<z.ZodString>;
357
+ productExtraId: z.ZodOptional<z.ZodString>;
358
+ optionExtraConfigId: z.ZodOptional<z.ZodString>;
359
+ status: z.ZodOptional<z.ZodEnum<{
360
+ cancelled: "cancelled";
361
+ draft: "draft";
362
+ confirmed: "confirmed";
363
+ selected: "selected";
364
+ fulfilled: "fulfilled";
365
+ }>>;
366
+ }, z.core.$strip>;
367
+ export declare const slotExtraManifestQuerySchema: z.ZodObject<{
368
+ includeInactiveExtras: z.ZodDefault<z.ZodPipe<z.ZodEnum<{
369
+ 0: "0";
370
+ 1: "1";
371
+ true: "true";
372
+ false: "false";
373
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>;
374
+ }, z.core.$strip>;
375
+ export declare const slotExtraSelectionPatchSchema: z.ZodObject<{
376
+ bookingId: z.ZodString;
377
+ travelerId: z.ZodString;
378
+ productExtraId: z.ZodString;
379
+ optionExtraConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
380
+ status: z.ZodDefault<z.ZodEnum<{
381
+ cancelled: "cancelled";
382
+ no_show: "no_show";
383
+ selected: "selected";
384
+ fulfilled: "fulfilled";
385
+ }>>;
386
+ collectionStatus: z.ZodOptional<z.ZodEnum<{
387
+ pending: "pending";
388
+ not_required: "not_required";
389
+ collected: "collected";
390
+ waived: "waived";
391
+ refunded: "refunded";
392
+ }>>;
393
+ collectionCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
394
+ collectionAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
395
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
396
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
397
+ }, z.core.$strip>;
398
+ export declare const slotExtraSelectionBulkSchema: z.ZodObject<{
399
+ selections: z.ZodArray<z.ZodObject<{
400
+ bookingId: z.ZodString;
401
+ travelerId: z.ZodString;
402
+ productExtraId: z.ZodString;
403
+ optionExtraConfigId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
404
+ status: z.ZodDefault<z.ZodEnum<{
405
+ cancelled: "cancelled";
406
+ no_show: "no_show";
407
+ selected: "selected";
408
+ fulfilled: "fulfilled";
409
+ }>>;
410
+ collectionStatus: z.ZodOptional<z.ZodEnum<{
411
+ pending: "pending";
412
+ not_required: "not_required";
413
+ collected: "collected";
414
+ waived: "waived";
415
+ refunded: "refunded";
416
+ }>>;
417
+ collectionCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
418
+ collectionAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
419
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
420
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
421
+ }, z.core.$strip>>;
422
+ }, z.core.$strip>;
423
+ export declare const slotExtraCollectionBulkSchema: z.ZodObject<{
424
+ productExtraId: z.ZodString;
425
+ travelerIds: z.ZodArray<z.ZodString>;
426
+ collectionStatus: z.ZodEnum<{
427
+ pending: "pending";
428
+ not_required: "not_required";
429
+ collected: "collected";
430
+ waived: "waived";
431
+ refunded: "refunded";
432
+ }>;
433
+ collectionCurrency: z.ZodOptional<z.ZodNullable<z.ZodString>>;
434
+ collectionAmountCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
435
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
436
+ }, z.core.$strip>;
437
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/extras/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,wBAAwB;;;;;EAKnC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;EAOjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;EAMpC,CAAA;AAEF,eAAO,MAAM,qCAAqC;;;;;EAKhD,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyB,CAAA;AAC9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmC,CAAA;AACxE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;iBAKtC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;iBActC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAA;AACxE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwC,CAAA;AAClF,eAAO,MAAM,gCAAgC;;;;;;;;;;;iBAI3C,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBjC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyB,CAAA;AAC9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAmC,CAAA;AACxE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;iBAKtC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;iBAEvC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;iBAWxC,CAAA;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;iBAEvC,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;iBAOxC,CAAA"}
@@ -0,0 +1,149 @@
1
+ import { booleanQueryParam } from "@voyant-travel/db/helpers";
2
+ import { z } from "zod";
3
+ const paginationSchema = z.object({
4
+ limit: z.coerce.number().int().min(1).max(200).default(50),
5
+ offset: z.coerce.number().int().min(0).default(0),
6
+ });
7
+ const moneySchema = z.number().int().min(0).nullable().optional();
8
+ export const extraSelectionTypeSchema = z.enum([
9
+ "optional",
10
+ "required",
11
+ "default_selected",
12
+ "unavailable",
13
+ ]);
14
+ export const extraPricingModeSchema = z.enum([
15
+ "included",
16
+ "per_person",
17
+ "per_booking",
18
+ "quantity_based",
19
+ "on_request",
20
+ "free",
21
+ ]);
22
+ export const bookingExtraStatusSchema = z.enum([
23
+ "draft",
24
+ "selected",
25
+ "confirmed",
26
+ "cancelled",
27
+ "fulfilled",
28
+ ]);
29
+ export const extraCollectionModeSchema = z.enum([
30
+ "booking_total",
31
+ "cash_on_trip",
32
+ "external",
33
+ "included",
34
+ "none",
35
+ ]);
36
+ export const extraParticipantSelectionStatusSchema = z.enum([
37
+ "selected",
38
+ "cancelled",
39
+ "fulfilled",
40
+ "no_show",
41
+ ]);
42
+ export const extraCollectionStatusSchema = z.enum([
43
+ "not_required",
44
+ "pending",
45
+ "collected",
46
+ "waived",
47
+ "refunded",
48
+ ]);
49
+ export const productExtraCoreSchema = z.object({
50
+ productId: z.string(),
51
+ supplierId: z.string().nullable().optional(),
52
+ code: z.string().max(100).nullable().optional(),
53
+ name: z.string().min(1).max(255),
54
+ description: z.string().nullable().optional(),
55
+ selectionType: extraSelectionTypeSchema.default("optional"),
56
+ pricingMode: extraPricingModeSchema.default("per_booking"),
57
+ pricedPerPerson: z.boolean().default(false),
58
+ collectionMode: extraCollectionModeSchema.default("booking_total"),
59
+ showOnSlotManifest: z.boolean().default(true),
60
+ minQuantity: z.number().int().min(0).nullable().optional(),
61
+ maxQuantity: z.number().int().min(0).nullable().optional(),
62
+ defaultQuantity: z.number().int().min(0).nullable().optional(),
63
+ active: z.boolean().default(true),
64
+ sortOrder: z.number().int().default(0),
65
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
66
+ });
67
+ export const insertProductExtraSchema = productExtraCoreSchema;
68
+ export const updateProductExtraSchema = productExtraCoreSchema.partial();
69
+ export const productExtraListQuerySchema = paginationSchema.extend({
70
+ productId: z.string().optional(),
71
+ supplierId: z.string().optional(),
72
+ active: booleanQueryParam.optional(),
73
+ search: z.string().optional(),
74
+ });
75
+ export const optionExtraConfigCoreSchema = z.object({
76
+ optionId: z.string(),
77
+ productExtraId: z.string(),
78
+ selectionType: extraSelectionTypeSchema.nullable().optional(),
79
+ pricingMode: extraPricingModeSchema.nullable().optional(),
80
+ pricedPerPerson: z.boolean().nullable().optional(),
81
+ minQuantity: z.number().int().min(0).nullable().optional(),
82
+ maxQuantity: z.number().int().min(0).nullable().optional(),
83
+ defaultQuantity: z.number().int().min(0).nullable().optional(),
84
+ isDefault: z.boolean().default(false),
85
+ active: z.boolean().default(true),
86
+ sortOrder: z.number().int().default(0),
87
+ notes: z.string().nullable().optional(),
88
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
89
+ });
90
+ export const insertOptionExtraConfigSchema = optionExtraConfigCoreSchema;
91
+ export const updateOptionExtraConfigSchema = optionExtraConfigCoreSchema.partial();
92
+ export const optionExtraConfigListQuerySchema = paginationSchema.extend({
93
+ optionId: z.string().optional(),
94
+ productExtraId: z.string().optional(),
95
+ active: booleanQueryParam.optional(),
96
+ });
97
+ export const bookingExtraCoreSchema = z.object({
98
+ bookingId: z.string(),
99
+ productExtraId: z.string().nullable().optional(),
100
+ optionExtraConfigId: z.string().nullable().optional(),
101
+ name: z.string().min(1).max(255),
102
+ description: z.string().nullable().optional(),
103
+ status: bookingExtraStatusSchema.default("draft"),
104
+ pricingMode: extraPricingModeSchema.default("per_booking"),
105
+ pricedPerPerson: z.boolean().default(false),
106
+ quantity: z.number().int().min(1).default(1),
107
+ sellCurrency: z.string().length(3),
108
+ unitSellAmountCents: moneySchema,
109
+ totalSellAmountCents: moneySchema,
110
+ costCurrency: z.string().length(3).nullable().optional(),
111
+ unitCostAmountCents: moneySchema,
112
+ totalCostAmountCents: moneySchema,
113
+ notes: z.string().nullable().optional(),
114
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
115
+ });
116
+ export const insertBookingExtraSchema = bookingExtraCoreSchema;
117
+ export const updateBookingExtraSchema = bookingExtraCoreSchema.partial();
118
+ export const bookingExtraListQuerySchema = paginationSchema.extend({
119
+ bookingId: z.string().optional(),
120
+ productExtraId: z.string().optional(),
121
+ optionExtraConfigId: z.string().optional(),
122
+ status: bookingExtraStatusSchema.optional(),
123
+ });
124
+ export const slotExtraManifestQuerySchema = z.object({
125
+ includeInactiveExtras: booleanQueryParam.default(false),
126
+ });
127
+ export const slotExtraSelectionPatchSchema = z.object({
128
+ bookingId: z.string().min(1),
129
+ travelerId: z.string().min(1),
130
+ productExtraId: z.string().min(1),
131
+ optionExtraConfigId: z.string().nullable().optional(),
132
+ status: extraParticipantSelectionStatusSchema.default("selected"),
133
+ collectionStatus: extraCollectionStatusSchema.optional(),
134
+ collectionCurrency: z.string().length(3).nullable().optional(),
135
+ collectionAmountCents: moneySchema,
136
+ notes: z.string().nullable().optional(),
137
+ metadata: z.record(z.string(), z.unknown()).nullable().optional(),
138
+ });
139
+ export const slotExtraSelectionBulkSchema = z.object({
140
+ selections: z.array(slotExtraSelectionPatchSchema).min(1).max(500),
141
+ });
142
+ export const slotExtraCollectionBulkSchema = z.object({
143
+ productExtraId: z.string().min(1),
144
+ travelerIds: z.array(z.string().min(1)).min(1).max(500),
145
+ collectionStatus: extraCollectionStatusSchema,
146
+ collectionCurrency: z.string().length(3).nullable().optional(),
147
+ collectionAmountCents: moneySchema,
148
+ notes: z.string().nullable().optional(),
149
+ });