/** Module-owned Tools for booking extras and departure-manifest selections. */ import { type ToolContext, type ToolHandlerActionPolicyContext } from "@voyant-travel/tools"; import { z } from "zod"; export declare const createBookingExtraInputSchema: z.ZodObject<{ bookingId: z.ZodString; productExtraId: z.ZodOptional>; optionExtraConfigId: z.ZodOptional>; name: z.ZodString; description: z.ZodOptional>; status: z.ZodDefault>; pricingMode: z.ZodDefault>; pricedPerPerson: z.ZodDefault; quantity: z.ZodDefault; sellCurrency: z.ZodString; unitSellAmountCents: z.ZodOptional>; totalSellAmountCents: z.ZodOptional>; costCurrency: z.ZodOptional>; unitCostAmountCents: z.ZodOptional>; totalCostAmountCents: z.ZodOptional>; notes: z.ZodOptional>; metadata: z.ZodOptional>>; idempotencyKey: z.ZodOptional; }, z.core.$strip>; type ExtrasOperation = "listBookingExtras" | "getBookingExtra" | "createBookingExtra" | "updateBookingExtra" | "getSlotExtraManifest" | "setSlotExtraSelection" | "bulkSetSlotExtraSelections" | "bulkUpdateSlotExtraCollections"; export interface BookingsExtrasToolServices { execute(operation: ExtrasOperation, input: unknown, admitted?: ToolHandlerActionPolicyContext): Promise; } export type BookingsExtrasToolContext = ToolContext & { bookingsExtras?: BookingsExtrasToolServices; }; export declare const CREATE_BOOKING_EXTRA_HANDLER_POLICY: { readonly capabilityId: "@voyant-travel/bookings#extras.tool.create-booking-extra"; readonly capabilityVersion: "v1"; readonly canonicalName: "create_booking_extra"; readonly actionPolicy: { readonly id: "@voyant-travel/bookings#extras.action.create-booking-extra"; readonly capabilityId: "@voyant-travel/bookings#extras.action.create-booking-extra"; readonly version: "v1"; readonly kind: "execute"; readonly targetType: "booking-extra"; readonly targetLifecycle: "created"; readonly createdTarget: { readonly commandTargetType: "booking-extra-create-command"; readonly resultReferenceType: "booking_extra"; readonly durability: "handler-command-claim-v1"; readonly parentAnchor: { readonly targetType: "booking"; readonly targetIdField: "bookingId"; }; }; readonly risk: "high"; readonly ledger: "required"; readonly approval: "never"; readonly reversible: false; readonly allowedActorTypes: readonly ["staff"]; }; }; 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; }, 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, 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; }, 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, 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; }[]; }; }, 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; }, 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)[]; }, 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)[]; }, 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; }, 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, 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; }, 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, 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; }[]; }; }, 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; }, 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)[]; }, 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)[]; }, BookingsExtrasToolContext>]; export {};