import { File as IFile, Fs } from '../type';
import { FileMeta } from './filemeta';
import { FileInfo } from './fileinfo';
import { File } from './file';
/**
 * DirOpener function type for opening virtual directories
 * TypeScript version of Go's DirOpener func
 */
export type DirOpener = () => Promise<FileInfo[]>;
/**
 * Filter function type for filtering directory entries
 */
export type DirFilter = (entries: FileInfo[]) => Promise<FileInfo[]>;
/**
 * DirFile represents a directory file with virtual directory support
 * TypeScript version of Go's DirFile struct
 */
export declare class DirFile extends File {
    private virtualOpener;
    private filter;
    constructor(file: File, virtualOpener?: DirOpener | null, filter?: DirFilter | null);
    /**
     * ReadDir reads directory entries, supporting both real and virtual directories
     */
    readDir(count: number): Promise<FileInfo[]>;
    /**
     * Read virtual directory entries
     */
    private readVirtualDir;
    /**
     * Set the filter function
     */
    setFilter(filter: DirFilter): void;
    /**
     * Set the virtual opener function
     */
    setVirtualOpener(opener: DirOpener): void;
    /**
     * Get the filter function
     */
    getFilter(): DirFilter | null;
    /**
     * Get the virtual opener function
     */
    getVirtualOpener(): DirOpener | null;
}
/**
 * Creates a new DirFile with virtual opener
 */
export declare function newDirFileWithVirtualOpener(file: File, opener: DirOpener): DirFile;
/**
 * Creates a new DirFile from file components
 */
export declare function newDirFile(file: IFile, meta: FileMeta, fs: Fs): DirFile;
/**
 * Creates a new DirFile with filter
 */
export declare function newDirFileWithFilter(file: File, filter: DirFilter): DirFile;
/**
 * Creates a new DirFile with both virtual opener and filter
 */
export declare function newDirFileWithOpenerAndFilter(file: File, opener: DirOpener, filter: DirFilter): DirFile;
//# sourceMappingURL=dir.d.ts.map