import { OpenAPIHono } from "@hono/zod-openapi"; import type { ApiExtension } from "@voyant-travel/hono/module"; import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; import { z } from "zod"; import type { ExternalPassengerComposition, SourceRef } from "./adapters/index.js"; import type { QuoteBookingTerms, QuoteComponent } from "./service-pricing.js"; export declare const cruiseBookingModeEnum: import("drizzle-orm/pg-core").PgEnum<["inquiry", "reserve"]>; /** * Air-arrangement choice on a cruise booking. Per * booking-journey-architecture ยง7. The cruise booking carries the * intent; the flight booking line itself lives in the flights * vertical (or with the customer when "independent"). */ export declare const cruiseAirArrangementEnum: import("drizzle-orm/pg-core").PgEnum<["cruise_line", "independent", "none"]>; export declare const bookingCruiseDetails: import("drizzle-orm/pg-core").PgTableWithColumns<{ name: "booking_cruise_details"; schema: undefined; columns: { bookingId: import("drizzle-orm/pg-core").PgColumn<{ name: "booking_id"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; source: import("drizzle-orm/pg-core").PgColumn<{ name: "source"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgEnumColumn"; data: "local" | "external"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["local", "external"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; sourceProvider: import("drizzle-orm/pg-core").PgColumn<{ name: "source_provider"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; sourceRef: import("drizzle-orm/pg-core").PgColumn<{ name: "source_ref"; tableName: "booking_cruise_details"; dataType: "json"; columnType: "PgJsonb"; data: SourceRef; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: SourceRef; }>; sailingId: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; cabinCategoryId: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; cabinId: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; sailingDisplayName: import("drizzle-orm/pg-core").PgColumn<{ name: "sailing_display_name"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; cabinDisplayName: import("drizzle-orm/pg-core").PgColumn<{ name: "cabin_display_name"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; occupancy: import("drizzle-orm/pg-core").PgColumn<{ name: "occupancy"; tableName: "booking_cruise_details"; dataType: "number"; columnType: "PgSmallInt"; data: number; driverParam: string | number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; fareCode: import("drizzle-orm/pg-core").PgColumn<{ name: "fare_code"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; fareVariant: import("drizzle-orm/pg-core").PgColumn<{ name: "fare_variant"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgEnumColumn"; data: "cruise_only" | "air_inclusive"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["cruise_only", "air_inclusive"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; mode: import("drizzle-orm/pg-core").PgColumn<{ name: "mode"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgEnumColumn"; data: "inquiry" | "reserve"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["inquiry", "reserve"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; quotedPricePerPerson: import("drizzle-orm/pg-core").PgColumn<{ name: "quoted_price_per_person"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgNumeric"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; quotedTotalForCabin: import("drizzle-orm/pg-core").PgColumn<{ name: "quoted_total_for_cabin"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgNumeric"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; quotedCurrency: import("drizzle-orm/pg-core").PgColumn<{ name: "quoted_currency"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgChar"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: 3; }>; quotedComponentsJson: import("drizzle-orm/pg-core").PgColumn<{ name: "quoted_components_json"; tableName: "booking_cruise_details"; dataType: "json"; columnType: "PgJsonb"; data: QuoteComponent[]; driverParam: unknown; notNull: false; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: QuoteComponent[]; }>; bookingTermsSnapshotJson: import("drizzle-orm/pg-core").PgColumn<{ name: "booking_terms_snapshot_json"; tableName: "booking_cruise_details"; dataType: "json"; columnType: "PgJsonb"; data: QuoteBookingTerms; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: QuoteBookingTerms; }>; passengerCompositionSnapshotJson: import("drizzle-orm/pg-core").PgColumn<{ name: "passenger_composition_snapshot_json"; tableName: "booking_cruise_details"; dataType: "json"; columnType: "PgJsonb"; data: ExternalPassengerComposition; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: ExternalPassengerComposition; }>; connectorBookingRef: import("drizzle-orm/pg-core").PgColumn<{ name: "connector_booking_ref"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; connectorStatus: import("drizzle-orm/pg-core").PgColumn<{ name: "connector_status"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; airArrangement: import("drizzle-orm/pg-core").PgColumn<{ name: "air_arrangement"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgEnumColumn"; data: "none" | "cruise_line" | "independent"; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["cruise_line", "independent", "none"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; linkedFlightBookingId: import("drizzle-orm/pg-core").PgColumn<{ name: "linked_flight_booking_id"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; notes: import("drizzle-orm/pg-core").PgColumn<{ name: "notes"; tableName: "booking_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; createdAt: import("drizzle-orm/pg-core").PgColumn<{ name: "created_at"; tableName: "booking_cruise_details"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; updatedAt: import("drizzle-orm/pg-core").PgColumn<{ name: "updated_at"; tableName: "booking_cruise_details"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; export type BookingCruiseDetail = typeof bookingCruiseDetails.$inferSelect; export type NewBookingCruiseDetail = typeof bookingCruiseDetails.$inferInsert; export declare const bookingGroupCruiseDetails: import("drizzle-orm/pg-core").PgTableWithColumns<{ name: "booking_group_cruise_details"; schema: undefined; columns: { bookingGroupId: import("drizzle-orm/pg-core").PgColumn<{ name: "booking_group_id"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; source: import("drizzle-orm/pg-core").PgColumn<{ name: "source"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgEnumColumn"; data: "local" | "external"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: ["local", "external"]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; sourceProvider: import("drizzle-orm/pg-core").PgColumn<{ name: "source_provider"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; sourceRef: import("drizzle-orm/pg-core").PgColumn<{ name: "source_ref"; tableName: "booking_group_cruise_details"; dataType: "json"; columnType: "PgJsonb"; data: SourceRef; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: SourceRef; }>; sailingId: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; sailingDisplayName: import("drizzle-orm/pg-core").PgColumn<{ name: "sailing_display_name"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; cabinCount: import("drizzle-orm/pg-core").PgColumn<{ name: "cabin_count"; tableName: "booking_group_cruise_details"; dataType: "number"; columnType: "PgSmallInt"; data: number; driverParam: string | number; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; totalQuotedAmount: import("drizzle-orm/pg-core").PgColumn<{ name: "total_quoted_amount"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgNumeric"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; quotedCurrency: import("drizzle-orm/pg-core").PgColumn<{ name: "quoted_currency"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgChar"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { length: 3; }>; connectorBookingRef: import("drizzle-orm/pg-core").PgColumn<{ name: "connector_booking_ref"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; bookingTermsSnapshotJson: import("drizzle-orm/pg-core").PgColumn<{ name: "booking_terms_snapshot_json"; tableName: "booking_group_cruise_details"; dataType: "json"; columnType: "PgJsonb"; data: QuoteBookingTerms; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: QuoteBookingTerms; }>; notes: import("drizzle-orm/pg-core").PgColumn<{ name: "notes"; tableName: "booking_group_cruise_details"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; createdAt: import("drizzle-orm/pg-core").PgColumn<{ name: "created_at"; tableName: "booking_group_cruise_details"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; updatedAt: import("drizzle-orm/pg-core").PgColumn<{ name: "updated_at"; tableName: "booking_group_cruise_details"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; export type BookingGroupCruiseDetail = typeof bookingGroupCruiseDetails.$inferSelect; export type NewBookingGroupCruiseDetail = typeof bookingGroupCruiseDetails.$inferInsert; declare const cruiseDetailUpsertSchema: z.ZodObject<{ source: z.ZodDefault>; sourceProvider: z.ZodNullable>; sourceRef: z.ZodNullable; externalId: z.ZodString; }, z.core.$catchall>>>; sailingId: z.ZodNullable>; cabinCategoryId: z.ZodNullable>; cabinId: z.ZodNullable>; sailingDisplayName: z.ZodNullable>; cabinDisplayName: z.ZodNullable>; occupancy: z.ZodNumber; fareCode: z.ZodNullable>; fareVariant: z.ZodDefault>; mode: z.ZodDefault>; quotedPricePerPerson: z.ZodString; quotedTotalForCabin: z.ZodString; quotedCurrency: z.ZodString; quotedComponentsJson: z.ZodNullable>>; bookingTermsSnapshotJson: z.ZodNullable>>; passengerCompositionSnapshotJson: z.ZodNullable; infants: z.ZodOptional; seniors: z.ZodOptional; childAges: z.ZodOptional>; }, z.core.$catchall>>>; connectorBookingRef: z.ZodNullable>; connectorStatus: z.ZodNullable>; airArrangement: z.ZodNullable>>; linkedFlightBookingId: z.ZodNullable>; notes: z.ZodNullable>; }, z.core.$strip>; declare const groupCruiseDetailUpsertSchema: z.ZodObject<{ source: z.ZodDefault>; sourceProvider: z.ZodNullable>; sourceRef: z.ZodNullable; externalId: z.ZodString; }, z.core.$catchall>>>; sailingId: z.ZodNullable>; sailingDisplayName: z.ZodNullable>; cabinCount: z.ZodNumber; totalQuotedAmount: z.ZodString; quotedCurrency: z.ZodString; connectorBookingRef: z.ZodNullable>; bookingTermsSnapshotJson: z.ZodNullable>>; notes: z.ZodNullable>; }, z.core.$strip>; export declare const bookingCruiseDetailsService: { get(db: PostgresJsDatabase, bookingId: string): Promise; upsert(db: PostgresJsDatabase, bookingId: string, data: z.infer): Promise; remove(db: PostgresJsDatabase, bookingId: string): Promise; }; export declare const bookingGroupCruiseDetailsService: { get(db: PostgresJsDatabase, bookingGroupId: string): Promise; upsert(db: PostgresJsDatabase, bookingGroupId: string, data: z.infer): Promise; remove(db: PostgresJsDatabase, bookingGroupId: string): Promise; }; type Env = { Variables: { db: PostgresJsDatabase; userId?: string; }; }; export declare const CRUISES_BOOKING_OPENAPI_API_ID = "@voyant-travel/cruises#booking-extension.api.admin"; export declare const cruisesBookingExtensionRoutes: OpenAPIHono; export declare const cruisesBookingExtension: ApiExtension; export {};