import { RAGConfig, SearchResult } from "./types";
import { DocumentUploadResult } from "./storage";
import { HybridSearchConfig } from "./retrieval";
export declare class RAGEngine {
    private vectorStore;
    private embeddingModel;
    private processingPipeline;
    private storageManager?;
    private hybridRetriever?;
    private rssManager;
    private config;
    constructor(config: RAGConfig);
    private initializeComponents;
    initialize(): Promise<void>;
    addDocument(filePath: string, content: Buffer): Promise<string>;
    addDocuments(files: Array<{
        path: string;
        content: Buffer;
    }>): Promise<string[]>;
    search(query: string, k?: number): Promise<SearchResult[]>;
    vectorSearch(query: string, k?: number): Promise<SearchResult[]>;
    hybridSearch(query: string, k?: number): Promise<SearchResult[]>;
    deleteDocument(documentId: string): Promise<void>;
    updateDocument(documentId: string, filePath: string, content: Buffer): Promise<void>;
    getSupportedExtensions(): string[];
    getStats(): Promise<{
        documentCount: number;
        chunkCount: number;
        embeddingModel: string;
        vectorStoreType: string;
    }>;
    clear(): Promise<void>;
    uploadDocumentToStorage(file: Buffer | File, fileName: string, metadata?: Record<string, any>): Promise<DocumentUploadResult>;
    addDocumentFromStorage(filePath: string): Promise<string>;
    uploadAndAddDocument(file: Buffer | File, fileName: string, metadata?: Record<string, any>): Promise<{
        documentId: string;
        uploadResult: DocumentUploadResult;
    }>;
    deleteDocumentFromStorage(documentPath: string): Promise<void>;
    listStorageDocuments(): Promise<Array<{
        name: string;
        id: string;
        updated_at: string;
        size: number;
        metadata: Record<string, any>;
    }>>;
    getStorageStats(): Promise<{
        totalFiles: number;
        totalSize: number;
        bucketName: string;
    }>;
    private getDocumentIdFromPath;
    isStorageConfigured(): boolean;
    updateHybridSearchConfig(config: Partial<HybridSearchConfig>): void;
    getSearchStats(): {
        hybridRetriever?: {
            indexSize: number;
            config: HybridSearchConfig;
        };
        vectorStore: {
            chunkCount: number;
            embeddingModel: string;
        };
    };
    clearSearchIndex(): void;
    addSearchSynonyms(word: string, synonyms: string[]): void;
    searchWithOptions(query: string, options?: {
        method?: "hybrid" | "vector" | "keyword";
        k?: number;
        minScore?: number;
        vectorWeight?: number;
        keywordWeight?: number;
    }): Promise<SearchResult[]>;
    addNaverBlogRSS(blogId: string, feedName?: string, config?: {
        maxItems?: number;
        includeContent?: boolean;
    }): Promise<{
        documentIds: string[];
        feedName: string;
        itemCount: number;
    }>;
    addRSSFeed(url: string, feedName?: string, config?: {
        maxItems?: number;
        includeContent?: boolean;
    }): Promise<{
        documentIds: string[];
        feedName: string;
        itemCount: number;
    }>;
    refreshRSSFeed(feedName: string): Promise<{
        documentIds: string[];
        itemCount: number;
    }>;
    refreshAllRSSFeeds(): Promise<Map<string, {
        documentIds: string[];
        itemCount: number;
    }>>;
    removeRSSFeed(feedName: string): boolean;
    getRSSFeedNames(): string[];
    getRSSFeedInfo(feedName: string): {
        exists: boolean;
        type: "naver" | "generic" | null;
        blogId?: string;
        rssUrl?: string;
    };
    static extractNaverBlogId(url: string): string | null;
}
//# sourceMappingURL=engine.d.ts.map