import { z } from "zod"; export interface BookingPassengerInput { firstName: string; lastName: string; email?: string | null; phone?: string | null; travelerCategory?: "adult" | "child" | "infant" | "senior" | "other" | null; preferredLanguage?: string | null; specialRequests?: string | null; isPrimary?: boolean; notes?: string | null; } export interface BookingContactInput { firstName: string; lastName: string; email?: string | null; phone?: string | null; language?: string | null; country?: string | null; region?: string | null; city?: string | null; address?: string | null; postalCode?: string | null; } export type BookingMode = "inquiry" | "reserve"; export interface CreateCruiseBookingInput { sailingId: string; cabinCategoryId: string; cabinId?: string | null; occupancy: number; fareCode?: string | null; mode?: BookingMode; personId?: string | null; organizationId?: string | null; contact: BookingContactInput; passengers: BookingPassengerInput[]; notes?: string | null; } declare const cruiseBookingResultSchema: z.ZodObject<{ data: z.ZodObject<{ bookingId: z.ZodString; bookingNumber: z.ZodString; cruiseDetails: z.ZodUnknown; quote: z.ZodObject<{ fareCode: z.ZodNullable; fareCodeName: z.ZodNullable; currency: z.ZodString; occupancy: z.ZodNumber; guestCount: z.ZodNumber; basePerPerson: z.ZodString; components: z.ZodArray; label: z.ZodNullable; amount: z.ZodString; currency: z.ZodString; direction: z.ZodEnum<{ addition: "addition"; inclusion: "inclusion"; credit: "credit"; }>; perPerson: z.ZodBoolean; }, z.core.$strip>>; totalPerPerson: z.ZodString; totalForCabin: z.ZodString; }, z.core.$strip>; }, z.core.$strip>; }, z.core.$strip>; declare const cruisePartyBookingResultSchema: z.ZodObject<{ data: z.ZodObject<{ groupId: z.ZodString; primaryBookingId: z.ZodNullable; groupDetails: z.ZodUnknown; cabins: z.ZodArray; fareCodeName: z.ZodNullable; currency: z.ZodString; occupancy: z.ZodNumber; guestCount: z.ZodNumber; basePerPerson: z.ZodString; components: z.ZodArray; label: z.ZodNullable; amount: z.ZodString; currency: z.ZodString; direction: z.ZodEnum<{ addition: "addition"; inclusion: "inclusion"; credit: "credit"; }>; perPerson: z.ZodBoolean; }, z.core.$strip>>; totalPerPerson: z.ZodString; totalForCabin: z.ZodString; }, z.core.$strip>; }, z.core.$strip>>; }, z.core.$strip>; }, z.core.$strip>; export type CreateCruiseBookingResult = z.infer["data"]; export type CreateCruisePartyBookingResult = z.infer["data"]; export interface PartyCabinEntry { cabinCategoryId: string; cabinId?: string | null; occupancy: number; fareCode?: string | null; passengers: BookingPassengerInput[]; notes?: string | null; } export interface CreateCruisePartyBookingInput { sailingId: string; cabins: PartyCabinEntry[]; leadPersonId?: string | null; organizationId?: string | null; contact: BookingContactInput; mode?: BookingMode; label?: string; notes?: string | null; } /** * Booking creation hooks. The route layer detects local vs external * sailings from the unified key and dispatches accordingly — this hook * doesn't need to branch. */ export declare function useCruiseBookingMutation(): { createSingle: import("@tanstack/react-query").UseMutationResult<{ bookingId: string; bookingNumber: string; cruiseDetails: unknown; quote: { fareCode: string | null; fareCodeName: string | null; currency: string; occupancy: number; guestCount: number; basePerPerson: string; components: { kind: "gratuity" | "onboard_credit" | "port_charge" | "tax" | "ncf" | "airfare" | "transfer" | "insurance"; label: string | null; amount: string; currency: string; direction: "addition" | "inclusion" | "credit"; perPerson: boolean; }[]; totalPerPerson: string; totalForCabin: string; }; }, Error, { sailingKey: string; input: CreateCruiseBookingInput; }, unknown>; createParty: import("@tanstack/react-query").UseMutationResult<{ groupId: string; primaryBookingId: string | null; groupDetails: unknown; cabins: { bookingId: string; bookingNumber: string; cruiseDetails: unknown; quote: { fareCode: string | null; fareCodeName: string | null; currency: string; occupancy: number; guestCount: number; basePerPerson: string; components: { kind: "gratuity" | "onboard_credit" | "port_charge" | "tax" | "ncf" | "airfare" | "transfer" | "insurance"; label: string | null; amount: string; currency: string; direction: "addition" | "inclusion" | "credit"; perPerson: boolean; }[]; totalPerPerson: string; totalForCabin: string; }; }[]; }, Error, { sailingKey: string; input: CreateCruisePartyBookingInput; }, unknown>; }; export {};