import { VectorStore } from "./base.js"; import { Document } from "../document.js"; import { type Embeddings } from "../embeddings/base.js"; import { Callbacks } from "../callbacks/manager.js"; declare const IdColumnSymbol: unique symbol; declare const ContentColumnSymbol: unique symbol; type ColumnSymbol = typeof IdColumnSymbol | typeof ContentColumnSymbol; declare type Value = unknown; declare type RawValue = Value | Sql; declare class Sql { strings: string[]; constructor(rawStrings: ReadonlyArray, rawValues: ReadonlyArray); } type PrismaNamespace = { ModelName: Record; Sql: typeof Sql; raw: (sql: string) => Sql; join: (values: RawValue[], separator?: string, prefix?: string, suffix?: string) => Sql; sql: (strings: ReadonlyArray, ...values: RawValue[]) => Sql; }; type PrismaClient = { $queryRaw(query: TemplateStringsArray | Sql, ...values: any[]): Promise; $executeRaw(query: TemplateStringsArray | Sql, ...values: any[]): Promise; $transaction

[]>(arg: [...P]): Promise; }; type ObjectIntersect = { [P in keyof A & keyof B]: A[P] | B[P]; }; type ModelColumns> = { [K in keyof TModel]?: true | ColumnSymbol; }; type PrismaSqlFilter> = { [K in keyof TModel]?: { equals?: TModel[K]; lt?: TModel[K]; lte?: TModel[K]; gt?: TModel[K]; gte?: TModel[K]; not?: TModel[K]; }; }; type SimilarityModel = Record, TColumns extends ModelColumns = ModelColumns> = Pick> & { _distance: number | null; }; type DefaultPrismaVectorStore = PrismaVectorStore, string, ModelColumns>, PrismaSqlFilter>>; export declare class PrismaVectorStore, TModelName extends string, TSelectModel extends ModelColumns, TFilterModel extends PrismaSqlFilter> extends VectorStore { protected tableName: string; protected vectorColumnName: string; protected selectColumns: string[]; filter?: TFilterModel; idColumn: keyof TModel & string; contentColumn: keyof TModel & string; static IdColumn: typeof IdColumnSymbol; static ContentColumn: typeof ContentColumnSymbol; protected db: PrismaClient; protected Prisma: PrismaNamespace; _vectorstoreType(): string; constructor(embeddings: Embeddings, config: { db: PrismaClient; prisma: PrismaNamespace; tableName: TModelName; vectorColumnName: string; columns: TSelectModel; filter?: TFilterModel; }); static withModel>(db: PrismaClient): { create: , TFilters extends PrismaSqlFilter>(embeddings: Embeddings, config: { prisma: TPrisma; tableName: keyof TPrisma["ModelName"] & string; vectorColumnName: string; columns: TColumns; filter?: TFilters | undefined; }) => PrismaVectorStore; fromTexts: >(texts: string[], metadatas: TModel[], embeddings: Embeddings, dbConfig: { prisma: TPrisma_1; tableName: keyof TPrisma_1["ModelName"] & string; vectorColumnName: string; columns: TColumns_1; }) => Promise; fromDocuments: , TFilters_1 extends PrismaSqlFilter>(docs: Document[], embeddings: Embeddings, dbConfig: { prisma: TPrisma_2; tableName: keyof TPrisma_2["ModelName"] & string; vectorColumnName: string; columns: TColumns_2; }) => Promise>; }; addModels(models: TModel[]): Promise; addDocuments(documents: Document[]): Promise; addVectors(vectors: number[][], documents: Document[]): Promise; similaritySearch(query: string, k?: number, _filter?: this["FilterType"] | undefined, // not used. here to make the interface compatible with the other stores _callbacks?: Callbacks | undefined): Promise>[]>; similaritySearchWithScore(query: string, k?: number, filter?: TFilterModel, _callbacks?: Callbacks | undefined): Promise<[Document>, number][]>; similaritySearchVectorWithScore(query: number[], k: number, filter?: TFilterModel): Promise<[Document>, number][]>; buildSqlFilterStr(filter?: TFilterModel): Sql | null; static fromTexts(texts: string[], metadatas: object[], embeddings: Embeddings, dbConfig: { db: PrismaClient; prisma: PrismaNamespace; tableName: string; vectorColumnName: string; columns: ModelColumns>; }): Promise; static fromDocuments(docs: Document[], embeddings: Embeddings, dbConfig: { db: PrismaClient; prisma: PrismaNamespace; tableName: string; vectorColumnName: string; columns: ModelColumns>; }): Promise; } export {};