@qite/tide-components 1.0.13 → 1.0.14-preview.2

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 (41) hide show
  1. package/build/build-cjs/index.js +9822 -8637
  2. package/build/build-cjs/src/booking-product/types.d.ts +7 -0
  3. package/build/build-cjs/src/booking-wizard/components/build-step-labels.d.ts +2 -1
  4. package/build/build-cjs/src/booking-wizard/features/booking/booking-slice.d.ts +6 -1
  5. package/build/build-cjs/src/booking-wizard/features/booking/constants.d.ts +5 -4
  6. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +220 -4
  7. package/build/build-cjs/src/booking-wizard/features/subform/index.d.ts +3 -0
  8. package/build/build-cjs/src/booking-wizard/features/subform/subform-entry.d.ts +9 -0
  9. package/build/build-cjs/src/booking-wizard/features/subform/subform-utils.d.ts +15 -0
  10. package/build/build-cjs/src/booking-wizard/features/travelers-form/validate-form.d.ts +2 -2
  11. package/build/build-cjs/src/booking-wizard/types.d.ts +29 -3
  12. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +2 -0
  13. package/build/build-cjs/src/search-results/components/itinerary/index.d.ts +1 -0
  14. package/build/build-cjs/src/search-results/components/itinerary/itinerary-utils.d.ts +1 -0
  15. package/build/build-cjs/src/search-results/components/traject/traject-card-row.d.ts +7 -0
  16. package/build/build-cjs/src/search-results/types.d.ts +8 -0
  17. package/build/build-cjs/src/search-results/utils/booked-entry-utils.d.ts +25 -0
  18. package/build/build-cjs/src/search-results/utils/query-utils.d.ts +5 -0
  19. package/build/build-cjs/src/search-results/utils/traject-utils.d.ts +21 -0
  20. package/build/build-cjs/src/shared/booking/travelers-form.d.ts +13 -8
  21. package/build/build-esm/index.js +9824 -8639
  22. package/build/build-esm/src/booking-product/types.d.ts +7 -0
  23. package/build/build-esm/src/booking-wizard/components/build-step-labels.d.ts +2 -1
  24. package/build/build-esm/src/booking-wizard/features/booking/booking-slice.d.ts +6 -1
  25. package/build/build-esm/src/booking-wizard/features/booking/constants.d.ts +5 -4
  26. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +220 -4
  27. package/build/build-esm/src/booking-wizard/features/subform/index.d.ts +3 -0
  28. package/build/build-esm/src/booking-wizard/features/subform/subform-entry.d.ts +9 -0
  29. package/build/build-esm/src/booking-wizard/features/subform/subform-utils.d.ts +15 -0
  30. package/build/build-esm/src/booking-wizard/features/travelers-form/validate-form.d.ts +2 -2
  31. package/build/build-esm/src/booking-wizard/types.d.ts +29 -3
  32. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +2 -0
  33. package/build/build-esm/src/search-results/components/itinerary/index.d.ts +1 -0
  34. package/build/build-esm/src/search-results/components/itinerary/itinerary-utils.d.ts +1 -0
  35. package/build/build-esm/src/search-results/components/traject/traject-card-row.d.ts +7 -0
  36. package/build/build-esm/src/search-results/types.d.ts +8 -0
  37. package/build/build-esm/src/search-results/utils/booked-entry-utils.d.ts +25 -0
  38. package/build/build-esm/src/search-results/utils/query-utils.d.ts +5 -0
  39. package/build/build-esm/src/search-results/utils/traject-utils.d.ts +21 -0
  40. package/build/build-esm/src/shared/booking/travelers-form.d.ts +13 -8
  41. package/package.json +2 -2
@@ -13,6 +13,13 @@ export interface Settings {
13
13
  isOffer?: boolean;
14
14
  displayMode?: 'list' | 'calendar';
15
15
  searchType?: number;
16
+ /**
17
+ * Identifies which portal search configuration this product is being booked
18
+ * through. Required by the search/details requests. Forwarded as-is on
19
+ * those requests and, on "Book", appended to the booking-wizard redirect
20
+ * URL so it survives the handoff.
21
+ */
22
+ searchConfigurationId: number;
16
23
  /**
17
24
  * When true, hides the "Rooms" heading, the number-of-rooms stepper,
18
25
  * the per-room "Room N" sub-heading and the Edit/Apply gate. The
@@ -2,7 +2,8 @@ interface BuildStepLabelsParams {
2
2
  travelersFirstStep: boolean;
3
3
  flightOptionsHidden?: boolean | null;
4
4
  roomOptionsHidden?: boolean | null;
5
+ subFormHidden?: boolean | null;
5
6
  translations: Record<string, any>;
6
7
  }
7
- export declare const buildStepLabels: ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, translations }: BuildStepLabelsParams) => string[];
8
+ export declare const buildStepLabels: ({ travelersFirstStep, flightOptionsHidden, roomOptionsHidden, subFormHidden, translations }: BuildStepLabelsParams) => string[];
8
9
  export {};
@@ -1,5 +1,6 @@
1
1
  import { BookingAttributes, BookingOptions, GroupedFlights, ProductAttributes } from '../../types';
2
2
  import { AirlineBookingPackageOption, AirportBookingPackageOption, BookingAirlineGroup, BookingAirportGroup, BookingOptionGroup, BookingOptionPax, BookingOptionUnit, BookingPackage, BookingPackageRoom, BookingTravelAgent, CountryItem, PerBookingPackageOption } from '@qite/tide-client/build/types';
3
+ import { FormValues } from '../../../form/form-types';
3
4
  import { BookingStep } from './constants';
4
5
  export interface BookingState {
5
6
  officeId: number;
@@ -35,6 +36,7 @@ export interface BookingState {
35
36
  travelersFirstStep: boolean;
36
37
  hasMounted: boolean;
37
38
  countries?: CountryItem[];
39
+ subFormAnswers: Record<string, FormValues>;
38
40
  }
39
41
  export declare const fetchPackage: import("@reduxjs/toolkit").AsyncThunk<void, void, {
40
42
  state?: unknown;
@@ -56,6 +58,9 @@ export declare const fetchCountries: import("@reduxjs/toolkit").AsyncThunk<impor
56
58
  fulfilledMeta?: unknown;
57
59
  rejectedMeta?: unknown;
58
60
  }>;
59
- export declare const setOfficeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setOfficeId">, setLanguageCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setLanguageCode">, setTranslations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "booking/setTranslations">, setBookingOptions: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptions, "booking/setBookingOptions">, setBookingType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingType">, setProductAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ProductAttributes | undefined, "booking/setProductAttributes">, setBookingAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingAttributes | undefined, "booking/setBookingAttributes">, setCalculateDeposit: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setCalculateDeposit">, setShowCommission: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean | undefined, "booking/setShowCommission">, setBookingNumber: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingNumber">, setIsRetry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsRetry">, setFetchingPackage: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setFetchingPackage">, setHasMounted: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setHasMounted">, setPackage: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingPackage | undefined, "booking/setPackage">, setPackageRooms: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingPackageRoom[], "booking/setPackageRooms">, setPackageOptionPax: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionPax[], "booking/setPackageOptionPax">, setPackageOptionUnits: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionUnit[], "booking/setPackageOptionUnits">, setPackageGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionGroup<PerBookingPackageOption>[], "booking/setPackageGroups">, setSkipPayment: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setSkipPayment">, setGeneratePaymentUrl: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setGeneratePaymentUrl">, setTagIds: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number[] | undefined, "booking/setTagIds">, setAgentAdressId: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number | undefined, "booking/setAgentAdressId">, setBookingRemarks: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingRemarks">, setVoucherCodes: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "booking/setVoucherCodes">, setCurrentStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingStep, "booking/setCurrentStep">, setPackageAirlineGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirlineGroup<AirlineBookingPackageOption>[], "booking/setPackageAirlineGroups">, setPackageAirportGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirportGroup<AirportBookingPackageOption>[], "booking/setPackageAirportGroups">, setFlights: import("@reduxjs/toolkit").ActionCreatorWithPayload<GroupedFlights, "booking/setFlights">, setAccommodationViewId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setAccommodationViewId">, setIsOption: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsOption">, setTravelersFirstStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setTravelersFirstStep">, setIsUnavailable: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsUnavailable">;
61
+ export declare const setOfficeId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setOfficeId">, setLanguageCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setLanguageCode">, setTranslations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "booking/setTranslations">, setBookingOptions: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptions, "booking/setBookingOptions">, setBookingType: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingType">, setProductAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ProductAttributes | undefined, "booking/setProductAttributes">, setBookingAttributes: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingAttributes | undefined, "booking/setBookingAttributes">, setCalculateDeposit: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setCalculateDeposit">, setShowCommission: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean | undefined, "booking/setShowCommission">, setBookingNumber: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingNumber">, setIsRetry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsRetry">, setFetchingPackage: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setFetchingPackage">, setHasMounted: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setHasMounted">, setPackage: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<BookingPackage | undefined, "booking/setPackage">, setPackageRooms: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingPackageRoom[], "booking/setPackageRooms">, setPackageOptionPax: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionPax[], "booking/setPackageOptionPax">, setPackageOptionUnits: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionUnit[], "booking/setPackageOptionUnits">, setPackageGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingOptionGroup<PerBookingPackageOption>[], "booking/setPackageGroups">, setSkipPayment: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setSkipPayment">, setGeneratePaymentUrl: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setGeneratePaymentUrl">, setTagIds: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number[] | undefined, "booking/setTagIds">, setAgentAdressId: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<number | undefined, "booking/setAgentAdressId">, setBookingRemarks: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "booking/setBookingRemarks">, setVoucherCodes: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "booking/setVoucherCodes">, setCurrentStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingStep, "booking/setCurrentStep">, setPackageAirlineGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirlineGroup<AirlineBookingPackageOption>[], "booking/setPackageAirlineGroups">, setPackageAirportGroups: import("@reduxjs/toolkit").ActionCreatorWithPayload<BookingAirportGroup<AirportBookingPackageOption>[], "booking/setPackageAirportGroups">, setFlights: import("@reduxjs/toolkit").ActionCreatorWithPayload<GroupedFlights, "booking/setFlights">, setAccommodationViewId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "booking/setAccommodationViewId">, setIsOption: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsOption">, setTravelersFirstStep: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setTravelersFirstStep">, setIsUnavailable: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "booking/setIsUnavailable">, setSubFormAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
62
+ entryLineGuid: string;
63
+ values: FormValues;
64
+ }, "booking/setSubFormAnswer">;
60
65
  declare const _default: import("@reduxjs/toolkit").Reducer<BookingState>;
61
66
  export default _default;
@@ -2,7 +2,8 @@ export declare const ROOM_OPTIONS_FORM_STEP = 1;
2
2
  export declare const FLIGHT_OPTIONS_FORM_STEP = 2;
3
3
  export declare const OPTIONS_FORM_STEP = 3;
4
4
  export declare const TRAVELERS_FORM_STEP = 4;
5
- export declare const SUMMARY_STEP = 5;
6
- export declare const CONFIRMATION_STEP = 6;
7
- export declare const ERROR_STEP = 7;
8
- export type BookingStep = typeof ROOM_OPTIONS_FORM_STEP | typeof FLIGHT_OPTIONS_FORM_STEP | typeof OPTIONS_FORM_STEP | typeof TRAVELERS_FORM_STEP | typeof SUMMARY_STEP | typeof CONFIRMATION_STEP | typeof ERROR_STEP;
5
+ export declare const SUBFORM_STEP = 5;
6
+ export declare const SUMMARY_STEP = 6;
7
+ export declare const CONFIRMATION_STEP = 7;
8
+ export declare const ERROR_STEP = 8;
9
+ export type BookingStep = typeof ROOM_OPTIONS_FORM_STEP | typeof FLIGHT_OPTIONS_FORM_STEP | typeof OPTIONS_FORM_STEP | typeof TRAVELERS_FORM_STEP | typeof SUBFORM_STEP | typeof SUMMARY_STEP | typeof CONFIRMATION_STEP | typeof ERROR_STEP;
@@ -17,7 +17,7 @@ export declare const selectPackageOptionUnits: (state: RootState) => import("@qi
17
17
  export declare const selectPackageOptionPax: (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined;
18
18
  export declare const selectPackageGroups: (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined;
19
19
  export declare const selectPackageDetails: (state: RootState) => import("@qite/tide-client").BookingPackage | undefined;
20
- export declare const selectPaxCustomFields: (state: RootState) => import("@qite/tide-client").BookingPackagePaxCustomField[];
20
+ export declare const selectPaxFields: (state: RootState) => import("@qite/tide-client").BookingPackagePaxFieldConfig[];
21
21
  export declare const selectPackageFlights: (state: RootState) => {
22
22
  outward: import("@qite/tide-client").BookingPackageFlight[] | undefined;
23
23
  return: import("@qite/tide-client").BookingPackageFlight[] | undefined;
@@ -401,6 +401,152 @@ export declare const selectBookingAddress: ((state: {
401
401
  argsMemoize: typeof import("reselect").weakMapMemoize;
402
402
  memoize: typeof import("reselect").weakMapMemoize;
403
403
  };
404
+ export declare const selectSubFormAnswers: (state: RootState) => Record<string, import("../../../form/form-types").FormValues>;
405
+ export declare const selectInEffectSubFormLines: ((state: {
406
+ booking: import("./booking-slice").BookingState;
407
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
408
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
409
+ summary: import("../summary/summary-slice").SummaryState;
410
+ apiSettings: import("../../..").ApiSettingsState;
411
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
412
+ clearCache: () => void;
413
+ resultsCount: () => number;
414
+ resetResultsCount: () => void;
415
+ } & {
416
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
417
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
418
+ clearCache: () => void;
419
+ resultsCount: () => number;
420
+ resetResultsCount: () => void;
421
+ };
422
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
423
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
424
+ recomputations: () => number;
425
+ resetRecomputations: () => void;
426
+ dependencyRecomputations: () => number;
427
+ resetDependencyRecomputations: () => void;
428
+ } & {
429
+ argsMemoize: typeof import("reselect").weakMapMemoize;
430
+ memoize: typeof import("reselect").weakMapMemoize;
431
+ };
432
+ export declare const selectHasInEffectSubForms: ((state: {
433
+ booking: import("./booking-slice").BookingState;
434
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
435
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
436
+ summary: import("../summary/summary-slice").SummaryState;
437
+ apiSettings: import("../../..").ApiSettingsState;
438
+ }) => boolean) & {
439
+ clearCache: () => void;
440
+ resultsCount: () => number;
441
+ resetResultsCount: () => void;
442
+ } & {
443
+ resultFunc: (resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[]) => boolean;
444
+ memoizedResultFunc: ((resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[]) => boolean) & {
445
+ clearCache: () => void;
446
+ resultsCount: () => number;
447
+ resetResultsCount: () => void;
448
+ };
449
+ lastResult: () => boolean;
450
+ dependencies: [((state: {
451
+ booking: import("./booking-slice").BookingState;
452
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
453
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
454
+ summary: import("../summary/summary-slice").SummaryState;
455
+ apiSettings: import("../../..").ApiSettingsState;
456
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
457
+ clearCache: () => void;
458
+ resultsCount: () => number;
459
+ resetResultsCount: () => void;
460
+ } & {
461
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
462
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
463
+ clearCache: () => void;
464
+ resultsCount: () => number;
465
+ resetResultsCount: () => void;
466
+ };
467
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
468
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
469
+ recomputations: () => number;
470
+ resetRecomputations: () => void;
471
+ dependencyRecomputations: () => number;
472
+ resetDependencyRecomputations: () => void;
473
+ } & {
474
+ argsMemoize: typeof import("reselect").weakMapMemoize;
475
+ memoize: typeof import("reselect").weakMapMemoize;
476
+ }];
477
+ recomputations: () => number;
478
+ resetRecomputations: () => void;
479
+ dependencyRecomputations: () => number;
480
+ resetDependencyRecomputations: () => void;
481
+ } & {
482
+ argsMemoize: typeof import("reselect").weakMapMemoize;
483
+ memoize: typeof import("reselect").weakMapMemoize;
484
+ };
485
+ export declare const selectSubFormSubmissions: ((state: {
486
+ booking: import("./booking-slice").BookingState;
487
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
488
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
489
+ summary: import("../summary/summary-slice").SummaryState;
490
+ apiSettings: import("../../..").ApiSettingsState;
491
+ }) => {
492
+ entryLineGuid: string;
493
+ data: Record<string, unknown>;
494
+ }[]) & {
495
+ clearCache: () => void;
496
+ resultsCount: () => number;
497
+ resetResultsCount: () => void;
498
+ } & {
499
+ resultFunc: (resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
500
+ entryLineGuid: string;
501
+ data: Record<string, unknown>;
502
+ }[];
503
+ memoizedResultFunc: ((resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
504
+ entryLineGuid: string;
505
+ data: Record<string, unknown>;
506
+ }[]) & {
507
+ clearCache: () => void;
508
+ resultsCount: () => number;
509
+ resetResultsCount: () => void;
510
+ };
511
+ lastResult: () => {
512
+ entryLineGuid: string;
513
+ data: Record<string, unknown>;
514
+ }[];
515
+ dependencies: [((state: {
516
+ booking: import("./booking-slice").BookingState;
517
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
518
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
519
+ summary: import("../summary/summary-slice").SummaryState;
520
+ apiSettings: import("../../..").ApiSettingsState;
521
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
522
+ clearCache: () => void;
523
+ resultsCount: () => number;
524
+ resetResultsCount: () => void;
525
+ } & {
526
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
527
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
528
+ clearCache: () => void;
529
+ resultsCount: () => number;
530
+ resetResultsCount: () => void;
531
+ };
532
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
533
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
534
+ recomputations: () => number;
535
+ resetRecomputations: () => void;
536
+ dependencyRecomputations: () => number;
537
+ resetDependencyRecomputations: () => void;
538
+ } & {
539
+ argsMemoize: typeof import("reselect").weakMapMemoize;
540
+ memoize: typeof import("reselect").weakMapMemoize;
541
+ }, (state: RootState) => Record<string, import("../../../form/form-types").FormValues>];
542
+ recomputations: () => number;
543
+ resetRecomputations: () => void;
544
+ dependencyRecomputations: () => number;
545
+ resetDependencyRecomputations: () => void;
546
+ } & {
547
+ argsMemoize: typeof import("reselect").weakMapMemoize;
548
+ memoize: typeof import("reselect").weakMapMemoize;
549
+ };
404
550
  export declare const selectBookingPackageRequest: ((state: {
405
551
  booking: import("./booking-slice").BookingState;
406
552
  travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
@@ -465,8 +611,14 @@ export declare const selectBookingPackageBookRequest: ((state: {
465
611
  resultsCount: () => number;
466
612
  resetResultsCount: () => void;
467
613
  } & {
468
- resultFunc: (resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined) => BookingPackageRequest<BookingPackageBookRequest> | null;
469
- memoizedResultFunc: ((resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined) => BookingPackageRequest<BookingPackageBookRequest> | null) & {
614
+ resultFunc: (resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined, resultFuncArgs_15: {
615
+ entryLineGuid: string;
616
+ data: Record<string, unknown>;
617
+ }[]) => BookingPackageRequest<BookingPackageBookRequest> | null;
618
+ memoizedResultFunc: ((resultFuncArgs_0: BookingPackageRequest<any>, resultFuncArgs_1: import("../../types").BookingOptions, resultFuncArgs_2: string, resultFuncArgs_3: BookingPackagePax[], resultFuncArgs_4: BookingPackageAddress | undefined, resultFuncArgs_5: import("@qite/tide-client").BookingPackage | undefined, resultFuncArgs_6: boolean, resultFuncArgs_7: boolean | undefined, resultFuncArgs_8: number | undefined, resultFuncArgs_9: boolean, resultFuncArgs_10: boolean, resultFuncArgs_11: import("@qite/tide-client").BookingProductNotification[], resultFuncArgs_12: number[] | undefined, resultFuncArgs_13: string | undefined, resultFuncArgs_14: string[] | undefined, resultFuncArgs_15: {
619
+ entryLineGuid: string;
620
+ data: Record<string, unknown>;
621
+ }[]) => BookingPackageRequest<BookingPackageBookRequest> | null) & {
470
622
  clearCache: () => void;
471
623
  resultsCount: () => number;
472
624
  resetResultsCount: () => void;
@@ -628,7 +780,71 @@ export declare const selectBookingPackageBookRequest: ((state: {
628
780
  } & {
629
781
  argsMemoize: typeof import("reselect").weakMapMemoize;
630
782
  memoize: typeof import("reselect").weakMapMemoize;
631
- }, (state: RootState) => boolean, (state: RootState) => boolean, (state: RootState) => import("@qite/tide-client").BookingProductNotification[], (state: RootState) => number[] | undefined, (state: RootState) => string | undefined, (state: RootState) => string[] | undefined];
783
+ }, (state: RootState) => boolean, (state: RootState) => boolean, (state: RootState) => import("@qite/tide-client").BookingProductNotification[], (state: RootState) => number[] | undefined, (state: RootState) => string | undefined, (state: RootState) => string[] | undefined, ((state: {
784
+ booking: import("./booking-slice").BookingState;
785
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
786
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
787
+ summary: import("../summary/summary-slice").SummaryState;
788
+ apiSettings: import("../../..").ApiSettingsState;
789
+ }) => {
790
+ entryLineGuid: string;
791
+ data: Record<string, unknown>;
792
+ }[]) & {
793
+ clearCache: () => void;
794
+ resultsCount: () => number;
795
+ resetResultsCount: () => void;
796
+ } & {
797
+ resultFunc: (resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
798
+ entryLineGuid: string;
799
+ data: Record<string, unknown>;
800
+ }[];
801
+ memoizedResultFunc: ((resultFuncArgs_0: import("../subform/subform-utils").SubFormLine[], resultFuncArgs_1: Record<string, import("../../../form/form-types").FormValues>) => {
802
+ entryLineGuid: string;
803
+ data: Record<string, unknown>;
804
+ }[]) & {
805
+ clearCache: () => void;
806
+ resultsCount: () => number;
807
+ resetResultsCount: () => void;
808
+ };
809
+ lastResult: () => {
810
+ entryLineGuid: string;
811
+ data: Record<string, unknown>;
812
+ }[];
813
+ dependencies: [((state: {
814
+ booking: import("./booking-slice").BookingState;
815
+ travelersForm: import("../travelers-form/travelers-form-slice").TravelersFormState;
816
+ priceDetails: import("../price-details/price-details-slice").PriceDetailsState;
817
+ summary: import("../summary/summary-slice").SummaryState;
818
+ apiSettings: import("../../..").ApiSettingsState;
819
+ }) => import("../subform/subform-utils").SubFormLine[]) & {
820
+ clearCache: () => void;
821
+ resultsCount: () => number;
822
+ resetResultsCount: () => void;
823
+ } & {
824
+ resultFunc: (resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[];
825
+ memoizedResultFunc: ((resultFuncArgs_0: import("@qite/tide-client").BookingPackageRoom[] | undefined, resultFuncArgs_1: import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, resultFuncArgs_2: import("@qite/tide-client").BookingOptionUnit[] | undefined, resultFuncArgs_3: import("@qite/tide-client").BookingOptionPax[] | undefined) => import("../subform/subform-utils").SubFormLine[]) & {
826
+ clearCache: () => void;
827
+ resultsCount: () => number;
828
+ resetResultsCount: () => void;
829
+ };
830
+ lastResult: () => import("../subform/subform-utils").SubFormLine[];
831
+ dependencies: [(state: RootState) => import("@qite/tide-client").BookingPackageRoom[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionGroup<import("@qite/tide-client").PerBookingPackageOption>[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionUnit[] | undefined, (state: RootState) => import("@qite/tide-client").BookingOptionPax[] | undefined];
832
+ recomputations: () => number;
833
+ resetRecomputations: () => void;
834
+ dependencyRecomputations: () => number;
835
+ resetDependencyRecomputations: () => void;
836
+ } & {
837
+ argsMemoize: typeof import("reselect").weakMapMemoize;
838
+ memoize: typeof import("reselect").weakMapMemoize;
839
+ }, (state: RootState) => Record<string, import("../../../form/form-types").FormValues>];
840
+ recomputations: () => number;
841
+ resetRecomputations: () => void;
842
+ dependencyRecomputations: () => number;
843
+ resetDependencyRecomputations: () => void;
844
+ } & {
845
+ argsMemoize: typeof import("reselect").weakMapMemoize;
846
+ memoize: typeof import("reselect").weakMapMemoize;
847
+ }];
632
848
  recomputations: () => number;
633
849
  resetRecomputations: () => void;
634
850
  dependencyRecomputations: () => number;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const SubFormStep: React.FC;
3
+ export default SubFormStep;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { FormState } from '../../../form/hooks/use-form-state';
3
+ import { SubFormLine } from './subform-utils';
4
+ interface SubFormEntryProps {
5
+ line: SubFormLine;
6
+ formState: FormState;
7
+ }
8
+ declare const SubFormEntry: React.FC<SubFormEntryProps>;
9
+ export default SubFormEntry;
@@ -0,0 +1,15 @@
1
+ import { BookingOptionGroup, BookingOptionPax, BookingOptionUnit, BookingPackageRoom, PerBookingPackageOption, TideWebForm } from '@qite/tide-client/build/types';
2
+ export interface SubFormLine {
3
+ entryLineGuid: string;
4
+ subForm: TideWebForm;
5
+ productName: string;
6
+ startDate: string;
7
+ endDate: string;
8
+ }
9
+ export declare function collectInEffectSubFormLines(rooms: BookingPackageRoom[] | undefined, groups: BookingOptionGroup<PerBookingPackageOption>[] | undefined, optionUnits: BookingOptionUnit[] | undefined, optionPax: BookingOptionPax[] | undefined): SubFormLine[];
10
+ interface SubFormVisibilitySettings {
11
+ isHidden?: boolean | null;
12
+ pathSuffix?: string | null;
13
+ }
14
+ export declare function isSubFormStepVisible(settings: SubFormVisibilitySettings, hasInEffectSubForms: boolean, requirePathSuffix?: boolean): boolean;
15
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { FormikErrors } from 'formik';
2
- import { BookingPackagePaxCustomField } from '@qite/tide-client/build/types';
2
+ import { BookingPackagePaxFieldConfig } from '@qite/tide-client/build/types';
3
3
  import { FormField, TravelersFormValues } from '../../types';
4
- declare const validateForm: (values: TravelersFormValues, agentRequired?: boolean, bookingType?: string, translations?: any, formFields?: FormField[], mainBookerFormFields?: FormField[], maxChildAge?: number, maxBabyAge?: number, paxCustomFields?: BookingPackagePaxCustomField[]) => FormikErrors<TravelersFormValues>;
4
+ declare const validateForm: (values: TravelersFormValues, agentRequired?: boolean, bookingType?: string, translations?: any, formFields?: FormField[], mainBookerFormFields?: FormField[], maxChildAge?: number, maxBabyAge?: number, paxFields?: BookingPackagePaxFieldConfig[]) => FormikErrors<TravelersFormValues>;
5
5
  export default validateForm;
@@ -14,6 +14,10 @@ export interface Settings {
14
14
  isHidden?: boolean | null;
15
15
  pathSuffix?: string | null;
16
16
  };
17
+ subForm: {
18
+ isHidden?: boolean | null;
19
+ pathSuffix?: string | null;
20
+ };
17
21
  options: {
18
22
  pathSuffix: string;
19
23
  showRoomOptions?: boolean | null;
@@ -27,8 +31,6 @@ export interface Settings {
27
31
  countries?: Country[];
28
32
  travelersFirstStep?: boolean;
29
33
  showAllCountries?: boolean;
30
- showWeightField?: boolean;
31
- showHeightField?: boolean;
32
34
  };
33
35
  summary: {
34
36
  pathSuffix: string;
@@ -64,6 +66,7 @@ export interface Settings {
64
66
  apiUrl?: string;
65
67
  apiKey?: string;
66
68
  hideTags?: boolean;
69
+ searchConfigurationId?: number;
67
70
  translationFiles?: {
68
71
  language: string;
69
72
  path: string;
@@ -138,6 +141,13 @@ export interface SummaryCheckbox {
138
141
  text: string;
139
142
  isSelected: boolean;
140
143
  }
144
+ export interface TravelerAddress {
145
+ street?: string;
146
+ number?: string;
147
+ postalCode?: string;
148
+ location?: string;
149
+ country?: string;
150
+ }
141
151
  export interface Traveler {
142
152
  id: number;
143
153
  gender: string;
@@ -154,6 +164,22 @@ export interface Traveler {
154
164
  weightType?: number;
155
165
  height?: number | null;
156
166
  heightType?: number;
167
+ nickname?: string;
168
+ birthplace?: string;
169
+ nationality?: string;
170
+ preferredLanguageId?: number;
171
+ email?: string;
172
+ phone?: string;
173
+ mobile?: string;
174
+ passportNumber?: string;
175
+ passportIssueDate?: string;
176
+ passportIssuedLocation?: string;
177
+ passportExpiryDate?: string;
178
+ emergencyNumber?: string;
179
+ hasInsurance?: boolean;
180
+ insuranceName?: string;
181
+ info?: string;
182
+ address?: TravelerAddress;
157
183
  customFields?: BookingPackageCustomField[];
158
184
  }
159
185
  export interface Room {
@@ -219,7 +245,7 @@ export interface BookingAttributes {
219
245
  includeFlights?: boolean;
220
246
  flightRouteId?: string | null;
221
247
  vendorConfigurationId?: number | null;
222
- searchConfigurationId?: number | null;
248
+ searchConfigurationId: number;
223
249
  productCode?: string;
224
250
  productName?: string;
225
251
  }
@@ -9,6 +9,8 @@ interface IndependentFlightOptionProps {
9
9
  showSelectedState?: boolean;
10
10
  currentSelectedPrice?: number;
11
11
  price?: number;
12
+ selectLabel?: string;
13
+ selectedLabel?: string;
12
14
  }
13
15
  declare const IndependentFlightOption: React.FC<IndependentFlightOptionProps>;
14
16
  export default IndependentFlightOption;
@@ -5,6 +5,7 @@ interface ItineraryProps {
5
5
  handleSetIsOpen: () => void;
6
6
  isLoading?: boolean;
7
7
  onEditAccommodation?: (segments: PackagingEntryLine[]) => void;
8
+ onSaveEntry?: () => void;
8
9
  }
9
10
  declare const Itinerary: React.FC<ItineraryProps>;
10
11
  export default Itinerary;
@@ -1,4 +1,5 @@
1
1
  import { PackagingEntryLine, PackagingEntryLineFlightLine, PackagingTrajectNode } from '@qite/tide-client';
2
+ export declare const isMeaningfulItineraryLine: (line: PackagingEntryLine) => boolean;
2
3
  export declare const getFlightLines: (flight?: PackagingEntryLine) => PackagingEntryLineFlightLine[];
3
4
  export declare const getDepartureTime: (flight?: PackagingEntryLine) => string;
4
5
  export declare const getArrivalTime: (flight?: PackagingEntryLine) => string;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface TrajectCardRowProps {
3
+ selectionKey: string;
4
+ children: React.ReactNode;
5
+ }
6
+ declare const TrajectCardRow: React.FC<TrajectCardRowProps>;
7
+ export default TrajectCardRow;
@@ -39,6 +39,14 @@ export interface SearchResultsConfiguration {
39
39
  onFlightBook?: (result: ExtendedFlightSearchResponseItem) => void;
40
40
  packagingEntry?: PackagingEntry | null;
41
41
  trajectEntry?: PackagingTrajectResponse | null;
42
+ /**
43
+ * From the website portal configuration. Lets the traveller change an already booked entry
44
+ * opened through its magic link: the entry lands on the day-by-day service cards (the traject
45
+ * results screen) where booked services can be swapped for alternatives and extras added. The
46
+ * booked entry needs `magicLink` set — booking merges changes into the dossier on it. Off by
47
+ * default: without it a booked entry only shows its full itinerary, as before.
48
+ */
49
+ allowBookedEntryChanges?: boolean;
42
50
  /**
43
51
  * From the website portal configuration. When true a traject node may also offer externally
44
52
  * sourced (API/vendor) hotels and excursions; when false only products held internally in Tide
@@ -0,0 +1,25 @@
1
+ import { PackagingAccommodationResponse, PackagingEntry, PackagingEntryLine, PackagingFlightResponse, PackagingTrajectNode, PackagingTrajectResponse } from '@qite/tide-client';
2
+ /**
3
+ * A booked entry opened through its magic link knows nothing about the traject it may once have
4
+ * been composed from — the dossier only keeps the lines. To give it the same day-by-day services
5
+ * screen a traject gets, the traject structure is rebuilt from those lines: every booked service
6
+ * becomes a node whose one "alternative" is the booked product itself, and the days span the trip.
7
+ *
8
+ * The synthesized response keeps the entry untouched (magic link included), which is also how the
9
+ * rest of the component tells this mode apart from a real traject: see isBookedEntryTraject.
10
+ */
11
+ export declare const isBookedEntryTraject: (trajectEntry?: PackagingTrajectResponse | null) => boolean;
12
+ /**
13
+ * Whether saving the entry would change the dossier: a line was swapped for a search result, or
14
+ * the active member of a line group moved (which swaps no line and so stamps no isChanged).
15
+ */
16
+ export declare const hasBookedEntryChanges: (original: PackagingEntry | null | undefined, editable: PackagingEntry | null | undefined) => boolean;
17
+ export declare const buildBookedTrajectEntry: (entry: PackagingEntry) => PackagingTrajectResponse;
18
+ /**
19
+ * The card for a booked service when no search result carries it any more (sold out, delisted).
20
+ * Rendered from the line, so the traveller still sees what they booked; price 0 makes the card
21
+ * leave its price out — the paid price lives in the price details, not on the line.
22
+ */
23
+ export declare const buildBookedNodeResult: (node: PackagingTrajectNode, lines: PackagingEntryLine[]) => PackagingAccommodationResponse;
24
+ /** The booked flight as a flight result, so the card that shows it is the card the search results use. */
25
+ export declare const buildBookedFlightResult: (line: PackagingEntryLine) => PackagingFlightResponse;
@@ -3,6 +3,11 @@ export declare const GROUP_TOUR_SERVICE_TYPE = 1;
3
3
  export declare const ACCOMMODATION_SERVICE_TYPE = 3;
4
4
  export declare const EXCURSION_SERVICE_TYPE = 4;
5
5
  export declare const FLIGHT_SERVICE_TYPE = 7;
6
+ /**
7
+ * Tide can group entry lines (a couple of hotels under one group key) of which one is active and
8
+ * the others are kept on the dossier as alternatives. A line without the flag counts as active.
9
+ */
10
+ export declare const isActiveEntryLine: (line: PackagingEntryLine) => boolean;
6
11
  export declare const toDateOnlyString: (value: string | Date) => string;
7
12
  export declare const getPrimaryAccommodationLine: (lines: PackagingEntryLine[]) => PackagingEntryLine | undefined;
8
13
  export declare const getDepartureAirportFromEntry: (lines: PackagingEntryLine[]) => string | null;
@@ -74,6 +74,22 @@ export declare const getPackagingRoomsFromEntry: (entry: PackagingEntry) => Pack
74
74
  export declare const pickCheapest: (results: PackagingAccommodationResponse[]) => PackagingAccommodationResponse | null;
75
75
  export declare const applyResultToLines: (lines: PackagingEntryLine[], result: PackagingAccommodationResponse) => PackagingEntryLine[];
76
76
  export declare const applyResultToLine: (line: PackagingEntryLine, result: PackagingAccommodationResponse, roomIndex?: number) => PackagingEntryLine;
77
+ export declare const getLineGroupKey: (line: PackagingEntryLine) => string;
78
+ /**
79
+ * The extra room lines of a service: the same product hanging off it. A transfer or flight that
80
+ * points at the hotel as its parent is not a room of it.
81
+ */
82
+ export declare const isRoomLineOf: (line: PackagingEntryLine, root: PackagingEntryLine) => boolean;
83
+ /** Every member of a line group with its room lines — the active member first, then dossier order. */
84
+ export declare const getGroupLines: (lines: PackagingEntryLine[], groupKey: string) => PackagingEntryLine[][];
85
+ /**
86
+ * Picking a result that is another member of the line's group moves the active flag to that
87
+ * member instead of rewriting the line: every member stays on the dossier as it is. Null when the
88
+ * result is not a member of the group.
89
+ */
90
+ export declare const buildGroupSelectionLines: (entryLines: PackagingEntryLine[], item: TrajectNodeWithLine, result: PackagingAccommodationResponse) => PackagingEntryLine[] | null;
91
+ export declare const buildNodeSelectionLines: (item: TrajectNodeWithLine, result: PackagingAccommodationResponse, bookedMode: boolean, entryLines?: PackagingEntryLine[]) => PackagingEntryLine[];
92
+ export declare const buildFlightSelectionLine: (item: TrajectNodeWithLine, flight: PackagingFlightResponse, bookedMode: boolean) => PackagingEntryLine;
77
93
  export declare const buildTrajectFlightRequest: ({ node, line }: TrajectNodeWithLine, context: TrajectSearchContext, pax: FlightSearchRequest["pax"]) => FlightSearchRequest;
78
94
  /**
79
95
  * The entry as the backend can price it.
@@ -87,6 +103,11 @@ export declare const buildTrajectFlightRequest: ({ node, line }: TrajectNodeWith
87
103
  * mapper gave them. This swaps in the guid of whatever each line resolved onto, leaving the
88
104
  * lines the traveller added themselves alone — those were built from a search result and already
89
105
  * carry the right one.
106
+ *
107
+ * A booked entry (the traject was rebuilt from a magic-link entry) is the other way around: its
108
+ * lines live in the dossier under their own guids, and only a line the traveller actually swapped
109
+ * (isChanged) exists in the search cache. Swapping an untouched line's guid would orphan it —
110
+ * the backend drops the dossier line and finds nothing to add — so those keep theirs.
90
111
  */
91
112
  export declare const withCachedEntryLineGuids: (entry: PackagingEntry, trajectEntry: PackagingTrajectResponse, nodeAvailability: Record<string, {
92
113
  results: PackagingAccommodationResponse[];