import type { z } from "zod"; import { createBookingResponse } from "../schemas.js"; export interface CharterGuestInput { 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 CharterContactInput { 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 interface CreatePerSuiteBookingInput { voyageId: string; suiteId: string; /** ISO-4217 currency code. The server resolves it against the voyage/suite price map. */ currency: string; personId?: string | null; organizationId?: string | null; contact: CharterContactInput; guests: CharterGuestInput[]; notes?: string | null; } export interface CreateWholeYachtBookingInput { voyageId: string; /** ISO-4217 currency code. The server resolves it against the voyage/suite price map. */ currency: string; personId?: string | null; organizationId?: string | null; contact: CharterContactInput; guests?: CharterGuestInput[]; notes?: string | null; } export type CreateCharterBookingResult = z.infer["data"]; /** * Booking mutation set. The route layer detects local vs external voyages * from the unified key and dispatches accordingly — this hook doesn't * branch on provenance. */ export declare function useCharterBookingMutation(): { createPerSuite: import("@tanstack/react-query").UseMutationResult<{ bookingId: string; bookingNumber: string; charterDetails: { bookingId: string; bookingMode: "per_suite" | "whole_yacht"; source: "local" | "external"; sourceProvider: string | null; sourceRef: Record | null; voyageId: string | null; suiteId: string | null; yachtId: string | null; voyageDisplayName: string | null; suiteDisplayName: string | null; yachtName: string | null; charterAreaSnapshot: string | null; guestCount: number; quotedCurrency: string; quotedSuitePrice: string | null; quotedPortFee: string | null; quotedCharterFee: string | null; apaPercent: string | null; apaAmount: string | null; quotedTotal: string; mybaTemplateIdSnapshot: string | null; mybaContractId: string | null; apaPaidAmount: string | null; apaSpentAmount: string | null; apaRefundAmount: string | null; apaSettledAt: string | null; connectorBookingRef: string | null; connectorStatus: string | null; notes: string | null; createdAt: string; updatedAt: string; }; quote: { mode: "per_suite"; voyageId: string; suiteId: string; suiteName: string; currency: string; suitePrice: string; portFee: string | null; total: string; } | { mode: "whole_yacht"; voyageId: string; currency: string; charterFee: string; apaPercent: string; apaAmount: string; total: string; }; sourceProvider?: string | undefined; sourceRef?: Record | undefined; }, Error, { voyageKey: string; input: CreatePerSuiteBookingInput; }, unknown>; createWholeYacht: import("@tanstack/react-query").UseMutationResult<{ bookingId: string; bookingNumber: string; charterDetails: { bookingId: string; bookingMode: "per_suite" | "whole_yacht"; source: "local" | "external"; sourceProvider: string | null; sourceRef: Record | null; voyageId: string | null; suiteId: string | null; yachtId: string | null; voyageDisplayName: string | null; suiteDisplayName: string | null; yachtName: string | null; charterAreaSnapshot: string | null; guestCount: number; quotedCurrency: string; quotedSuitePrice: string | null; quotedPortFee: string | null; quotedCharterFee: string | null; apaPercent: string | null; apaAmount: string | null; quotedTotal: string; mybaTemplateIdSnapshot: string | null; mybaContractId: string | null; apaPaidAmount: string | null; apaSpentAmount: string | null; apaRefundAmount: string | null; apaSettledAt: string | null; connectorBookingRef: string | null; connectorStatus: string | null; notes: string | null; createdAt: string; updatedAt: string; }; quote: { mode: "per_suite"; voyageId: string; suiteId: string; suiteName: string; currency: string; suitePrice: string; portFee: string | null; total: string; } | { mode: "whole_yacht"; voyageId: string; currency: string; charterFee: string; apaPercent: string; apaAmount: string; total: string; }; sourceProvider?: string | undefined; sourceRef?: Record | undefined; }, Error, { voyageKey: string; input: CreateWholeYachtBookingInput; }, unknown>; };