import type { PostgresJsDatabase } from "drizzle-orm/postgres-js"; import { type CruisePrice, type CruisePriceComponent } from "./schema-pricing.js"; export type QuotePriceComponentKind = CruisePriceComponent["kind"] | "single_supplement" | "other"; export type QuoteBookingTerms = { cancellationPolicy?: { summary?: string | null; rules?: Array<{ from?: string | null; until?: string | null; penaltyAmount?: string | null; penaltyCurrency?: string | null; penaltyPercent?: string | null; description?: string | null; }>; [key: string]: unknown; } | null; paymentTerms?: { summary?: string | null; depositAmount?: string | null; depositCurrency?: string | null; depositPercent?: string | null; dueDate?: string | null; schedule?: Array>; [key: string]: unknown; } | null; supplierTermsUrl?: string | null; notes?: string | null; [key: string]: unknown; }; export type QuoteComponent = { kind: QuotePriceComponentKind; label: string | null; amount: string; currency: string; direction: CruisePriceComponent["direction"]; perPerson: boolean; }; export type Quote = { fareCode: string | null; fareCodeName: string | null; fareVariant: CruisePrice["fareVariant"]; currency: string; occupancy: number; guestCount: number; basePerPerson: string; originalPricePerPerson: string | null; singlePricePerPerson: string | null; earlyBookingDeadline: string | null; earlyBookingBonusDescription: string | null; components: QuoteComponent[]; totalPerPerson: string; totalForCabin: string; bookingTerms?: QuoteBookingTerms | null; }; export type ComposeQuoteInput = { price: Pick; components: Array & { kind: QuotePriceComponentKind; }>; occupancy: number; guestCount: number; bookingTerms?: QuoteBookingTerms | null; }; export declare function composeQuote(input: ComposeQuoteInput): Quote; export type LowestPriceResult = { pricePerPerson: string; currency: string; cabinCategoryId: string; fareCode: string | null; fareVariant: CruisePrice["fareVariant"]; } | null; export type GridCell = { cabinCategoryId: string; occupancy: number; fareCode: string | null; fareVariant: CruisePrice["fareVariant"]; pricePerPerson: string; originalPricePerPerson: string | null; currency: string; availability: CruisePrice["availability"]; }; export declare const pricingService: { lowestAvailablePrice(db: PostgresJsDatabase, args: { sailingId: string; occupancy: number; }): Promise; gridForSailing(db: PostgresJsDatabase, sailingId: string): Promise; assembleQuote(db: PostgresJsDatabase, args: { sailingId: string; cabinCategoryId: string; occupancy: number; guestCount: number; fareCode?: string | null; fareVariant?: CruisePrice["fareVariant"] | null; }): Promise; };