import { ProjectContext } from '../types';
export type { ProjectContext };
export interface ContextCompactionOptions {
    maxContextSize?: number;
    preserveRecent?: boolean;
    compressionLevel?: 'low' | 'medium' | 'high';
}
export declare class ContextManager {
    private contextDir;
    private contextFile;
    private maxContextSize;
    private compressionLevel;
    constructor(workingDirectory?: string);
    /**
     * Load project context from files and memory
     */
    loadContext(): Promise<ProjectContext>;
    /**
     * Save context to memory for persistence
     */
    saveContext(context: ProjectContext): Promise<void>;
    /**
     * Compact context to reduce size while preserving important information
     */
    compactContext(context: ProjectContext, options?: ContextCompactionOptions): Promise<ProjectContext>;
    /**
     * Merge new context with existing context
     */
    mergeContext(existingContext: ProjectContext, newContext: Partial<ProjectContext>): Promise<ProjectContext>;
    /**
     * Get context summary for debugging
     */
    getContextSummary(context: ProjectContext): string;
    /**
     * Clear context memory
     */
    clearContext(): Promise<void>;
    /**
     * Load context from individual files
     */
    private loadContextFiles;
    /**
     * Load context from memory file
     */
    private loadMemoryContext;
    /**
     * Calculate context size in bytes
     */
    private calculateContextSize;
    /**
     * Compress text by removing unnecessary whitespace and comments
     */
    private compressText;
    /**
     * Preserve only recent outputs
     */
    private preserveRecentOutputs;
    /**
     * Set context size limits
     */
    setContextLimits(maxSize: number, compressionLevel: 'low' | 'medium' | 'high'): void;
    /**
     * Get context statistics
     */
    getContextStats(context: ProjectContext): {
        totalSize: number;
        fileCount: number;
        lastUpdated: string;
        compressionRatio: number;
    };
    /**
     * Calculate original size before compression
     */
    private calculateOriginalSize;
}
//# sourceMappingURL=contextManager.d.ts.map