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