/// <reference types="node" />
import { EventEmitter } from 'events';
import * as fsScandir from '@nodelib/fs.scandir';
import type Settings from '../settings';
import type { Entry, Errno } from '../types';
import Reader from './reader';
declare type EntryEventCallback = (entry: Entry) => void;
declare type ErrorEventCallback = (error: Errno) => void;
declare type EndEventCallback = () => void;
export default class AsyncReader extends Reader {
  protected readonly _settings: Settings;
  protected readonly _scandir: typeof fsScandir.scandir;
  protected readonly _emitter: EventEmitter;
  private readonly _queue;
  private _isFatalError;
  private _isDestroyed;
  constructor(_root: string, _settings: Settings);
  read(): EventEmitter;
  get isDestroyed(): boolean;
  destroy(): void;
  onEntry(callback: EntryEventCallback): void;
  onError(callback: ErrorEventCallback): void;
  onEnd(callback: EndEventCallback): void;
  private _pushToQueue;
  private _worker;
  private _handleError;
  private _handleEntry;
  private _emitEntry;
}
export {};