import { File as IFile, Fs, FileInfo as IFileInfo } from '../type';
import { FileMeta } from './filemeta';
import { FileInfo } from './fileinfo';
/**
 * File represents a file with metadata
 * TypeScript version of Go's File struct
 */
export declare class File implements IFile {
    private readonly file;
    private readonly fileMeta;
    private fs;
    private readonly _isDir;
    constructor(file: IFile | null, fileMeta: FileMeta, fs: Fs, isDir?: boolean);
    /**
     * Check if this is a no-op file (null file)
     */
    isNop(): boolean;
    /**
     * Close the file
     */
    close(): Promise<void>;
    /**
     * ReadDir reads directory entries
     */
    readDir(count: number): Promise<FileInfo[]>;
    /**
     * Get the file metadata
     */
    meta(): FileMeta;
    /**
     * Simple path join implementation
     */
    private joinPath;
    read(buffer: Uint8Array): Promise<{
        bytesRead: number;
        buffer: Uint8Array;
    }>;
    readAt(buffer: Uint8Array, offset: number): Promise<{
        bytesRead: number;
        buffer: Uint8Array;
    }>;
    seek(offset: number, whence: number): Promise<number>;
    write(buffer: Uint8Array): Promise<{
        bytesWritten: number;
        buffer: Uint8Array;
    }>;
    writeAt(buffer: Uint8Array, offset: number): Promise<{
        bytesWritten: number;
        buffer: Uint8Array;
    }>;
    name(): string;
    readdir(count: number): Promise<IFileInfo[]>;
    readdirnames(n: number): Promise<string[]>;
    stat(): Promise<IFileInfo>;
    sync(): Promise<void>;
    truncate(size: number): Promise<void>;
    writeString(s: string): Promise<{
        bytesWritten: number;
    }>;
}
/**
 * Creates a new File instance
 */
export declare function newFile(file: IFile, filename: string, fs: Fs): File;
/**
 * Creates a new File with existing FileMeta
 */
export declare function newFileWithMeta(file: IFile, meta: FileMeta, fs: Fs): File;
export declare function newDirFileWithMeta(file: IFile, meta: FileMeta, fs: Fs): File;
/**
 * Creates a new directory File
 */
export declare function newDirFile(file: IFile, filename: string, fs: Fs): File;
//# sourceMappingURL=file.d.ts.map