import { Config, Embeddable, EmbeddingBase } from "../types";
import { GenericClient } from "../clients";
import { PluginService } from "..//plugins/plugins";
export type CreateEmbeddingOptions = {
    provider?: string;
    model: string;
    input: string;
};
export type EmbedOptions = {
    prompt?: string;
    chunkSize?: number;
    uploadMode?: boolean;
    minLength?: number;
};
interface EmbeddingServiceContext {
    config: Config;
    embeddingClient?: GenericClient;
    plugins: PluginService;
}
export declare class EmbeddingService {
    protected context: EmbeddingServiceContext;
    private config;
    private embeddingClient;
    private plugins;
    constructor(context: EmbeddingServiceContext);
    setEmbeddingClient(client: GenericClient): void;
    createEmbedding({ provider, model, input }: CreateEmbeddingOptions): Promise<import("../clients").EmbeddingResponse>;
    loadEmbedding(filePath: string): Promise<Embeddable[]>;
    getConfiguredEmbeddingMap(): Promise<{
        [filePath: string]: Embeddable[];
    }>;
    getConfiguredEmbeddings(): Promise<Embeddable[]>;
    private getChunkId;
    embedSource(model: Config["embeddingModel"], source: Config["embedSources"][0], ignorePattern: string[]): Promise<void>;
    saveEmbedding(output: string, embeddings: Embeddable[]): Promise<void>;
    embedKind(model: Config["embeddingModel"], id: string, source: Config["embedSources"][0], embeddings?: Embeddable[], save?: boolean): Promise<void>;
    handleAllKinds(id: string, source: Config["embedSources"][0]): Promise<Partial<Embeddable>[]>;
    private handleTextKind;
    private handleFileKind;
    embed(model: string, id: string, text: string, metadata: any, embeddings: Embeddable[], options?: EmbedOptions): Promise<string[]>;
    pruneEmbedding(id: string, chunkIds: string[], embeddings: Embeddable[]): Embeddable[];
    queryEmbedding<E>(query: string, embeddings: Embeddable<E>[], model?: string): Promise<EmbeddingBase<E>[]>;
    pruneVector(embeddings: Embeddable[]): void;
    pruneMetadata(embeddings: Embeddable[], characterLimit?: number): void;
    isEmbeddingFile(inputFile: string): Promise<boolean>;
    embedJson(model: string, inputFile: string, source: Config["embedSources"][0]): Promise<void>;
}
export {};
