/**
 * 🔄 Delta-Chunking Manager
 * Менеджер для координации delta-chunking операций
 */
import { DeltaChunkingApi } from '../api/delta-chunking-api.js';
import { DeltaChunkingUtils } from './delta-chunking-utils.js';
import { CodeSolverSDKOptions } from '../interfaces/sdk-options.js';
import { SyncOptions, SyncResult, SyncStatus, FileContent, ActiveFile, FileCleanupResult, InvalidateFileOptions, FileInvalidationResult, BatchInvalidationResult } from '../types/delta-chunking.js';
/**
 * Менеджер для координации всех delta-chunking операций
 */
export declare class DeltaChunkingManager {
    private readonly deltaApi;
    private readonly utils;
    private readonly options;
    private readonly logger;
    constructor(deltaApi: DeltaChunkingApi, utils: DeltaChunkingUtils, options: CodeSolverSDKOptions, logger: {
        log: (message: string) => void;
        warn: (message: string) => void;
        error: (message: string) => void;
    });
    /**
     * Проверка активности delta-chunking
     */
    get isEnabled(): boolean;
    /**
     * 📤 Синхронизация готовых зашифрованных чанков
     *
     * ✅ ПРАВИЛЬНАЯ АРХИТЕКТУРА:
     * Client Extension передает готовые чанки и rootHash
     * Backend SDK отправляет их на сервер через HTTP API
     *
     * @param projectId ID проекта
     * @param encryptedChunks Готовые зашифрованные чанки от клиента
     * @param rootHash Готовый clientRootHash от клиента
     */
    syncEncryptedChunks(projectId: string, encryptedChunks: any[], rootHash: string, options?: SyncOptions): Promise<SyncResult>;
    /**
     * 📊 Получение статуса синхронизации
     */
    getSyncStatus(projectId: string): Promise<SyncStatus>;
    /**
     * ❌ Отмена активной синхронизации
     */
    cancelSync(projectId: string): Promise<boolean>;
    /**
     * 🧹 Очистка удаленных файлов из векторной базы
     */
    cleanupDeletedFiles(projectId: string, currentFiles: FileContent[]): Promise<{
        success: boolean;
        deletedFromQdrant: number;
        deletedFromPostgres: number;
        activeFiles: number;
        cleanupTime: number;
    }>;
    /**
     * 🧹 Публичный метод для прямой очистки удаленных файлов
     * @param projectId ID проекта
     * @param activeFiles Список активных файлов
     * @param deletedFiles ОПЦИОНАЛЬНО: Явно удаленные файлы (пути)
     */
    performCleanup(projectId: string, activeFiles: ActiveFile[], deletedFiles?: string[]): Promise<FileCleanupResult>;
    /**
     * 🗑️ Инвалидировать chunks измененного файла
     *
     * Удаляет устаревшие chunks из Qdrant и инвалидирует RAG cache.
     * После инвалидации отправьте новые chunks через syncEncryptedChunks().
     *
     * @param projectId - UUID проекта
     * @param options - Опции инвалидации (filePath обязателен)
     * @returns Результат операции с количеством инвалидированных chunks
     *
     * @example
     * ```typescript
     * // Инвалидировать файл после изменения
     * const result = await sdk.deltaManager.invalidateFile(projectId, {
     *   filePath: 'src/app.tsx',
     *   reason: 'file_changed'
     * });
     *
     * if (result.success) {
     *   console.log(`Invalidated ${result.chunksInvalidated} chunks`);
     * }
     *
     * // Теперь отправить новые chunks
     * await sdk.deltaManager.syncEncryptedChunks(projectId, newChunks, rootHash);
     * ```
     */
    invalidateFile(projectId: string, options: InvalidateFileOptions): Promise<FileInvalidationResult>;
    /**
     * 🗑️ Batch инвалидация файлов (для предотвращения rate limiting)
     *
     * Эффективная инвалидация множества файлов за один API запрос.
     * Используйте этот метод вместо множественных вызовов invalidateFile()
     * для предотвращения превышения rate limit сервера (30 req/sec).
     *
     * @param projectId - UUID проекта
     * @param files - Массив файлов для инвалидации
     * @returns Результат batch операции с общей статистикой
     *
     * @example
     * ```typescript
     * // Инвалидировать несколько файлов одним запросом
     * const result = await sdk.deltaManager.invalidateFiles(projectId, [
     *   { filePath: 'src/app.tsx', reason: 'file_changed' },
     *   { filePath: 'src/utils.ts', reason: 'file_saved' },
     *   { filePath: 'src/config.json', reason: 'file_changed' }
     * ]);
     *
     * console.log(`Invalidated ${result.totalChunksInvalidated} chunks from ${result.totalFiles} files`);
     *
     * // Теперь отправить новые chunks
     * await sdk.deltaManager.syncEncryptedChunks(projectId, newChunks, rootHash);
     * ```
     */
    invalidateFiles(projectId: string, files: InvalidateFileOptions[]): Promise<BatchInvalidationResult>;
    /**
     * Проверка что delta-chunking включен
     */
    private ensureEnabled;
}
//# sourceMappingURL=delta-chunking-manager.d.ts.map