import type { CallOptions, CatalogEntry, CatalogSnapshot, ISkillsRagBackendProvider, ISkillsStoreProvider } from '@mcp-abap-adt/llm-agent'; export interface QdrantPoint { id: string; vector: number[]; payload: Record; } export interface IQdrantReader { search(filter: object, vector: number[], k: number, options?: { signal?: AbortSignal; }): Promise; score: number; }>>; scroll(filter: object, cursor?: string): Promise<{ points: QdrantPoint[]; next?: string; }>; } export interface IQdrantClient extends IQdrantReader { /** * Upsert points. `opts.wait` (default false) maps to Qdrant `?wait=true`: * the request returns only after the operation is APPLIED and the points are * searchable. The general default omits it (throughput); the catalog-activation * ingest path passes `wait: true` so a generation is never published active * before its points are visible to recall (read-after-write at the activation * boundary). */ upsertPoints(points: QdrantPoint[], opts?: { wait?: boolean; }): Promise; deleteByFilter(filter: object): Promise; } export interface ICatalogReader { read(): Promise; } export interface ICatalogStore extends ICatalogReader { casPublish(expectedCatalogRevision: string, entries: readonly CatalogEntry[], now: number): Promise; pruneRetired(expectedCatalogRevision: string, generations: readonly string[]): Promise; } type Embed = (text: string, options?: CallOptions) => Promise; type PointId = (generation: string, recordId: string) => string; export declare const pointId: PointId; export declare function makeInProcessCatalogStore(): ICatalogStore; export interface IPgPool { query(sql: string, params?: unknown[]): Promise<{ rows: unknown[]; rowCount: number; }>; } export declare function makePgCatalogStore(deps: { pool: IPgPool; table?: string; }): ICatalogStore; export declare function makePgCatalogReader(deps: { pool: IPgPool; table?: string; }): ICatalogReader; interface QdrantRestOptions { url: string; apiKey?: string; collection: string; } /** Read-only Qdrant reader (search + scroll). Used by recall-only with a read key. */ export declare function makeQdrantReader(opts: QdrantRestOptions): IQdrantReader; /** Read/write Qdrant client (reader + upsert + delete). Used by the ingest path. */ export declare function makeQdrantClient(opts: QdrantRestOptions): IQdrantClient; /** Read-only backend provider over reader interfaces (no write/reconcile API). */ export declare function makeQdrantBackendProvider(deps: { reader: IQdrantReader; catalogReader: ICatalogReader; collection: string; }): ISkillsRagBackendProvider; export interface QdrantStoreProviderDeps { client: IQdrantClient; collection: string; catalogStore: ICatalogStore; embed: Embed; pointId?: PointId; now?: () => number; retiredGraceMs: number; orphanGraceMs: number; } export declare function makeQdrantStoreProvider(deps: QdrantStoreProviderDeps): ISkillsStoreProvider; export {}; //# sourceMappingURL=qdrant-store.d.ts.map