import type { BootstrapContext } from "@voyant-travel/core"; import type { AnyDrizzleDb } from "@voyant-travel/db"; import { type CaptureSnapshotInput, captureSnapshotGraphIdempotent } from "./services/snapshot-service.js"; export { type CatalogBookingSnapshotRuntimeProvider, catalogBookingSnapshotRuntimePort, } from "./subscriber-runtime-ports.js"; export declare const CATALOG_BOOKING_SNAPSHOT_RUNTIME_CONTAINER_KEY = "runtime.catalog.booking-snapshot"; export interface CatalogBookingSnapshotScope { locale: string; audience: "staff"; market: string; actor: "staff"; } export interface CatalogBookingSnapshotBuildOptions { sellerOperatorId: string; scope: CatalogBookingSnapshotScope; } export interface CatalogBookingSnapshotExecutionContext { db: AnyDrizzleDb; sellerOperatorId: string; findBookingProductIds(bookingId: string): Promise; buildSnapshotInput(productId: string, options: CatalogBookingSnapshotBuildOptions): Promise | null>; } export interface CatalogBookingSnapshotRuntime { withContext(operation: (context: CatalogBookingSnapshotExecutionContext) => Promise): Promise; } export interface CatalogBookingSnapshotSubscriberRuntimeDescriptor { readonly id: string; readonly eventType: string; readonly register: (context: BootstrapContext) => void | Promise; } type CaptureSnapshotGraph = typeof captureSnapshotGraphIdempotent; export interface CatalogBookingSnapshotSubscriberDescriptorOptions { captureSnapshotGraph?: CaptureSnapshotGraph; } export declare function createCatalogBookingSnapshotSubscriberDescriptor(options?: CatalogBookingSnapshotSubscriberDescriptorOptions): CatalogBookingSnapshotSubscriberRuntimeDescriptor; export declare const catalogBookingConfirmedSnapshotSubscriber: CatalogBookingSnapshotSubscriberRuntimeDescriptor; /** Selected-graph factory for idempotent booking snapshot capture. */ export declare const createCatalogBookingSnapshotSubscriberGraphRuntime: import("@voyant-travel/core/project").VoyantGraphRuntimeFactory<{ register: (context: BootstrapContext) => Promise; id: string; eventType: string; }>;