import type { BulkWriteOptions } from "mongodb";
import { MongoClient } from "mongodb";
import type { BaseNode } from "../../Node.js";
import { BaseEmbedding } from "../../embeddings/types.js";
import { VectorStoreBase, type VectorStoreNoEmbedModel, type VectorStoreQuery, type VectorStoreQueryResult } from "./types.js";
/**
 * Vector store that uses MongoDB Atlas for storage and vector search.
 * This store uses the $vectorSearch aggregation stage to perform vector similarity search.
 */
export declare class MongoDBAtlasVectorSearch extends VectorStoreBase implements VectorStoreNoEmbedModel {
    storesText: boolean;
    flatMetadata: boolean;
    /**
     * The used MongoClient. If not given, a new MongoClient is created based on the MONGODB_URI env variable.
     */
    mongodbClient: MongoClient;
    /**
     * Name of the vector index. If invalid, Mongo will silently ignore this issue and return 0 results.
     *
     * Default: "default"
     */
    indexName: string;
    /**
     * Name of the key containing the embedding vector.
     *
     * Default: "embedding"
     */
    embeddingKey: string;
    /**
     * Name of the key containing the node id.
     *
     * Default: "id"
     */
    idKey: string;
    /**
     * Name of the key containing the node text.
     *
     * Default: "text"
     */
    textKey: string;
    /**
     * Name of the key containing the node metadata.
     *
     * Default: "metadata"
     */
    metadataKey: string;
    /**
     * Options to pass to the insertMany function when adding nodes.
     */
    insertOptions?: BulkWriteOptions;
    /**
     * Function to determine the number of candidates to retrieve for a given query.
     * In case your results are not good, you might tune this value.
     *
     * {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/|Run Vector Search Queries}
     *
     * {@link https://arxiv.org/abs/1603.09320|Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs}
     *
     *
     * Default: query.similarityTopK * 10
     */
    numCandidates: (query: VectorStoreQuery) => number;
    private collection;
    constructor(init: Partial<MongoDBAtlasVectorSearch> & {
        dbName: string;
        collectionName: string;
        embedModel?: BaseEmbedding;
    });
    /**
     * Add nodes to the vector store.
     *
     * @param nodes Nodes to add to the vector store
     * @returns List of node ids that were added
     */
    add(nodes: BaseNode[]): Promise<string[]>;
    /**
     * Delete nodes from the vector store with the given redDocId.
     *
     * @param refDocId The refDocId of the nodes to delete
     * @param deleteOptions Options to pass to the deleteOne function
     */
    delete(refDocId: string, deleteOptions?: any): Promise<void>;
    get client(): any;
    /**
     * Perform a vector similarity search query.
     *
     * @param query The query to run
     * @returns List of nodes and their similarities
     */
    query(query: VectorStoreQuery, options?: any): Promise<VectorStoreQueryResult>;
}
