/**
 * ProjFS-FUSE.ONE - FUSE3-compatible API for Windows using ProjFS
 *
 * This package provides a FUSE3-compatible interface on Windows by using
 * Windows Projected File System (ProjFS) as the backend. Applications can
 * use the same FUSE3 API on both Linux and Windows for cross-platform
 * virtual filesystem development.
 *
 * @author REFINIO GmbH
 * @license MIT
 */
import { EventEmitter } from 'events';
export interface FuseStats {
    mtime: Date;
    atime: Date;
    ctime: Date;
    size: number;
    mode: number;
    uid: number;
    gid: number;
}
export interface FuseOperations {
    init?: () => void;
    getattr?: (path: string) => FuseStats | null;
    readdir?: (path: string) => string[];
    read?: (path: string, size: number, offset: number) => Buffer | null;
    write?: (path: string, buffer: Buffer, offset: number) => number;
    create?: (path: string, mode: number) => void;
    unlink?: (path: string) => void;
    mkdir?: (path: string, mode: number) => void;
    rmdir?: (path: string) => void;
    rename?: (oldPath: string, newPath: string) => void;
    truncate?: (path: string, size: number) => void;
    open?: (path: string, flags: number) => number;
    release?: (path: string, fd: number) => void;
    statfs?: (path: string) => any;
}
/**
 * ProjFS-FUSE filesystem class
 *
 * Provides a FUSE3-compatible interface on Windows using ProjFS as backend.
 * This allows the same FUSE3 code to work on both Linux and Windows.
 */
export declare class ProjFSFuse extends EventEmitter {
    private mounted;
    private mountPath;
    private operations;
    private nativeInstance;
    constructor(mountPath: string, operations: FuseOperations, options?: any);
    /**
     * Mount the filesystem with FUSE3-compatible operations
     *
     * This method adapts FUSE3 operations to ProjFS callbacks automatically
     */
    mount(): Promise<void>;
    /**
     * Unmount the filesystem
     */
    unmount(): Promise<void>;
    /**
     * Check if filesystem is mounted
     */
    isMounted(): boolean;
    /**
     * Get mount path
     */
    getMountPath(): string;
    /**
     * Adapt FUSE3 operations to ProjFS callbacks
     *
     * This is the core adapter logic that makes FUSE3 operations work with ProjFS
     */
    private adaptFuseOperationsToProjFS;
}
export default ProjFSFuse;
export declare const FUSE_ERRORS: {
    EPERM: number;
    ENOENT: number;
    EIO: number;
    EACCES: number;
    EEXIST: number;
    ENOTDIR: number;
    EISDIR: number;
    EINVAL: number;
    ENOSPC: number;
    EROFS: number;
    EBUSY: number;
    ENOTEMPTY: number;
};
export { ProjFSFuse as Fuse3 };
//# sourceMappingURL=index.d.ts.map