| // TypeScript Version: 3.2 | 
|   | 
| /// <reference types="node" lib="esnext" /> | 
|   | 
| 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<EntryInfo> { | 
|     read(): EntryInfo; | 
|     [Symbol.asyncIterator](): AsyncIterableIterator<EntryInfo>; | 
|   } | 
|   | 
|   function promise( | 
|     root: string, | 
|     options?: ReaddirpOptions | 
|   ): Promise<EntryInfo[]>; | 
| } | 
|   | 
| declare function readdir( | 
|   root: string, | 
|   options?: readdir.ReaddirpOptions | 
| ): readdir.ReaddirpStream; | 
|   | 
| export = readdir; |