import type { BaseNode } from "../Node.js";
import type { TransformComponent } from "../ingestion/types.js";
import type { MessageContentDetail } from "../llm/types.js";
import { SimilarityType } from "./utils.js";
type EmbedFunc<T> = (values: T[]) => Promise<Array<number[]>>;
export declare abstract class BaseEmbedding implements TransformComponent {
    embedBatchSize: number;
    similarity(embedding1: number[], embedding2: number[], mode?: SimilarityType): number;
    abstract getTextEmbedding(text: string): Promise<number[]>;
    getQueryEmbedding(query: MessageContentDetail): Promise<number[] | null>;
    /**
     * Optionally override this method to retrieve multiple embeddings in a single request
     * @param texts
     */
    getTextEmbeddings(texts: string[]): Promise<Array<number[]>>;
    /**
     * Get embeddings for a batch of texts
     * @param texts
     * @param options
     */
    getTextEmbeddingsBatch(texts: string[], options?: {
        logProgress?: boolean;
    }): Promise<Array<number[]>>;
    transform(nodes: BaseNode[], _options?: any): Promise<BaseNode[]>;
}
export declare function batchEmbeddings<T>(values: T[], embedFunc: EmbedFunc<T>, chunkSize: number, options?: {
    logProgress?: boolean;
}): Promise<Array<number[]>>;
export {};
