/** * Shared catalog-plane runtime helpers. * * Centralizes catalog indexer construction and the default slice set so both * request handlers and background subscribers stay aligned. */ import { type FieldPolicyRegistry } from "@voyant-travel/catalog/contract"; import type { EmbeddingProvider } from "@voyant-travel/catalog/embeddings/contract"; import { buildCatalogEmbeddingProvider, withoutCatalogScopeChannel } from "@voyant-travel/catalog/runtime-support"; import type { DocumentBuilder, DocumentBuilderContext } from "@voyant-travel/catalog/services/indexer"; import type { IndexerAdapter, IndexerProvider, IndexerSlice } from "@voyant-travel/catalog-contracts/indexer/contract"; import type { AnyDrizzleDb } from "@voyant-travel/db"; export declare const CATALOG_VERTICALS: readonly ["products", "extras", "cruises", "charters", "accommodations"]; /** * The slice set the operator starter indexes by default — staff (admin * search) + customer (storefront browse) on en-GB and the `default` market. * Kept in one place so the bulk-reindex CLI, the live-reindex bridge, and * the MCP routes never drift on which collections exist. */ export declare const DEFAULT_SLICES: readonly IndexerSlice[]; export declare function loadCatalogSlices(db: AnyDrizzleDb): Promise; export type CatalogRuntimeEnv = { VOYANT_API_KEY?: string; VOYANT_CLOUD_API_KEY?: string; VOYANT_CLOUD_API_URL?: string; }; export declare const buildEmbeddingProvider: typeof buildCatalogEmbeddingProvider; export { withoutCatalogScopeChannel }; export declare function buildIndexer(provider: IndexerProvider | undefined, embeddings?: EmbeddingProvider): IndexerAdapter | undefined; export declare function getFieldPolicyRegistries(): Map; export declare function createProductsDocumentBuilder(db: AnyDrizzleDb, context: { sellerOperatorId: string; }): DocumentBuilder; export declare function createCruisesDocumentBuilder(db: AnyDrizzleDb, context: { sellerOperatorId: string; }): DocumentBuilder; export declare function createCatalogDocumentBuilder(db: AnyDrizzleDb, context: { sellerOperatorId: string; }): DocumentBuilder; /** * Resolve referenced-subject copy from Catalog's durable sourced projection * and active overlays. The context is internal to document construction: it is * never serialized into index documents or public event payloads. */ export declare function createReferencedSubjectDocumentBuilderContext(db: AnyDrizzleDb, slice: Pick, registries?: ReadonlyMap): DocumentBuilderContext; export declare function withEmbedding(inner: DocumentBuilder, embeddings: EmbeddingProvider | undefined): DocumentBuilder;