import EventEmitter = require('eventemitter3');
import { EntryItem } from 'fast-glob/out/types/entries';
import { IClone } from './interfaces/clone.interface';
import { IHook } from './interfaces/hook.interface';
import { IOptions } from './interfaces/options.interface';
import { ISourceOptions } from './interfaces/source-options.interface';
import { StoreManager } from './stores/stores-manager';
export declare function getStoreManager(): StoreManager<any>;
export declare class JSCPD {
    options: IOptions;
    clones: IClone[];
    files: EntryItem[];
    private readonly eventEmitter;
    private detector;
    private _options;
    private _files;
    private _clones;
    private _preHooks;
    private _postHooks;
    constructor(options?: IOptions, eventEmitter?: EventEmitter);
    attachPreHook(hook: IHook): void;
    attachPostHook(hook: IHook): void;
    detect(code: string, options: ISourceOptions): Promise<IClone[]>;
    detectInFiles(pathToFiles?: string[]): Promise<IClone[]>;
    on(event: string, fn: EventEmitter.ListenerFn, context?: any): void;
    private _detectSync;
    private initializeReporters;
    private initializeListeners;
    private _detectionFinished;
    private generateReports;
}
