import { OpenAPIHono } from "@hono/zod-openapi"; import { type ActionApprovalResponse, type ActionLedgerEntry, type ActionLedgerEntryResponse } from "@voyant-travel/action-ledger"; import { z } from "zod"; import type { publicBookingRoutes } from "./routes-public.js"; import type { Env } from "./routes-shared.js"; interface BookingActionLedgerTravelerTarget { id: string; firstName: string | null; lastName: string | null; } export interface BookingActionLedgerListResponse { data: ActionLedgerEntryResponse[]; travelers: BookingActionLedgerTravelerTarget[]; pageInfo: { nextCursor: { occurredAt: string; id: string; } | null; }; } export interface BookingActionApprovalDecisionResponse { data: { approval: ActionApprovalResponse; decisionAction: ActionLedgerEntryResponse; }; } type BookingMutationAction = "create" | "update" | "delete"; declare function changedBookingMutationFields(input: Record, before: Record | null, after: Record | null): string[]; declare function changedBookingTravelerFields(input: Record, before: Record | null, after: Record | null): string[]; declare function changedBookingTravelDetailFields(input: Record): string[]; declare function changedBookingItemFields(input: Record, before: Record | null, after: Record | null): string[]; declare function bookingMutationSummary(action: BookingMutationAction, fields: string[], subject: string): string; declare function confirmBookingAuthorizationInput(bookingId: string, commandInput: unknown): { readonly key: "confirm"; readonly actionName: "booking.status.confirm"; readonly routeOrToolName: "bookings.confirm"; readonly bookingId: string; readonly commandInput: unknown; }; declare function buildBookingActionLedgerPage({ bookingEntries, travelerEntries, itemEntries, limit, }: { bookingEntries: ActionLedgerEntry[]; travelerEntries: ActionLedgerEntry[]; itemEntries?: ActionLedgerEntry[]; limit: number; }): { entries: { id: string; occurredAt: Date; actionName: string; actionVersion: string; actionKind: "execute" | "read" | "reverse" | "update" | "delete" | "create" | "approve" | "reject" | "compensate" | "duplicate"; status: "cancelled" | "expired" | "failed" | "denied" | "succeeded" | "requested" | "awaiting_approval" | "approved" | "reversed" | "compensated" | "superseded"; evaluatedRisk: "medium" | "high" | "low" | "critical"; actorType: string | null; principalType: "system" | "workflow" | "user" | "agent" | "api_key"; principalId: string; principalSubtype: string | null; sessionId: string | null; apiTokenId: string | null; internalRequest: boolean; delegatedByPrincipalType: "system" | "workflow" | "user" | "agent" | "api_key" | null; delegatedByPrincipalId: string | null; delegationId: string | null; callerType: string | null; organizationId: string | null; routeOrToolName: string | null; workflowRunId: string | null; workflowStepId: string | null; correlationId: string | null; causationActionId: string | null; idempotencyScope: string | null; idempotencyKey: string | null; idempotencyFingerprint: string | null; targetType: string; targetId: string; capabilityId: string | null; capabilityVersion: string | null; authorizationSource: string | null; approvalId: string | null; amendsActionId: string | null; createdAt: Date; }[]; nextCursor: { occurredAt: string; id: string; } | null; }; export declare const bookingRoutes: OpenAPIHono & import("hono/types").MergeSchemaPath & import("hono/types").MergeSchemaPath<{ "/": { $get: { input: { query: { kind?: "other" | "shared_room" | "cruise_party" | undefined; productId?: string | undefined; optionUnitId?: string | undefined; limit?: unknown; offset?: unknown; }; }; output: { data: { id: string; kind: "other" | "shared_room" | "cruise_party"; label: string; primaryBookingId: string | null; productId: string | null; optionUnitId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }[]; total: number; limit: number; offset: number; }; outputFormat: "json"; status: 200; } | { input: { query: { kind?: "other" | "shared_room" | "cruise_party" | undefined; productId?: string | undefined; optionUnitId?: string | undefined; limit?: unknown; offset?: unknown; }; }; output: { error: string; }; outputFormat: "json"; status: 400; }; }; } & { "/": { $post: { input: { json: { label: string; kind?: "other" | "shared_room" | "cruise_party" | undefined; primaryBookingId?: string | null | undefined; productId?: string | null | undefined; optionUnitId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { json: { label: string; kind?: "other" | "shared_room" | "cruise_party" | undefined; primaryBookingId?: string | null | undefined; productId?: string | null | undefined; optionUnitId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { data: { id: string; kind: "other" | "shared_room" | "cruise_party"; label: string; primaryBookingId: string | null; productId: string | null; optionUnitId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; kind: "other" | "shared_room" | "cruise_party"; label: string; primaryBookingId: string | null; productId: string | null; optionUnitId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; members: { id: string; groupId: string; bookingId: string; role: "primary" | "shared"; createdAt: string; }[]; }; }; outputFormat: "json"; status: 200; } | { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; }; }; } & { "/:id": { $patch: { input: { param: { id: string; }; } & { json: { kind?: "other" | "shared_room" | "cruise_party" | undefined; label?: string | undefined; primaryBookingId?: string | null | undefined; productId?: string | null | undefined; optionUnitId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { kind?: "other" | "shared_room" | "cruise_party" | undefined; label?: string | undefined; primaryBookingId?: string | null | undefined; productId?: string | null | undefined; optionUnitId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { kind?: "other" | "shared_room" | "cruise_party" | undefined; label?: string | undefined; primaryBookingId?: string | null | undefined; productId?: string | null | undefined; optionUnitId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { data: { id: string; kind: "other" | "shared_room" | "cruise_party"; label: string; primaryBookingId: string | null; productId: string | null; optionUnitId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:id": { $delete: { input: { param: { id: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; }; }; }, "/">, "/groups"> & import("hono/types").MergeSchemaPath<{ "/:id/documents": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; travelerId: string | null; type: "other" | "visa" | "insurance" | "health" | "passport_copy"; fileName: string; fileUrl: string; expiresAt: string | null; notes: string | null; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/documents": { $post: { input: { param: { id: string; }; } & { json: { type: "other" | "visa" | "insurance" | "health" | "passport_copy"; fileName: string; fileUrl: string; travelerId?: string | null | undefined; expiresAt?: string | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { type: "other" | "visa" | "insurance" | "health" | "passport_copy"; fileName: string; fileUrl: string; travelerId?: string | null | undefined; expiresAt?: string | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { type: "other" | "visa" | "insurance" | "health" | "passport_copy"; fileName: string; fileUrl: string; travelerId?: string | null | undefined; expiresAt?: string | null | undefined; notes?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; travelerId: string | null; type: "other" | "visa" | "insurance" | "health" | "passport_copy"; fileName: string; fileUrl: string; expiresAt: string | null; notes: string | null; createdAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/documents/:documentId": { $delete: { input: { param: { id: string; documentId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; documentId: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/notes": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; authorId: string; content: string; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/notes": { $post: { input: { param: { id: string; }; } & { json: { content: string; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { content: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { content: string; }; }; output: { data: { id: string; bookingId: string; authorId: string; content: string; createdAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/notes/:noteId": { $patch: { input: { param: { id: string; noteId: string; }; } & { json: { content: string; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; noteId: string; }; } & { json: { content: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; noteId: string; }; } & { json: { content: string; }; }; output: { data: { id: string; bookingId: string; authorId: string; content: string; createdAt: string; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/notes/:noteId": { $delete: { input: { param: { id: string; noteId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; noteId: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/redemptions": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string | null; redeemedAt: string; redeemedBy: string | null; location: string | null; method: "other" | "manual" | "api" | "scan"; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/redemptions": { $post: { input: { param: { id: string; }; } & { json: { bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; redeemedAt?: string | null | undefined; redeemedBy?: string | null | undefined; location?: string | null | undefined; method?: "other" | "manual" | "api" | "scan" | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; redeemedAt?: string | null | undefined; redeemedBy?: string | null | undefined; location?: string | null | undefined; method?: "other" | "manual" | "api" | "scan" | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; redeemedAt?: string | null | undefined; redeemedBy?: string | null | undefined; location?: string | null | undefined; method?: "other" | "manual" | "api" | "scan" | undefined; metadata?: Record | null | undefined; }; }; output: { data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string | null; redeemedAt: string; redeemedBy: string | null; location: string | null; method: "other" | "manual" | "api" | "scan"; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; }; }; outputFormat: "json"; status: 201; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/fulfillments": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string | null; fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; status: "pending" | "issued" | "reissued" | "revoked" | "failed"; artifactUrl: string | null; payload: { [x: string]: import("hono/utils/types").JSONValue; } | null; issuedAt: string | null; revokedAt: string | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/fulfillments": { $post: { input: { param: { id: string; }; } & { json: { fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined; artifactUrl?: string | null | undefined; payload?: Record | null | undefined; issuedAt?: string | null | undefined; revokedAt?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined; artifactUrl?: string | null | undefined; payload?: Record | null | undefined; issuedAt?: string | null | undefined; revokedAt?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined; artifactUrl?: string | null | undefined; payload?: Record | null | undefined; issuedAt?: string | null | undefined; revokedAt?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string | null; fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; status: "pending" | "issued" | "reissued" | "revoked" | "failed"; artifactUrl: string | null; payload: { [x: string]: import("hono/utils/types").JSONValue; } | null; issuedAt: string | null; revokedAt: string | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/fulfillments/:fulfillmentId": { $patch: { input: { param: { id: string; fulfillmentId: string; }; } & { json: { bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; fulfillmentType?: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile" | undefined; deliveryChannel?: "email" | "other" | "download" | "api" | "wallet" | undefined; status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined; artifactUrl?: string | null | undefined; payload?: Record | null | undefined; issuedAt?: string | null | undefined; revokedAt?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; fulfillmentId: string; }; } & { json: { bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; fulfillmentType?: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile" | undefined; deliveryChannel?: "email" | "other" | "download" | "api" | "wallet" | undefined; status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined; artifactUrl?: string | null | undefined; payload?: Record | null | undefined; issuedAt?: string | null | undefined; revokedAt?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; fulfillmentId: string; }; } & { json: { bookingItemId?: string | null | undefined; travelerId?: string | null | undefined; fulfillmentType?: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile" | undefined; deliveryChannel?: "email" | "other" | "download" | "api" | "wallet" | undefined; status?: "pending" | "issued" | "reissued" | "revoked" | "failed" | undefined; artifactUrl?: string | null | undefined; payload?: Record | null | undefined; issuedAt?: string | null | undefined; revokedAt?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; bookingItemId: string | null; travelerId: string | null; fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; status: "pending" | "issued" | "reissued" | "revoked" | "failed"; artifactUrl: string | null; payload: { [x: string]: import("hono/utils/types").JSONValue; } | null; issuedAt: string | null; revokedAt: string | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/supplier-statuses": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; supplierServiceId: string | null; supplierId: string | null; serviceName: string; status: "confirmed" | "cancelled" | "pending" | "rejected"; supplierReference: string | null; costCurrency: string; costAmountCents: number; supplierInvoiceLineId: string | null; notes: string | null; confirmedAt: string | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/supplier-statuses": { $post: { input: { param: { id: string; }; } & { json: { serviceName: string; costCurrency: string; costAmountCents: number; supplierServiceId?: string | null | undefined; status?: "confirmed" | "cancelled" | "pending" | "rejected" | undefined; supplierReference?: string | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { serviceName: string; costCurrency: string; costAmountCents: number; supplierServiceId?: string | null | undefined; status?: "confirmed" | "cancelled" | "pending" | "rejected" | undefined; supplierReference?: string | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { serviceName: string; costCurrency: string; costAmountCents: number; supplierServiceId?: string | null | undefined; status?: "confirmed" | "cancelled" | "pending" | "rejected" | undefined; supplierReference?: string | null | undefined; notes?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; supplierServiceId: string | null; supplierId: string | null; serviceName: string; status: "confirmed" | "cancelled" | "pending" | "rejected"; supplierReference: string | null; costCurrency: string; costAmountCents: number; supplierInvoiceLineId: string | null; notes: string | null; confirmedAt: string | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/supplier-statuses/:statusId": { $patch: { input: { param: { id: string; statusId: string; }; } & { json: { supplierServiceId?: string | null | undefined; serviceName?: string | undefined; status?: "confirmed" | "cancelled" | "pending" | "rejected" | undefined; supplierReference?: string | null | undefined; costCurrency?: string | undefined; costAmountCents?: number | undefined; notes?: string | null | undefined; confirmedAt?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; statusId: string; }; } & { json: { supplierServiceId?: string | null | undefined; serviceName?: string | undefined; status?: "confirmed" | "cancelled" | "pending" | "rejected" | undefined; supplierReference?: string | null | undefined; costCurrency?: string | undefined; costAmountCents?: number | undefined; notes?: string | null | undefined; confirmedAt?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; statusId: string; }; } & { json: { supplierServiceId?: string | null | undefined; serviceName?: string | undefined; status?: "confirmed" | "cancelled" | "pending" | "rejected" | undefined; supplierReference?: string | null | undefined; costCurrency?: string | undefined; costAmountCents?: number | undefined; notes?: string | null | undefined; confirmedAt?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; supplierServiceId: string | null; supplierId: string | null; serviceName: string; status: "confirmed" | "cancelled" | "pending" | "rejected"; supplierReference: string | null; costCurrency: string; costAmountCents: number; supplierInvoiceLineId: string | null; notes: string | null; confirmedAt: string | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/items": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; title: string; description: string | null; itemType: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport"; status: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired"; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; costCurrency: string | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; productId: string | null; optionId: string | null; optionUnitId: string | null; pricingCategoryId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; sourceSnapshotId: string | null; sourceOfferId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/items": { $post: { input: { param: { id: string; }; } & { json: { title: string; sellCurrency: string; description?: string | null | undefined; itemType?: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport" | undefined; status?: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired" | undefined; serviceDate?: string | null | undefined; startsAt?: string | null | undefined; endsAt?: string | null | undefined; quantity?: number | 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; productId?: string | null | undefined; optionId?: string | null | undefined; optionUnitId?: string | null | undefined; pricingCategoryId?: string | null | undefined; availabilitySlotId?: string | null | undefined; productNameSnapshot?: string | null | undefined; optionNameSnapshot?: string | null | undefined; unitNameSnapshot?: string | null | undefined; departureLabelSnapshot?: string | null | undefined; sourceSnapshotId?: string | null | undefined; sourceOfferId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { title: string; sellCurrency: string; description?: string | null | undefined; itemType?: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport" | undefined; status?: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired" | undefined; serviceDate?: string | null | undefined; startsAt?: string | null | undefined; endsAt?: string | null | undefined; quantity?: number | 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; productId?: string | null | undefined; optionId?: string | null | undefined; optionUnitId?: string | null | undefined; pricingCategoryId?: string | null | undefined; availabilitySlotId?: string | null | undefined; productNameSnapshot?: string | null | undefined; optionNameSnapshot?: string | null | undefined; unitNameSnapshot?: string | null | undefined; departureLabelSnapshot?: string | null | undefined; sourceSnapshotId?: string | null | undefined; sourceOfferId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { title: string; sellCurrency: string; description?: string | null | undefined; itemType?: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport" | undefined; status?: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired" | undefined; serviceDate?: string | null | undefined; startsAt?: string | null | undefined; endsAt?: string | null | undefined; quantity?: number | 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; productId?: string | null | undefined; optionId?: string | null | undefined; optionUnitId?: string | null | undefined; pricingCategoryId?: string | null | undefined; availabilitySlotId?: string | null | undefined; productNameSnapshot?: string | null | undefined; optionNameSnapshot?: string | null | undefined; unitNameSnapshot?: string | null | undefined; departureLabelSnapshot?: string | null | undefined; sourceSnapshotId?: string | null | undefined; sourceOfferId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 409; } | { input: { param: { id: string; }; } & { json: { title: string; sellCurrency: string; description?: string | null | undefined; itemType?: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport" | undefined; status?: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired" | undefined; serviceDate?: string | null | undefined; startsAt?: string | null | undefined; endsAt?: string | null | undefined; quantity?: number | 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; productId?: string | null | undefined; optionId?: string | null | undefined; optionUnitId?: string | null | undefined; pricingCategoryId?: string | null | undefined; availabilitySlotId?: string | null | undefined; productNameSnapshot?: string | null | undefined; optionNameSnapshot?: string | null | undefined; unitNameSnapshot?: string | null | undefined; departureLabelSnapshot?: string | null | undefined; sourceSnapshotId?: string | null | undefined; sourceOfferId?: string | null | undefined; metadata?: Record | null | undefined; }; }; output: { data: { id: string; bookingId: string; title: string; description: string | null; itemType: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport"; status: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired"; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; costCurrency: string | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; productId: string | null; optionId: string | null; optionUnitId: string | null; pricingCategoryId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; sourceSnapshotId: string | null; sourceOfferId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/items/:itemId": { $patch: { input: { param: { id: string; itemId: string; }; } & { json: unknown; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; itemId: string; }; } & { json: unknown; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; itemId: string; }; } & { json: unknown; }; output: { error: string; }; outputFormat: "json"; status: 409; } | { input: { param: { id: string; itemId: string; }; } & { json: unknown; }; output: { data: { id: string; bookingId: string; title: string; description: string | null; itemType: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport"; status: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired"; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; costCurrency: string | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; productId: string | null; optionId: string | null; optionUnitId: string | null; pricingCategoryId: string | null; availabilitySlotId: string | null; productNameSnapshot: string | null; optionNameSnapshot: string | null; unitNameSnapshot: string | null; departureLabelSnapshot: string | null; sourceSnapshotId: string | null; sourceOfferId: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/items/:itemId": { $delete: { input: { param: { id: string; itemId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; itemId: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; } | { input: { param: { id: string; itemId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 409; }; }; } & { "/:id/items/:itemId/travelers": { $get: { input: { param: { id: string; itemId: string; }; }; output: { data: { id: string; bookingItemId: string; travelerId: string; role: "other" | "traveler" | "occupant" | "beneficiary"; isPrimary: boolean; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/items/:itemId/travelers": { $post: { input: { param: { id: string; itemId: string; }; } & { json: { travelerId?: string | undefined; role?: "other" | "traveler" | "occupant" | "beneficiary" | undefined; isPrimary?: boolean | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; itemId: string; }; } & { json: { travelerId?: string | undefined; role?: "other" | "traveler" | "occupant" | "beneficiary" | undefined; isPrimary?: boolean | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; itemId: string; }; } & { json: { travelerId?: string | undefined; role?: "other" | "traveler" | "occupant" | "beneficiary" | undefined; isPrimary?: boolean | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 409; } | { input: { param: { id: string; itemId: string; }; } & { json: { travelerId?: string | undefined; role?: "other" | "traveler" | "occupant" | "beneficiary" | undefined; isPrimary?: boolean | undefined; }; }; output: { data: { id: string; bookingItemId: string; travelerId: string; role: "other" | "traveler" | "occupant" | "beneficiary"; isPrimary: boolean; createdAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/items/:itemId/travelers/:linkId": { $delete: { input: { param: { id: string; itemId: string; linkId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; itemId: string; linkId: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; } | { input: { param: { id: string; itemId: string; linkId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 409; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/travelers": { $post: { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; isPrimary?: boolean | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; isPrimary?: boolean | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; isPrimary?: boolean | null | undefined; notes?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; specialRequests: string | null; isPrimary: boolean; notes: string | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/travelers/with-travel-details": { $post: { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; }; } & { json: { firstName: string; lastName: string; personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { data: import("hono/utils/types").JSONValue; }; outputFormat: "json"; status: 201; }; }; } & { "/:id/travelers/:travelerId/with-travel-details": { $patch: { input: { param: { id: string; travelerId: string; }; } & { json: { personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; travelerId: string; }; } & { json: { personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; } & { json: { personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; travelerId: string; }; } & { json: { personId?: string | null | undefined; participantType?: "other" | "traveler" | "occupant" | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; isPrimary?: boolean | undefined; notes?: string | null | undefined; nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { data: import("hono/utils/types").JSONValue; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/travelers/:travelerId/travel-details": { $patch: { input: { param: { id: string; travelerId: string; }; } & { json: { nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; travelerId: string; }; } & { json: { nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; } & { json: { nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; travelerId: string; }; } & { json: { nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 403; } | { input: { param: { id: string; travelerId: string; }; } & { json: { nationality?: string | null | undefined; documentType?: "other" | "visa" | "passport" | "id_card" | "driver_license" | null | undefined; documentNumber?: string | null | undefined; documentExpiry?: string | null | undefined; documentIssuingCountry?: string | null | undefined; documentIssuingAuthority?: string | null | undefined; documentPersonDocumentId?: string | null | undefined; dateOfBirth?: string | null | undefined; dietaryRequirements?: string | null | undefined; accessibilityNeeds?: string | null | undefined; isLeadTraveler?: boolean | null | undefined; sharingGroupId?: string | null | undefined; roomTypeId?: string | null | undefined; bedPreference?: "single" | "twin" | "double" | "no-preference" | null | undefined; allocations?: Record | undefined; }; }; output: { data: import("hono/utils/types").JSONValue; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/travelers/:travelerId": { $patch: { input: { param: { id: string; travelerId: string; }; } & { json: { firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; isPrimary?: boolean | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; travelerId: string; }; } & { json: { firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; isPrimary?: boolean | null | undefined; notes?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; } & { json: { firstName?: string | undefined; lastName?: string | undefined; email?: string | null | undefined; phone?: string | null | undefined; preferredLanguage?: string | null | undefined; specialRequests?: string | null | undefined; travelerCategory?: "other" | "adult" | "child" | "infant" | "senior" | null | undefined; isPrimary?: boolean | null | undefined; notes?: string | null | undefined; }; }; output: { data: { id: string; bookingId: string; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; specialRequests: string | null; isPrimary: boolean; notes: string | null; createdAt: string; updatedAt: string; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/travelers/:travelerId/travel-details": { $delete: { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; } | { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 403; }; }; } & { "/:id/travelers/:travelerId": { $delete: { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; }; output: { success: boolean; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/travelers": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; specialRequests: string | null; isPrimary: boolean; notes: string | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/travelers/:travelerId/reveal": { $get: { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 403; } | { input: { param: { id: string; travelerId: string; }; }; output: { data: { id: string; bookingId: string; participantType: "other" | "traveler" | "occupant"; travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null; firstName: string; lastName: string; email: string | null; phone: string | null; preferredLanguage: string | null; specialRequests: string | null; isPrimary: boolean; notes: string | null; createdAt: string; updatedAt: string; travelDetails: import("hono/utils/types").JSONValue; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/travelers/:travelerId/travel-details": { $get: { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; travelerId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 403; } | { input: { param: { id: string; travelerId: string; }; }; output: { data: import("hono/utils/types").JSONValue; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:id/action-ledger": { $get: { input: { param: { id: string; }; } & { query: { cursorOccurredAt?: string | undefined; cursorId?: string | undefined; limit?: unknown; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; }; } & { query: { cursorOccurredAt?: string | undefined; cursorId?: string | undefined; limit?: unknown; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; }; } & { query: { cursorOccurredAt?: string | undefined; cursorId?: string | undefined; limit?: unknown; }; }; output: { data: { [x: string]: import("hono/utils/types").JSONValue; }[]; travelers: { id: string; firstName: string | null; lastName: string | null; }[]; pageInfo: { nextCursor: { occurredAt: string; id: string; } | null; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/action-approvals/:approvalId/decide": { $post: { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { data: { approval: { [x: string]: import("hono/utils/types").JSONValue; }; decisionAction: { [x: string]: import("hono/utils/types").JSONValue; }; }; }; outputFormat: "json"; status: 200; } | { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { error: string; }; outputFormat: "json"; status: 500; } | { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { error: string; }; outputFormat: "json"; status: 401; } | { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { error: string; }; outputFormat: "json"; status: 403; } | { input: { param: { id: string; approvalId: string; }; } & { json: { status: "denied" | "approved"; }; }; output: { error: string; }; outputFormat: "json"; status: 409; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/pricing-preview": { $post: { input: { json: { productId: string; optionId?: string | null | undefined; catalogId?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { json: { productId: string; optionId?: string | null | undefined; catalogId?: string | null | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { json: { productId: string; optionId?: string | null | undefined; catalogId?: string | null | undefined; }; }; output: { data: { [x: string]: import("hono/utils/types").JSONValue; }; }; outputFormat: "json"; status: 200; }; }; } & { "/aggregates": { $get: { input: { query: { from?: string | undefined; to?: string | undefined; upcomingLimit?: unknown; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { query: { from?: string | undefined; to?: string | undefined; upcomingLimit?: unknown; }; }; output: { data: { total: number; totalPax: number; countsByStatus: { status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; count: number; }[]; monthlyCounts: { yearMonth: string; count: number; }[]; monthlyRevenue: { yearMonth: string; currency: string; sellAmountCents: number; }[]; upcomingDepartures: { count: number; items: { id: string; bookingNumber: string | null; status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; startDate: string | null; endDate: string | null; pax: number | null; sellCurrency: string | null; sellAmountCents: number | null; }[]; }; }; }; outputFormat: "json"; status: 200; }; }; } & { "/overview": { $get: { input: { query: { bookingId?: string | undefined; bookingNumber?: string | undefined; bookingCode?: string | undefined; email?: string | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { query: { bookingId?: string | undefined; bookingNumber?: string | undefined; bookingCode?: string | undefined; email?: string | undefined; }; }; output: { error: string; }; outputFormat: "json"; status: 404; } | { input: { query: { bookingId?: string | undefined; bookingNumber?: string | undefined; bookingCode?: string | undefined; email?: string | undefined; }; }; output: { data: { bookingId: string; bookingNumber: string; revision: number; status: "draft" | "confirmed" | "cancelled" | "on_hold" | "awaiting_payment" | "in_progress" | "completed" | "expired"; sellCurrency: string; sellAmountCents: number | null; startDate: string | null; endDate: string | null; pax: number | null; confirmedAt: string | null; cancelledAt: string | null; completedAt: string | null; travelers: { id: string; participantType: "other" | "traveler" | "occupant"; firstName: string; lastName: string; isPrimary: boolean; }[]; items: { id: string; title: string; description: string | null; itemType: "other" | "extra" | "service" | "unit" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport"; status: "draft" | "confirmed" | "cancelled" | "fulfilled" | "on_hold" | "expired"; serviceDate: string | null; startsAt: string | null; endsAt: string | null; quantity: number; sellCurrency: string; unitSellAmountCents: number | null; totalSellAmountCents: number | null; costCurrency: string | null; unitCostAmountCents: number | null; totalCostAmountCents: number | null; notes: string | null; productId: string | null; optionId: string | null; optionUnitId: string | null; pricingCategoryId: string | null; travelerLinks: { id: string; travelerId: string; role: "other" | "traveler" | "occupant" | "beneficiary"; isPrimary: boolean; }[]; details?: import("hono/utils/types").JSONValue | undefined; }[]; documents: { id: string; travelerId: string | null; type: "other" | "visa" | "insurance" | "health" | "passport_copy"; fileName: string; fileUrl: string; }[]; fulfillments: { id: string; bookingItemId: string | null; travelerId: string | null; fulfillmentType: "other" | "service_voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile"; deliveryChannel: "email" | "other" | "download" | "api" | "wallet"; status: "pending" | "issued" | "reissued" | "revoked" | "failed"; artifactUrl: string | null; }[]; }; }; outputFormat: "json"; status: 200; }; }; } & { "/sharing-groups": { $get: { input: { query: { slotId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { query: { slotId: string; }; }; output: { data: { id: string; label: string; occupancy: number; roomTypeId: string | null; bookingIds: string[]; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/sharing-groups/:groupId/travelers": { $get: { input: { param: { groupId: string; }; } & { query: { slotId: string; }; }; output: { error: string; }; outputFormat: "json"; status: 400; } | { input: { param: { groupId: string; }; } & { query: { slotId: string; }; }; output: { data: { [x: string]: import("hono/utils/types").JSONValue; id: string; bookingId: string; bookingNumber: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/allocations": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; bookingItemId: string; productId: string | null; optionId: string | null; optionUnitId: string | null; pricingCategoryId: string | null; availabilitySlotId: string | null; quantity: number; allocationType: "resource" | "unit" | "pickup"; status: "confirmed" | "cancelled" | "fulfilled" | "expired" | "held" | "released"; holdExpiresAt: string | null; confirmedAt: string | null; releasedAt: string | null; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; updatedAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/activity": { $get: { input: { param: { id: string; }; }; output: { data: { id: string; bookingId: string; actorId: string | null; activityType: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "booking_started" | "booking_completed" | "hold_extended" | "hold_expired" | "status_change" | "status_overridden" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "traveler_update" | "note_added" | "system_action"; description: string; metadata: { [x: string]: import("hono/utils/types").JSONValue; } | null; createdAt: string; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:id/group": { $get: { input: { param: { id: string; }; }; output: { data: { [x: string]: import("hono/utils/types").JSONValue; id: string; membership: { [x: string]: import("hono/utils/types").JSONValue; id: string; groupId: string; bookingId: string; }; } | null; }; outputFormat: "json"; status: 200; }; }; }, "/"> & import("hono/types").MergeSchemaPath<{ "/:bookingId/amendments/traveler-corrections/preview": { $post: { input: { param: { bookingId: string; }; } & { json: { 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; }; }; }; output: { data: { 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; }; }; outputFormat: "json"; status: 200; } | { input: { param: { bookingId: string; }; } & { json: { 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; }; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 400; } | { input: { param: { bookingId: string; }; } & { json: { 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; }; }; }; output: { data: { 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; }; }; outputFormat: "json"; status: 201; } | { input: { param: { bookingId: string; }; } & { json: { 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; }; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 404; } | { input: { param: { bookingId: string; }; } & { json: { 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; }; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 409; }; }; } & { "/:bookingId/amendments": { $get: { input: { param: { bookingId: string; }; }; output: { data: { 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; }[]; }; outputFormat: "json"; status: 200; }; }; } & { "/:bookingId/amendments/:amendmentId": { $get: { input: { param: { bookingId: string; amendmentId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 404; } | { input: { param: { bookingId: string; amendmentId: string; }; }; output: { data: { 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; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:bookingId/amendments/:amendmentId/accept": { $post: { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { proposedRevisionId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 400; } | { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { proposedRevisionId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 404; } | { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { proposedRevisionId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 409; } | { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { proposedRevisionId: string; }; }; output: { data: { 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; }; }; outputFormat: "json"; status: 200; }; }; } & { "/:bookingId/amendments/:amendmentId/apply": { $post: { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { expectedBookingRevision: number; proposedRevisionId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 400; } | { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { expectedBookingRevision: number; proposedRevisionId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 404; } | { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { expectedBookingRevision: number; proposedRevisionId: string; }; }; output: { error: string; currentBookingRevision?: number | undefined; }; outputFormat: "json"; status: 409; } | { input: { param: { bookingId: string; amendmentId: string; }; } & { json: { expectedBookingRevision: number; proposedRevisionId: string; }; }; output: { data: { 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; }; }; outputFormat: "json"; status: 200; }; }; }, "/">, "/">; export type BookingRoutes = typeof bookingRoutes; export type PublicBookingRoutes = typeof publicBookingRoutes; export declare const __test__: { bookingActionLedgerQuerySchema: z.ZodPipe; cursorId: z.ZodOptional; limit: z.ZodOptional>; }, z.core.$strip>, z.ZodTransform<{ cursor: { occurredAt: string; id: string; } | undefined; limit?: number | undefined; }, { cursorOccurredAt?: string | undefined; cursorId?: string | undefined; limit?: number | undefined; }>>; bookingMutationSummary: typeof bookingMutationSummary; buildBookingActionLedgerPage: typeof buildBookingActionLedgerPage; changedBookingItemFields: typeof changedBookingItemFields; changedBookingMutationFields: typeof changedBookingMutationFields; changedBookingTravelDetailFields: typeof changedBookingTravelDetailFields; changedBookingTravelerFields: typeof changedBookingTravelerFields; bookingSchema: z.ZodObject<{ id: z.ZodString; bookingNumber: z.ZodString; revision: z.ZodNumber; 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; 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; }, z.core.$strip>; bookingTravelerSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; participantType: z.ZodEnum<{ traveler: "traveler"; occupant: "occupant"; other: "other"; }>; travelerCategory: z.ZodNullable>; firstName: z.ZodString; lastName: z.ZodString; email: z.ZodNullable; phone: z.ZodNullable; preferredLanguage: z.ZodNullable; specialRequests: z.ZodNullable; isPrimary: z.ZodBoolean; notes: z.ZodNullable; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>; bookingItemSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; title: z.ZodString; description: z.ZodNullable; itemType: z.ZodEnum<{ other: "other"; unit: "unit"; extra: "extra"; service: "service"; fee: "fee"; tax: "tax"; discount: "discount"; adjustment: "adjustment"; accommodation: "accommodation"; transport: "transport"; }>; status: z.ZodEnum<{ draft: "draft"; on_hold: "on_hold"; confirmed: "confirmed"; expired: "expired"; cancelled: "cancelled"; fulfilled: "fulfilled"; }>; serviceDate: z.ZodNullable; startsAt: z.ZodNullable; endsAt: z.ZodNullable; quantity: z.ZodNumber; sellCurrency: z.ZodString; unitSellAmountCents: z.ZodNullable; totalSellAmountCents: z.ZodNullable; costCurrency: z.ZodNullable; unitCostAmountCents: z.ZodNullable; totalCostAmountCents: z.ZodNullable; notes: z.ZodNullable; productId: z.ZodNullable; optionId: z.ZodNullable; optionUnitId: z.ZodNullable; pricingCategoryId: z.ZodNullable; availabilitySlotId: z.ZodNullable; productNameSnapshot: z.ZodNullable; optionNameSnapshot: z.ZodNullable; unitNameSnapshot: z.ZodNullable; departureLabelSnapshot: z.ZodNullable; sourceSnapshotId: z.ZodNullable; sourceOfferId: z.ZodNullable; metadata: z.ZodNullable>; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>; bookingItemTravelerSchema: z.ZodObject<{ id: z.ZodString; bookingItemId: z.ZodString; travelerId: z.ZodString; role: z.ZodEnum<{ traveler: "traveler"; occupant: "occupant"; other: "other"; beneficiary: "beneficiary"; }>; isPrimary: z.ZodBoolean; createdAt: z.ZodString; }, z.core.$strip>; bookingAllocationSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; bookingItemId: z.ZodString; productId: z.ZodNullable; optionId: z.ZodNullable; optionUnitId: z.ZodNullable; pricingCategoryId: z.ZodNullable; availabilitySlotId: z.ZodNullable; quantity: z.ZodNumber; allocationType: z.ZodEnum<{ unit: "unit"; pickup: "pickup"; resource: "resource"; }>; status: z.ZodEnum<{ confirmed: "confirmed"; expired: "expired"; cancelled: "cancelled"; fulfilled: "fulfilled"; held: "held"; released: "released"; }>; holdExpiresAt: z.ZodNullable; confirmedAt: z.ZodNullable; releasedAt: z.ZodNullable; metadata: z.ZodNullable>; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>; bookingSupplierStatusSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; supplierServiceId: z.ZodNullable; supplierId: z.ZodNullable; serviceName: z.ZodString; status: z.ZodEnum<{ confirmed: "confirmed"; cancelled: "cancelled"; pending: "pending"; rejected: "rejected"; }>; supplierReference: z.ZodNullable; costCurrency: z.ZodString; costAmountCents: z.ZodNumber; supplierInvoiceLineId: z.ZodNullable; notes: z.ZodNullable; confirmedAt: z.ZodNullable; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>; bookingFulfillmentSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; bookingItemId: z.ZodNullable; travelerId: z.ZodNullable; fulfillmentType: z.ZodEnum<{ other: "other"; service_voucher: "service_voucher"; ticket: "ticket"; pdf: "pdf"; qr_code: "qr_code"; barcode: "barcode"; mobile: "mobile"; }>; deliveryChannel: z.ZodEnum<{ other: "other"; download: "download"; email: "email"; api: "api"; wallet: "wallet"; }>; status: z.ZodEnum<{ pending: "pending"; issued: "issued"; reissued: "reissued"; revoked: "revoked"; failed: "failed"; }>; artifactUrl: z.ZodNullable; payload: z.ZodNullable>; issuedAt: z.ZodNullable; revokedAt: z.ZodNullable; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>; bookingRedemptionEventSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; bookingItemId: z.ZodNullable; travelerId: z.ZodNullable; redeemedAt: z.ZodString; redeemedBy: z.ZodNullable; location: z.ZodNullable; method: z.ZodEnum<{ manual: "manual"; other: "other"; api: "api"; scan: "scan"; }>; metadata: z.ZodNullable>; createdAt: z.ZodString; }, z.core.$strip>; bookingActivitySchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; actorId: z.ZodNullable; activityType: z.ZodEnum<{ booking_created: "booking_created"; booking_reserved: "booking_reserved"; booking_converted: "booking_converted"; booking_confirmed: "booking_confirmed"; booking_started: "booking_started"; booking_completed: "booking_completed"; hold_extended: "hold_extended"; hold_expired: "hold_expired"; status_change: "status_change"; status_overridden: "status_overridden"; item_update: "item_update"; allocation_released: "allocation_released"; fulfillment_issued: "fulfillment_issued"; fulfillment_updated: "fulfillment_updated"; redemption_recorded: "redemption_recorded"; supplier_update: "supplier_update"; traveler_update: "traveler_update"; note_added: "note_added"; system_action: "system_action"; }>; description: z.ZodString; metadata: z.ZodNullable>; createdAt: z.ZodString; }, z.core.$strip>; bookingNoteSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; authorId: z.ZodString; content: z.ZodString; createdAt: z.ZodString; }, z.core.$strip>; bookingDocumentSchema: z.ZodObject<{ id: z.ZodString; bookingId: z.ZodString; travelerId: z.ZodNullable; type: z.ZodEnum<{ other: "other"; visa: "visa"; insurance: "insurance"; health: "health"; passport_copy: "passport_copy"; }>; fileName: z.ZodString; fileUrl: z.ZodString; expiresAt: z.ZodNullable; notes: z.ZodNullable; createdAt: z.ZodString; }, z.core.$strip>; bookingDetailSchema: z.ZodObject<{ id: z.ZodString; bookingNumber: z.ZodString; revision: z.ZodNumber; 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; 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.ZodEnum<{ other: "other"; unit: "unit"; extra: "extra"; service: "service"; fee: "fee"; tax: "tax"; discount: "discount"; adjustment: "adjustment"; accommodation: "accommodation"; transport: "transport"; }>; status: z.ZodEnum<{ draft: "draft"; on_hold: "on_hold"; confirmed: "confirmed"; expired: "expired"; cancelled: "cancelled"; fulfilled: "fulfilled"; }>; serviceDate: z.ZodNullable; startsAt: z.ZodNullable; endsAt: z.ZodNullable; quantity: z.ZodNumber; sellCurrency: z.ZodString; unitSellAmountCents: z.ZodNullable; totalSellAmountCents: z.ZodNullable; costCurrency: z.ZodNullable; unitCostAmountCents: z.ZodNullable; totalCostAmountCents: z.ZodNullable; notes: z.ZodNullable; productId: z.ZodNullable; optionId: z.ZodNullable; optionUnitId: z.ZodNullable; pricingCategoryId: z.ZodNullable; availabilitySlotId: z.ZodNullable; productNameSnapshot: z.ZodNullable; optionNameSnapshot: z.ZodNullable; unitNameSnapshot: z.ZodNullable; departureLabelSnapshot: z.ZodNullable; sourceSnapshotId: z.ZodNullable; sourceOfferId: z.ZodNullable; metadata: z.ZodNullable>; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>>; travelers: z.ZodArray; travelerCategory: z.ZodNullable>; firstName: z.ZodString; lastName: z.ZodString; email: z.ZodNullable; phone: z.ZodNullable; preferredLanguage: z.ZodNullable; specialRequests: z.ZodNullable; isPrimary: z.ZodBoolean; notes: z.ZodNullable; createdAt: z.ZodString; updatedAt: z.ZodString; }, z.core.$strip>>; documents: z.ZodArray; type: z.ZodEnum<{ other: "other"; visa: "visa"; insurance: "insurance"; health: "health"; passport_copy: "passport_copy"; }>; fileName: z.ZodString; fileUrl: z.ZodString; expiresAt: z.ZodNullable; notes: z.ZodNullable; createdAt: z.ZodString; }, z.core.$strip>>; }, z.core.$strip>; bookingAggregatesSchema: z.ZodObject<{ total: z.ZodNumber; totalPax: z.ZodNumber; countsByStatus: z.ZodArray; count: z.ZodNumber; }, z.core.$strip>>; monthlyCounts: z.ZodArray>; monthlyRevenue: z.ZodArray>; upcomingDepartures: z.ZodObject<{ count: z.ZodNumber; items: z.ZodArray; 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"; }>; startDate: z.ZodNullable; endDate: z.ZodNullable; pax: z.ZodNullable; sellCurrency: z.ZodNullable; sellAmountCents: z.ZodNullable; }, z.core.$strip>>; }, z.core.$strip>; }, z.core.$strip>; sharingGroupSummarySchema: z.ZodObject<{ id: z.ZodString; label: z.ZodString; occupancy: z.ZodNumber; roomTypeId: z.ZodNullable; bookingIds: z.ZodArray; }, z.core.$strip>; confirmBookingAuthorizationInput: typeof confirmBookingAuthorizationInput; }; export {};