@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,404 @@
1
+ /**
2
+ * Owned-arm booking handler for the `products` vertical.
3
+ * agent-quality: file-size exception -- Product booking handler keeps quote, commit, cancel, and status behavior together until booking-engine handlers are split by operation.
4
+ *
5
+ * Per `docs/architecture/booking-journey-architecture.md` §6 +
6
+ * §10 Phase A. Composes:
7
+ *
8
+ * - The products vertical's existing pricing primitives
9
+ * (`products.sellAmountCents` / `sellCurrency`) for pricing
10
+ * basis. Per-pax / per-band pricing layered in Phase C+ via
11
+ * `product_pax_pricing_tiers`.
12
+ * - `getProductContent` + `buildProductDraftShape` for the journey
13
+ * wizard's step descriptor.
14
+ * - An injected `createBooking` function for the commit path
15
+ * — keeps the Inventory-owned Product handler from depending on
16
+ * `@voyant-travel/finance` (no workspace cycle).
17
+ *
18
+ * Phase A scope (deliberately narrow):
19
+ * - Price = product.sellAmountCents × pax_count, no taxes / addons /
20
+ * accommodation / vouchers.
21
+ * - Commit goes through the bridge into `bookingsCreate`'s input
22
+ * shape — products-only, no extras / accommodations / cruises / encrypted
23
+ * travel details / snapshot graph.
24
+ *
25
+ * Phase C+ extensions land on this same handler without re-architecting
26
+ * the dispatch.
27
+ */
28
+ import { type AddonOffer, type BookingDraftShape, type OwnedBookingHandler, type OwnedHandlerContext, type PaxBandDependency, type PaxBandSpec, type ProductVariantOption, type TravelerFieldRequirement } from "@voyant-travel/catalog/booking-engine";
29
+ /**
30
+ * Subset of `bookingsCreate`'s input the bridge builds.
31
+ * Mirrors the schema in `service-booking-create.ts` — kept
32
+ * structural here so we don't pull a dependency into products.
33
+ */
34
+ export interface BookingCreateBridgeInput {
35
+ productId: string;
36
+ optionId?: string | null;
37
+ slotId?: string | null;
38
+ bookingNumber: string;
39
+ personId?: string | null;
40
+ organizationId?: string | null;
41
+ contactFirstName?: string | null;
42
+ contactLastName?: string | null;
43
+ contactEmail?: string | null;
44
+ contactPhone?: string | null;
45
+ internalNotes?: string | null;
46
+ /**
47
+ * Override the seed sellAmountCents the booking lands at. The owned
48
+ * commit passes this when the catalog booking-engine's promotion hook
49
+ * has discounted the quote — without it, customers would be charged
50
+ * the product's list price even with a successful promotion. Per
51
+ * docs/architecture/promotions-architecture.md §7.1.
52
+ */
53
+ sellAmountCentsOverride?: number | null;
54
+ /**
55
+ * Status the booking lands in. When omitted, `@voyant-travel/finance`'s
56
+ * `createBooking` defaults to `"draft"`. Callers that compose bookings
57
+ * via the catalog booking engine (e.g. trips reserve, journey
58
+ * commit) typically want `"awaiting_payment"` so the booking shows in
59
+ * the operator's queue with a payable balance. The handler forwards
60
+ * whatever value is passed via `commit`'s `request.parameters.initialStatus`.
61
+ */
62
+ initialStatus?: "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "cancelled" | "expired";
63
+ travelers?: Array<{
64
+ firstName: string;
65
+ lastName: string;
66
+ email?: string | null;
67
+ phone?: string | null;
68
+ personId?: string | null;
69
+ participantType: "traveler" | "occupant" | "other";
70
+ travelerCategory?: "adult" | "child" | "infant" | "senior" | "other" | null;
71
+ isPrimary?: boolean | null;
72
+ }>;
73
+ paymentSchedules?: Array<{
74
+ scheduleType: "deposit" | "installment" | "balance" | "hold" | "other";
75
+ status: "pending" | "due" | "paid" | "waived" | "cancelled" | "expired";
76
+ dueDate: string;
77
+ currency: string;
78
+ amountCents: number;
79
+ notes?: string | null;
80
+ }>;
81
+ documentGeneration?: {
82
+ contractDocument: boolean;
83
+ invoiceDocument: boolean;
84
+ invoiceType: "invoice" | "proforma";
85
+ };
86
+ /** Suppress post-commit notifications (operator-only). */
87
+ suppressNotifications?: boolean;
88
+ /** List/quote price before a manual override (drives the override audit + reason check). */
89
+ catalogSellAmountCents?: number | null;
90
+ /** Manual operator price override — wins over the quote/promotion price. */
91
+ confirmedSellAmountCents?: number | null;
92
+ /** Required by booking-create when confirmed != catalog. */
93
+ priceOverrideReason?: string | null;
94
+ /**
95
+ * Gift / refund-credit voucher to redeem atomically inside the create
96
+ * transaction. booking-create re-validates status / expiry / balance.
97
+ */
98
+ voucherRedemption?: {
99
+ voucherId: string;
100
+ amountCents: number;
101
+ };
102
+ taxLines?: Array<{
103
+ code?: string | null;
104
+ name: string;
105
+ jurisdiction?: string | null;
106
+ scope?: "included" | "excluded" | "withheld";
107
+ currency: string;
108
+ amountCents: number;
109
+ rateBasisPoints?: number | null;
110
+ includedInPrice?: boolean;
111
+ remittanceParty?: string | null;
112
+ sortOrder?: number;
113
+ }>;
114
+ itemLines?: Array<{
115
+ optionId?: string | null;
116
+ optionUnitId: string;
117
+ quantity: number;
118
+ title?: string | null;
119
+ description?: string | null;
120
+ unitSellAmountCents?: number | null;
121
+ totalSellAmountCents?: number | null;
122
+ }>;
123
+ extraLines?: Array<{
124
+ productExtraId: string;
125
+ name: string;
126
+ description?: string | null;
127
+ pricingMode?: string | null;
128
+ pricedPerPerson?: boolean | null;
129
+ quantity: number;
130
+ sellCurrency: string;
131
+ unitSellAmountCents?: number | null;
132
+ totalSellAmountCents?: number | null;
133
+ }>;
134
+ }
135
+ export interface BookingCreateBridgeResult {
136
+ status: "ok" | "product_not_found" | string;
137
+ bookingId?: string;
138
+ bookingNumber?: string;
139
+ }
140
+ /**
141
+ * Caller-supplied bridge to `bookingsCreate`. Templates wire
142
+ * this up — `(input, opts) => createBooking(db as PostgresJsDatabase, input, opts)`.
143
+ */
144
+ export type BookingCreateBridge = (input: BookingCreateBridgeInput, options?: {
145
+ userId?: string;
146
+ }) => Promise<BookingCreateBridgeResult>;
147
+ export interface DraftLike {
148
+ configure?: {
149
+ pax?: Partial<Record<string, number>>;
150
+ departureSlotId?: string;
151
+ departureDate?: string;
152
+ departureTime?: string;
153
+ variantId?: string;
154
+ optionSelections?: Array<{
155
+ optionId: string;
156
+ optionName?: string;
157
+ optionUnitId?: string;
158
+ optionUnitName?: string;
159
+ quantity: number;
160
+ }>;
161
+ };
162
+ billing?: {
163
+ buyerType?: "B2C" | "B2B";
164
+ contact?: {
165
+ firstName?: string;
166
+ lastName?: string;
167
+ email?: string;
168
+ phone?: string;
169
+ };
170
+ address?: {
171
+ country?: string;
172
+ };
173
+ };
174
+ travelers?: Array<{
175
+ firstName: string;
176
+ lastName: string;
177
+ email?: string;
178
+ phone?: string;
179
+ band?: string;
180
+ }>;
181
+ paymentSchedules?: BookingCreateBridgeInput["paymentSchedules"];
182
+ documentGeneration?: BookingCreateBridgeInput["documentGeneration"];
183
+ suppressNotifications?: boolean;
184
+ priceOverride?: {
185
+ amountCents: number;
186
+ reason: string;
187
+ };
188
+ voucherRedemption?: {
189
+ voucherId: string;
190
+ amountCents: number;
191
+ };
192
+ addons?: Array<{
193
+ extraId: string;
194
+ quantity: number;
195
+ }>;
196
+ }
197
+ export interface BuildOwnedProductDraftShapeOptions {
198
+ /**
199
+ * Per-traveler field requirements pulled from
200
+ * `@voyant-travel/bookings/requirements` for this product. Caller-supplied
201
+ * so the Inventory package doesn't depend on booking requirements.
202
+ */
203
+ travelerFields?: ReadonlyArray<TravelerFieldRequirement>;
204
+ /**
205
+ * Add-on catalog projected from extras. Caller-supplied so products
206
+ * doesn't depend on the Inventory/Bookings extras owner facades. When omitted,
207
+ * `showsAddons` is false.
208
+ */
209
+ addonCatalog?: ReadonlyArray<AddonOffer>;
210
+ /**
211
+ * Product options / variants. These select `draft.configure.variantId`
212
+ * and are distinct from extras: one option changes the underlying
213
+ * booking configuration, while extras add optional line items.
214
+ */
215
+ productOptions?: ReadonlyArray<ProductVariantOption>;
216
+ /**
217
+ * Traveler bands derived from the product's configured traveler types
218
+ * (e.g. pricing categories like "Adult" / "Child under 6"). When
219
+ * omitted or empty, falls back to the generic adult/child/infant
220
+ * defaults. `code` must stay aligned with the pricing resolver's
221
+ * traveler-category codes so per-band pricing keeps matching.
222
+ */
223
+ paxBands?: ReadonlyArray<PaxBandSpec>;
224
+ /**
225
+ * Cross-band occupancy rules (e.g. "Child under 6 requires an Adult"),
226
+ * derived from the product's pricing-category dependencies. Codes must
227
+ * match the `paxBands` codes.
228
+ */
229
+ paxBandDependencies?: ReadonlyArray<PaxBandDependency>;
230
+ }
231
+ export declare function buildOwnedProductDraftShape(options?: BuildOwnedProductDraftShapeOptions): BookingDraftShape;
232
+ /** A per-unit price within a resolved option price rule, returned by
233
+ * `loadResolvedOptionPrice`. The handler matches `travelerCategory`
234
+ * to the draft's pax-band codes ("adult" / "child" / "infant" /
235
+ * "senior") to compute per-band totals. Units that don't map to a
236
+ * band — or whose band has zero count — are dropped. */
237
+ export interface ResolvedUnitPrice {
238
+ unitId: string;
239
+ unitType: "person" | "room" | "vehicle" | "service" | "group" | "other" | string;
240
+ travelerCategory: "adult" | "child" | "infant" | "senior" | null;
241
+ sellAmountCents: number | null;
242
+ }
243
+ /** Output of `loadResolvedOptionPrice`. The handler prefers
244
+ * `unitPrices` (per-band pricing) when present and any unit matches a
245
+ * pax band; otherwise falls back to `baseSellAmountCents × paxCount`
246
+ * for per-booking rules; otherwise back to `product.sellAmountCents`. */
247
+ export interface ResolvedOptionPrice {
248
+ baseSellAmountCents: number | null;
249
+ unitPrices: ReadonlyArray<ResolvedUnitPrice>;
250
+ }
251
+ /** A resolved tax-rate decision — resolved from `tax_classes` ×
252
+ * `tax_regimes` × buyer country at quote time. */
253
+ export interface ResolvedTaxRate {
254
+ /** Stable code (e.g. "vat-ro-19", "exempt-art311"). */
255
+ code: string;
256
+ /** Display label for the breakdown. */
257
+ label: string;
258
+ /** Rate as a fraction (0..1). 0 means exempt / zero-rated. */
259
+ rate: number;
260
+ /** Whether the configured product price already includes this tax. */
261
+ priceMode?: "inclusive" | "exclusive";
262
+ }
263
+ /** Caller-supplied loaders for descriptor enrichment. Each is
264
+ * optional — when omitted the handler returns the default shape.
265
+ * Templates wire these to the modules they have on hand
266
+ * (booking requirements, Inventory/Bookings extras, finance). */
267
+ export interface OwnedProductsShapeLoaders {
268
+ /**
269
+ * Resolve per-traveler field requirements from
270
+ * @voyant-travel/bookings/requirements. Called per-quote so the descriptor
271
+ * reflects current configuration.
272
+ */
273
+ loadTravelerFields?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<TravelerFieldRequirement>>;
274
+ /**
275
+ * Resolve the addon catalog for the product (typically a projection
276
+ * over `extras` + `option_extra_configs`). Caller-supplied to keep
277
+ * the Inventory package free of an extras-owner dependency.
278
+ */
279
+ loadAddonCatalog?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<AddonOffer>>;
280
+ /**
281
+ * Resolve product options / variants from the owning products module.
282
+ * Optional for tests and deployments that do not expose option
283
+ * variants in the booking flow.
284
+ */
285
+ loadProductOptions?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<ProductVariantOption>>;
286
+ /**
287
+ * Resolve the product's configured traveler types as pax bands
288
+ * (e.g. from Commerce pricing categories). Caller-supplied
289
+ * so the journey's Configure step offers exactly the traveler types
290
+ * the product is priced for ("Adult", "Child under 6", …) instead of
291
+ * the generic adult/child/infant defaults. Returns undefined/empty to
292
+ * fall back to the defaults.
293
+ */
294
+ loadPaxBands?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<PaxBandSpec> | undefined>;
295
+ /**
296
+ * Resolve cross-band occupancy rules (e.g. "Child requires an Adult")
297
+ * from the product's pricing-category dependencies. Caller-supplied;
298
+ * codes must match `loadPaxBands`. Returns undefined/empty when the
299
+ * product has no dependency rules.
300
+ */
301
+ loadPaxBandDependencies?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<PaxBandDependency> | undefined>;
302
+ /**
303
+ * Resolve the tax rate for a given (product, buyer country) pair.
304
+ * Templates wire this to a function that reads
305
+ * `products.tax_class_id`, `tax_classes.default_regime_id`, and
306
+ * `tax_regimes.rate_percent`. Returns null when tax can't be
307
+ * resolved — the engine renders the breakdown without a tax line.
308
+ *
309
+ * Per booking-journey-architecture §9.
310
+ */
311
+ loadTaxRate?: (ctx: OwnedHandlerContext, args: {
312
+ productId: string;
313
+ buyerCountry?: string;
314
+ buyerType?: "B2C" | "B2B";
315
+ }) => Promise<ResolvedTaxRate | null>;
316
+ /**
317
+ * Resolve the option price rule for a given (product, option, date)
318
+ * — typically backed by Commerce's
319
+ * `resolveOptionPriceRulesForDate` plus a join into per-unit prices.
320
+ * Returns null when no rule applies or the resolver can't run; the
321
+ * handler then falls back to `product.sellAmountCents × pax`.
322
+ *
323
+ * Caller-supplied so Inventory does not import
324
+ * `@voyant-travel/commerce` (the dependency direction is commerce →
325
+ * inventory, not the reverse).
326
+ */
327
+ loadResolvedOptionPrice?: (ctx: OwnedHandlerContext, args: {
328
+ productId: string;
329
+ optionId: string;
330
+ /** ISO yyyy-mm-dd in the slot's local timezone. */
331
+ date: string;
332
+ catalogId?: string;
333
+ }) => Promise<ResolvedOptionPrice | null>;
334
+ /**
335
+ * Look up the local date of a departure slot (`availability_slots`).
336
+ * Caller-supplied so the Inventory package does not import
337
+ * `@voyant-travel/operations`. Returns null when the slot is missing.
338
+ *
339
+ * Used together with `loadResolvedOptionPrice` to convert a draft's
340
+ * `departureSlotId` into a date the resolver can match against.
341
+ */
342
+ loadSlotDate?: (ctx: OwnedHandlerContext, slotId: string) => Promise<string | null>;
343
+ }
344
+ /**
345
+ * Caller-supplied availability-hold bridge — keeps the products
346
+ * package free of an `@voyant-travel/operations` dependency. When
347
+ * wired, the handler's `placeHold/extendHold/releaseHold` route
348
+ * through `availability_holds` (real inventory locks). When
349
+ * omitted, the handler falls back to stamping no-ops.
350
+ */
351
+ export interface AvailabilityHoldBridge {
352
+ place: (input: {
353
+ draftId: string;
354
+ productId: string;
355
+ slotId: string;
356
+ paxCount: number;
357
+ ttlMs: number;
358
+ holdToken?: string;
359
+ }) => Promise<{
360
+ status: "ok";
361
+ holdToken: string;
362
+ expiresAt: Date;
363
+ } | {
364
+ status: "slot_not_found";
365
+ } | {
366
+ status: "insufficient_capacity";
367
+ remaining: number;
368
+ needed: number;
369
+ }>;
370
+ extend: (input: {
371
+ holdToken: string;
372
+ ttlMs: number;
373
+ }) => Promise<{
374
+ status: "ok";
375
+ expiresAt: Date;
376
+ } | {
377
+ status: "not_found";
378
+ }>;
379
+ release: (holdToken: string) => Promise<void>;
380
+ }
381
+ export interface CreateProductsBookingHandlerOptions extends OwnedProductsShapeLoaders {
382
+ /**
383
+ * Caller-supplied bridge to `bookingsCreate`. Wired by the
384
+ * template at boot, since Inventory does not import
385
+ * `@voyant-travel/finance`.
386
+ */
387
+ createBooking: BookingCreateBridge;
388
+ /**
389
+ * Generator for booking numbers. Defaults to a timestamp-based
390
+ * value if not supplied. Templates that have a sequence service
391
+ * (operator: numbering plugin) override.
392
+ */
393
+ generateBookingNumber?: () => string;
394
+ /**
395
+ * Optional inventory-hold bridge. When wired, `placeHold`
396
+ * decrements `availability_slots.remainingPax` against the
397
+ * draft's chosen slot; `releaseHold` restores it. When omitted,
398
+ * the handler returns a stamping token without touching
399
+ * inventory.
400
+ */
401
+ holds?: AvailabilityHoldBridge;
402
+ }
403
+ export declare function createProductsBookingHandler(options: CreateProductsBookingHandlerOptions): OwnedBookingHandler;
404
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/booking-engine/handler.ts"],"names":[],"mappings":"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"}