import { Document } from '@langchain/core/documents';
import { RAGConfig, QueryContext, RAGResponse, DocumentMetadata, RAGMetrics, RAGErrorCode } from './types';
export declare class RAGError extends Error {
    code: RAGErrorCode;
    details: Record<string, any>;
    timestamp: Date;
    query?: string;
    context?: any;
    constructor(code: RAGErrorCode, details: Record<string, any>, timestamp: Date, query?: string, context?: any);
}
export declare class RAGEngine {
    private config;
    private vectorStore;
    private embeddings;
    private llm;
    private retriever;
    private textSplitter;
    private cache;
    private metrics;
    private contextChains;
    private initializationPromise;
    private isInitialized;
    constructor(config: RAGConfig);
    waitForInitialization(): Promise<void>;
    private initializeMetrics;
    private initializeComponents;
    private createEmbeddings;
    private createLLM;
    private initializeVectorStore;
    addDocuments(documents: Document[], metadata?: DocumentMetadata[]): Promise<void>;
    query(queryContext: QueryContext): Promise<RAGResponse>;
    private performSemanticSearch;
    private enhanceQuery;
    private buildContext;
    private generateResponse;
    private calculateRelevance;
    private calculateConfidence;
    private generateFollowUpQuestions;
    private generateRelatedTopics;
    private generateActionItems;
    private estimateTokens;
    private generateDocumentHash;
    private generateCacheKey;
    private cacheResponse;
    private updateMetrics;
    private updateContextChain;
    getMetrics(): Promise<RAGMetrics>;
    clearCache(): Promise<void>;
    shutdown(): Promise<void>;
}
//# sourceMappingURL=RAGEngine.d.ts.map