/**
 * Async File Manager
 * Handles non-blocking file operations with queuing
 */
import { Readable } from "node:stream";
export interface FileOperationResult {
    path: string;
    operation: "read" | "write" | "delete" | "mkdir";
    success: boolean;
    duration: number;
    size?: number;
    error?: Error;
}
export declare class AsyncFileManager {
    private concurrency;
    private writeQueue;
    private readQueue;
    private logger;
    private metrics;
    constructor(concurrency?: {
        write: number;
        read: number;
    });
    writeFile(path: string, data: string | Buffer | Readable, options?: {
        encoding?: BufferEncoding;
        mode?: number;
    }): Promise<FileOperationResult>;
    readFile(path: string, encoding?: BufferEncoding): Promise<FileOperationResult & {
        data?: string;
    }>;
    writeJSON(path: string, data: any, pretty?: boolean): Promise<FileOperationResult>;
    readJSON(path: string): Promise<FileOperationResult & {
        data?: any;
    }>;
    deleteFile(path: string): Promise<FileOperationResult>;
    ensureDirectory(path: string): Promise<FileOperationResult>;
    ensureDirectories(paths: string[]): Promise<FileOperationResult[]>;
    private streamWrite;
    streamRead(path: string): Promise<NodeJS.ReadableStream>;
    copyFile(source: string, destination: string): Promise<FileOperationResult>;
    moveFile(source: string, destination: string): Promise<FileOperationResult>;
    private trackOperation;
    getMetrics(): {
        operations: {
            [k: string]: number;
        };
        totalBytes: number;
        errors: number;
        writeQueueSize: any;
        readQueueSize: any;
        writeQueuePending: any;
        readQueuePending: any;
    };
    waitForPendingOperations(): Promise<void>;
    clearQueues(): void;
}
//# sourceMappingURL=async-file-manager.d.ts.map