/**
 * Computer Files Module
 *
 * File system operations for the interpreter.
 * Inspired by Open Interpreter's computer.files capabilities.
 */
export interface FileInfo {
    name: string;
    path: string;
    size: number;
    isDirectory: boolean;
    isFile: boolean;
    isSymlink: boolean;
    created: Date;
    modified: Date;
    accessed: Date;
    permissions: string;
    owner?: string;
    extension?: string;
    mimeType?: string;
}
export interface SearchOptions {
    /** File name pattern (glob) */
    pattern?: string;
    /** Search in subdirectories */
    recursive?: boolean;
    /** Maximum depth */
    maxDepth?: number;
    /** Include hidden files */
    includeHidden?: boolean;
    /** Filter by extension */
    extensions?: string[];
    /** Filter by file type */
    type?: 'file' | 'directory' | 'symlink' | 'all';
    /** Filter by size (bytes) */
    minSize?: number;
    maxSize?: number;
    /** Filter by modification time */
    modifiedAfter?: Date;
    modifiedBefore?: Date;
    /** Maximum results */
    limit?: number;
}
export interface CopyOptions {
    /** Overwrite existing files */
    overwrite?: boolean;
    /** Preserve timestamps */
    preserveTimestamps?: boolean;
    /** Copy directories recursively */
    recursive?: boolean;
}
export interface ReadOptions {
    /** Encoding (default: utf-8) */
    encoding?: BufferEncoding;
    /** Start position */
    start?: number;
    /** End position */
    end?: number;
    /** Read as lines */
    lines?: {
        start?: number;
        count?: number;
    };
}
export interface WriteOptions {
    /** Encoding (default: utf-8) */
    encoding?: BufferEncoding;
    /** Append to file */
    append?: boolean;
    /** Create directories if needed */
    createDirs?: boolean;
    /** File mode */
    mode?: number;
}
export interface WatchCallback {
    (event: 'change' | 'rename', filename: string): void;
}
export declare class ComputerFiles {
    private watchers;
    /**
     * Read file contents
     */
    read(filePath: string, options?: ReadOptions): Promise<string>;
    /**
     * Read file as Buffer
     */
    readBuffer(filePath: string): Promise<Buffer>;
    /**
     * Read specific lines from a file
     */
    readLines(filePath: string, start?: number, count?: number): Promise<string>;
    /**
     * Read a range of bytes from a file
     */
    private readRange;
    /**
     * Read JSON file
     */
    readJson<T = unknown>(filePath: string): Promise<T>;
    /**
     * Write content to file
     */
    write(filePath: string, content: string | Buffer, options?: WriteOptions): Promise<void>;
    /**
     * Write JSON to file
     */
    writeJson(filePath: string, data: unknown, options?: WriteOptions & {
        pretty?: boolean;
    }): Promise<void>;
    /**
     * Append to file
     */
    append(filePath: string, content: string | Buffer, options?: WriteOptions): Promise<void>;
    /**
     * Copy file or directory
     */
    copy(src: string, dest: string, options?: CopyOptions): Promise<void>;
    private copyFile;
    private copyDirectory;
    /**
     * Move file or directory
     */
    move(src: string, dest: string, options?: CopyOptions): Promise<void>;
    /**
     * Delete file or directory
     */
    delete(filePath: string, options?: {
        recursive?: boolean;
        force?: boolean;
    }): Promise<void>;
    /**
     * Rename file or directory
     */
    rename(oldPath: string, newPath: string): Promise<void>;
    /**
     * Create directory
     */
    mkdir(dirPath: string, options?: {
        recursive?: boolean;
    }): Promise<void>;
    /**
     * Create symbolic link
     */
    symlink(target: string, linkPath: string): Promise<void>;
    /**
     * Get file/directory info
     */
    info(filePath: string): Promise<FileInfo>;
    /**
     * Check if path exists
     */
    exists(filePath: string): Promise<boolean>;
    /**
     * Get file size
     */
    size(filePath: string): Promise<number>;
    /**
     * Get file hash
     */
    hash(filePath: string, algorithm?: string): Promise<string>;
    /**
     * List directory contents
     */
    list(dirPath: string, options?: SearchOptions): Promise<FileInfo[]>;
    /**
     * Search for files
     */
    search(rootPath: string, options?: SearchOptions): Promise<FileInfo[]>;
    private searchRecursive;
    /**
     * Get directory tree
     */
    tree(dirPath: string, maxDepth?: number): Promise<string>;
    private buildTree;
    /**
     * Watch for file changes
     */
    watch(filePath: string, callback: WatchCallback): () => void;
    /**
     * Stop all watches
     */
    unwatchAll(): void;
    /**
     * Resolve path with home directory expansion
     */
    resolvePath(p: string): string;
    /**
     * Simple glob pattern matching
     */
    private matchPattern;
    /**
     * Get MIME type from extension
     */
    private getMimeType;
    /**
     * Format file size
     */
    formatSize(bytes: number): string;
}
export declare function getComputerFiles(): ComputerFiles;
export declare function resetComputerFiles(): void;
export default ComputerFiles;
