import type { AnyDrizzleDb } from "@voyant-travel/db"; import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; import { type BookingOrigin, type BookingOriginLegacyTransactionIds, type BookingOriginSource, type NewBookingOrigin } from "./schema-origin.js"; export interface UpsertBookingOriginInput { bookingId: string; originSource: BookingOriginSource; proposalVersionId?: string | null; tripSnapshotId?: string | null; reservationPlanId?: string | null; catalogPriceResponseId?: string | null; catalogSnapshotId?: string | null; providerSourceKind?: string | null; providerSourceProvider?: string | null; providerSourceConnectionId?: string | null; providerSourceRef?: string | null; providerOrderRef?: string | null; storefrontId?: string | null; channelId?: string | null; legacyTransactionOfferId?: string | null; legacyTransactionOrderId?: string | null; legacyTransactionIds?: BookingOriginLegacyTransactionIds | null; metadata?: Record | null; } export interface LegacyBookingTransactionLink { offerId: string | null; orderId: string | null; } export interface DirectB2CBookingOriginItemInput { sourceSnapshotId?: string | null; metadata?: Record | null; } export interface DirectB2CBookingOriginInput { bookingId: string; externalBookingRef?: string | null; storefrontId?: string | null; channelId?: string | null; items?: DirectB2CBookingOriginItemInput[]; buyerKind?: "guest" | "personal" | "business"; } export interface CatalogReservationBookingOriginInput { bookingId: string; tripEnvelopeId?: string | null; tripComponentId?: string | null; reservationPlanId?: string | null; catalogPriceResponseId?: string | null; catalogSnapshotId?: string | null; providerSourceKind?: string | null; providerSourceProvider?: string | null; providerSourceConnectionId?: string | null; providerSourceRef?: string | null; providerOrderRef?: string | null; storefrontId?: string | null; channelId?: string | null; metadata?: Record | null; } export interface AcceptedProposalBookingOriginInput { bookingId: string; proposalId: string; proposalVersionId: string; tripEnvelopeId: string; tripSnapshotId: string; tripComponentId: string; bookingSessionId: string; bookingSessionQuoteId: string; catalogPriceResponseId?: string | null; supplierOperationId?: string | null; } export declare function toBookingOriginInsert(input: UpsertBookingOriginInput, now?: Date): NewBookingOrigin; export declare function toDirectB2CBookingOriginInput(input: DirectB2CBookingOriginInput): UpsertBookingOriginInput; export declare function toCatalogReservationBookingOriginInput(input: CatalogReservationBookingOriginInput): UpsertBookingOriginInput; export declare function upsertBookingOrigin(db: AnyDrizzleDb, input: UpsertBookingOriginInput): Promise; /** * Promote a just-created component Booking's provider/direct origin into the * accepted-Proposal origin while retaining its supplier provenance columns. * This is intentionally narrow: it may only describe the same Booking at the * accepted Proposal Version commitment boundary. */ export declare function setAcceptedProposalBookingOrigin(db: AnyDrizzleDb, input: AcceptedProposalBookingOriginInput): Promise; export declare function getBookingOriginByBookingId(db: PostgresJsDatabase, bookingId: string): Promise; export declare function getLegacyTransactionLinkFromBookingOrigin(origin: BookingOrigin | null): LegacyBookingTransactionLink | null;