export interface CruisesListFilters { cruiseType?: "ocean" | "river" | "expedition" | "coastal" | undefined; status?: "draft" | "awaiting_review" | "live" | "archived" | undefined; lineSupplierId?: string | undefined; region?: string | undefined; search?: string | undefined; limit?: number | undefined; offset?: number | undefined; } export interface SailingsListFilters { cruiseId?: string | undefined; shipId?: string | undefined; dateFrom?: string | undefined; dateTo?: string | undefined; salesStatus?: "open" | "on_request" | "wait_list" | "sold_out" | "closed" | undefined; direction?: "upstream" | "downstream" | "round_trip" | "one_way" | undefined; limit?: number | undefined; offset?: number | undefined; } export interface ShipsListFilters { lineSupplierId?: string | undefined; shipType?: "ocean" | "river" | "expedition" | "yacht" | "sailing" | "coastal" | undefined; isActive?: boolean | undefined; search?: string | undefined; limit?: number | undefined; offset?: number | undefined; } export interface PricesListFilters { sailingId?: string | undefined; cabinCategoryId?: string | undefined; occupancy?: number | undefined; fareCode?: string | undefined; availability?: "available" | "limited" | "on_request" | "wait_list" | "sold_out" | undefined; priceCatalogId?: string | undefined; limit?: number | undefined; offset?: number | undefined; } export interface StorefrontListFilters { cruiseType?: "ocean" | "river" | "expedition" | "coastal" | undefined; region?: string | undefined; theme?: string | undefined; dateFrom?: string | undefined; dateTo?: string | undefined; priceMaxCents?: number | undefined; source?: "local" | "external" | undefined; search?: string | undefined; limit?: number | undefined; offset?: number | undefined; } /** * Hierarchical TanStack query keys for the cruises module. Following the * convention from relationships-react and products-react: all keys are tuples rooted * at ["voyant", "cruises", ...] so a single invalidation can wipe everything * cruises-related, and finer-grained invalidations target specific resources. */ export declare const cruisesQueryKeys: { readonly all: readonly ["voyant", "cruises"]; readonly cruises: () => readonly ["voyant", "cruises", "cruises"]; readonly cruisesList: (filters: CruisesListFilters) => readonly ["voyant", "cruises", "cruises", "list", CruisesListFilters]; /** Detail by unified key — accepts both `cru_*` TypeIDs and `:` external keys. */ readonly cruise: (key: string, include?: ReadonlyArray<"sailings" | "days">) => readonly ["voyant", "cruises", "cruises", "detail", string, readonly ("sailings" | "days")[]]; readonly cruiseSailings: (key: string) => readonly ["voyant", "cruises", "cruises", "detail", string, readonly ("sailings" | "days")[], "sailings"]; readonly sailings: () => readonly ["voyant", "cruises", "sailings"]; readonly sailingsList: (filters: SailingsListFilters) => readonly ["voyant", "cruises", "sailings", "list", SailingsListFilters]; readonly sailing: (key: string, include?: ReadonlyArray<"pricing" | "itinerary">) => readonly ["voyant", "cruises", "sailings", "detail", string, readonly ("pricing" | "itinerary")[]]; readonly sailingItinerary: (key: string) => readonly ["voyant", "cruises", "sailings", "detail", string, readonly ("pricing" | "itinerary")[], "itinerary"]; readonly ships: () => readonly ["voyant", "cruises", "ships"]; readonly shipsList: (filters: ShipsListFilters) => readonly ["voyant", "cruises", "ships", "list", ShipsListFilters]; readonly ship: (key: string) => readonly ["voyant", "cruises", "ships", "detail", string]; readonly shipDecks: (key: string) => readonly ["voyant", "cruises", "ships", "detail", string, "decks"]; readonly shipCategories: (key: string) => readonly ["voyant", "cruises", "ships", "detail", string, "categories"]; readonly categoryCabins: (categoryId: string) => readonly ["voyant", "cruises", "categories", string, "cabins"]; readonly prices: () => readonly ["voyant", "cruises", "prices"]; readonly pricesList: (filters: PricesListFilters) => readonly ["voyant", "cruises", "prices", "list", PricesListFilters]; readonly enrichment: (cruiseKey: string) => readonly ["voyant", "cruises", "cruises", "detail", string, readonly ("sailings" | "days")[], "enrichment"]; readonly storefront: () => readonly ["voyant", "cruises", "storefront"]; readonly storefrontList: (filters: StorefrontListFilters) => readonly ["voyant", "cruises", "storefront", "list", StorefrontListFilters]; readonly storefrontCruise: (slug: string) => readonly ["voyant", "cruises", "storefront", "detail", string]; readonly storefrontSailing: (key: string) => readonly ["voyant", "cruises", "storefront", "sailings", string]; readonly storefrontShip: (key: string) => readonly ["voyant", "cruises", "storefront", "ships", string]; };