| /// <reference types="node" /> | 
| import micromatch = require('micromatch'); | 
| import DeepFilter from './filters/deep'; | 
| import EntryFilter from './filters/entry'; | 
| import { IOptions } from '../managers/options'; | 
| import { ITask } from '../managers/tasks'; | 
| import { Options as IReaddirOptions } from '@mrmlnc/readdir-enhanced'; | 
| import { Entry, EntryItem } from '../types/entries'; | 
| export default abstract class Reader<T> { | 
|     readonly options: IOptions; | 
|     readonly entryFilter: EntryFilter; | 
|     readonly deepFilter: DeepFilter; | 
|     private readonly micromatchOptions; | 
|     constructor(options: IOptions); | 
|     /** | 
|      * The main logic of reading the directories that must be implemented by each providers. | 
|      */ | 
|     abstract read(_task: ITask): T; | 
|     /** | 
|      * Returns root path to scanner. | 
|      */ | 
|     getRootDirectory(task: ITask): string; | 
|     /** | 
|      * Returns options for reader. | 
|      */ | 
|     getReaderOptions(task: ITask): IReaddirOptions; | 
|     /** | 
|      * Returns options for micromatch. | 
|      */ | 
|     getMicromatchOptions(): micromatch.Options; | 
|     /** | 
|      * Returns transformed entry. | 
|      */ | 
|     transform(entry: Entry): EntryItem; | 
|     /** | 
|      * Returns true if error has ENOENT code. | 
|      */ | 
|     isEnoentCodeError(err: NodeJS.ErrnoException): boolean; | 
| } |