/** * Bookings agent tools on the framework tool contract. Thin wrappers over the * existing bookings service; the service is injected on the tool context * by intersection so this module stays deployment-agnostic. * * `list_bookings` / `get_booking` return non-PII booking state (`bookings:read`). * PII fields are a separate concern gated on `bookings-pii:read` (see the booking * PII surface) and are not exposed here. * `cancel_booking` always uses an action-ledger approval before execution. */ import { type ToolContext, type ToolHandlerActionPolicyContext } from "@voyant-travel/tools"; import { z } from "zod"; import { bookingListQuerySchema } from "./validation.js"; export interface BookingsToolServices { listBookings(query: z.infer): Promise; getBookingById(id: string): Promise; getBookingByNumber(bookingNumber: string): Promise; getBookingAggregates(query: { from?: string; to?: string; upcomingLimit?: number; }): Promise; confirmBooking(input: z.infer, admitted: ToolHandlerActionPolicyContext): Promise; cancelBooking(input: z.infer, admitted: ToolHandlerActionPolicyContext): Promise; previewTravelerCorrectionAmendment(input: z.infer): Promise; acceptBookingAmendment(input: z.infer): Promise; applyBookingAmendment(input: z.infer): Promise; } export type BookingsToolContext = ToolContext & { bookings?: BookingsToolServices; }; export declare const listBookingsTool: import("@voyant-travel/tools").ToolDefinition<{ sortBy: "status" | "createdAt" | "bookingNumber" | "startDate" | "endDate" | "pax" | "sellAmount"; sortDir: "asc" | "desc"; limit: number; offset: number; status?: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired" | undefined; excludeStatuses?: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired" | ("draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired")[] | undefined; search?: string | undefined; productId?: string | undefined; optionId?: string | undefined; availabilitySlotId?: string | undefined; supplierId?: string | undefined; productCategoryId?: string | undefined; personId?: string | undefined; organizationId?: string | undefined; dateFrom?: string | undefined; dateTo?: string | undefined; paxMin?: number | undefined; paxMax?: number | undefined; }, unknown, BookingsToolContext>; export declare const getBookingTool: import("@voyant-travel/tools").ToolDefinition<{ id?: string | undefined; bookingNumber?: string | undefined; }, unknown, BookingsToolContext>; export declare const cancelBookingToolInputSchema: z.ZodObject<{ id: z.ZodString; note: z.ZodOptional; suppressNotifications: z.ZodOptional; idempotencyKey: z.ZodString; }, z.core.$strip>; export declare const cancelBookingToolOutputSchema: z.ZodObject<{ status: z.ZodLiteral<"cancelled">; booking: z.ZodObject<{ id: z.ZodString; bookingNumber: z.ZodString; status: z.ZodEnum<{ draft: "draft"; on_hold: "on_hold"; awaiting_payment: "awaiting_payment"; confirmed: "confirmed"; in_progress: "in_progress"; completed: "completed"; expired: "expired"; cancelled: "cancelled"; }>; personId: z.ZodNullable; organizationId: z.ZodNullable; sourceType: z.ZodEnum<{ direct: "direct"; manual: "manual"; affiliate: "affiliate"; ota: "ota"; reseller: "reseller"; api_partner: "api_partner"; internal: "internal"; }>; externalBookingRef: z.ZodNullable; communicationLanguage: z.ZodNullable; contactFirstName: z.ZodNullable; contactLastName: z.ZodNullable; contactPartyType: z.ZodNullable; contactTaxId: z.ZodNullable; contactEmail: z.ZodNullable; contactPhone: z.ZodNullable; contactPreferredLanguage: z.ZodNullable; contactCountry: z.ZodNullable; contactRegion: z.ZodNullable; contactCity: z.ZodNullable; contactAddressLine1: z.ZodNullable; contactAddressLine2: z.ZodNullable; contactPostalCode: z.ZodNullable; sellCurrency: z.ZodString; baseCurrency: z.ZodNullable; fxRateSetId: z.ZodNullable; sellAmountCents: z.ZodNullable; baseSellAmountCents: z.ZodNullable; costAmountCents: z.ZodNullable; baseCostAmountCents: z.ZodNullable; marginPercent: z.ZodNullable; startDate: z.ZodNullable; endDate: z.ZodNullable; pax: z.ZodNullable; internalNotes: z.ZodNullable; notificationsSuppressed: z.ZodBoolean; customerPaymentPolicy: z.ZodNullable; percent: z.ZodOptional; amountCents: z.ZodOptional; }, z.core.$strip>; minDaysBeforeDepartureForDeposit: z.ZodNumber; balanceDueDaysBeforeDeparture: z.ZodNumber; balanceDueMinDaysFromNow: z.ZodNumber; }, z.core.$strip>>; priceOverride: z.ZodNullable>; customFields: z.ZodRecord>; holdExpiresAt: z.ZodNullable; confirmedAt: z.ZodNullable; expiredAt: z.ZodNullable; cancelledAt: z.ZodNullable; completedAt: z.ZodNullable; awaitingPaymentAt: z.ZodNullable; paidAt: z.ZodNullable; redeemedAt: z.ZodNullable; createdAt: z.ZodString; updatedAt: z.ZodString; items: z.ZodArray; itemType: z.ZodString; status: z.ZodString; serviceDate: z.ZodNullable; startsAt: z.ZodNullable; endsAt: z.ZodNullable; quantity: z.ZodNumber; sellCurrency: z.ZodString; unitSellAmountCents: z.ZodNullable; totalSellAmountCents: z.ZodNullable; productId: z.ZodNullable; optionId: z.ZodNullable; optionUnitId: z.ZodNullable; availabilitySlotId: z.ZodNullable; productNameSnapshot: z.ZodNullable; optionNameSnapshot: z.ZodNullable; unitNameSnapshot: z.ZodNullable; departureLabelSnapshot: z.ZodNullable; metadata: z.ZodNullable>; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$loose>>; travelers: z.ZodArray; firstName: z.ZodString; lastName: z.ZodString; email: z.ZodNullable; phone: z.ZodNullable; isPrimary: z.ZodBoolean; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$loose>>; }, z.core.$strip>; replayed: z.ZodBoolean; }, z.core.$strip>; export declare const CANCEL_BOOKING_HANDLER_POLICY: { readonly capabilityId: "@voyant-travel/bookings#tool.cancel-booking"; readonly capabilityVersion: "v1"; readonly canonicalName: "cancel_booking"; readonly actionPolicy: { readonly id: "booking.status.cancel"; readonly capabilityId: "bookings:status:cancel"; readonly version: "v1"; readonly kind: "execute"; readonly targetType: "booking"; readonly commandTargetField: "id"; readonly targetLifecycle: "existing"; readonly existingTarget: { readonly durability: "handler-command-result-v1"; }; readonly risk: "critical"; readonly ledger: "required"; readonly approval: "required"; readonly policy: "bookings-status-approval-v1"; readonly reversible: false; readonly allowedActorTypes: readonly ["staff", "system"]; }; }; export declare const cancelBookingTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; idempotencyKey: string; note?: string | undefined; suppressNotifications?: boolean | undefined; }, { status: "cancelled"; booking: { id: string; bookingNumber: string; status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; personId: string | null; organizationId: string | null; sourceType: "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner" | "internal"; externalBookingRef: string | null; communicationLanguage: string | null; contactFirstName: string | null; contactLastName: string | null; contactPartyType: string | null; contactTaxId: string | null; contactEmail: string | null; contactPhone: string | null; contactPreferredLanguage: string | null; contactCountry: string | null; contactRegion: string | null; contactCity: string | null; contactAddressLine1: string | null; contactAddressLine2: string | null; contactPostalCode: string | null; sellCurrency: string; baseCurrency: string | null; fxRateSetId: string | null; sellAmountCents: number | null; baseSellAmountCents: number | null; costAmountCents: number | null; baseCostAmountCents: number | null; marginPercent: number | null; startDate: string | null; endDate: string | null; pax: number | null; internalNotes: string | null; notificationsSuppressed: boolean; customerPaymentPolicy: { deposit: { kind: "none" | "percent" | "fixed_cents"; percent?: number | undefined; amountCents?: number | undefined; }; minDaysBeforeDepartureForDeposit: number; balanceDueDaysBeforeDeparture: number; balanceDueMinDaysFromNow: number; } | null; priceOverride: Record | null; customFields: Record>; holdExpiresAt: string | null; confirmedAt: string | null; expiredAt: string | null; cancelledAt: string | null; completedAt: string | null; awaitingPaymentAt: string | null; paidAt: string | null; redeemedAt: string | null; createdAt: string; updatedAt: string; items: { [x: string]: unknown; id: string; bookingId: string; title: string; description: string | null; itemType: string; status: string; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; productId: string | null; optionId: string | null; optionUnitId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; metadata: Record | null; createdAt: string; updatedAt: string; }[]; travelers: { [x: string]: unknown; id: string; bookingId: string; participantType: string; travelerCategory: string | null; firstName: string; lastName: string; email: string | null; phone: string | null; isPrimary: boolean; createdAt: string; updatedAt: string; }[]; }; replayed: boolean; }, BookingsToolContext>; export declare const confirmBookingToolInputSchema: z.ZodObject<{ id: z.ZodString; note: z.ZodOptional; suppressNotifications: z.ZodOptional; idempotencyKey: z.ZodString; }, z.core.$strip>; export declare const confirmBookingToolOutputSchema: z.ZodObject<{ status: z.ZodLiteral<"confirmed">; booking: z.ZodObject<{ id: z.ZodString; bookingNumber: z.ZodString; status: z.ZodEnum<{ draft: "draft"; on_hold: "on_hold"; awaiting_payment: "awaiting_payment"; confirmed: "confirmed"; in_progress: "in_progress"; completed: "completed"; expired: "expired"; cancelled: "cancelled"; }>; personId: z.ZodNullable; organizationId: z.ZodNullable; sourceType: z.ZodEnum<{ direct: "direct"; manual: "manual"; affiliate: "affiliate"; ota: "ota"; reseller: "reseller"; api_partner: "api_partner"; internal: "internal"; }>; externalBookingRef: z.ZodNullable; communicationLanguage: z.ZodNullable; contactFirstName: z.ZodNullable; contactLastName: z.ZodNullable; contactPartyType: z.ZodNullable; contactTaxId: z.ZodNullable; contactEmail: z.ZodNullable; contactPhone: z.ZodNullable; contactPreferredLanguage: z.ZodNullable; contactCountry: z.ZodNullable; contactRegion: z.ZodNullable; contactCity: z.ZodNullable; contactAddressLine1: z.ZodNullable; contactAddressLine2: z.ZodNullable; contactPostalCode: z.ZodNullable; sellCurrency: z.ZodString; baseCurrency: z.ZodNullable; fxRateSetId: z.ZodNullable; sellAmountCents: z.ZodNullable; baseSellAmountCents: z.ZodNullable; costAmountCents: z.ZodNullable; baseCostAmountCents: z.ZodNullable; marginPercent: z.ZodNullable; startDate: z.ZodNullable; endDate: z.ZodNullable; pax: z.ZodNullable; internalNotes: z.ZodNullable; notificationsSuppressed: z.ZodBoolean; customerPaymentPolicy: z.ZodNullable; percent: z.ZodOptional; amountCents: z.ZodOptional; }, z.core.$strip>; minDaysBeforeDepartureForDeposit: z.ZodNumber; balanceDueDaysBeforeDeparture: z.ZodNumber; balanceDueMinDaysFromNow: z.ZodNumber; }, z.core.$strip>>; priceOverride: z.ZodNullable>; customFields: z.ZodRecord>; holdExpiresAt: z.ZodNullable; confirmedAt: z.ZodNullable; expiredAt: z.ZodNullable; cancelledAt: z.ZodNullable; completedAt: z.ZodNullable; awaitingPaymentAt: z.ZodNullable; paidAt: z.ZodNullable; redeemedAt: z.ZodNullable; createdAt: z.ZodString; updatedAt: z.ZodString; items: z.ZodArray; itemType: z.ZodString; status: z.ZodString; serviceDate: z.ZodNullable; startsAt: z.ZodNullable; endsAt: z.ZodNullable; quantity: z.ZodNumber; sellCurrency: z.ZodString; unitSellAmountCents: z.ZodNullable; totalSellAmountCents: z.ZodNullable; productId: z.ZodNullable; optionId: z.ZodNullable; optionUnitId: z.ZodNullable; availabilitySlotId: z.ZodNullable; productNameSnapshot: z.ZodNullable; optionNameSnapshot: z.ZodNullable; unitNameSnapshot: z.ZodNullable; departureLabelSnapshot: z.ZodNullable; metadata: z.ZodNullable>; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$loose>>; travelers: z.ZodArray; firstName: z.ZodString; lastName: z.ZodString; email: z.ZodNullable; phone: z.ZodNullable; isPrimary: z.ZodBoolean; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$loose>>; }, z.core.$strip>; replayed: z.ZodBoolean; }, z.core.$strip>; export declare const CONFIRM_BOOKING_HANDLER_POLICY: { readonly capabilityId: "@voyant-travel/bookings#tool.confirm-booking"; readonly capabilityVersion: "v1"; readonly canonicalName: "confirm_booking"; readonly actionPolicy: { readonly id: "booking.status.confirm"; readonly capabilityId: "bookings:status:confirm"; readonly version: "v1"; readonly kind: "execute"; readonly targetType: "booking"; readonly commandTargetField: "id"; readonly targetLifecycle: "existing"; readonly existingTarget: { readonly durability: "handler-command-result-v1"; }; readonly risk: "high"; readonly ledger: "required"; readonly approval: "required"; readonly policy: "bookings-status-approval-v1"; readonly reversible: false; readonly allowedActorTypes: readonly ["staff", "system"]; }; }; export declare const confirmBookingTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; idempotencyKey: string; note?: string | undefined; suppressNotifications?: boolean | undefined; }, { status: "confirmed"; booking: { id: string; bookingNumber: string; status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; personId: string | null; organizationId: string | null; sourceType: "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner" | "internal"; externalBookingRef: string | null; communicationLanguage: string | null; contactFirstName: string | null; contactLastName: string | null; contactPartyType: string | null; contactTaxId: string | null; contactEmail: string | null; contactPhone: string | null; contactPreferredLanguage: string | null; contactCountry: string | null; contactRegion: string | null; contactCity: string | null; contactAddressLine1: string | null; contactAddressLine2: string | null; contactPostalCode: string | null; sellCurrency: string; baseCurrency: string | null; fxRateSetId: string | null; sellAmountCents: number | null; baseSellAmountCents: number | null; costAmountCents: number | null; baseCostAmountCents: number | null; marginPercent: number | null; startDate: string | null; endDate: string | null; pax: number | null; internalNotes: string | null; notificationsSuppressed: boolean; customerPaymentPolicy: { deposit: { kind: "none" | "percent" | "fixed_cents"; percent?: number | undefined; amountCents?: number | undefined; }; minDaysBeforeDepartureForDeposit: number; balanceDueDaysBeforeDeparture: number; balanceDueMinDaysFromNow: number; } | null; priceOverride: Record | null; customFields: Record>; holdExpiresAt: string | null; confirmedAt: string | null; expiredAt: string | null; cancelledAt: string | null; completedAt: string | null; awaitingPaymentAt: string | null; paidAt: string | null; redeemedAt: string | null; createdAt: string; updatedAt: string; items: { [x: string]: unknown; id: string; bookingId: string; title: string; description: string | null; itemType: string; status: string; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; productId: string | null; optionId: string | null; optionUnitId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; metadata: Record | null; createdAt: string; updatedAt: string; }[]; travelers: { [x: string]: unknown; id: string; bookingId: string; participantType: string; travelerCategory: string | null; firstName: string; lastName: string; email: string | null; phone: string | null; isPrimary: boolean; createdAt: string; updatedAt: string; }[]; }; replayed: boolean; }, BookingsToolContext>; export declare const previewTravelerCorrectionAmendmentToolInputSchema: z.ZodObject<{ travelerId: z.ZodString; expectedBookingRevision: z.ZodNumber; reason: z.ZodString; patch: z.ZodObject<{ firstName: z.ZodOptional; lastName: z.ZodOptional; email: z.ZodOptional>; phone: z.ZodOptional>; preferredLanguage: z.ZodOptional>; }, z.core.$strict>; bookingId: z.ZodString; idempotencyKey: z.ZodString; }, z.core.$strip>; export declare const acceptBookingAmendmentToolInputSchema: z.ZodObject<{ proposedRevisionId: z.ZodString; bookingId: z.ZodString; amendmentId: z.ZodString; idempotencyKey: z.ZodString; }, z.core.$strip>; export declare const applyBookingAmendmentToolInputSchema: z.ZodObject<{ expectedBookingRevision: z.ZodNumber; proposedRevisionId: z.ZodString; bookingId: z.ZodString; amendmentId: z.ZodString; idempotencyKey: z.ZodString; }, z.core.$strip>; export declare const previewTravelerCorrectionAmendmentTool: import("@voyant-travel/tools").ToolDefinition<{ travelerId: string; expectedBookingRevision: number; reason: string; patch: { firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; }; bookingId: string; idempotencyKey: string; }, { status: "ok"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "no_op"; bookingId: string; travelerId: string; bookingRevision: number; } | { status: "not_found"; } | { status: "idempotency_conflict"; } | { status: "stale_revision"; currentBookingRevision: number; }, BookingsToolContext>; export declare const acceptBookingAmendmentTool: import("@voyant-travel/tools").ToolDefinition<{ proposedRevisionId: string; bookingId: string; amendmentId: string; idempotencyKey: string; }, { status: "ok"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "already_applied"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "not_found"; } | { status: "revision_mismatch"; } | { status: "acceptance_not_required"; } | { status: "stale_revision"; currentBookingRevision: number; }, BookingsToolContext>; export declare const applyBookingAmendmentTool: import("@voyant-travel/tools").ToolDefinition<{ expectedBookingRevision: number; proposedRevisionId: string; bookingId: string; amendmentId: string; idempotencyKey: string; }, { status: "ok"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "not_found"; } | { status: "revision_mismatch"; } | { status: "acceptance_required"; } | { status: "invalid_state"; } | { status: "stale_revision"; currentBookingRevision: number; }, BookingsToolContext>; export declare const bookingsTools: readonly [import("@voyant-travel/tools").ToolDefinition<{ sortBy: "status" | "createdAt" | "bookingNumber" | "startDate" | "endDate" | "pax" | "sellAmount"; sortDir: "asc" | "desc"; limit: number; offset: number; status?: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired" | undefined; excludeStatuses?: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired" | ("draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired")[] | undefined; search?: string | undefined; productId?: string | undefined; optionId?: string | undefined; availabilitySlotId?: string | undefined; supplierId?: string | undefined; productCategoryId?: string | undefined; personId?: string | undefined; organizationId?: string | undefined; dateFrom?: string | undefined; dateTo?: string | undefined; paxMin?: number | undefined; paxMax?: number | undefined; }, unknown, BookingsToolContext>, import("@voyant-travel/tools").ToolDefinition<{ id?: string | undefined; bookingNumber?: string | undefined; }, unknown, BookingsToolContext>, import("@voyant-travel/tools").ToolDefinition<{ id: string; idempotencyKey: string; note?: string | undefined; suppressNotifications?: boolean | undefined; }, { status: "confirmed"; booking: { id: string; bookingNumber: string; status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; personId: string | null; organizationId: string | null; sourceType: "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner" | "internal"; externalBookingRef: string | null; communicationLanguage: string | null; contactFirstName: string | null; contactLastName: string | null; contactPartyType: string | null; contactTaxId: string | null; contactEmail: string | null; contactPhone: string | null; contactPreferredLanguage: string | null; contactCountry: string | null; contactRegion: string | null; contactCity: string | null; contactAddressLine1: string | null; contactAddressLine2: string | null; contactPostalCode: string | null; sellCurrency: string; baseCurrency: string | null; fxRateSetId: string | null; sellAmountCents: number | null; baseSellAmountCents: number | null; costAmountCents: number | null; baseCostAmountCents: number | null; marginPercent: number | null; startDate: string | null; endDate: string | null; pax: number | null; internalNotes: string | null; notificationsSuppressed: boolean; customerPaymentPolicy: { deposit: { kind: "none" | "percent" | "fixed_cents"; percent?: number | undefined; amountCents?: number | undefined; }; minDaysBeforeDepartureForDeposit: number; balanceDueDaysBeforeDeparture: number; balanceDueMinDaysFromNow: number; } | null; priceOverride: Record | null; customFields: Record>; holdExpiresAt: string | null; confirmedAt: string | null; expiredAt: string | null; cancelledAt: string | null; completedAt: string | null; awaitingPaymentAt: string | null; paidAt: string | null; redeemedAt: string | null; createdAt: string; updatedAt: string; items: { [x: string]: unknown; id: string; bookingId: string; title: string; description: string | null; itemType: string; status: string; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; productId: string | null; optionId: string | null; optionUnitId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; metadata: Record | null; createdAt: string; updatedAt: string; }[]; travelers: { [x: string]: unknown; id: string; bookingId: string; participantType: string; travelerCategory: string | null; firstName: string; lastName: string; email: string | null; phone: string | null; isPrimary: boolean; createdAt: string; updatedAt: string; }[]; }; replayed: boolean; }, BookingsToolContext>, import("@voyant-travel/tools").ToolDefinition<{ id: string; idempotencyKey: string; note?: string | undefined; suppressNotifications?: boolean | undefined; }, { status: "cancelled"; booking: { id: string; bookingNumber: string; status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; personId: string | null; organizationId: string | null; sourceType: "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner" | "internal"; externalBookingRef: string | null; communicationLanguage: string | null; contactFirstName: string | null; contactLastName: string | null; contactPartyType: string | null; contactTaxId: string | null; contactEmail: string | null; contactPhone: string | null; contactPreferredLanguage: string | null; contactCountry: string | null; contactRegion: string | null; contactCity: string | null; contactAddressLine1: string | null; contactAddressLine2: string | null; contactPostalCode: string | null; sellCurrency: string; baseCurrency: string | null; fxRateSetId: string | null; sellAmountCents: number | null; baseSellAmountCents: number | null; costAmountCents: number | null; baseCostAmountCents: number | null; marginPercent: number | null; startDate: string | null; endDate: string | null; pax: number | null; internalNotes: string | null; notificationsSuppressed: boolean; customerPaymentPolicy: { deposit: { kind: "none" | "percent" | "fixed_cents"; percent?: number | undefined; amountCents?: number | undefined; }; minDaysBeforeDepartureForDeposit: number; balanceDueDaysBeforeDeparture: number; balanceDueMinDaysFromNow: number; } | null; priceOverride: Record | null; customFields: Record>; holdExpiresAt: string | null; confirmedAt: string | null; expiredAt: string | null; cancelledAt: string | null; completedAt: string | null; awaitingPaymentAt: string | null; paidAt: string | null; redeemedAt: string | null; createdAt: string; updatedAt: string; items: { [x: string]: unknown; id: string; bookingId: string; title: string; description: string | null; itemType: string; status: string; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; productId: string | null; optionId: string | null; optionUnitId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; metadata: Record | null; createdAt: string; updatedAt: string; }[]; travelers: { [x: string]: unknown; id: string; bookingId: string; participantType: string; travelerCategory: string | null; firstName: string; lastName: string; email: string | null; phone: string | null; isPrimary: boolean; createdAt: string; updatedAt: string; }[]; }; replayed: boolean; }, BookingsToolContext>, import("@voyant-travel/tools").ToolDefinition<{ travelerId: string; expectedBookingRevision: number; reason: string; patch: { firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; }; bookingId: string; idempotencyKey: string; }, { status: "ok"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "no_op"; bookingId: string; travelerId: string; bookingRevision: number; } | { status: "not_found"; } | { status: "idempotency_conflict"; } | { status: "stale_revision"; currentBookingRevision: number; }, BookingsToolContext>, import("@voyant-travel/tools").ToolDefinition<{ proposedRevisionId: string; bookingId: string; amendmentId: string; idempotencyKey: string; }, { status: "ok"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "already_applied"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "not_found"; } | { status: "revision_mismatch"; } | { status: "acceptance_not_required"; } | { status: "stale_revision"; currentBookingRevision: number; }, BookingsToolContext>, import("@voyant-travel/tools").ToolDefinition<{ expectedBookingRevision: number; proposedRevisionId: string; bookingId: string; amendmentId: string; idempotencyKey: string; }, { status: "ok"; amendment: { id: string; bookingId: string; travelerId: string; kind: "traveler_correction"; status: "rejected" | "failed" | "proposed" | "accepted" | "applied"; baseBookingRevision: number; resultBookingRevision: number; acceptanceRequired: boolean; policyDecisions: { code: string; version: string; decision: "allowed" | "acceptance_required"; reason: string; }[]; priceDelta: { amountCents: 0; currency: string; }; effects: { finance: "not_required"; legal: "not_required"; documents: "not_required"; fulfillment: "not_required"; supplier: "not_required"; }; nextActions: ("accept" | "apply")[]; requestedBy: string | null; requestedActor: "staff" | "system" | "customer" | "partner"; reason: string; acceptedAt: string | null; acceptedBy: string | null; acceptedActor: "staff" | "system" | "customer" | "partner" | null; appliedAt: string | null; appliedBy: string | null; appliedActor: "staff" | "system" | "customer" | "partner" | null; createdAt: string; updatedAt: string; revisions?: { id: string; amendmentId: string; bookingId: string; bookingRevision: number; role: "before" | "proposed_after"; snapshot: { bookingId: string; bookingNumber: string; revision: number; travelers: { id: string; personId: string | null; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; isPrimary: boolean; }[]; }; changedFields: string[]; authorizedBy: string | null; reason: string; createdAt: string; }[] | undefined; }; } | { status: "not_found"; } | { status: "revision_mismatch"; } | { status: "acceptance_required"; } | { status: "invalid_state"; } | { status: "stale_revision"; currentBookingRevision: number; }, BookingsToolContext>]; export declare const listBookingExtrasTool: import("@voyant-travel/tools").ToolDefinition<{ limit: number; offset: number; bookingId?: string | undefined; productExtraId?: string | undefined; optionExtraConfigId?: string | undefined; status?: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled" | undefined; }, { data: { bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; id: string; productExtraId: string | null; optionExtraConfigId: string | null; description: string | null; costCurrency: string | null; unitSellAmountCents: number | null; totalSellAmountCents: number | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; }[]; total: number; limit: number; offset: number; }, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const getBookingExtraTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, { bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; id: string; productExtraId: string | null; optionExtraConfigId: string | null; description: string | null; costCurrency: string | null; unitSellAmountCents: number | null; totalSellAmountCents: number | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const createBookingExtraTool: import("@voyant-travel/tools").ToolDefinition<{ bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; productExtraId?: string | null | undefined; optionExtraConfigId?: string | null | undefined; description?: string | null | undefined; unitSellAmountCents?: number | null | undefined; totalSellAmountCents?: number | null | undefined; costCurrency?: string | null | undefined; unitCostAmountCents?: number | null | undefined; totalCostAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; idempotencyKey?: string | undefined; }, { id: string; replayed: boolean; }, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const updateBookingExtraTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; bookingId?: string | undefined; productExtraId?: string | null | undefined; optionExtraConfigId?: string | null | undefined; name?: string | undefined; description?: string | null | undefined; status?: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled" | undefined; pricingMode?: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free" | undefined; pricedPerPerson?: boolean | undefined; quantity?: number | undefined; sellCurrency?: string | undefined; unitSellAmountCents?: number | null | undefined; totalSellAmountCents?: number | null | undefined; costCurrency?: string | null | undefined; unitCostAmountCents?: number | null | undefined; totalCostAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; }, { bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; id: string; productExtraId: string | null; optionExtraConfigId: string | null; description: string | null; costCurrency: string | null; unitSellAmountCents: number | null; totalSellAmountCents: number | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const getSlotExtraManifestTool: import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { includeInactiveExtras: boolean; }, { status: "slot_not_found"; } | { status: "ok"; data: { slot: { id: string; productId: string; optionId: string | null; facilityId: string | null; availabilityRuleId: string | null; startTimeId: string | null; dateLocal: string; startsAt: string; endsAt: string | null; timezone: string; status: "cancelled" | "open" | "closed" | "sold_out"; unlimited: boolean; initialPax: number | null; remainingPax: number | null; initialPickups: number | null; remainingPickups: number | null; remainingResources: number | null; pastCutoff: boolean; tooEarly: boolean; nights: number | null; days: number | null; notes: string | null; createdAt: string; updatedAt: string; }; extras: { id: string; productId: string; supplierId: string | null; code: string | null; name: string; description: string | null; selectionType: "required" | "optional" | "unavailable" | "default_selected"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; showOnSlotManifest: boolean; minQuantity: number | null; maxQuantity: number | null; defaultQuantity: number | null; active: boolean; sortOrder: number; metadata: Record | null; createdAt: string; updatedAt: string; }[]; travelers: { id: string; bookingId: string; bookingNumber: string; bookingStatus: string; participantType: string; travelerCategory: string | null; firstName: string; lastName: string; email: string | null; phone: string | null; isPrimary: boolean; createdAt: string; fullName: string; }[]; selections: { bookingId: string; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; bookingItemId: string | null; status: string; selected: boolean; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: string; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; source: string; }[]; }; }, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const setSlotExtraSelectionTool: import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { bookingId: string; travelerId: string; productExtraId: string; status: "selected" | "cancelled" | "fulfilled" | "no_show"; optionExtraConfigId?: string | null | undefined; collectionStatus?: "not_required" | "pending" | "collected" | "waived" | "refunded" | undefined; collectionCurrency?: string | null | undefined; collectionAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; }, { status: "slot_not_found"; } | { status: "extra_not_found"; } | { status: "traveler_not_found"; } | { status: "ok"; data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; status: "selected" | "cancelled" | "fulfilled" | "no_show"; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null; }, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const bulkSetSlotExtraSelectionsTool: import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { selections: { bookingId: string; travelerId: string; productExtraId: string; status: "selected" | "cancelled" | "fulfilled" | "no_show"; optionExtraConfigId?: string | null | undefined; collectionStatus?: "not_required" | "pending" | "collected" | "waived" | "refunded" | undefined; collectionCurrency?: string | null | undefined; collectionAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; }[]; }, { status: "slot_not_found"; } | { status: "extra_not_found"; } | { status: "traveler_not_found"; } | { status: "ok"; data: ({ id: string; bookingId: string; bookingItemId: string | null; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; status: "selected" | "cancelled" | "fulfilled" | "no_show"; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null)[]; }, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const bulkUpdateSlotExtraCollectionsTool: import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { productExtraId: string; travelerIds: string[]; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency?: string | null | undefined; collectionAmountCents?: number | null | undefined; notes?: string | null | undefined; }, { status: "slot_not_found"; } | { status: "extra_not_found"; } | { status: "traveler_not_found"; } | { status: "ok"; data: ({ id: string; bookingId: string; bookingItemId: string | null; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; status: "selected" | "cancelled" | "fulfilled" | "no_show"; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null)[]; }, import("./extras/tools.js").BookingsExtrasToolContext>; export declare const bookingsExtrasTools: readonly [import("@voyant-travel/tools").ToolDefinition<{ limit: number; offset: number; bookingId?: string | undefined; productExtraId?: string | undefined; optionExtraConfigId?: string | undefined; status?: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled" | undefined; }, { data: { bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; id: string; productExtraId: string | null; optionExtraConfigId: string | null; description: string | null; costCurrency: string | null; unitSellAmountCents: number | null; totalSellAmountCents: number | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; }[]; total: number; limit: number; offset: number; }, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, { bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; id: string; productExtraId: string | null; optionExtraConfigId: string | null; description: string | null; costCurrency: string | null; unitSellAmountCents: number | null; totalSellAmountCents: number | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; productExtraId?: string | null | undefined; optionExtraConfigId?: string | null | undefined; description?: string | null | undefined; unitSellAmountCents?: number | null | undefined; totalSellAmountCents?: number | null | undefined; costCurrency?: string | null | undefined; unitCostAmountCents?: number | null | undefined; totalCostAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; idempotencyKey?: string | undefined; }, { id: string; replayed: boolean; }, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ id: string; bookingId?: string | undefined; productExtraId?: string | null | undefined; optionExtraConfigId?: string | null | undefined; name?: string | undefined; description?: string | null | undefined; status?: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled" | undefined; pricingMode?: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free" | undefined; pricedPerPerson?: boolean | undefined; quantity?: number | undefined; sellCurrency?: string | undefined; unitSellAmountCents?: number | null | undefined; totalSellAmountCents?: number | null | undefined; costCurrency?: string | null | undefined; unitCostAmountCents?: number | null | undefined; totalCostAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; }, { bookingId: string; name: string; status: "draft" | "selected" | "confirmed" | "cancelled" | "fulfilled"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; quantity: number; sellCurrency: string; id: string; productExtraId: string | null; optionExtraConfigId: string | null; description: string | null; costCurrency: string | null; unitSellAmountCents: number | null; totalSellAmountCents: number | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { includeInactiveExtras: boolean; }, { status: "slot_not_found"; } | { status: "ok"; data: { slot: { id: string; productId: string; optionId: string | null; facilityId: string | null; availabilityRuleId: string | null; startTimeId: string | null; dateLocal: string; startsAt: string; endsAt: string | null; timezone: string; status: "cancelled" | "open" | "closed" | "sold_out"; unlimited: boolean; initialPax: number | null; remainingPax: number | null; initialPickups: number | null; remainingPickups: number | null; remainingResources: number | null; pastCutoff: boolean; tooEarly: boolean; nights: number | null; days: number | null; notes: string | null; createdAt: string; updatedAt: string; }; extras: { id: string; productId: string; supplierId: string | null; code: string | null; name: string; description: string | null; selectionType: "required" | "optional" | "unavailable" | "default_selected"; pricingMode: "included" | "per_person" | "per_booking" | "quantity_based" | "on_request" | "free"; pricedPerPerson: boolean; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; showOnSlotManifest: boolean; minQuantity: number | null; maxQuantity: number | null; defaultQuantity: number | null; active: boolean; sortOrder: number; metadata: Record | null; createdAt: string; updatedAt: string; }[]; travelers: { id: string; bookingId: string; bookingNumber: string; bookingStatus: string; participantType: string; travelerCategory: string | null; firstName: string; lastName: string; email: string | null; phone: string | null; isPrimary: boolean; createdAt: string; fullName: string; }[]; selections: { bookingId: string; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; bookingItemId: string | null; status: string; selected: boolean; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: string; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; source: string; }[]; }; }, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { bookingId: string; travelerId: string; productExtraId: string; status: "selected" | "cancelled" | "fulfilled" | "no_show"; optionExtraConfigId?: string | null | undefined; collectionStatus?: "not_required" | "pending" | "collected" | "waived" | "refunded" | undefined; collectionCurrency?: string | null | undefined; collectionAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; }, { status: "slot_not_found"; } | { status: "extra_not_found"; } | { status: "traveler_not_found"; } | { status: "ok"; data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; status: "selected" | "cancelled" | "fulfilled" | "no_show"; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null; }, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { selections: { bookingId: string; travelerId: string; productExtraId: string; status: "selected" | "cancelled" | "fulfilled" | "no_show"; optionExtraConfigId?: string | null | undefined; collectionStatus?: "not_required" | "pending" | "collected" | "waived" | "refunded" | undefined; collectionCurrency?: string | null | undefined; collectionAmountCents?: number | null | undefined; notes?: string | null | undefined; metadata?: Record | null | undefined; }[]; }, { status: "slot_not_found"; } | { status: "extra_not_found"; } | { status: "traveler_not_found"; } | { status: "ok"; data: ({ id: string; bookingId: string; bookingItemId: string | null; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; status: "selected" | "cancelled" | "fulfilled" | "no_show"; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null)[]; }, import("./extras/tools.js").BookingsExtrasToolContext>, import("@voyant-travel/tools").ToolDefinition<{ slotId: string; } & { productExtraId: string; travelerIds: string[]; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency?: string | null | undefined; collectionAmountCents?: number | null | undefined; notes?: string | null | undefined; }, { status: "slot_not_found"; } | { status: "extra_not_found"; } | { status: "traveler_not_found"; } | { status: "ok"; data: ({ id: string; bookingId: string; bookingItemId: string | null; travelerId: string; productExtraId: string; optionExtraConfigId: string | null; status: "selected" | "cancelled" | "fulfilled" | "no_show"; collectionMode: "external" | "none" | "included" | "booking_total" | "cash_on_trip"; collectionStatus: "not_required" | "pending" | "collected" | "waived" | "refunded"; collectionCurrency: string | null; collectionAmountCents: number | null; collectedAt: string | null; collectedBy: string | null; notes: string | null; metadata: Record | null; createdAt: string; updatedAt: string; } | null)[]; }, import("./extras/tools.js").BookingsExtrasToolContext>]; export declare const getPublicTransportRequirementsTool: import("@voyant-travel/tools").ToolDefinition<{ productId: string; } & { optionId?: string | undefined; }, { productId: string; optionId: string | null; hasTransport: boolean; requiresPassengerDocuments: boolean; requiresPassport: boolean; requiresNationality: boolean; requiresDateOfBirth: boolean; requiredFields: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; fieldsByScope: { booking: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; lead_traveler: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; traveler: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; booker: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; }; requirements: { fieldKey: "date_of_birth" | "nationality" | "passport_number" | "passport_expiry"; scope: "booking" | "lead_traveler" | "traveler" | "booker"; isRequired: boolean; perTraveler: boolean; notes: string | null; }[]; } | null, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listProductContactRequirementsTool: import("@voyant-travel/tools").ToolDefinition; export declare const getProductContactRequirementTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createProductContactRequirementTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateProductContactRequirementTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listProductBookingQuestionsTool: import("@voyant-travel/tools").ToolDefinition; export declare const getProductBookingQuestionTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createProductBookingQuestionTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateProductBookingQuestionTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listOptionBookingQuestionsTool: import("@voyant-travel/tools").ToolDefinition; export declare const getOptionBookingQuestionTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createOptionBookingQuestionTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateOptionBookingQuestionTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listBookingQuestionOptionsTool: import("@voyant-travel/tools").ToolDefinition; export declare const getBookingQuestionOptionTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createBookingQuestionOptionTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateBookingQuestionOptionTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listBookingQuestionUnitTriggersTool: import("@voyant-travel/tools").ToolDefinition; export declare const getBookingQuestionUnitTriggerTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createBookingQuestionUnitTriggerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateBookingQuestionUnitTriggerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listBookingQuestionOptionTriggersTool: import("@voyant-travel/tools").ToolDefinition; export declare const getBookingQuestionOptionTriggerTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createBookingQuestionOptionTriggerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateBookingQuestionOptionTriggerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listBookingQuestionExtraTriggersTool: import("@voyant-travel/tools").ToolDefinition; export declare const getBookingQuestionExtraTriggerTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createBookingQuestionExtraTriggerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateBookingQuestionExtraTriggerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const listBookingAnswersTool: import("@voyant-travel/tools").ToolDefinition; export declare const getBookingAnswerTool: import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const createBookingAnswerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const updateBookingAnswerTool: import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>; export declare const bookingRequirementsTools: readonly [import("@voyant-travel/tools").ToolDefinition<{ productId: string; } & { optionId?: string | undefined; }, { productId: string; optionId: string | null; hasTransport: boolean; requiresPassengerDocuments: boolean; requiresPassport: boolean; requiresNationality: boolean; requiresDateOfBirth: boolean; requiredFields: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; fieldsByScope: { booking: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; lead_traveler: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; traveler: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; booker: ("date_of_birth" | "nationality" | "passport_number" | "passport_expiry")[]; }; requirements: { fieldKey: "date_of_birth" | "nationality" | "passport_number" | "passport_expiry"; scope: "booking" | "lead_traveler" | "traveler" | "booker"; isRequired: boolean; perTraveler: boolean; notes: string | null; }[]; } | null, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, import("@voyant-travel/tools").ToolDefinition<{ id: string; }, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>, import("@voyant-travel/tools").ToolDefinition, unknown, import("./requirements/tools.js").BookingRequirementsToolContext>];