/**
 * Async filesystem utilities for SmartProxy
 * Provides non-blocking alternatives to synchronous filesystem operations
 */
import * as plugins from '../../plugins.js';
export declare class AsyncFileSystem {
    /**
     * Check if a file or directory exists
     * @param path - Path to check
     * @returns Promise resolving to true if exists, false otherwise
     */
    static exists(path: string): Promise<boolean>;
    /**
     * Ensure a directory exists, creating it if necessary
     * @param dirPath - Directory path to ensure
     * @returns Promise that resolves when directory is ensured
     */
    static ensureDir(dirPath: string): Promise<void>;
    /**
     * Read a file as string
     * @param filePath - Path to the file
     * @param encoding - File encoding (default: utf8)
     * @returns Promise resolving to file contents
     */
    static readFile(filePath: string, encoding?: BufferEncoding): Promise<string>;
    /**
     * Read a file as buffer
     * @param filePath - Path to the file
     * @returns Promise resolving to file buffer
     */
    static readFileBuffer(filePath: string): Promise<Buffer>;
    /**
     * Write string data to a file
     * @param filePath - Path to the file
     * @param data - String data to write
     * @param encoding - File encoding (default: utf8)
     * @returns Promise that resolves when file is written
     */
    static writeFile(filePath: string, data: string, encoding?: BufferEncoding): Promise<void>;
    /**
     * Write buffer data to a file
     * @param filePath - Path to the file
     * @param data - Buffer data to write
     * @returns Promise that resolves when file is written
     */
    static writeFileBuffer(filePath: string, data: Buffer): Promise<void>;
    /**
     * Remove a file
     * @param filePath - Path to the file
     * @returns Promise that resolves when file is removed
     */
    static remove(filePath: string): Promise<void>;
    /**
     * Remove a directory and all its contents
     * @param dirPath - Path to the directory
     * @returns Promise that resolves when directory is removed
     */
    static removeDir(dirPath: string): Promise<void>;
    /**
     * Read JSON from a file
     * @param filePath - Path to the JSON file
     * @returns Promise resolving to parsed JSON
     */
    static readJSON<T = any>(filePath: string): Promise<T>;
    /**
     * Write JSON to a file
     * @param filePath - Path to the file
     * @param data - Data to write as JSON
     * @param pretty - Whether to pretty-print JSON (default: true)
     * @returns Promise that resolves when file is written
     */
    static writeJSON(filePath: string, data: any, pretty?: boolean): Promise<void>;
    /**
     * Copy a file from source to destination
     * @param source - Source file path
     * @param destination - Destination file path
     * @returns Promise that resolves when file is copied
     */
    static copyFile(source: string, destination: string): Promise<void>;
    /**
     * Move/rename a file
     * @param source - Source file path
     * @param destination - Destination file path
     * @returns Promise that resolves when file is moved
     */
    static moveFile(source: string, destination: string): Promise<void>;
    /**
     * Get file stats
     * @param filePath - Path to the file
     * @returns Promise resolving to file stats or null if doesn't exist
     */
    static getStats(filePath: string): Promise<plugins.fs.Stats | null>;
    /**
     * List files in a directory
     * @param dirPath - Directory path
     * @returns Promise resolving to array of filenames
     */
    static listFiles(dirPath: string): Promise<string[]>;
    /**
     * List files in a directory with full paths
     * @param dirPath - Directory path
     * @returns Promise resolving to array of full file paths
     */
    static listFilesFullPath(dirPath: string): Promise<string[]>;
    /**
     * Recursively list all files in a directory
     * @param dirPath - Directory path
     * @param fileList - Accumulator for file list (used internally)
     * @returns Promise resolving to array of all file paths
     */
    static listFilesRecursive(dirPath: string, fileList?: string[]): Promise<string[]>;
    /**
     * Create a read stream for a file
     * @param filePath - Path to the file
     * @param options - Stream options
     * @returns Read stream
     */
    static createReadStream(filePath: string, options?: Parameters<typeof plugins.fs.createReadStream>[1]): plugins.fs.ReadStream;
    /**
     * Create a write stream for a file
     * @param filePath - Path to the file
     * @param options - Stream options
     * @returns Write stream
     */
    static createWriteStream(filePath: string, options?: Parameters<typeof plugins.fs.createWriteStream>[1]): plugins.fs.WriteStream;
    /**
     * Ensure a file exists, creating an empty file if necessary
     * @param filePath - Path to the file
     * @returns Promise that resolves when file is ensured
     */
    static ensureFile(filePath: string): Promise<void>;
    /**
     * Check if a path is a directory
     * @param path - Path to check
     * @returns Promise resolving to true if directory, false otherwise
     */
    static isDirectory(path: string): Promise<boolean>;
    /**
     * Check if a path is a file
     * @param path - Path to check
     * @returns Promise resolving to true if file, false otherwise
     */
    static isFile(path: string): Promise<boolean>;
}
