/// <reference types="node" />
import { Stats } from 'fs';
export interface FileEntry {
    path: string;
    relativePath: string;
    name: string;
    ext: string;
    stats: Stats;
    content?: string | Buffer;
    depth: number;
    isFile: true;
    isDirectory: false;
}
export interface FolderEntry {
    path: string;
    relativePath: string;
    name: string;
    stats: Stats;
    depth: number;
    isFile: false;
    isDirectory: true;
}
export declare type WalkerEntry = FileEntry | FolderEntry;
export declare type FileHandler<T = void> = (entry: FileEntry) => T | Promise<T>;
export declare type FolderHandler<T = void> = (entry: FolderEntry) => T | Promise<T>;
export declare type ErrorHandler = (error: Error, path: string) => void;
export declare type AsyncFilter<T extends WalkerEntry> = (entry: T) => boolean | Promise<boolean>;
export declare type CollectorHandler<T, R> = (results: T[]) => R | Promise<R>;
export interface WalkerOptions {
    maxDepth?: number;
    includeFiles?: boolean;
    includeFolders?: boolean;
    extensions?: string[];
    pattern?: RegExp;
    exclude?: string[];
    include?: string[];
    followSymlinks?: boolean;
    includeHidden?: boolean;
    maxFileSize?: number;
    encoding?: BufferEncoding;
    readContents?: boolean;
    customFilters?: AsyncFilter<WalkerEntry>[];
}
