/**
 * Disk Cleanup Service
 *
 * Handles cleanup of temporary files when agents are suspended and
 * system-level cleanup of Docker resources and log files.
 *
 * Agent cleanup targets:
 * - `~/.claude/debug/` — debug log files
 * - `~/.claude/shell-snapshots/` — shell state snapshots
 *
 * System cleanup targets:
 * - Docker dangling images and build cache
 * - Docker stopped containers and unused volumes
 * - Crewly log files older than 7 days
 *
 * @module disk-cleanup-service
 */
/**
 * Statistics returned after a cleanup run.
 */
export interface CleanupStats {
    /** Number of debug log files deleted */
    debugLogsDeleted: number;
    /** Number of shell snapshot files deleted */
    shellSnapshotsDeleted: number;
    /** Total bytes freed (approximate) */
    bytesFreed: number;
}
/**
 * Statistics returned after a system-level cleanup run.
 */
export interface SystemCleanupStats {
    /** Whether Docker cleanup was executed */
    dockerCleaned: boolean;
    /** Textual summary of Docker cleanup output */
    dockerOutput: string;
    /** Number of Crewly log files deleted */
    crewlyLogsDeleted: number;
    /** Total bytes freed from log cleanup (approximate) */
    logBytesFreed: number;
}
/**
 * Handles disk cleanup on agent suspension.
 *
 * Targets the Claude Code data directories:
 * - `~/.claude/debug/` — debug log files
 * - `~/.claude/shell-snapshots/` — shell state snapshots
 */
export declare class DiskCleanupService {
    private static instance;
    private logger;
    private claudeDir;
    private constructor();
    /**
     * Get the singleton instance.
     *
     * @param claudeDir - Optional override for the Claude data directory (testing)
     * @returns The DiskCleanupService singleton
     */
    static getInstance(claudeDir?: string): DiskCleanupService;
    /**
     * Reset the singleton (for testing).
     */
    static resetInstance(): void;
    /**
     * Purge debug log files older than the configured threshold.
     *
     * @param maxAgeHours - Maximum age in hours before deletion
     * @returns Object with count of deleted files and bytes freed
     */
    purgeDebugLogs(maxAgeHours?: number): {
        deleted: number;
        bytesFreed: number;
    };
    /**
     * Clear shell snapshot files.
     *
     * @returns Object with count of deleted files and bytes freed
     */
    clearShellSnapshots(): {
        deleted: number;
        bytesFreed: number;
    };
    /**
     * Run the full suspend cleanup pipeline.
     * Called by AgentSuspendService when suspending an agent.
     *
     * @returns Aggregate cleanup statistics
     */
    runSuspendCleanup(): CleanupStats;
    /**
     * Delete files in a directory older than the given threshold.
     *
     * @param dirPath - Directory to scan
     * @param maxAgeHours - Maximum file age in hours (0 = delete all)
     * @returns Object with count and bytes
     */
    private purgeOldFiles;
}
//# sourceMappingURL=disk-cleanup.service.d.ts.map