/**
 * Sistema de persistência para histórico de pensamentos
 */
import { ThoughtEntry, CoConuTConfig, SavedFileInfo } from './types';
/**
 * Interface para dados armazenados pelo provedor
 */
export interface StorageData {
    thoughts: ThoughtEntry[];
    branches: Record<string, Array<number>>;
}
/**
 * Interface para diferentes tipos de armazenamento
 */
export interface StorageProvider {
    initialize(): Promise<void>;
    saveThought(entry: ThoughtEntry): Promise<SavedFileInfo | null>;
    loadHistory(): Promise<ThoughtEntry[]>;
    saveBranch(branchId: string, thoughtNumbers: number[]): Promise<SavedFileInfo | null>;
    loadBranches(): Promise<Record<string, Array<number>>>;
    clear(): Promise<void>;
    exportData(): Promise<StorageData>;
    importData(data: StorageData): Promise<void>;
}
/**
 * Implementação de armazenamento em arquivo
 */
export declare class FileStorageProvider implements StorageProvider {
    private filePath;
    private branchesFilePath;
    private logger;
    private config;
    constructor(config: CoConuTConfig);
    /**
     * Configura os caminhos de arquivo com base no projectPath fornecido
     */
    private setupPaths;
    /**
     * Inicializa o provedor de armazenamento
     */
    initialize(): Promise<void>;
    /**
     * Salva um pensamento no armazenamento
     * @param entry Entrada de pensamento a ser salva
     * @param projectPath Caminho opcional do projeto para salvar (sobrescreve config.projectPath)
     * @returns Informações sobre o arquivo salvo
     */
    saveThought(entry: ThoughtEntry, projectPath?: string): Promise<SavedFileInfo | null>;
    /**
     * Carrega o histórico completo de pensamentos
     */
    loadHistory(): Promise<ThoughtEntry[]>;
    /**
     * Salva informações sobre uma ramificação específica
     * @returns Informações sobre o arquivo salvo
     */
    saveBranch(branchId: string, thoughtNumbers: number[]): Promise<SavedFileInfo | null>;
    /**
     * Carrega informações sobre ramificações
     */
    loadBranches(): Promise<Record<string, Array<number>>>;
    /**
     * Limpa todo o armazenamento
     */
    clear(): Promise<void>;
    /**
     * Exporta todos os dados armazenados
     */
    exportData(): Promise<StorageData>;
    /**
     * Importa dados para o armazenamento
     */
    importData(data: StorageData): Promise<void>;
}
/**
 * Implementação de armazenamento em memória
 */
export declare class MemoryStorageProvider implements StorageProvider {
    private thoughts;
    private branches;
    private logger;
    constructor();
    /**
     * Inicializa o provedor de armazenamento
     */
    initialize(): Promise<void>;
    /**
     * Guarda um pensamento em memória
     * @returns Informações sobre o pensamento guardado
     */
    saveThought(entry: ThoughtEntry): Promise<SavedFileInfo | null>;
    /**
     * Carrega o histórico completo de pensamentos da memória
     */
    loadHistory(): Promise<ThoughtEntry[]>;
    /**
     * Guarda informações sobre uma ramificação específica
     * @returns Informações sobre a ramificação guardada
     */
    saveBranch(branchId: string, thoughtNumbers: number[]): Promise<SavedFileInfo | null>;
    /**
     * Carrega informações sobre ramificações da memória
     */
    loadBranches(): Promise<Record<string, Array<number>>>;
    /**
     * Limpa toda a memória
     */
    clear(): Promise<void>;
    /**
     * Exporta todos os dados da memória
     */
    exportData(): Promise<StorageData>;
    /**
     * Importa dados para a memória
     */
    importData(data: StorageData): Promise<void>;
}
/**
 * Fábrica para criar provedores de armazenamento
 */
export declare class StorageFactory {
    static createProvider(config: CoConuTConfig): StorageProvider;
}
//# sourceMappingURL=storage.d.ts.map