@voyant-travel/storefront 0.120.1

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 (126) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +231 -0
  3. package/dist/booking-intents.d.ts +42 -0
  4. package/dist/booking-intents.d.ts.map +1 -0
  5. package/dist/booking-intents.js +83 -0
  6. package/dist/customer-portal/index.d.ts +16 -0
  7. package/dist/customer-portal/index.d.ts.map +1 -0
  8. package/dist/customer-portal/index.js +23 -0
  9. package/dist/customer-portal/route-runtime.d.ts +16 -0
  10. package/dist/customer-portal/route-runtime.d.ts.map +1 -0
  11. package/dist/customer-portal/route-runtime.js +27 -0
  12. package/dist/customer-portal/routes-public.d.ts +1936 -0
  13. package/dist/customer-portal/routes-public.d.ts.map +1 -0
  14. package/dist/customer-portal/routes-public.js +165 -0
  15. package/dist/customer-portal/routes.d.ts +43 -0
  16. package/dist/customer-portal/routes.d.ts.map +1 -0
  17. package/dist/customer-portal/routes.js +17 -0
  18. package/dist/customer-portal/service-public-impl.d.ts +138 -0
  19. package/dist/customer-portal/service-public-impl.d.ts.map +1 -0
  20. package/dist/customer-portal/service-public-impl.js +1808 -0
  21. package/dist/customer-portal/service-public.d.ts +2 -0
  22. package/dist/customer-portal/service-public.d.ts.map +1 -0
  23. package/dist/customer-portal/service-public.js +1 -0
  24. package/dist/customer-portal/validation-public/bookings.d.ts +551 -0
  25. package/dist/customer-portal/validation-public/bookings.d.ts.map +1 -0
  26. package/dist/customer-portal/validation-public/bookings.js +132 -0
  27. package/dist/customer-portal/validation-public/common.d.ts +162 -0
  28. package/dist/customer-portal/validation-public/common.d.ts.map +1 -0
  29. package/dist/customer-portal/validation-public/common.js +139 -0
  30. package/dist/customer-portal/validation-public/profile.d.ts +749 -0
  31. package/dist/customer-portal/validation-public/profile.d.ts.map +1 -0
  32. package/dist/customer-portal/validation-public/profile.js +308 -0
  33. package/dist/customer-portal/validation-public.d.ts +3 -0
  34. package/dist/customer-portal/validation-public.d.ts.map +1 -0
  35. package/dist/customer-portal/validation-public.js +2 -0
  36. package/dist/guest-booking-guard.d.ts +24 -0
  37. package/dist/guest-booking-guard.d.ts.map +1 -0
  38. package/dist/guest-booking-guard.js +55 -0
  39. package/dist/index.d.ts +23 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +41 -0
  42. package/dist/product-extra-ref.d.ts +238 -0
  43. package/dist/product-extra-ref.d.ts.map +1 -0
  44. package/dist/product-extra-ref.js +22 -0
  45. package/dist/routes-admin.d.ts +220 -0
  46. package/dist/routes-admin.d.ts.map +1 -0
  47. package/dist/routes-admin.js +28 -0
  48. package/dist/routes-public.d.ts +1475 -0
  49. package/dist/routes-public.d.ts.map +1 -0
  50. package/dist/routes-public.js +362 -0
  51. package/dist/service-booking-session-bootstrap.d.ts +227 -0
  52. package/dist/service-booking-session-bootstrap.d.ts.map +1 -0
  53. package/dist/service-booking-session-bootstrap.js +287 -0
  54. package/dist/service-boundary-resource-sql.d.ts +18 -0
  55. package/dist/service-boundary-resource-sql.d.ts.map +1 -0
  56. package/dist/service-boundary-resource-sql.js +73 -0
  57. package/dist/service-boundary-sql.d.ts +103 -0
  58. package/dist/service-boundary-sql.d.ts.map +1 -0
  59. package/dist/service-boundary-sql.js +307 -0
  60. package/dist/service-departures-core.d.ts +41 -0
  61. package/dist/service-departures-core.d.ts.map +1 -0
  62. package/dist/service-departures-core.js +92 -0
  63. package/dist/service-departures-extensions.d.ts +46 -0
  64. package/dist/service-departures-extensions.d.ts.map +1 -0
  65. package/dist/service-departures-extensions.js +81 -0
  66. package/dist/service-departures-offers.d.ts +220 -0
  67. package/dist/service-departures-offers.d.ts.map +1 -0
  68. package/dist/service-departures-offers.js +177 -0
  69. package/dist/service-departures-price-preview.d.ts +306 -0
  70. package/dist/service-departures-price-preview.d.ts.map +1 -0
  71. package/dist/service-departures-price-preview.js +383 -0
  72. package/dist/service-departures-pricing-context.d.ts +115 -0
  73. package/dist/service-departures-pricing-context.d.ts.map +1 -0
  74. package/dist/service-departures-pricing-context.js +237 -0
  75. package/dist/service-departures-pricing.d.ts +5 -0
  76. package/dist/service-departures-pricing.d.ts.map +1 -0
  77. package/dist/service-departures-pricing.js +4 -0
  78. package/dist/service-departures.d.ts +192 -0
  79. package/dist/service-departures.d.ts.map +1 -0
  80. package/dist/service-departures.js +213 -0
  81. package/dist/service-intake.d.ts +130 -0
  82. package/dist/service-intake.d.ts.map +1 -0
  83. package/dist/service-intake.js +274 -0
  84. package/dist/service-transport-eligibility.d.ts +10 -0
  85. package/dist/service-transport-eligibility.d.ts.map +1 -0
  86. package/dist/service-transport-eligibility.js +198 -0
  87. package/dist/service.d.ts +1062 -0
  88. package/dist/service.d.ts.map +1 -0
  89. package/dist/service.js +332 -0
  90. package/dist/transport-eligibility.d.ts +4 -0
  91. package/dist/transport-eligibility.d.ts.map +1 -0
  92. package/dist/transport-eligibility.js +2 -0
  93. package/dist/validation/departures.d.ts +1669 -0
  94. package/dist/validation/departures.d.ts.map +1 -0
  95. package/dist/validation/departures.js +397 -0
  96. package/dist/validation/intake.d.ts +147 -0
  97. package/dist/validation/intake.d.ts.map +1 -0
  98. package/dist/validation/intake.js +69 -0
  99. package/dist/validation/offers.d.ts +340 -0
  100. package/dist/validation/offers.d.ts.map +1 -0
  101. package/dist/validation/offers.js +117 -0
  102. package/dist/validation-settings.d.ts +609 -0
  103. package/dist/validation-settings.d.ts.map +1 -0
  104. package/dist/validation-settings.js +235 -0
  105. package/dist/validation-transport-eligibility.d.ts +314 -0
  106. package/dist/validation-transport-eligibility.d.ts.map +1 -0
  107. package/dist/validation-transport-eligibility.js +97 -0
  108. package/dist/validation.d.ts +6 -0
  109. package/dist/validation.d.ts.map +1 -0
  110. package/dist/validation.js +4 -0
  111. package/dist/verification/index.d.ts +12 -0
  112. package/dist/verification/index.d.ts.map +1 -0
  113. package/dist/verification/index.js +18 -0
  114. package/dist/verification/routes-public.d.ts +121 -0
  115. package/dist/verification/routes-public.d.ts.map +1 -0
  116. package/dist/verification/routes-public.js +125 -0
  117. package/dist/verification/schema.d.ts +273 -0
  118. package/dist/verification/schema.d.ts.map +1 -0
  119. package/dist/verification/schema.js +50 -0
  120. package/dist/verification/service.d.ts +114 -0
  121. package/dist/verification/service.d.ts.map +1 -0
  122. package/dist/verification/service.js +283 -0
  123. package/dist/verification/validation.d.ts +98 -0
  124. package/dist/verification/validation.d.ts.map +1 -0
  125. package/dist/verification/validation.js +54 -0
  126. package/package.json +148 -0
@@ -0,0 +1,1936 @@
1
+ import type { ModuleContainer } from "@voyant-travel/core";
2
+ import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
3
+ type Env = {
4
+ Bindings: Record<string, unknown>;
5
+ Variables: {
6
+ container?: ModuleContainer;
7
+ db: PostgresJsDatabase;
8
+ userId?: string;
9
+ };
10
+ };
11
+ export interface PublicCustomerPortalRouteOptions {
12
+ resolveDocumentDownloadUrl?: (bindings: unknown, storageKey: string) => Promise<string | null> | string | null;
13
+ }
14
+ export declare function createPublicCustomerPortalRoutes(options?: PublicCustomerPortalRouteOptions): import("hono/hono-base").HonoBase<Env, (((((((((((((((({
15
+ "/me": {
16
+ $get: {
17
+ input: {};
18
+ output: {
19
+ data: {
20
+ userId: string;
21
+ email: string | null;
22
+ emailVerified: boolean;
23
+ firstName: string | null;
24
+ middleName: string | null;
25
+ lastName: string | null;
26
+ avatarUrl: string | null;
27
+ locale: string;
28
+ timezone: string | null;
29
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
30
+ dateOfBirth: string | null;
31
+ address: {
32
+ country: string | null;
33
+ state: string | null;
34
+ city: string | null;
35
+ postalCode: string | null;
36
+ addressLine1: string | null;
37
+ addressLine2: string | null;
38
+ } | null;
39
+ accessibility: string | null;
40
+ dietary: string | null;
41
+ loyalty: string | null;
42
+ insurance: string | null;
43
+ marketingConsent: boolean;
44
+ marketingConsentAt: string | null;
45
+ marketingConsentSource: string | null;
46
+ notificationDefaults: {
47
+ [x: string]: import("hono/utils/types").JSONValue;
48
+ } | null;
49
+ uiPrefs: {
50
+ [x: string]: import("hono/utils/types").JSONValue;
51
+ } | null;
52
+ customerRecord: {
53
+ id: string;
54
+ firstName: string;
55
+ lastName: string;
56
+ preferredLanguage: string | null;
57
+ preferredCurrency: string | null;
58
+ dateOfBirth: string | null;
59
+ email: string | null;
60
+ phone: string | null;
61
+ billingAddress: {
62
+ id: string;
63
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
64
+ fullText: string | null;
65
+ line1: string | null;
66
+ line2: string | null;
67
+ city: string | null;
68
+ region: string | null;
69
+ postalCode: string | null;
70
+ country: string | null;
71
+ isPrimary: boolean;
72
+ } | null;
73
+ relation: string | null;
74
+ status: string;
75
+ } | null;
76
+ phoneNumber?: string | null | undefined;
77
+ };
78
+ };
79
+ outputFormat: "json";
80
+ status: import("hono/utils/http-status").ContentfulStatusCode;
81
+ } | {
82
+ input: {};
83
+ output: {
84
+ error: string;
85
+ };
86
+ outputFormat: "json";
87
+ status: 404;
88
+ };
89
+ };
90
+ } | (import("hono/types").MergeSchemaPath<{
91
+ "/contact-exists": {
92
+ $get: {
93
+ input: {};
94
+ output: {
95
+ data: {
96
+ email: string;
97
+ authAccountExists: boolean;
98
+ customerRecordExists: boolean;
99
+ linkedCustomerRecordExists: boolean;
100
+ };
101
+ };
102
+ outputFormat: "json";
103
+ status: import("hono/utils/http-status").ContentfulStatusCode;
104
+ };
105
+ };
106
+ } & {
107
+ "/contact-exists/phone": {
108
+ $get: {
109
+ input: {};
110
+ output: {
111
+ data: {
112
+ phone: string;
113
+ authAccountExists: boolean;
114
+ authAccountVerified: boolean;
115
+ customerRecordExists: boolean;
116
+ linkedCustomerRecordExists: boolean;
117
+ };
118
+ };
119
+ outputFormat: "json";
120
+ status: import("hono/utils/http-status").ContentfulStatusCode;
121
+ };
122
+ };
123
+ }, "/"> & {
124
+ "/me": {
125
+ $get: {
126
+ input: {};
127
+ output: {
128
+ data: {
129
+ userId: string;
130
+ email: string | null;
131
+ emailVerified: boolean;
132
+ firstName: string | null;
133
+ middleName: string | null;
134
+ lastName: string | null;
135
+ avatarUrl: string | null;
136
+ locale: string;
137
+ timezone: string | null;
138
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
139
+ dateOfBirth: string | null;
140
+ address: {
141
+ country: string | null;
142
+ state: string | null;
143
+ city: string | null;
144
+ postalCode: string | null;
145
+ addressLine1: string | null;
146
+ addressLine2: string | null;
147
+ } | null;
148
+ accessibility: string | null;
149
+ dietary: string | null;
150
+ loyalty: string | null;
151
+ insurance: string | null;
152
+ marketingConsent: boolean;
153
+ marketingConsentAt: string | null;
154
+ marketingConsentSource: string | null;
155
+ notificationDefaults: {
156
+ [x: string]: import("hono/utils/types").JSONValue;
157
+ } | null;
158
+ uiPrefs: {
159
+ [x: string]: import("hono/utils/types").JSONValue;
160
+ } | null;
161
+ customerRecord: {
162
+ id: string;
163
+ firstName: string;
164
+ lastName: string;
165
+ preferredLanguage: string | null;
166
+ preferredCurrency: string | null;
167
+ dateOfBirth: string | null;
168
+ email: string | null;
169
+ phone: string | null;
170
+ billingAddress: {
171
+ id: string;
172
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
173
+ fullText: string | null;
174
+ line1: string | null;
175
+ line2: string | null;
176
+ city: string | null;
177
+ region: string | null;
178
+ postalCode: string | null;
179
+ country: string | null;
180
+ isPrimary: boolean;
181
+ } | null;
182
+ relation: string | null;
183
+ status: string;
184
+ } | null;
185
+ phoneNumber?: string | null | undefined;
186
+ };
187
+ };
188
+ outputFormat: "json";
189
+ status: import("hono/utils/http-status").ContentfulStatusCode;
190
+ } | {
191
+ input: {};
192
+ output: {
193
+ error: string;
194
+ };
195
+ outputFormat: "json";
196
+ status: 404;
197
+ };
198
+ };
199
+ })) & {
200
+ "/me": {
201
+ $patch: {
202
+ input: {};
203
+ output: {
204
+ error: string;
205
+ };
206
+ outputFormat: "json";
207
+ status: 404;
208
+ } | {
209
+ input: {};
210
+ output: {
211
+ error: string;
212
+ };
213
+ outputFormat: "json";
214
+ status: 409;
215
+ } | {
216
+ input: {};
217
+ output: {
218
+ data: {
219
+ userId: string;
220
+ email: string | null;
221
+ emailVerified: boolean;
222
+ firstName: string | null;
223
+ middleName: string | null;
224
+ lastName: string | null;
225
+ avatarUrl: string | null;
226
+ locale: string;
227
+ timezone: string | null;
228
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
229
+ dateOfBirth: string | null;
230
+ address: {
231
+ country: string | null;
232
+ state: string | null;
233
+ city: string | null;
234
+ postalCode: string | null;
235
+ addressLine1: string | null;
236
+ addressLine2: string | null;
237
+ } | null;
238
+ accessibility: string | null;
239
+ dietary: string | null;
240
+ loyalty: string | null;
241
+ insurance: string | null;
242
+ marketingConsent: boolean;
243
+ marketingConsentAt: string | null;
244
+ marketingConsentSource: string | null;
245
+ notificationDefaults: {
246
+ [x: string]: import("hono/utils/types").JSONValue;
247
+ } | null;
248
+ uiPrefs: {
249
+ [x: string]: import("hono/utils/types").JSONValue;
250
+ } | null;
251
+ customerRecord: {
252
+ id: string;
253
+ firstName: string;
254
+ lastName: string;
255
+ preferredLanguage: string | null;
256
+ preferredCurrency: string | null;
257
+ dateOfBirth: string | null;
258
+ email: string | null;
259
+ phone: string | null;
260
+ billingAddress: {
261
+ id: string;
262
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
263
+ fullText: string | null;
264
+ line1: string | null;
265
+ line2: string | null;
266
+ city: string | null;
267
+ region: string | null;
268
+ postalCode: string | null;
269
+ country: string | null;
270
+ isPrimary: boolean;
271
+ } | null;
272
+ relation: string | null;
273
+ status: string;
274
+ } | null;
275
+ phoneNumber?: string | null | undefined;
276
+ };
277
+ };
278
+ outputFormat: "json";
279
+ status: import("hono/utils/http-status").ContentfulStatusCode;
280
+ };
281
+ };
282
+ }) & {
283
+ "/me/documents": {
284
+ $get: {
285
+ input: {};
286
+ output: {
287
+ data: {
288
+ id: string;
289
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
290
+ number: string | null;
291
+ issuingAuthority: string | null;
292
+ issuingCountry: string | null;
293
+ issueDate: string | null;
294
+ expiryDate: string | null;
295
+ attachmentId: string | null;
296
+ isPrimary: boolean;
297
+ notes: string | null;
298
+ createdAt: string;
299
+ updatedAt: string;
300
+ }[];
301
+ };
302
+ outputFormat: "json";
303
+ status: import("hono/utils/http-status").ContentfulStatusCode;
304
+ };
305
+ };
306
+ }) & {
307
+ "/me/documents": {
308
+ $post: {
309
+ input: {};
310
+ output: {
311
+ error: string;
312
+ };
313
+ outputFormat: "json";
314
+ status: 404;
315
+ } | {
316
+ input: {};
317
+ output: {
318
+ data: {
319
+ id: string;
320
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
321
+ number: string | null;
322
+ issuingAuthority: string | null;
323
+ issuingCountry: string | null;
324
+ issueDate: string | null;
325
+ expiryDate: string | null;
326
+ attachmentId: string | null;
327
+ isPrimary: boolean;
328
+ notes: string | null;
329
+ createdAt: string;
330
+ updatedAt: string;
331
+ };
332
+ };
333
+ outputFormat: "json";
334
+ status: 201;
335
+ };
336
+ };
337
+ }) & {
338
+ "/me/documents/:id": {
339
+ $patch: {
340
+ input: {
341
+ param: {
342
+ id: string;
343
+ };
344
+ };
345
+ output: {
346
+ error: string;
347
+ };
348
+ outputFormat: "json";
349
+ status: 404;
350
+ } | {
351
+ input: {
352
+ param: {
353
+ id: string;
354
+ };
355
+ };
356
+ output: {
357
+ data: {
358
+ id: string;
359
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
360
+ number: string | null;
361
+ issuingAuthority: string | null;
362
+ issuingCountry: string | null;
363
+ issueDate: string | null;
364
+ expiryDate: string | null;
365
+ attachmentId: string | null;
366
+ isPrimary: boolean;
367
+ notes: string | null;
368
+ createdAt: string;
369
+ updatedAt: string;
370
+ };
371
+ };
372
+ outputFormat: "json";
373
+ status: import("hono/utils/http-status").ContentfulStatusCode;
374
+ };
375
+ };
376
+ }) & {
377
+ "/me/documents/:id": {
378
+ $delete: {
379
+ input: {
380
+ param: {
381
+ id: string;
382
+ };
383
+ };
384
+ output: {
385
+ error: string;
386
+ };
387
+ outputFormat: "json";
388
+ status: 404;
389
+ } | {
390
+ input: {
391
+ param: {
392
+ id: string;
393
+ };
394
+ };
395
+ output: {
396
+ success: true;
397
+ };
398
+ outputFormat: "json";
399
+ status: import("hono/utils/http-status").ContentfulStatusCode;
400
+ };
401
+ };
402
+ }) & {
403
+ "/me/documents/:id/set-primary": {
404
+ $post: {
405
+ input: {
406
+ param: {
407
+ id: string;
408
+ };
409
+ };
410
+ output: {
411
+ error: string;
412
+ };
413
+ outputFormat: "json";
414
+ status: 404;
415
+ } | {
416
+ input: {
417
+ param: {
418
+ id: string;
419
+ };
420
+ };
421
+ output: {
422
+ data: {
423
+ id: string;
424
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
425
+ number: string | null;
426
+ issuingAuthority: string | null;
427
+ issuingCountry: string | null;
428
+ issueDate: string | null;
429
+ expiryDate: string | null;
430
+ attachmentId: string | null;
431
+ isPrimary: boolean;
432
+ notes: string | null;
433
+ createdAt: string;
434
+ updatedAt: string;
435
+ };
436
+ };
437
+ outputFormat: "json";
438
+ status: import("hono/utils/http-status").ContentfulStatusCode;
439
+ };
440
+ };
441
+ }) & {
442
+ "/bootstrap": {
443
+ $post: {
444
+ input: {};
445
+ output: {
446
+ error: string;
447
+ };
448
+ outputFormat: "json";
449
+ status: 404;
450
+ } | {
451
+ input: {};
452
+ output: {
453
+ error: string;
454
+ };
455
+ outputFormat: "json";
456
+ status: 409;
457
+ } | {
458
+ input: {};
459
+ output: {
460
+ data: {
461
+ status: "already_linked" | "linked_existing_customer" | "created_customer" | "customer_selection_required";
462
+ profile: {
463
+ userId: string;
464
+ email: string | null;
465
+ emailVerified: boolean;
466
+ firstName: string | null;
467
+ middleName: string | null;
468
+ lastName: string | null;
469
+ avatarUrl: string | null;
470
+ locale: string;
471
+ timezone: string | null;
472
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
473
+ dateOfBirth: string | null;
474
+ address: {
475
+ country: string | null;
476
+ state: string | null;
477
+ city: string | null;
478
+ postalCode: string | null;
479
+ addressLine1: string | null;
480
+ addressLine2: string | null;
481
+ } | null;
482
+ accessibility: string | null;
483
+ dietary: string | null;
484
+ loyalty: string | null;
485
+ insurance: string | null;
486
+ marketingConsent: boolean;
487
+ marketingConsentAt: string | null;
488
+ marketingConsentSource: string | null;
489
+ notificationDefaults: {
490
+ [x: string]: import("hono/utils/types").JSONValue;
491
+ } | null;
492
+ uiPrefs: {
493
+ [x: string]: import("hono/utils/types").JSONValue;
494
+ } | null;
495
+ customerRecord: {
496
+ id: string;
497
+ firstName: string;
498
+ lastName: string;
499
+ preferredLanguage: string | null;
500
+ preferredCurrency: string | null;
501
+ dateOfBirth: string | null;
502
+ email: string | null;
503
+ phone: string | null;
504
+ billingAddress: {
505
+ id: string;
506
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
507
+ fullText: string | null;
508
+ line1: string | null;
509
+ line2: string | null;
510
+ city: string | null;
511
+ region: string | null;
512
+ postalCode: string | null;
513
+ country: string | null;
514
+ isPrimary: boolean;
515
+ } | null;
516
+ relation: string | null;
517
+ status: string;
518
+ } | null;
519
+ phoneNumber?: string | null | undefined;
520
+ } | null;
521
+ candidates: {
522
+ id: string;
523
+ firstName: string;
524
+ lastName: string;
525
+ preferredLanguage: string | null;
526
+ preferredCurrency: string | null;
527
+ dateOfBirth: string | null;
528
+ email: string | null;
529
+ phone: string | null;
530
+ billingAddress: {
531
+ id: string;
532
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
533
+ fullText: string | null;
534
+ line1: string | null;
535
+ line2: string | null;
536
+ city: string | null;
537
+ region: string | null;
538
+ postalCode: string | null;
539
+ country: string | null;
540
+ isPrimary: boolean;
541
+ } | null;
542
+ relation: string | null;
543
+ status: string;
544
+ linkable: boolean;
545
+ claimedByAnotherUser: boolean;
546
+ }[];
547
+ };
548
+ };
549
+ outputFormat: "json";
550
+ status: import("hono/utils/http-status").ContentfulStatusCode;
551
+ };
552
+ };
553
+ }) & {
554
+ "/companions": {
555
+ $get: {
556
+ input: {};
557
+ output: {
558
+ data: {
559
+ id: string;
560
+ role: string;
561
+ name: string;
562
+ title: string | null;
563
+ email: string | null;
564
+ phone: string | null;
565
+ isPrimary: boolean;
566
+ notes: string | null;
567
+ typeKey: string | null;
568
+ person: {
569
+ firstName: string | null;
570
+ middleName: string | null;
571
+ lastName: string | null;
572
+ dateOfBirth: string | null;
573
+ addresses: {
574
+ type: string | null;
575
+ country: string | null;
576
+ state: string | null;
577
+ city: string | null;
578
+ postalCode: string | null;
579
+ addressLine1: string | null;
580
+ addressLine2: string | null;
581
+ isDefault: boolean;
582
+ }[];
583
+ documents: {
584
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
585
+ number: string | null;
586
+ issuingAuthority: string | null;
587
+ country: string | null;
588
+ issueDate: string | null;
589
+ expiryDate: string | null;
590
+ }[];
591
+ };
592
+ metadata: {
593
+ [x: string]: import("hono/utils/types").JSONValue;
594
+ } | null;
595
+ }[];
596
+ };
597
+ outputFormat: "json";
598
+ status: import("hono/utils/http-status").ContentfulStatusCode;
599
+ };
600
+ };
601
+ }) & {
602
+ "/companions": {
603
+ $post: {
604
+ input: {};
605
+ output: {
606
+ error: string;
607
+ };
608
+ outputFormat: "json";
609
+ status: 409;
610
+ } | {
611
+ input: {};
612
+ output: {
613
+ data: {
614
+ id: string;
615
+ role: string;
616
+ name: string;
617
+ title: string | null;
618
+ email: string | null;
619
+ phone: string | null;
620
+ isPrimary: boolean;
621
+ notes: string | null;
622
+ typeKey: string | null;
623
+ person: {
624
+ firstName: string | null;
625
+ middleName: string | null;
626
+ lastName: string | null;
627
+ dateOfBirth: string | null;
628
+ addresses: {
629
+ type: string | null;
630
+ country: string | null;
631
+ state: string | null;
632
+ city: string | null;
633
+ postalCode: string | null;
634
+ addressLine1: string | null;
635
+ addressLine2: string | null;
636
+ isDefault: boolean;
637
+ }[];
638
+ documents: {
639
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
640
+ number: string | null;
641
+ issuingAuthority: string | null;
642
+ country: string | null;
643
+ issueDate: string | null;
644
+ expiryDate: string | null;
645
+ }[];
646
+ };
647
+ metadata: {
648
+ [x: string]: import("hono/utils/types").JSONValue;
649
+ } | null;
650
+ };
651
+ };
652
+ outputFormat: "json";
653
+ status: 201;
654
+ };
655
+ };
656
+ }) & {
657
+ "/companions/import-booking-travelers": {
658
+ $post: {
659
+ input: {};
660
+ output: {
661
+ error: string;
662
+ };
663
+ outputFormat: "json";
664
+ status: 409;
665
+ } | {
666
+ input: {};
667
+ output: {
668
+ data: {
669
+ created: {
670
+ id: string;
671
+ role: string;
672
+ name: string;
673
+ title: string | null;
674
+ email: string | null;
675
+ phone: string | null;
676
+ isPrimary: boolean;
677
+ notes: string | null;
678
+ typeKey: string | null;
679
+ person: {
680
+ firstName: string | null;
681
+ middleName: string | null;
682
+ lastName: string | null;
683
+ dateOfBirth: string | null;
684
+ addresses: {
685
+ type: string | null;
686
+ country: string | null;
687
+ state: string | null;
688
+ city: string | null;
689
+ postalCode: string | null;
690
+ addressLine1: string | null;
691
+ addressLine2: string | null;
692
+ isDefault: boolean;
693
+ }[];
694
+ documents: {
695
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
696
+ number: string | null;
697
+ issuingAuthority: string | null;
698
+ country: string | null;
699
+ issueDate: string | null;
700
+ expiryDate: string | null;
701
+ }[];
702
+ };
703
+ metadata: {
704
+ [x: string]: import("hono/utils/types").JSONValue;
705
+ } | null;
706
+ }[];
707
+ skippedCount: number;
708
+ };
709
+ };
710
+ outputFormat: "json";
711
+ status: import("hono/utils/http-status").ContentfulStatusCode;
712
+ };
713
+ };
714
+ }) & {
715
+ "/companions/:companionId": {
716
+ $patch: {
717
+ input: {
718
+ param: {
719
+ companionId: string;
720
+ };
721
+ };
722
+ output: {};
723
+ outputFormat: string;
724
+ status: import("hono/utils/http-status").StatusCode;
725
+ };
726
+ };
727
+ }) & {
728
+ "/companions/:companionId": {
729
+ $delete: {
730
+ input: {
731
+ param: {
732
+ companionId: string;
733
+ };
734
+ };
735
+ output: {};
736
+ outputFormat: string;
737
+ status: import("hono/utils/http-status").StatusCode;
738
+ };
739
+ };
740
+ }) & {
741
+ "/bookings": {
742
+ $get: {
743
+ input: {};
744
+ output: {
745
+ error: string;
746
+ };
747
+ outputFormat: "json";
748
+ status: 404;
749
+ } | {
750
+ input: {};
751
+ output: {
752
+ data: {
753
+ bookingId: string;
754
+ bookingNumber: string;
755
+ status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired";
756
+ sellCurrency: string;
757
+ sellAmountCents: number | null;
758
+ productTitle: string | null;
759
+ paymentStatus: "partially_paid" | "paid" | "overdue" | "unpaid";
760
+ startDate: string | null;
761
+ endDate: string | null;
762
+ pax: number | null;
763
+ confirmedAt: string | null;
764
+ completedAt: string | null;
765
+ travelerCount: number;
766
+ primaryTravelerName: string | null;
767
+ }[];
768
+ };
769
+ outputFormat: "json";
770
+ status: import("hono/utils/http-status").ContentfulStatusCode;
771
+ };
772
+ };
773
+ }) & {
774
+ "/bookings/:bookingId": {
775
+ $get: {
776
+ input: {
777
+ param: {
778
+ bookingId: string;
779
+ };
780
+ };
781
+ output: {
782
+ error: string;
783
+ };
784
+ outputFormat: "json";
785
+ status: 404;
786
+ } | {
787
+ input: {
788
+ param: {
789
+ bookingId: string;
790
+ };
791
+ };
792
+ output: {
793
+ data: {
794
+ bookingId: string;
795
+ bookingNumber: string;
796
+ status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired";
797
+ sellCurrency: string;
798
+ sellAmountCents: number | null;
799
+ startDate: string | null;
800
+ endDate: string | null;
801
+ pax: number | null;
802
+ confirmedAt: string | null;
803
+ cancelledAt: string | null;
804
+ completedAt: string | null;
805
+ travelers: {
806
+ id: string;
807
+ participantType: "other" | "traveler" | "occupant";
808
+ firstName: string;
809
+ lastName: string;
810
+ isPrimary: boolean;
811
+ }[];
812
+ items: {
813
+ id: string;
814
+ title: string;
815
+ description: string | null;
816
+ itemType: "service" | "unit" | "other" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
817
+ status: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired";
818
+ serviceDate: string | null;
819
+ startsAt: string | null;
820
+ endsAt: string | null;
821
+ quantity: number;
822
+ sellCurrency: string;
823
+ unitSellAmountCents: number | null;
824
+ totalSellAmountCents: number | null;
825
+ notes: string | null;
826
+ travelerLinks: {
827
+ id: string;
828
+ travelerId: string;
829
+ role: "other" | "traveler" | "occupant" | "beneficiary";
830
+ isPrimary: boolean;
831
+ }[];
832
+ }[];
833
+ billingContact: {
834
+ email: string | null;
835
+ phone: string | null;
836
+ firstName: string | null;
837
+ lastName: string | null;
838
+ country: string | null;
839
+ state: string | null;
840
+ city: string | null;
841
+ address1: string | null;
842
+ address2: string | null;
843
+ postal: string | null;
844
+ } | null;
845
+ documents: {
846
+ id: string;
847
+ source: "finance" | "legal" | "booking_document";
848
+ travelerId: string | null;
849
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
850
+ fileName: string;
851
+ fileUrl: string;
852
+ mimeType: string | null;
853
+ reference: string | null;
854
+ }[];
855
+ financials: {
856
+ documents: {
857
+ invoiceId: string;
858
+ invoiceNumber: string;
859
+ invoiceType: "invoice" | "proforma" | "credit_note";
860
+ invoiceStatus: "void" | "draft" | "issued" | "pending_external_allocation" | "partially_paid" | "paid" | "overdue";
861
+ currency: string;
862
+ totalCents: number;
863
+ paidCents: number;
864
+ balanceDueCents: number;
865
+ issueDate: string;
866
+ dueDate: string;
867
+ documentStatus: "failed" | "pending" | "ready" | "stale" | "missing";
868
+ format: "json" | "html" | "pdf" | "xml" | null;
869
+ generatedAt: string | null;
870
+ downloadUrl: string | null;
871
+ }[];
872
+ payments: {
873
+ id: string;
874
+ invoiceId: string;
875
+ invoiceNumber: string;
876
+ invoiceType: "invoice" | "proforma" | "credit_note";
877
+ status: "failed" | "pending" | "refunded" | "completed";
878
+ paymentMethod: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
879
+ amountCents: number;
880
+ currency: string;
881
+ paymentDate: string;
882
+ referenceNumber: string | null;
883
+ notes: string | null;
884
+ }[];
885
+ };
886
+ fulfillments: {
887
+ id: string;
888
+ bookingItemId: string | null;
889
+ travelerId: string | null;
890
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
891
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
892
+ status: "failed" | "pending" | "issued" | "reissued" | "revoked";
893
+ artifactUrl: string | null;
894
+ }[];
895
+ };
896
+ };
897
+ outputFormat: "json";
898
+ status: import("hono/utils/http-status").ContentfulStatusCode;
899
+ };
900
+ };
901
+ }) & {
902
+ "/bookings/:bookingId/documents": {
903
+ $get: {
904
+ input: {
905
+ param: {
906
+ bookingId: string;
907
+ };
908
+ };
909
+ output: {
910
+ error: string;
911
+ };
912
+ outputFormat: "json";
913
+ status: 404;
914
+ } | {
915
+ input: {
916
+ param: {
917
+ bookingId: string;
918
+ };
919
+ };
920
+ output: {
921
+ data: {
922
+ id: string;
923
+ source: "finance" | "legal" | "booking_document";
924
+ travelerId: string | null;
925
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
926
+ fileName: string;
927
+ fileUrl: string;
928
+ mimeType: string | null;
929
+ reference: string | null;
930
+ }[];
931
+ };
932
+ outputFormat: "json";
933
+ status: import("hono/utils/http-status").ContentfulStatusCode;
934
+ };
935
+ };
936
+ }) & {
937
+ "/bookings/:bookingId/billing-contact": {
938
+ $get: {
939
+ input: {
940
+ param: {
941
+ bookingId: string;
942
+ };
943
+ };
944
+ output: {
945
+ error: string;
946
+ };
947
+ outputFormat: "json";
948
+ status: 404;
949
+ } | {
950
+ input: {
951
+ param: {
952
+ bookingId: string;
953
+ };
954
+ };
955
+ output: {
956
+ data: {
957
+ email: string | null;
958
+ phone: string | null;
959
+ firstName: string | null;
960
+ lastName: string | null;
961
+ country: string | null;
962
+ state: string | null;
963
+ city: string | null;
964
+ address1: string | null;
965
+ address2: string | null;
966
+ postal: string | null;
967
+ };
968
+ };
969
+ outputFormat: "json";
970
+ status: import("hono/utils/http-status").ContentfulStatusCode;
971
+ };
972
+ };
973
+ }, "/", "/bookings/:bookingId/billing-contact">;
974
+ export declare const publicCustomerPortalRoutes: import("hono/hono-base").HonoBase<Env, (((((((((((((((({
975
+ "/me": {
976
+ $get: {
977
+ input: {};
978
+ output: {
979
+ data: {
980
+ userId: string;
981
+ email: string | null;
982
+ emailVerified: boolean;
983
+ firstName: string | null;
984
+ middleName: string | null;
985
+ lastName: string | null;
986
+ avatarUrl: string | null;
987
+ locale: string;
988
+ timezone: string | null;
989
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
990
+ dateOfBirth: string | null;
991
+ address: {
992
+ country: string | null;
993
+ state: string | null;
994
+ city: string | null;
995
+ postalCode: string | null;
996
+ addressLine1: string | null;
997
+ addressLine2: string | null;
998
+ } | null;
999
+ accessibility: string | null;
1000
+ dietary: string | null;
1001
+ loyalty: string | null;
1002
+ insurance: string | null;
1003
+ marketingConsent: boolean;
1004
+ marketingConsentAt: string | null;
1005
+ marketingConsentSource: string | null;
1006
+ notificationDefaults: {
1007
+ [x: string]: import("hono/utils/types").JSONValue;
1008
+ } | null;
1009
+ uiPrefs: {
1010
+ [x: string]: import("hono/utils/types").JSONValue;
1011
+ } | null;
1012
+ customerRecord: {
1013
+ id: string;
1014
+ firstName: string;
1015
+ lastName: string;
1016
+ preferredLanguage: string | null;
1017
+ preferredCurrency: string | null;
1018
+ dateOfBirth: string | null;
1019
+ email: string | null;
1020
+ phone: string | null;
1021
+ billingAddress: {
1022
+ id: string;
1023
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
1024
+ fullText: string | null;
1025
+ line1: string | null;
1026
+ line2: string | null;
1027
+ city: string | null;
1028
+ region: string | null;
1029
+ postalCode: string | null;
1030
+ country: string | null;
1031
+ isPrimary: boolean;
1032
+ } | null;
1033
+ relation: string | null;
1034
+ status: string;
1035
+ } | null;
1036
+ phoneNumber?: string | null | undefined;
1037
+ };
1038
+ };
1039
+ outputFormat: "json";
1040
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1041
+ } | {
1042
+ input: {};
1043
+ output: {
1044
+ error: string;
1045
+ };
1046
+ outputFormat: "json";
1047
+ status: 404;
1048
+ };
1049
+ };
1050
+ } | (import("hono/types").MergeSchemaPath<{
1051
+ "/contact-exists": {
1052
+ $get: {
1053
+ input: {};
1054
+ output: {
1055
+ data: {
1056
+ email: string;
1057
+ authAccountExists: boolean;
1058
+ customerRecordExists: boolean;
1059
+ linkedCustomerRecordExists: boolean;
1060
+ };
1061
+ };
1062
+ outputFormat: "json";
1063
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1064
+ };
1065
+ };
1066
+ } & {
1067
+ "/contact-exists/phone": {
1068
+ $get: {
1069
+ input: {};
1070
+ output: {
1071
+ data: {
1072
+ phone: string;
1073
+ authAccountExists: boolean;
1074
+ authAccountVerified: boolean;
1075
+ customerRecordExists: boolean;
1076
+ linkedCustomerRecordExists: boolean;
1077
+ };
1078
+ };
1079
+ outputFormat: "json";
1080
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1081
+ };
1082
+ };
1083
+ }, "/"> & {
1084
+ "/me": {
1085
+ $get: {
1086
+ input: {};
1087
+ output: {
1088
+ data: {
1089
+ userId: string;
1090
+ email: string | null;
1091
+ emailVerified: boolean;
1092
+ firstName: string | null;
1093
+ middleName: string | null;
1094
+ lastName: string | null;
1095
+ avatarUrl: string | null;
1096
+ locale: string;
1097
+ timezone: string | null;
1098
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
1099
+ dateOfBirth: string | null;
1100
+ address: {
1101
+ country: string | null;
1102
+ state: string | null;
1103
+ city: string | null;
1104
+ postalCode: string | null;
1105
+ addressLine1: string | null;
1106
+ addressLine2: string | null;
1107
+ } | null;
1108
+ accessibility: string | null;
1109
+ dietary: string | null;
1110
+ loyalty: string | null;
1111
+ insurance: string | null;
1112
+ marketingConsent: boolean;
1113
+ marketingConsentAt: string | null;
1114
+ marketingConsentSource: string | null;
1115
+ notificationDefaults: {
1116
+ [x: string]: import("hono/utils/types").JSONValue;
1117
+ } | null;
1118
+ uiPrefs: {
1119
+ [x: string]: import("hono/utils/types").JSONValue;
1120
+ } | null;
1121
+ customerRecord: {
1122
+ id: string;
1123
+ firstName: string;
1124
+ lastName: string;
1125
+ preferredLanguage: string | null;
1126
+ preferredCurrency: string | null;
1127
+ dateOfBirth: string | null;
1128
+ email: string | null;
1129
+ phone: string | null;
1130
+ billingAddress: {
1131
+ id: string;
1132
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
1133
+ fullText: string | null;
1134
+ line1: string | null;
1135
+ line2: string | null;
1136
+ city: string | null;
1137
+ region: string | null;
1138
+ postalCode: string | null;
1139
+ country: string | null;
1140
+ isPrimary: boolean;
1141
+ } | null;
1142
+ relation: string | null;
1143
+ status: string;
1144
+ } | null;
1145
+ phoneNumber?: string | null | undefined;
1146
+ };
1147
+ };
1148
+ outputFormat: "json";
1149
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1150
+ } | {
1151
+ input: {};
1152
+ output: {
1153
+ error: string;
1154
+ };
1155
+ outputFormat: "json";
1156
+ status: 404;
1157
+ };
1158
+ };
1159
+ })) & {
1160
+ "/me": {
1161
+ $patch: {
1162
+ input: {};
1163
+ output: {
1164
+ error: string;
1165
+ };
1166
+ outputFormat: "json";
1167
+ status: 404;
1168
+ } | {
1169
+ input: {};
1170
+ output: {
1171
+ error: string;
1172
+ };
1173
+ outputFormat: "json";
1174
+ status: 409;
1175
+ } | {
1176
+ input: {};
1177
+ output: {
1178
+ data: {
1179
+ userId: string;
1180
+ email: string | null;
1181
+ emailVerified: boolean;
1182
+ firstName: string | null;
1183
+ middleName: string | null;
1184
+ lastName: string | null;
1185
+ avatarUrl: string | null;
1186
+ locale: string;
1187
+ timezone: string | null;
1188
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
1189
+ dateOfBirth: string | null;
1190
+ address: {
1191
+ country: string | null;
1192
+ state: string | null;
1193
+ city: string | null;
1194
+ postalCode: string | null;
1195
+ addressLine1: string | null;
1196
+ addressLine2: string | null;
1197
+ } | null;
1198
+ accessibility: string | null;
1199
+ dietary: string | null;
1200
+ loyalty: string | null;
1201
+ insurance: string | null;
1202
+ marketingConsent: boolean;
1203
+ marketingConsentAt: string | null;
1204
+ marketingConsentSource: string | null;
1205
+ notificationDefaults: {
1206
+ [x: string]: import("hono/utils/types").JSONValue;
1207
+ } | null;
1208
+ uiPrefs: {
1209
+ [x: string]: import("hono/utils/types").JSONValue;
1210
+ } | null;
1211
+ customerRecord: {
1212
+ id: string;
1213
+ firstName: string;
1214
+ lastName: string;
1215
+ preferredLanguage: string | null;
1216
+ preferredCurrency: string | null;
1217
+ dateOfBirth: string | null;
1218
+ email: string | null;
1219
+ phone: string | null;
1220
+ billingAddress: {
1221
+ id: string;
1222
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
1223
+ fullText: string | null;
1224
+ line1: string | null;
1225
+ line2: string | null;
1226
+ city: string | null;
1227
+ region: string | null;
1228
+ postalCode: string | null;
1229
+ country: string | null;
1230
+ isPrimary: boolean;
1231
+ } | null;
1232
+ relation: string | null;
1233
+ status: string;
1234
+ } | null;
1235
+ phoneNumber?: string | null | undefined;
1236
+ };
1237
+ };
1238
+ outputFormat: "json";
1239
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1240
+ };
1241
+ };
1242
+ }) & {
1243
+ "/me/documents": {
1244
+ $get: {
1245
+ input: {};
1246
+ output: {
1247
+ data: {
1248
+ id: string;
1249
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1250
+ number: string | null;
1251
+ issuingAuthority: string | null;
1252
+ issuingCountry: string | null;
1253
+ issueDate: string | null;
1254
+ expiryDate: string | null;
1255
+ attachmentId: string | null;
1256
+ isPrimary: boolean;
1257
+ notes: string | null;
1258
+ createdAt: string;
1259
+ updatedAt: string;
1260
+ }[];
1261
+ };
1262
+ outputFormat: "json";
1263
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1264
+ };
1265
+ };
1266
+ }) & {
1267
+ "/me/documents": {
1268
+ $post: {
1269
+ input: {};
1270
+ output: {
1271
+ error: string;
1272
+ };
1273
+ outputFormat: "json";
1274
+ status: 404;
1275
+ } | {
1276
+ input: {};
1277
+ output: {
1278
+ data: {
1279
+ id: string;
1280
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1281
+ number: string | null;
1282
+ issuingAuthority: string | null;
1283
+ issuingCountry: string | null;
1284
+ issueDate: string | null;
1285
+ expiryDate: string | null;
1286
+ attachmentId: string | null;
1287
+ isPrimary: boolean;
1288
+ notes: string | null;
1289
+ createdAt: string;
1290
+ updatedAt: string;
1291
+ };
1292
+ };
1293
+ outputFormat: "json";
1294
+ status: 201;
1295
+ };
1296
+ };
1297
+ }) & {
1298
+ "/me/documents/:id": {
1299
+ $patch: {
1300
+ input: {
1301
+ param: {
1302
+ id: string;
1303
+ };
1304
+ };
1305
+ output: {
1306
+ error: string;
1307
+ };
1308
+ outputFormat: "json";
1309
+ status: 404;
1310
+ } | {
1311
+ input: {
1312
+ param: {
1313
+ id: string;
1314
+ };
1315
+ };
1316
+ output: {
1317
+ data: {
1318
+ id: string;
1319
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1320
+ number: string | null;
1321
+ issuingAuthority: string | null;
1322
+ issuingCountry: string | null;
1323
+ issueDate: string | null;
1324
+ expiryDate: string | null;
1325
+ attachmentId: string | null;
1326
+ isPrimary: boolean;
1327
+ notes: string | null;
1328
+ createdAt: string;
1329
+ updatedAt: string;
1330
+ };
1331
+ };
1332
+ outputFormat: "json";
1333
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1334
+ };
1335
+ };
1336
+ }) & {
1337
+ "/me/documents/:id": {
1338
+ $delete: {
1339
+ input: {
1340
+ param: {
1341
+ id: string;
1342
+ };
1343
+ };
1344
+ output: {
1345
+ error: string;
1346
+ };
1347
+ outputFormat: "json";
1348
+ status: 404;
1349
+ } | {
1350
+ input: {
1351
+ param: {
1352
+ id: string;
1353
+ };
1354
+ };
1355
+ output: {
1356
+ success: true;
1357
+ };
1358
+ outputFormat: "json";
1359
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1360
+ };
1361
+ };
1362
+ }) & {
1363
+ "/me/documents/:id/set-primary": {
1364
+ $post: {
1365
+ input: {
1366
+ param: {
1367
+ id: string;
1368
+ };
1369
+ };
1370
+ output: {
1371
+ error: string;
1372
+ };
1373
+ outputFormat: "json";
1374
+ status: 404;
1375
+ } | {
1376
+ input: {
1377
+ param: {
1378
+ id: string;
1379
+ };
1380
+ };
1381
+ output: {
1382
+ data: {
1383
+ id: string;
1384
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1385
+ number: string | null;
1386
+ issuingAuthority: string | null;
1387
+ issuingCountry: string | null;
1388
+ issueDate: string | null;
1389
+ expiryDate: string | null;
1390
+ attachmentId: string | null;
1391
+ isPrimary: boolean;
1392
+ notes: string | null;
1393
+ createdAt: string;
1394
+ updatedAt: string;
1395
+ };
1396
+ };
1397
+ outputFormat: "json";
1398
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1399
+ };
1400
+ };
1401
+ }) & {
1402
+ "/bootstrap": {
1403
+ $post: {
1404
+ input: {};
1405
+ output: {
1406
+ error: string;
1407
+ };
1408
+ outputFormat: "json";
1409
+ status: 404;
1410
+ } | {
1411
+ input: {};
1412
+ output: {
1413
+ error: string;
1414
+ };
1415
+ outputFormat: "json";
1416
+ status: 409;
1417
+ } | {
1418
+ input: {};
1419
+ output: {
1420
+ data: {
1421
+ status: "already_linked" | "linked_existing_customer" | "created_customer" | "customer_selection_required";
1422
+ profile: {
1423
+ userId: string;
1424
+ email: string | null;
1425
+ emailVerified: boolean;
1426
+ firstName: string | null;
1427
+ middleName: string | null;
1428
+ lastName: string | null;
1429
+ avatarUrl: string | null;
1430
+ locale: string;
1431
+ timezone: string | null;
1432
+ seatingPreference: "aisle" | "window" | "middle" | "no_preference" | null;
1433
+ dateOfBirth: string | null;
1434
+ address: {
1435
+ country: string | null;
1436
+ state: string | null;
1437
+ city: string | null;
1438
+ postalCode: string | null;
1439
+ addressLine1: string | null;
1440
+ addressLine2: string | null;
1441
+ } | null;
1442
+ accessibility: string | null;
1443
+ dietary: string | null;
1444
+ loyalty: string | null;
1445
+ insurance: string | null;
1446
+ marketingConsent: boolean;
1447
+ marketingConsentAt: string | null;
1448
+ marketingConsentSource: string | null;
1449
+ notificationDefaults: {
1450
+ [x: string]: import("hono/utils/types").JSONValue;
1451
+ } | null;
1452
+ uiPrefs: {
1453
+ [x: string]: import("hono/utils/types").JSONValue;
1454
+ } | null;
1455
+ customerRecord: {
1456
+ id: string;
1457
+ firstName: string;
1458
+ lastName: string;
1459
+ preferredLanguage: string | null;
1460
+ preferredCurrency: string | null;
1461
+ dateOfBirth: string | null;
1462
+ email: string | null;
1463
+ phone: string | null;
1464
+ billingAddress: {
1465
+ id: string;
1466
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
1467
+ fullText: string | null;
1468
+ line1: string | null;
1469
+ line2: string | null;
1470
+ city: string | null;
1471
+ region: string | null;
1472
+ postalCode: string | null;
1473
+ country: string | null;
1474
+ isPrimary: boolean;
1475
+ } | null;
1476
+ relation: string | null;
1477
+ status: string;
1478
+ } | null;
1479
+ phoneNumber?: string | null | undefined;
1480
+ } | null;
1481
+ candidates: {
1482
+ id: string;
1483
+ firstName: string;
1484
+ lastName: string;
1485
+ preferredLanguage: string | null;
1486
+ preferredCurrency: string | null;
1487
+ dateOfBirth: string | null;
1488
+ email: string | null;
1489
+ phone: string | null;
1490
+ billingAddress: {
1491
+ id: string;
1492
+ label: "service" | "primary" | "other" | "legal" | "billing" | "meeting" | "shipping" | "mailing";
1493
+ fullText: string | null;
1494
+ line1: string | null;
1495
+ line2: string | null;
1496
+ city: string | null;
1497
+ region: string | null;
1498
+ postalCode: string | null;
1499
+ country: string | null;
1500
+ isPrimary: boolean;
1501
+ } | null;
1502
+ relation: string | null;
1503
+ status: string;
1504
+ linkable: boolean;
1505
+ claimedByAnotherUser: boolean;
1506
+ }[];
1507
+ };
1508
+ };
1509
+ outputFormat: "json";
1510
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1511
+ };
1512
+ };
1513
+ }) & {
1514
+ "/companions": {
1515
+ $get: {
1516
+ input: {};
1517
+ output: {
1518
+ data: {
1519
+ id: string;
1520
+ role: string;
1521
+ name: string;
1522
+ title: string | null;
1523
+ email: string | null;
1524
+ phone: string | null;
1525
+ isPrimary: boolean;
1526
+ notes: string | null;
1527
+ typeKey: string | null;
1528
+ person: {
1529
+ firstName: string | null;
1530
+ middleName: string | null;
1531
+ lastName: string | null;
1532
+ dateOfBirth: string | null;
1533
+ addresses: {
1534
+ type: string | null;
1535
+ country: string | null;
1536
+ state: string | null;
1537
+ city: string | null;
1538
+ postalCode: string | null;
1539
+ addressLine1: string | null;
1540
+ addressLine2: string | null;
1541
+ isDefault: boolean;
1542
+ }[];
1543
+ documents: {
1544
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1545
+ number: string | null;
1546
+ issuingAuthority: string | null;
1547
+ country: string | null;
1548
+ issueDate: string | null;
1549
+ expiryDate: string | null;
1550
+ }[];
1551
+ };
1552
+ metadata: {
1553
+ [x: string]: import("hono/utils/types").JSONValue;
1554
+ } | null;
1555
+ }[];
1556
+ };
1557
+ outputFormat: "json";
1558
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1559
+ };
1560
+ };
1561
+ }) & {
1562
+ "/companions": {
1563
+ $post: {
1564
+ input: {};
1565
+ output: {
1566
+ error: string;
1567
+ };
1568
+ outputFormat: "json";
1569
+ status: 409;
1570
+ } | {
1571
+ input: {};
1572
+ output: {
1573
+ data: {
1574
+ id: string;
1575
+ role: string;
1576
+ name: string;
1577
+ title: string | null;
1578
+ email: string | null;
1579
+ phone: string | null;
1580
+ isPrimary: boolean;
1581
+ notes: string | null;
1582
+ typeKey: string | null;
1583
+ person: {
1584
+ firstName: string | null;
1585
+ middleName: string | null;
1586
+ lastName: string | null;
1587
+ dateOfBirth: string | null;
1588
+ addresses: {
1589
+ type: string | null;
1590
+ country: string | null;
1591
+ state: string | null;
1592
+ city: string | null;
1593
+ postalCode: string | null;
1594
+ addressLine1: string | null;
1595
+ addressLine2: string | null;
1596
+ isDefault: boolean;
1597
+ }[];
1598
+ documents: {
1599
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1600
+ number: string | null;
1601
+ issuingAuthority: string | null;
1602
+ country: string | null;
1603
+ issueDate: string | null;
1604
+ expiryDate: string | null;
1605
+ }[];
1606
+ };
1607
+ metadata: {
1608
+ [x: string]: import("hono/utils/types").JSONValue;
1609
+ } | null;
1610
+ };
1611
+ };
1612
+ outputFormat: "json";
1613
+ status: 201;
1614
+ };
1615
+ };
1616
+ }) & {
1617
+ "/companions/import-booking-travelers": {
1618
+ $post: {
1619
+ input: {};
1620
+ output: {
1621
+ error: string;
1622
+ };
1623
+ outputFormat: "json";
1624
+ status: 409;
1625
+ } | {
1626
+ input: {};
1627
+ output: {
1628
+ data: {
1629
+ created: {
1630
+ id: string;
1631
+ role: string;
1632
+ name: string;
1633
+ title: string | null;
1634
+ email: string | null;
1635
+ phone: string | null;
1636
+ isPrimary: boolean;
1637
+ notes: string | null;
1638
+ typeKey: string | null;
1639
+ person: {
1640
+ firstName: string | null;
1641
+ middleName: string | null;
1642
+ lastName: string | null;
1643
+ dateOfBirth: string | null;
1644
+ addresses: {
1645
+ type: string | null;
1646
+ country: string | null;
1647
+ state: string | null;
1648
+ city: string | null;
1649
+ postalCode: string | null;
1650
+ addressLine1: string | null;
1651
+ addressLine2: string | null;
1652
+ isDefault: boolean;
1653
+ }[];
1654
+ documents: {
1655
+ type: "passport" | "visa" | "drivers_license" | "other" | "id_card";
1656
+ number: string | null;
1657
+ issuingAuthority: string | null;
1658
+ country: string | null;
1659
+ issueDate: string | null;
1660
+ expiryDate: string | null;
1661
+ }[];
1662
+ };
1663
+ metadata: {
1664
+ [x: string]: import("hono/utils/types").JSONValue;
1665
+ } | null;
1666
+ }[];
1667
+ skippedCount: number;
1668
+ };
1669
+ };
1670
+ outputFormat: "json";
1671
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1672
+ };
1673
+ };
1674
+ }) & {
1675
+ "/companions/:companionId": {
1676
+ $patch: {
1677
+ input: {
1678
+ param: {
1679
+ companionId: string;
1680
+ };
1681
+ };
1682
+ output: {};
1683
+ outputFormat: string;
1684
+ status: import("hono/utils/http-status").StatusCode;
1685
+ };
1686
+ };
1687
+ }) & {
1688
+ "/companions/:companionId": {
1689
+ $delete: {
1690
+ input: {
1691
+ param: {
1692
+ companionId: string;
1693
+ };
1694
+ };
1695
+ output: {};
1696
+ outputFormat: string;
1697
+ status: import("hono/utils/http-status").StatusCode;
1698
+ };
1699
+ };
1700
+ }) & {
1701
+ "/bookings": {
1702
+ $get: {
1703
+ input: {};
1704
+ output: {
1705
+ error: string;
1706
+ };
1707
+ outputFormat: "json";
1708
+ status: 404;
1709
+ } | {
1710
+ input: {};
1711
+ output: {
1712
+ data: {
1713
+ bookingId: string;
1714
+ bookingNumber: string;
1715
+ status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired";
1716
+ sellCurrency: string;
1717
+ sellAmountCents: number | null;
1718
+ productTitle: string | null;
1719
+ paymentStatus: "partially_paid" | "paid" | "overdue" | "unpaid";
1720
+ startDate: string | null;
1721
+ endDate: string | null;
1722
+ pax: number | null;
1723
+ confirmedAt: string | null;
1724
+ completedAt: string | null;
1725
+ travelerCount: number;
1726
+ primaryTravelerName: string | null;
1727
+ }[];
1728
+ };
1729
+ outputFormat: "json";
1730
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1731
+ };
1732
+ };
1733
+ }) & {
1734
+ "/bookings/:bookingId": {
1735
+ $get: {
1736
+ input: {
1737
+ param: {
1738
+ bookingId: string;
1739
+ };
1740
+ };
1741
+ output: {
1742
+ error: string;
1743
+ };
1744
+ outputFormat: "json";
1745
+ status: 404;
1746
+ } | {
1747
+ input: {
1748
+ param: {
1749
+ bookingId: string;
1750
+ };
1751
+ };
1752
+ output: {
1753
+ data: {
1754
+ bookingId: string;
1755
+ bookingNumber: string;
1756
+ status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired";
1757
+ sellCurrency: string;
1758
+ sellAmountCents: number | null;
1759
+ startDate: string | null;
1760
+ endDate: string | null;
1761
+ pax: number | null;
1762
+ confirmedAt: string | null;
1763
+ cancelledAt: string | null;
1764
+ completedAt: string | null;
1765
+ travelers: {
1766
+ id: string;
1767
+ participantType: "other" | "traveler" | "occupant";
1768
+ firstName: string;
1769
+ lastName: string;
1770
+ isPrimary: boolean;
1771
+ }[];
1772
+ items: {
1773
+ id: string;
1774
+ title: string;
1775
+ description: string | null;
1776
+ itemType: "service" | "unit" | "other" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
1777
+ status: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired";
1778
+ serviceDate: string | null;
1779
+ startsAt: string | null;
1780
+ endsAt: string | null;
1781
+ quantity: number;
1782
+ sellCurrency: string;
1783
+ unitSellAmountCents: number | null;
1784
+ totalSellAmountCents: number | null;
1785
+ notes: string | null;
1786
+ travelerLinks: {
1787
+ id: string;
1788
+ travelerId: string;
1789
+ role: "other" | "traveler" | "occupant" | "beneficiary";
1790
+ isPrimary: boolean;
1791
+ }[];
1792
+ }[];
1793
+ billingContact: {
1794
+ email: string | null;
1795
+ phone: string | null;
1796
+ firstName: string | null;
1797
+ lastName: string | null;
1798
+ country: string | null;
1799
+ state: string | null;
1800
+ city: string | null;
1801
+ address1: string | null;
1802
+ address2: string | null;
1803
+ postal: string | null;
1804
+ } | null;
1805
+ documents: {
1806
+ id: string;
1807
+ source: "finance" | "legal" | "booking_document";
1808
+ travelerId: string | null;
1809
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
1810
+ fileName: string;
1811
+ fileUrl: string;
1812
+ mimeType: string | null;
1813
+ reference: string | null;
1814
+ }[];
1815
+ financials: {
1816
+ documents: {
1817
+ invoiceId: string;
1818
+ invoiceNumber: string;
1819
+ invoiceType: "invoice" | "proforma" | "credit_note";
1820
+ invoiceStatus: "void" | "draft" | "issued" | "pending_external_allocation" | "partially_paid" | "paid" | "overdue";
1821
+ currency: string;
1822
+ totalCents: number;
1823
+ paidCents: number;
1824
+ balanceDueCents: number;
1825
+ issueDate: string;
1826
+ dueDate: string;
1827
+ documentStatus: "failed" | "pending" | "ready" | "stale" | "missing";
1828
+ format: "json" | "html" | "pdf" | "xml" | null;
1829
+ generatedAt: string | null;
1830
+ downloadUrl: string | null;
1831
+ }[];
1832
+ payments: {
1833
+ id: string;
1834
+ invoiceId: string;
1835
+ invoiceNumber: string;
1836
+ invoiceType: "invoice" | "proforma" | "credit_note";
1837
+ status: "failed" | "pending" | "refunded" | "completed";
1838
+ paymentMethod: "other" | "voucher" | "wallet" | "bank_transfer" | "credit_card" | "debit_card" | "cash" | "cheque" | "direct_bill";
1839
+ amountCents: number;
1840
+ currency: string;
1841
+ paymentDate: string;
1842
+ referenceNumber: string | null;
1843
+ notes: string | null;
1844
+ }[];
1845
+ };
1846
+ fulfillments: {
1847
+ id: string;
1848
+ bookingItemId: string | null;
1849
+ travelerId: string | null;
1850
+ fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
1851
+ deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
1852
+ status: "failed" | "pending" | "issued" | "reissued" | "revoked";
1853
+ artifactUrl: string | null;
1854
+ }[];
1855
+ };
1856
+ };
1857
+ outputFormat: "json";
1858
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1859
+ };
1860
+ };
1861
+ }) & {
1862
+ "/bookings/:bookingId/documents": {
1863
+ $get: {
1864
+ input: {
1865
+ param: {
1866
+ bookingId: string;
1867
+ };
1868
+ };
1869
+ output: {
1870
+ error: string;
1871
+ };
1872
+ outputFormat: "json";
1873
+ status: 404;
1874
+ } | {
1875
+ input: {
1876
+ param: {
1877
+ bookingId: string;
1878
+ };
1879
+ };
1880
+ output: {
1881
+ data: {
1882
+ id: string;
1883
+ source: "finance" | "legal" | "booking_document";
1884
+ travelerId: string | null;
1885
+ type: "visa" | "other" | "insurance" | "health" | "passport_copy" | "invoice" | "proforma" | "credit_note" | "contract";
1886
+ fileName: string;
1887
+ fileUrl: string;
1888
+ mimeType: string | null;
1889
+ reference: string | null;
1890
+ }[];
1891
+ };
1892
+ outputFormat: "json";
1893
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1894
+ };
1895
+ };
1896
+ }) & {
1897
+ "/bookings/:bookingId/billing-contact": {
1898
+ $get: {
1899
+ input: {
1900
+ param: {
1901
+ bookingId: string;
1902
+ };
1903
+ };
1904
+ output: {
1905
+ error: string;
1906
+ };
1907
+ outputFormat: "json";
1908
+ status: 404;
1909
+ } | {
1910
+ input: {
1911
+ param: {
1912
+ bookingId: string;
1913
+ };
1914
+ };
1915
+ output: {
1916
+ data: {
1917
+ email: string | null;
1918
+ phone: string | null;
1919
+ firstName: string | null;
1920
+ lastName: string | null;
1921
+ country: string | null;
1922
+ state: string | null;
1923
+ city: string | null;
1924
+ address1: string | null;
1925
+ address2: string | null;
1926
+ postal: string | null;
1927
+ };
1928
+ };
1929
+ outputFormat: "json";
1930
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1931
+ };
1932
+ };
1933
+ }, "/", "/bookings/:bookingId/billing-contact">;
1934
+ export type PublicCustomerPortalRoutes = typeof publicCustomerPortalRoutes;
1935
+ export {};
1936
+ //# sourceMappingURL=routes-public.d.ts.map