// TypeScript Version: 3.2
/// 
import * as fs from 'fs';
import { Readable } from 'stream';
declare namespace readdir {
  interface EntryInfo {
    path: string;
    fullPath: string;
    basename: string;
    stats?: fs.Stats;
    dirent?: fs.Dirent;
  }
  interface ReaddirpOptions {
    root?: string;
    fileFilter?: string | string[] | ((entry: EntryInfo) => boolean);
    directoryFilter?: string | string[] | ((entry: EntryInfo) => boolean);
    type?: 'files' | 'directories' | 'files_directories' | 'all';
    lstat?: boolean;
    depth?: number;
    alwaysStat?: boolean;
  }
  interface ReaddirpStream extends Readable, AsyncIterable {
    read(): EntryInfo;
    [Symbol.asyncIterator](): AsyncIterableIterator;
  }
  function promise(
    root: string,
    options?: ReaddirpOptions
  ): Promise;
}
declare function readdir(
  root: string,
  options?: readdir.ReaddirpOptions
): readdir.ReaddirpStream;
export = readdir;