import { Pool } from "pg"; import type { PostgresProviderConfig } from "../config.js"; import type { CandidateMemory, CandidateReviewItem, CandidateReviewStore, CandidateStatusSummary, SessionObservation } from "../observation.js"; import type { CatalogEntry, EmbeddingModel, MemoryContext, MemoryMutationOptions, MemoryProvider, MemoryRecord, MemoryResult, MemorySearchRequest, MemoryWrite, ProviderDescriptor, ProviderHealth } from "../types.js"; export interface PostgresMemoryProviderOptions { pool?: Pool; embeddingModel?: EmbeddingModel; } export declare class PostgresMemoryProvider implements MemoryProvider, CandidateReviewStore { private readonly config; readonly id: string; private readonly pool; private readonly embeddingModel; private readonly ownsPool; /** Exposes the underlying connection pool so other durable stores (e.g. `PostgresCorrectionCandidateStore`) can share it instead of opening a second pool to the same database. */ get connectionPool(): Pool; constructor(config: PostgresProviderConfig, options?: PostgresMemoryProviderOptions); capabilities(): { lexicalSearch: boolean; semanticSearch: boolean; metadataFiltering: boolean; catalog: boolean; read: boolean; write: boolean; update: boolean; delete: boolean; episodicHistory: boolean; structuredEntities: boolean; filesystemDocuments: boolean; }; descriptor(): Promise; catalog(context: MemoryContext, signal: AbortSignal): Promise; search(request: MemorySearchRequest): Promise; get(id: string, context: MemoryContext): Promise; write(memory: MemoryWrite, options?: MemoryMutationOptions): Promise; update(id: string, memory: MemoryWrite, options?: MemoryMutationOptions): Promise; supersede(id: string, replacement: MemoryWrite, options?: MemoryMutationOptions): Promise; delete(id: string, _context: MemoryContext): Promise; persistCandidate(observation: SessionObservation, candidate: CandidateMemory, options?: { timeoutMs?: number; signal?: AbortSignal; }): Promise; candidateStatus(context: MemoryContext): Promise; listCandidates(status?: CandidateMemory["status"]): Promise; reviewCandidate(id: string, status: "approved" | "rejected"): Promise; consolidateCandidates(batchSize?: number): Promise; reembedStale(batchSize?: number): Promise; health(): Promise; close(): Promise; dispose(): Promise; private recordEmbeddingSettings; private writeWithClient; private insertSource; private insertEntitiesAndRelationships; }