/** * Owned availability-search handlers. * * Owned inventory participates in availability search as a first-class source, * mirroring the owned-booking-handler vs source-adapter split in the booking * engine (`booking-engine/owned-handler.ts`). The fan-out * (`availability-fan-out.ts`) treats a registered owned handler exactly like a * sourced adapter, so owned and sourced supply land in one ranked candidate * list โ€” not modeled as a fake external provider. * * See `docs/architecture/dynamic-packaging-rfc.md` ยง2 (Gap 1). */ import type { AvailabilitySearchRequest, AvailabilitySearchResult, SourceAdapterContext } from "@voyant-travel/catalog-contracts"; import type { AnyDrizzleDb } from "@voyant-travel/db"; /** Context passed to an owned search handler. Mirrors `OwnedHandlerContext`. */ export interface OwnedSearchContext { db: AnyDrizzleDb; /** Echoed through from the deployment โ€” handlers may use it for scope/audit. */ adapterContext: SourceAdapterContext; } /** * Searches an owned vertical's inventory. One handler per `entityModule`. * Unlike a sourced adapter, an owned handler is always search-capable โ€” being * registered is the capability declaration. */ export interface OwnedAvailabilitySearchHandler { /** Vertical this handler claims. One handler per `entity_module`. */ readonly entityModule: string; searchAvailability(ctx: OwnedSearchContext, request: AvailabilitySearchRequest): Promise; } export declare class NoOwnedSearchHandlerRegisteredError extends Error { readonly entityModule: string; constructor(entityModule: string); } export interface OwnedAvailabilitySearchHandlerRegistry { /** Register a handler. Re-registering the same `entityModule` replaces it. */ register(handler: OwnedAvailabilitySearchHandler): void; resolve(entityModule: string): OwnedAvailabilitySearchHandler | undefined; resolveOrThrow(entityModule: string): OwnedAvailabilitySearchHandler; has(entityModule: string): boolean; modules(): ReadonlyArray; } export declare function createOwnedAvailabilitySearchHandlerRegistry(): OwnedAvailabilitySearchHandlerRegistry;