import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai';
import { MemoryVectorStore } from 'langchain/vectorstores/memory';
import { BaseDocumentLoader } from '@langchain/core/document_loaders/base';
import { Document } from 'langchain/document';
interface RAGToolkitOptions {
    embeddings?: OpenAIEmbeddings;
    vectorStore?: MemoryVectorStore;
    llmInstance?: ChatOpenAI;
    promptQuestionTemplate?: string;
    chunkOptions?: {
        chunkSize: number;
        chunkOverlap: number;
    };
    env?: {
        OPENAI_API_KEY: string;
    };
}
interface DocumentSource {
    source: string | File;
    type: string;
}
type LoaderFunction = (source: string | File) => BaseDocumentLoader;
export declare class RAGToolkit {
    private embeddings;
    private vectorStore;
    private llmInstance;
    private promptQuestionTemplate;
    private chunkOptions;
    private loaders;
    constructor(options?: RAGToolkitOptions);
    registerLoader(type: string, loaderFunction: LoaderFunction): void;
    addDocuments(sources: DocumentSource[]): Promise<void>;
    loadDocuments(sources: DocumentSource[]): Promise<Document[]>;
    chunkDocuments(documents: Document[]): Promise<Document[]>;
    search(query: string): Promise<Document[]>;
    askQuestion(query: string): Promise<string>;
}
export {};
