@questpackages/tours 0.1.0-test.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 (54) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +122 -0
  3. package/dist/cli/index.d.ts +2 -0
  4. package/dist/cli/index.js +219 -0
  5. package/dist/cli/templates.d.ts +12 -0
  6. package/dist/cli/templates.js +100 -0
  7. package/dist/next/index.d.ts +4 -0
  8. package/dist/next/index.js +4 -0
  9. package/dist/next/metadata.d.ts +26 -0
  10. package/dist/next/metadata.js +58 -0
  11. package/dist/next/revalidate-handler.d.ts +18 -0
  12. package/dist/next/revalidate-handler.js +42 -0
  13. package/dist/next/signature.d.ts +12 -0
  14. package/dist/next/signature.js +26 -0
  15. package/dist/react/booking-steps.d.ts +22 -0
  16. package/dist/react/booking-steps.js +23 -0
  17. package/dist/react/booking-wizard.d.ts +12 -0
  18. package/dist/react/booking-wizard.js +68 -0
  19. package/dist/react/contact-dialog.d.ts +15 -0
  20. package/dist/react/contact-dialog.js +45 -0
  21. package/dist/react/contact-panel.d.ts +5 -0
  22. package/dist/react/contact-panel.js +15 -0
  23. package/dist/react/contact-shared.d.ts +55 -0
  24. package/dist/react/contact-shared.js +60 -0
  25. package/dist/react/countries.d.ts +4 -0
  26. package/dist/react/countries.js +6 -0
  27. package/dist/react/index.d.ts +12 -0
  28. package/dist/react/index.js +11 -0
  29. package/dist/react/inquiry-wizard.d.ts +5 -0
  30. package/dist/react/inquiry-wizard.js +43 -0
  31. package/dist/react/party-size-rules.d.ts +18 -0
  32. package/dist/react/party-size-rules.js +52 -0
  33. package/dist/react/party-size.d.ts +27 -0
  34. package/dist/react/party-size.js +81 -0
  35. package/dist/react/sections.d.ts +10 -0
  36. package/dist/react/sections.js +58 -0
  37. package/dist/react/shared.d.ts +50 -0
  38. package/dist/react/shared.js +39 -0
  39. package/dist/react/tour-card.d.ts +30 -0
  40. package/dist/react/tour-card.js +22 -0
  41. package/dist/react/tour-detail.d.ts +26 -0
  42. package/dist/react/tour-detail.js +55 -0
  43. package/dist/react/tour-gallery.d.ts +4 -0
  44. package/dist/react/tour-gallery.js +35 -0
  45. package/dist/react/tour-json-ld.d.ts +7 -0
  46. package/dist/react/tour-json-ld.js +13 -0
  47. package/dist/schema/index.d.ts +805 -0
  48. package/dist/schema/index.js +249 -0
  49. package/dist/server/client.d.ts +43 -0
  50. package/dist/server/client.js +85 -0
  51. package/dist/server/index.d.ts +2 -0
  52. package/dist/server/index.js +2 -0
  53. package/dist/styles.css +1395 -0
  54. package/package.json +67 -0
@@ -0,0 +1,805 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Public data contract between Quest and operator websites (API v1).
4
+ *
5
+ * Quest validates every `/api/public/v1` response against these schemas, and the SDK
6
+ * parses every response with them. A section that Quest does not model has no field
7
+ * here, so an operator site cannot render it from Quest data.
8
+ *
9
+ * Additive changes (new optional fields) are allowed in v1. Removing or renaming a
10
+ * field requires API v2.
11
+ */
12
+ export declare const QUEST_TOURS_API_VERSION = 1;
13
+ export declare const tourImageSchema: z.ZodObject<{
14
+ url: z.ZodString;
15
+ alt: z.ZodString;
16
+ srcSet: z.ZodNullable<z.ZodString>;
17
+ width: z.ZodNullable<z.ZodNumber>;
18
+ height: z.ZodNullable<z.ZodNumber>;
19
+ }, z.core.$strip>;
20
+ export declare const tourTagSchema: z.ZodObject<{
21
+ slug: z.ZodString;
22
+ label: z.ZodString;
23
+ }, z.core.$strip>;
24
+ /** A price as Quest displays it, plus the parsed amount for structured data and sorting. */
25
+ export declare const tourMoneySchema: z.ZodObject<{
26
+ formatted: z.ZodString;
27
+ amount: z.ZodNullable<z.ZodNumber>;
28
+ currency: z.ZodString;
29
+ }, z.core.$strip>;
30
+ export declare const tourCardSchema: z.ZodObject<{
31
+ slug: z.ZodString;
32
+ title: z.ZodString;
33
+ summary: z.ZodNullable<z.ZodString>;
34
+ durationDays: z.ZodNumber;
35
+ durationLabel: z.ZodString;
36
+ startDestination: z.ZodNullable<z.ZodString>;
37
+ endDestination: z.ZodNullable<z.ZodString>;
38
+ destinations: z.ZodArray<z.ZodString>;
39
+ heroImage: z.ZodNullable<z.ZodObject<{
40
+ url: z.ZodString;
41
+ alt: z.ZodString;
42
+ srcSet: z.ZodNullable<z.ZodString>;
43
+ width: z.ZodNullable<z.ZodNumber>;
44
+ height: z.ZodNullable<z.ZodNumber>;
45
+ }, z.core.$strip>>;
46
+ highlights: z.ZodArray<z.ZodString>;
47
+ includedPreview: z.ZodArray<z.ZodString>;
48
+ tags: z.ZodArray<z.ZodObject<{
49
+ slug: z.ZodString;
50
+ label: z.ZodString;
51
+ }, z.core.$strip>>;
52
+ featured: z.ZodBoolean;
53
+ price: z.ZodObject<{
54
+ total: z.ZodNullable<z.ZodObject<{
55
+ formatted: z.ZodString;
56
+ amount: z.ZodNullable<z.ZodNumber>;
57
+ currency: z.ZodString;
58
+ }, z.core.$strip>>;
59
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
60
+ formatted: z.ZodString;
61
+ amount: z.ZodNullable<z.ZodNumber>;
62
+ currency: z.ZodString;
63
+ }, z.core.$strip>>;
64
+ }, z.core.$strip>;
65
+ }, z.core.$strip>;
66
+ export declare const tourActivitySchema: z.ZodObject<{
67
+ time: z.ZodNullable<z.ZodString>;
68
+ name: z.ZodString;
69
+ location: z.ZodNullable<z.ZodString>;
70
+ notes: z.ZodNullable<z.ZodString>;
71
+ }, z.core.$strip>;
72
+ export declare const tourDaySchema: z.ZodObject<{
73
+ dayLabel: z.ZodString;
74
+ dateLabel: z.ZodNullable<z.ZodString>;
75
+ destination: z.ZodString;
76
+ title: z.ZodString;
77
+ description: z.ZodString;
78
+ image: z.ZodNullable<z.ZodObject<{
79
+ url: z.ZodString;
80
+ alt: z.ZodString;
81
+ srcSet: z.ZodNullable<z.ZodString>;
82
+ width: z.ZodNullable<z.ZodNumber>;
83
+ height: z.ZodNullable<z.ZodNumber>;
84
+ }, z.core.$strip>>;
85
+ mealPlan: z.ZodNullable<z.ZodString>;
86
+ accommodation: z.ZodNullable<z.ZodObject<{
87
+ label: z.ZodString;
88
+ name: z.ZodString;
89
+ detail: z.ZodString;
90
+ image: z.ZodNullable<z.ZodObject<{
91
+ url: z.ZodString;
92
+ alt: z.ZodString;
93
+ srcSet: z.ZodNullable<z.ZodString>;
94
+ width: z.ZodNullable<z.ZodNumber>;
95
+ height: z.ZodNullable<z.ZodNumber>;
96
+ }, z.core.$strip>>;
97
+ }, z.core.$strip>>;
98
+ activityGroups: z.ZodArray<z.ZodObject<{
99
+ title: z.ZodString;
100
+ activities: z.ZodArray<z.ZodObject<{
101
+ time: z.ZodNullable<z.ZodString>;
102
+ name: z.ZodString;
103
+ location: z.ZodNullable<z.ZodString>;
104
+ notes: z.ZodNullable<z.ZodString>;
105
+ }, z.core.$strip>>;
106
+ }, z.core.$strip>>;
107
+ activities: z.ZodArray<z.ZodObject<{
108
+ time: z.ZodNullable<z.ZodString>;
109
+ name: z.ZodString;
110
+ location: z.ZodNullable<z.ZodString>;
111
+ notes: z.ZodNullable<z.ZodString>;
112
+ }, z.core.$strip>>;
113
+ gallery: z.ZodArray<z.ZodObject<{
114
+ url: z.ZodString;
115
+ alt: z.ZodString;
116
+ srcSet: z.ZodNullable<z.ZodString>;
117
+ width: z.ZodNullable<z.ZodNumber>;
118
+ height: z.ZodNullable<z.ZodNumber>;
119
+ }, z.core.$strip>>;
120
+ }, z.core.$strip>;
121
+ export declare const tourLodgingSchema: z.ZodObject<{
122
+ name: z.ZodString;
123
+ label: z.ZodString;
124
+ detail: z.ZodString;
125
+ image: z.ZodNullable<z.ZodObject<{
126
+ url: z.ZodString;
127
+ alt: z.ZodString;
128
+ srcSet: z.ZodNullable<z.ZodString>;
129
+ width: z.ZodNullable<z.ZodNumber>;
130
+ height: z.ZodNullable<z.ZodNumber>;
131
+ }, z.core.$strip>>;
132
+ nights: z.ZodArray<z.ZodString>;
133
+ mealPlan: z.ZodNullable<z.ZodString>;
134
+ }, z.core.$strip>;
135
+ export declare const tourVehicleSchema: z.ZodObject<{
136
+ name: z.ZodString;
137
+ description: z.ZodString;
138
+ image: z.ZodNullable<z.ZodObject<{
139
+ url: z.ZodString;
140
+ alt: z.ZodString;
141
+ srcSet: z.ZodNullable<z.ZodString>;
142
+ width: z.ZodNullable<z.ZodNumber>;
143
+ height: z.ZodNullable<z.ZodNumber>;
144
+ }, z.core.$strip>>;
145
+ features: z.ZodArray<z.ZodString>;
146
+ maxPassengers: z.ZodNullable<z.ZodNumber>;
147
+ }, z.core.$strip>;
148
+ export declare const tourPartyPriceOptionSchema: z.ZodObject<{
149
+ adults: z.ZodNumber;
150
+ children: z.ZodNumber;
151
+ total: z.ZodString;
152
+ perPerson: z.ZodString;
153
+ vehicleCapacityLabel: z.ZodNullable<z.ZodString>;
154
+ }, z.core.$strip>;
155
+ export declare const tourPricingSchema: z.ZodObject<{
156
+ currency: z.ZodString;
157
+ total: z.ZodNullable<z.ZodObject<{
158
+ formatted: z.ZodString;
159
+ amount: z.ZodNullable<z.ZodNumber>;
160
+ currency: z.ZodString;
161
+ }, z.core.$strip>>;
162
+ perPerson: z.ZodNullable<z.ZodObject<{
163
+ formatted: z.ZodString;
164
+ amount: z.ZodNullable<z.ZodNumber>;
165
+ currency: z.ZodString;
166
+ }, z.core.$strip>>;
167
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
168
+ formatted: z.ZodString;
169
+ amount: z.ZodNullable<z.ZodNumber>;
170
+ currency: z.ZodString;
171
+ }, z.core.$strip>>;
172
+ lineItems: z.ZodArray<z.ZodObject<{
173
+ name: z.ZodString;
174
+ qty: z.ZodString;
175
+ unitPrice: z.ZodString;
176
+ total: z.ZodString;
177
+ }, z.core.$strip>>;
178
+ partySize: z.ZodNullable<z.ZodObject<{
179
+ minTravellers: z.ZodNumber;
180
+ maxTravellers: z.ZodNumber;
181
+ baselineAdults: z.ZodNumber;
182
+ childrenAllowed: z.ZodBoolean;
183
+ options: z.ZodArray<z.ZodObject<{
184
+ adults: z.ZodNumber;
185
+ children: z.ZodNumber;
186
+ total: z.ZodString;
187
+ perPerson: z.ZodString;
188
+ vehicleCapacityLabel: z.ZodNullable<z.ZodString>;
189
+ }, z.core.$strip>>;
190
+ }, z.core.$strip>>;
191
+ }, z.core.$strip>;
192
+ export declare const tourOperatorSchema: z.ZodObject<{
193
+ name: z.ZodString;
194
+ logoUrl: z.ZodNullable<z.ZodString>;
195
+ website: z.ZodNullable<z.ZodString>;
196
+ phone: z.ZodNullable<z.ZodString>;
197
+ address: z.ZodNullable<z.ZodString>;
198
+ }, z.core.$strip>;
199
+ export declare const tourEnquirySchema: z.ZodObject<{
200
+ endpoint: z.ZodString;
201
+ bookingEndpoint: z.ZodString;
202
+ minTravellers: z.ZodNumber;
203
+ maxTravellers: z.ZodNumber;
204
+ childrenAllowed: z.ZodBoolean;
205
+ }, z.core.$strip>;
206
+ export declare const tourSchema: z.ZodObject<{
207
+ slug: z.ZodString;
208
+ title: z.ZodString;
209
+ summary: z.ZodNullable<z.ZodString>;
210
+ durationDays: z.ZodNumber;
211
+ durationLabel: z.ZodString;
212
+ startDestination: z.ZodNullable<z.ZodString>;
213
+ endDestination: z.ZodNullable<z.ZodString>;
214
+ destinations: z.ZodArray<z.ZodString>;
215
+ heroImage: z.ZodNullable<z.ZodObject<{
216
+ url: z.ZodString;
217
+ alt: z.ZodString;
218
+ srcSet: z.ZodNullable<z.ZodString>;
219
+ width: z.ZodNullable<z.ZodNumber>;
220
+ height: z.ZodNullable<z.ZodNumber>;
221
+ }, z.core.$strip>>;
222
+ highlights: z.ZodArray<z.ZodString>;
223
+ includedPreview: z.ZodArray<z.ZodString>;
224
+ tags: z.ZodArray<z.ZodObject<{
225
+ slug: z.ZodString;
226
+ label: z.ZodString;
227
+ }, z.core.$strip>>;
228
+ featured: z.ZodBoolean;
229
+ price: z.ZodObject<{
230
+ total: z.ZodNullable<z.ZodObject<{
231
+ formatted: z.ZodString;
232
+ amount: z.ZodNullable<z.ZodNumber>;
233
+ currency: z.ZodString;
234
+ }, z.core.$strip>>;
235
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
236
+ formatted: z.ZodString;
237
+ amount: z.ZodNullable<z.ZodNumber>;
238
+ currency: z.ZodString;
239
+ }, z.core.$strip>>;
240
+ }, z.core.$strip>;
241
+ overview: z.ZodArray<z.ZodString>;
242
+ gallery: z.ZodArray<z.ZodObject<{
243
+ url: z.ZodString;
244
+ alt: z.ZodString;
245
+ srcSet: z.ZodNullable<z.ZodString>;
246
+ width: z.ZodNullable<z.ZodNumber>;
247
+ height: z.ZodNullable<z.ZodNumber>;
248
+ }, z.core.$strip>>;
249
+ days: z.ZodArray<z.ZodObject<{
250
+ dayLabel: z.ZodString;
251
+ dateLabel: z.ZodNullable<z.ZodString>;
252
+ destination: z.ZodString;
253
+ title: z.ZodString;
254
+ description: z.ZodString;
255
+ image: z.ZodNullable<z.ZodObject<{
256
+ url: z.ZodString;
257
+ alt: z.ZodString;
258
+ srcSet: z.ZodNullable<z.ZodString>;
259
+ width: z.ZodNullable<z.ZodNumber>;
260
+ height: z.ZodNullable<z.ZodNumber>;
261
+ }, z.core.$strip>>;
262
+ mealPlan: z.ZodNullable<z.ZodString>;
263
+ accommodation: z.ZodNullable<z.ZodObject<{
264
+ label: z.ZodString;
265
+ name: z.ZodString;
266
+ detail: z.ZodString;
267
+ image: z.ZodNullable<z.ZodObject<{
268
+ url: z.ZodString;
269
+ alt: z.ZodString;
270
+ srcSet: z.ZodNullable<z.ZodString>;
271
+ width: z.ZodNullable<z.ZodNumber>;
272
+ height: z.ZodNullable<z.ZodNumber>;
273
+ }, z.core.$strip>>;
274
+ }, z.core.$strip>>;
275
+ activityGroups: z.ZodArray<z.ZodObject<{
276
+ title: z.ZodString;
277
+ activities: z.ZodArray<z.ZodObject<{
278
+ time: z.ZodNullable<z.ZodString>;
279
+ name: z.ZodString;
280
+ location: z.ZodNullable<z.ZodString>;
281
+ notes: z.ZodNullable<z.ZodString>;
282
+ }, z.core.$strip>>;
283
+ }, z.core.$strip>>;
284
+ activities: z.ZodArray<z.ZodObject<{
285
+ time: z.ZodNullable<z.ZodString>;
286
+ name: z.ZodString;
287
+ location: z.ZodNullable<z.ZodString>;
288
+ notes: z.ZodNullable<z.ZodString>;
289
+ }, z.core.$strip>>;
290
+ gallery: z.ZodArray<z.ZodObject<{
291
+ url: z.ZodString;
292
+ alt: z.ZodString;
293
+ srcSet: z.ZodNullable<z.ZodString>;
294
+ width: z.ZodNullable<z.ZodNumber>;
295
+ height: z.ZodNullable<z.ZodNumber>;
296
+ }, z.core.$strip>>;
297
+ }, z.core.$strip>>;
298
+ lodging: z.ZodArray<z.ZodObject<{
299
+ name: z.ZodString;
300
+ label: z.ZodString;
301
+ detail: z.ZodString;
302
+ image: z.ZodNullable<z.ZodObject<{
303
+ url: z.ZodString;
304
+ alt: z.ZodString;
305
+ srcSet: z.ZodNullable<z.ZodString>;
306
+ width: z.ZodNullable<z.ZodNumber>;
307
+ height: z.ZodNullable<z.ZodNumber>;
308
+ }, z.core.$strip>>;
309
+ nights: z.ZodArray<z.ZodString>;
310
+ mealPlan: z.ZodNullable<z.ZodString>;
311
+ }, z.core.$strip>>;
312
+ vehicle: z.ZodNullable<z.ZodObject<{
313
+ name: z.ZodString;
314
+ description: z.ZodString;
315
+ image: z.ZodNullable<z.ZodObject<{
316
+ url: z.ZodString;
317
+ alt: z.ZodString;
318
+ srcSet: z.ZodNullable<z.ZodString>;
319
+ width: z.ZodNullable<z.ZodNumber>;
320
+ height: z.ZodNullable<z.ZodNumber>;
321
+ }, z.core.$strip>>;
322
+ features: z.ZodArray<z.ZodString>;
323
+ maxPassengers: z.ZodNullable<z.ZodNumber>;
324
+ }, z.core.$strip>>;
325
+ inclusions: z.ZodArray<z.ZodString>;
326
+ exclusions: z.ZodArray<z.ZodString>;
327
+ paymentTerms: z.ZodArray<z.ZodString>;
328
+ paymentNote: z.ZodNullable<z.ZodString>;
329
+ availability: z.ZodObject<{
330
+ unlimited: z.ZodBoolean;
331
+ startDate: z.ZodNullable<z.ZodString>;
332
+ endDate: z.ZodNullable<z.ZodString>;
333
+ }, z.core.$strip>;
334
+ pricing: z.ZodObject<{
335
+ currency: z.ZodString;
336
+ total: z.ZodNullable<z.ZodObject<{
337
+ formatted: z.ZodString;
338
+ amount: z.ZodNullable<z.ZodNumber>;
339
+ currency: z.ZodString;
340
+ }, z.core.$strip>>;
341
+ perPerson: z.ZodNullable<z.ZodObject<{
342
+ formatted: z.ZodString;
343
+ amount: z.ZodNullable<z.ZodNumber>;
344
+ currency: z.ZodString;
345
+ }, z.core.$strip>>;
346
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
347
+ formatted: z.ZodString;
348
+ amount: z.ZodNullable<z.ZodNumber>;
349
+ currency: z.ZodString;
350
+ }, z.core.$strip>>;
351
+ lineItems: z.ZodArray<z.ZodObject<{
352
+ name: z.ZodString;
353
+ qty: z.ZodString;
354
+ unitPrice: z.ZodString;
355
+ total: z.ZodString;
356
+ }, z.core.$strip>>;
357
+ partySize: z.ZodNullable<z.ZodObject<{
358
+ minTravellers: z.ZodNumber;
359
+ maxTravellers: z.ZodNumber;
360
+ baselineAdults: z.ZodNumber;
361
+ childrenAllowed: z.ZodBoolean;
362
+ options: z.ZodArray<z.ZodObject<{
363
+ adults: z.ZodNumber;
364
+ children: z.ZodNumber;
365
+ total: z.ZodString;
366
+ perPerson: z.ZodString;
367
+ vehicleCapacityLabel: z.ZodNullable<z.ZodString>;
368
+ }, z.core.$strip>>;
369
+ }, z.core.$strip>>;
370
+ }, z.core.$strip>;
371
+ operator: z.ZodObject<{
372
+ name: z.ZodString;
373
+ logoUrl: z.ZodNullable<z.ZodString>;
374
+ website: z.ZodNullable<z.ZodString>;
375
+ phone: z.ZodNullable<z.ZodString>;
376
+ address: z.ZodNullable<z.ZodString>;
377
+ }, z.core.$strip>;
378
+ enquiry: z.ZodObject<{
379
+ endpoint: z.ZodString;
380
+ bookingEndpoint: z.ZodString;
381
+ minTravellers: z.ZodNumber;
382
+ maxTravellers: z.ZodNumber;
383
+ childrenAllowed: z.ZodBoolean;
384
+ }, z.core.$strip>;
385
+ related: z.ZodArray<z.ZodObject<{
386
+ slug: z.ZodString;
387
+ title: z.ZodString;
388
+ summary: z.ZodNullable<z.ZodString>;
389
+ durationDays: z.ZodNumber;
390
+ durationLabel: z.ZodString;
391
+ startDestination: z.ZodNullable<z.ZodString>;
392
+ endDestination: z.ZodNullable<z.ZodString>;
393
+ destinations: z.ZodArray<z.ZodString>;
394
+ heroImage: z.ZodNullable<z.ZodObject<{
395
+ url: z.ZodString;
396
+ alt: z.ZodString;
397
+ srcSet: z.ZodNullable<z.ZodString>;
398
+ width: z.ZodNullable<z.ZodNumber>;
399
+ height: z.ZodNullable<z.ZodNumber>;
400
+ }, z.core.$strip>>;
401
+ highlights: z.ZodArray<z.ZodString>;
402
+ includedPreview: z.ZodArray<z.ZodString>;
403
+ tags: z.ZodArray<z.ZodObject<{
404
+ slug: z.ZodString;
405
+ label: z.ZodString;
406
+ }, z.core.$strip>>;
407
+ featured: z.ZodBoolean;
408
+ price: z.ZodObject<{
409
+ total: z.ZodNullable<z.ZodObject<{
410
+ formatted: z.ZodString;
411
+ amount: z.ZodNullable<z.ZodNumber>;
412
+ currency: z.ZodString;
413
+ }, z.core.$strip>>;
414
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
415
+ formatted: z.ZodString;
416
+ amount: z.ZodNullable<z.ZodNumber>;
417
+ currency: z.ZodString;
418
+ }, z.core.$strip>>;
419
+ }, z.core.$strip>;
420
+ }, z.core.$strip>>;
421
+ }, z.core.$strip>;
422
+ /** SEO built by Quest for the operator page URL passed as `?url=`. Follows the Quest SEO guide. */
423
+ export declare const tourSeoSchema: z.ZodObject<{
424
+ title: z.ZodString;
425
+ description: z.ZodString;
426
+ canonicalUrl: z.ZodString;
427
+ ogImage: z.ZodNullable<z.ZodString>;
428
+ heroPreloadUrl: z.ZodNullable<z.ZodString>;
429
+ jsonLd: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
430
+ }, z.core.$strip>;
431
+ export declare const tourListResponseSchema: z.ZodObject<{
432
+ apiVersion: z.ZodLiteral<1>;
433
+ data: z.ZodObject<{
434
+ tours: z.ZodArray<z.ZodObject<{
435
+ slug: z.ZodString;
436
+ title: z.ZodString;
437
+ summary: z.ZodNullable<z.ZodString>;
438
+ durationDays: z.ZodNumber;
439
+ durationLabel: z.ZodString;
440
+ startDestination: z.ZodNullable<z.ZodString>;
441
+ endDestination: z.ZodNullable<z.ZodString>;
442
+ destinations: z.ZodArray<z.ZodString>;
443
+ heroImage: z.ZodNullable<z.ZodObject<{
444
+ url: z.ZodString;
445
+ alt: z.ZodString;
446
+ srcSet: z.ZodNullable<z.ZodString>;
447
+ width: z.ZodNullable<z.ZodNumber>;
448
+ height: z.ZodNullable<z.ZodNumber>;
449
+ }, z.core.$strip>>;
450
+ highlights: z.ZodArray<z.ZodString>;
451
+ includedPreview: z.ZodArray<z.ZodString>;
452
+ tags: z.ZodArray<z.ZodObject<{
453
+ slug: z.ZodString;
454
+ label: z.ZodString;
455
+ }, z.core.$strip>>;
456
+ featured: z.ZodBoolean;
457
+ price: z.ZodObject<{
458
+ total: z.ZodNullable<z.ZodObject<{
459
+ formatted: z.ZodString;
460
+ amount: z.ZodNullable<z.ZodNumber>;
461
+ currency: z.ZodString;
462
+ }, z.core.$strip>>;
463
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
464
+ formatted: z.ZodString;
465
+ amount: z.ZodNullable<z.ZodNumber>;
466
+ currency: z.ZodString;
467
+ }, z.core.$strip>>;
468
+ }, z.core.$strip>;
469
+ }, z.core.$strip>>;
470
+ nextCursor: z.ZodNullable<z.ZodString>;
471
+ totalCount: z.ZodNumber;
472
+ }, z.core.$strip>;
473
+ }, z.core.$strip>;
474
+ export declare const tourDetailResponseSchema: z.ZodObject<{
475
+ apiVersion: z.ZodLiteral<1>;
476
+ data: z.ZodObject<{
477
+ tour: z.ZodObject<{
478
+ slug: z.ZodString;
479
+ title: z.ZodString;
480
+ summary: z.ZodNullable<z.ZodString>;
481
+ durationDays: z.ZodNumber;
482
+ durationLabel: z.ZodString;
483
+ startDestination: z.ZodNullable<z.ZodString>;
484
+ endDestination: z.ZodNullable<z.ZodString>;
485
+ destinations: z.ZodArray<z.ZodString>;
486
+ heroImage: z.ZodNullable<z.ZodObject<{
487
+ url: z.ZodString;
488
+ alt: z.ZodString;
489
+ srcSet: z.ZodNullable<z.ZodString>;
490
+ width: z.ZodNullable<z.ZodNumber>;
491
+ height: z.ZodNullable<z.ZodNumber>;
492
+ }, z.core.$strip>>;
493
+ highlights: z.ZodArray<z.ZodString>;
494
+ includedPreview: z.ZodArray<z.ZodString>;
495
+ tags: z.ZodArray<z.ZodObject<{
496
+ slug: z.ZodString;
497
+ label: z.ZodString;
498
+ }, z.core.$strip>>;
499
+ featured: z.ZodBoolean;
500
+ price: z.ZodObject<{
501
+ total: z.ZodNullable<z.ZodObject<{
502
+ formatted: z.ZodString;
503
+ amount: z.ZodNullable<z.ZodNumber>;
504
+ currency: z.ZodString;
505
+ }, z.core.$strip>>;
506
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
507
+ formatted: z.ZodString;
508
+ amount: z.ZodNullable<z.ZodNumber>;
509
+ currency: z.ZodString;
510
+ }, z.core.$strip>>;
511
+ }, z.core.$strip>;
512
+ overview: z.ZodArray<z.ZodString>;
513
+ gallery: z.ZodArray<z.ZodObject<{
514
+ url: z.ZodString;
515
+ alt: z.ZodString;
516
+ srcSet: z.ZodNullable<z.ZodString>;
517
+ width: z.ZodNullable<z.ZodNumber>;
518
+ height: z.ZodNullable<z.ZodNumber>;
519
+ }, z.core.$strip>>;
520
+ days: z.ZodArray<z.ZodObject<{
521
+ dayLabel: z.ZodString;
522
+ dateLabel: z.ZodNullable<z.ZodString>;
523
+ destination: z.ZodString;
524
+ title: z.ZodString;
525
+ description: z.ZodString;
526
+ image: z.ZodNullable<z.ZodObject<{
527
+ url: z.ZodString;
528
+ alt: z.ZodString;
529
+ srcSet: z.ZodNullable<z.ZodString>;
530
+ width: z.ZodNullable<z.ZodNumber>;
531
+ height: z.ZodNullable<z.ZodNumber>;
532
+ }, z.core.$strip>>;
533
+ mealPlan: z.ZodNullable<z.ZodString>;
534
+ accommodation: z.ZodNullable<z.ZodObject<{
535
+ label: z.ZodString;
536
+ name: z.ZodString;
537
+ detail: z.ZodString;
538
+ image: z.ZodNullable<z.ZodObject<{
539
+ url: z.ZodString;
540
+ alt: z.ZodString;
541
+ srcSet: z.ZodNullable<z.ZodString>;
542
+ width: z.ZodNullable<z.ZodNumber>;
543
+ height: z.ZodNullable<z.ZodNumber>;
544
+ }, z.core.$strip>>;
545
+ }, z.core.$strip>>;
546
+ activityGroups: z.ZodArray<z.ZodObject<{
547
+ title: z.ZodString;
548
+ activities: z.ZodArray<z.ZodObject<{
549
+ time: z.ZodNullable<z.ZodString>;
550
+ name: z.ZodString;
551
+ location: z.ZodNullable<z.ZodString>;
552
+ notes: z.ZodNullable<z.ZodString>;
553
+ }, z.core.$strip>>;
554
+ }, z.core.$strip>>;
555
+ activities: z.ZodArray<z.ZodObject<{
556
+ time: z.ZodNullable<z.ZodString>;
557
+ name: z.ZodString;
558
+ location: z.ZodNullable<z.ZodString>;
559
+ notes: z.ZodNullable<z.ZodString>;
560
+ }, z.core.$strip>>;
561
+ gallery: z.ZodArray<z.ZodObject<{
562
+ url: z.ZodString;
563
+ alt: z.ZodString;
564
+ srcSet: z.ZodNullable<z.ZodString>;
565
+ width: z.ZodNullable<z.ZodNumber>;
566
+ height: z.ZodNullable<z.ZodNumber>;
567
+ }, z.core.$strip>>;
568
+ }, z.core.$strip>>;
569
+ lodging: z.ZodArray<z.ZodObject<{
570
+ name: z.ZodString;
571
+ label: z.ZodString;
572
+ detail: z.ZodString;
573
+ image: z.ZodNullable<z.ZodObject<{
574
+ url: z.ZodString;
575
+ alt: z.ZodString;
576
+ srcSet: z.ZodNullable<z.ZodString>;
577
+ width: z.ZodNullable<z.ZodNumber>;
578
+ height: z.ZodNullable<z.ZodNumber>;
579
+ }, z.core.$strip>>;
580
+ nights: z.ZodArray<z.ZodString>;
581
+ mealPlan: z.ZodNullable<z.ZodString>;
582
+ }, z.core.$strip>>;
583
+ vehicle: z.ZodNullable<z.ZodObject<{
584
+ name: z.ZodString;
585
+ description: z.ZodString;
586
+ image: z.ZodNullable<z.ZodObject<{
587
+ url: z.ZodString;
588
+ alt: z.ZodString;
589
+ srcSet: z.ZodNullable<z.ZodString>;
590
+ width: z.ZodNullable<z.ZodNumber>;
591
+ height: z.ZodNullable<z.ZodNumber>;
592
+ }, z.core.$strip>>;
593
+ features: z.ZodArray<z.ZodString>;
594
+ maxPassengers: z.ZodNullable<z.ZodNumber>;
595
+ }, z.core.$strip>>;
596
+ inclusions: z.ZodArray<z.ZodString>;
597
+ exclusions: z.ZodArray<z.ZodString>;
598
+ paymentTerms: z.ZodArray<z.ZodString>;
599
+ paymentNote: z.ZodNullable<z.ZodString>;
600
+ availability: z.ZodObject<{
601
+ unlimited: z.ZodBoolean;
602
+ startDate: z.ZodNullable<z.ZodString>;
603
+ endDate: z.ZodNullable<z.ZodString>;
604
+ }, z.core.$strip>;
605
+ pricing: z.ZodObject<{
606
+ currency: z.ZodString;
607
+ total: z.ZodNullable<z.ZodObject<{
608
+ formatted: z.ZodString;
609
+ amount: z.ZodNullable<z.ZodNumber>;
610
+ currency: z.ZodString;
611
+ }, z.core.$strip>>;
612
+ perPerson: z.ZodNullable<z.ZodObject<{
613
+ formatted: z.ZodString;
614
+ amount: z.ZodNullable<z.ZodNumber>;
615
+ currency: z.ZodString;
616
+ }, z.core.$strip>>;
617
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
618
+ formatted: z.ZodString;
619
+ amount: z.ZodNullable<z.ZodNumber>;
620
+ currency: z.ZodString;
621
+ }, z.core.$strip>>;
622
+ lineItems: z.ZodArray<z.ZodObject<{
623
+ name: z.ZodString;
624
+ qty: z.ZodString;
625
+ unitPrice: z.ZodString;
626
+ total: z.ZodString;
627
+ }, z.core.$strip>>;
628
+ partySize: z.ZodNullable<z.ZodObject<{
629
+ minTravellers: z.ZodNumber;
630
+ maxTravellers: z.ZodNumber;
631
+ baselineAdults: z.ZodNumber;
632
+ childrenAllowed: z.ZodBoolean;
633
+ options: z.ZodArray<z.ZodObject<{
634
+ adults: z.ZodNumber;
635
+ children: z.ZodNumber;
636
+ total: z.ZodString;
637
+ perPerson: z.ZodString;
638
+ vehicleCapacityLabel: z.ZodNullable<z.ZodString>;
639
+ }, z.core.$strip>>;
640
+ }, z.core.$strip>>;
641
+ }, z.core.$strip>;
642
+ operator: z.ZodObject<{
643
+ name: z.ZodString;
644
+ logoUrl: z.ZodNullable<z.ZodString>;
645
+ website: z.ZodNullable<z.ZodString>;
646
+ phone: z.ZodNullable<z.ZodString>;
647
+ address: z.ZodNullable<z.ZodString>;
648
+ }, z.core.$strip>;
649
+ enquiry: z.ZodObject<{
650
+ endpoint: z.ZodString;
651
+ bookingEndpoint: z.ZodString;
652
+ minTravellers: z.ZodNumber;
653
+ maxTravellers: z.ZodNumber;
654
+ childrenAllowed: z.ZodBoolean;
655
+ }, z.core.$strip>;
656
+ related: z.ZodArray<z.ZodObject<{
657
+ slug: z.ZodString;
658
+ title: z.ZodString;
659
+ summary: z.ZodNullable<z.ZodString>;
660
+ durationDays: z.ZodNumber;
661
+ durationLabel: z.ZodString;
662
+ startDestination: z.ZodNullable<z.ZodString>;
663
+ endDestination: z.ZodNullable<z.ZodString>;
664
+ destinations: z.ZodArray<z.ZodString>;
665
+ heroImage: z.ZodNullable<z.ZodObject<{
666
+ url: z.ZodString;
667
+ alt: z.ZodString;
668
+ srcSet: z.ZodNullable<z.ZodString>;
669
+ width: z.ZodNullable<z.ZodNumber>;
670
+ height: z.ZodNullable<z.ZodNumber>;
671
+ }, z.core.$strip>>;
672
+ highlights: z.ZodArray<z.ZodString>;
673
+ includedPreview: z.ZodArray<z.ZodString>;
674
+ tags: z.ZodArray<z.ZodObject<{
675
+ slug: z.ZodString;
676
+ label: z.ZodString;
677
+ }, z.core.$strip>>;
678
+ featured: z.ZodBoolean;
679
+ price: z.ZodObject<{
680
+ total: z.ZodNullable<z.ZodObject<{
681
+ formatted: z.ZodString;
682
+ amount: z.ZodNullable<z.ZodNumber>;
683
+ currency: z.ZodString;
684
+ }, z.core.$strip>>;
685
+ fromPerPerson: z.ZodNullable<z.ZodObject<{
686
+ formatted: z.ZodString;
687
+ amount: z.ZodNullable<z.ZodNumber>;
688
+ currency: z.ZodString;
689
+ }, z.core.$strip>>;
690
+ }, z.core.$strip>;
691
+ }, z.core.$strip>>;
692
+ }, z.core.$strip>;
693
+ seo: z.ZodNullable<z.ZodObject<{
694
+ title: z.ZodString;
695
+ description: z.ZodString;
696
+ canonicalUrl: z.ZodString;
697
+ ogImage: z.ZodNullable<z.ZodString>;
698
+ heroPreloadUrl: z.ZodNullable<z.ZodString>;
699
+ jsonLd: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
700
+ }, z.core.$strip>>;
701
+ }, z.core.$strip>;
702
+ }, z.core.$strip>;
703
+ export declare const tourTagsResponseSchema: z.ZodObject<{
704
+ apiVersion: z.ZodLiteral<1>;
705
+ data: z.ZodObject<{
706
+ tags: z.ZodArray<z.ZodObject<{
707
+ slug: z.ZodString;
708
+ label: z.ZodString;
709
+ count: z.ZodNumber;
710
+ }, z.core.$strip>>;
711
+ }, z.core.$strip>;
712
+ }, z.core.$strip>;
713
+ export declare const questApiErrorSchema: z.ZodObject<{
714
+ apiVersion: z.ZodLiteral<1>;
715
+ error: z.ZodObject<{
716
+ code: z.ZodEnum<{
717
+ not_found: "not_found";
718
+ unavailable: "unavailable";
719
+ invalid_request: "invalid_request";
720
+ internal: "internal";
721
+ }>;
722
+ message: z.ZodString;
723
+ }, z.core.$strip>;
724
+ }, z.core.$strip>;
725
+ /** Fields the enquiry endpoint accepts. Mirrors Quest's inquiry validation. */
726
+ export declare const tourEnquiryInputSchema: z.ZodObject<{
727
+ name: z.ZodString;
728
+ email: z.ZodString;
729
+ phone: z.ZodString;
730
+ countryCode: z.ZodString;
731
+ numberOfAdults: z.ZodOptional<z.ZodNumber>;
732
+ numberOfChildren: z.ZodOptional<z.ZodNumber>;
733
+ travelDateMode: z.ZodEnum<{
734
+ flexible: "flexible";
735
+ specific_month: "specific_month";
736
+ specific_date: "specific_date";
737
+ }>;
738
+ preferredStartDate: z.ZodOptional<z.ZodString>;
739
+ preferredMonth: z.ZodOptional<z.ZodString>;
740
+ message: z.ZodOptional<z.ZodString>;
741
+ indicativeTotal: z.ZodOptional<z.ZodString>;
742
+ indicativePerPerson: z.ZodOptional<z.ZodString>;
743
+ indicativeCurrency: z.ZodOptional<z.ZodString>;
744
+ }, z.core.$strip>;
745
+ /** Fields the booking request endpoint accepts. Mirrors Quest's booking validation. */
746
+ export declare const tourBookingInputSchema: z.ZodObject<{
747
+ name: z.ZodString;
748
+ email: z.ZodString;
749
+ phone: z.ZodString;
750
+ nationalityCode: z.ZodString;
751
+ startDate: z.ZodString;
752
+ numberOfAdults: z.ZodNumber;
753
+ numberOfChildren: z.ZodNumber;
754
+ childAges: z.ZodArray<z.ZodNumber>;
755
+ accommodationTier: z.ZodOptional<z.ZodEnum<{
756
+ budget: "budget";
757
+ mid_range: "mid_range";
758
+ luxury: "luxury";
759
+ }>>;
760
+ singleSupplement: z.ZodBoolean;
761
+ specialRequirements: z.ZodOptional<z.ZodString>;
762
+ termsAccepted: z.ZodLiteral<true>;
763
+ indicativeTotal: z.ZodOptional<z.ZodString>;
764
+ indicativePerPerson: z.ZodOptional<z.ZodString>;
765
+ indicativeCurrency: z.ZodOptional<z.ZodString>;
766
+ }, z.core.$strip>;
767
+ /** Successful inquiry or booking submission, as returned by Quest. */
768
+ export declare const tourContactSuccessSchema: z.ZodObject<{
769
+ ok: z.ZodLiteral<true>;
770
+ referenceNumber: z.ZodString;
771
+ summary: z.ZodObject<{
772
+ packageTitle: z.ZodString;
773
+ travelDatesLabel: z.ZodString;
774
+ adults: z.ZodOptional<z.ZodNumber>;
775
+ children: z.ZodOptional<z.ZodNumber>;
776
+ contactName: z.ZodString;
777
+ }, z.core.$strip>;
778
+ }, z.core.$strip>;
779
+ /** Body of the revalidate webhook Quest sends to the operator site. */
780
+ export declare const toursChangedEventSchema: z.ZodObject<{
781
+ event: z.ZodLiteral<"tours.changed">;
782
+ siteToken: z.ZodString;
783
+ slugs: z.ZodArray<z.ZodString>;
784
+ sentAt: z.ZodString;
785
+ }, z.core.$strip>;
786
+ export type TourImage = z.infer<typeof tourImageSchema>;
787
+ export type TourTag = z.infer<typeof tourTagSchema>;
788
+ export type TourMoney = z.infer<typeof tourMoneySchema>;
789
+ export type TourCard = z.infer<typeof tourCardSchema>;
790
+ export type TourActivity = z.infer<typeof tourActivitySchema>;
791
+ export type TourDay = z.infer<typeof tourDaySchema>;
792
+ export type TourLodging = z.infer<typeof tourLodgingSchema>;
793
+ export type TourVehicle = z.infer<typeof tourVehicleSchema>;
794
+ export type TourPricing = z.infer<typeof tourPricingSchema>;
795
+ export type TourOperator = z.infer<typeof tourOperatorSchema>;
796
+ export type Tour = z.infer<typeof tourSchema>;
797
+ export type TourSeo = z.infer<typeof tourSeoSchema>;
798
+ export type TourListResponse = z.infer<typeof tourListResponseSchema>;
799
+ export type TourDetailResponse = z.infer<typeof tourDetailResponseSchema>;
800
+ export type TourTagsResponse = z.infer<typeof tourTagsResponseSchema>;
801
+ export type QuestApiError = z.infer<typeof questApiErrorSchema>;
802
+ export type TourEnquiryInput = z.infer<typeof tourEnquiryInputSchema>;
803
+ export type TourBookingInput = z.infer<typeof tourBookingInputSchema>;
804
+ export type TourContactSuccess = z.infer<typeof tourContactSuccessSchema>;
805
+ export type ToursChangedEvent = z.infer<typeof toursChangedEventSchema>;