import tsStatic from 'typescript';
import { SourceFilesManagerOptions } from './Contracts';
/**
 * Exposes the API to manage the source files for a typescript project. You need
 * full blown source files management during the watch mode, since new files
 * are added and removed regularly.
 */
export declare class SourceFilesManager {
    private appRoot;
    private options;
    private isWindows;
    /**
     * Pattern matcher for included files
     */
    private whitelisted;
    /**
     * Pattern matcher for excluded files
     */
    private blacklisted;
    /**
     * An array of project files collected as part of the first scan. We need
     * an object here, so that we can share it by reference with the
     * typescript language server.
     */
    private projectFiles;
    /**
     * A memoized function to match the file path against the whitelisted
     * and blacklisted patterns
     */
    private matchAgainstPattern;
    constructor(appRoot: string, options: SourceFilesManagerOptions);
    /**
     * Normalizes windows slashes to unix. Since, glob patterns
     * are not paths, they are not normalized for cross platform
     * checks and hence we have to convert all paths to unix.
     */
    private normalizeSlashToUnix;
    /**
     * Add a new source file to the list of project files. This is helpful
     * when new source files are added after the initial typescript
     * build.
     */
    add(filePath: string): void;
    /**
     * Bumps the project file version. This is required to tell the
     * typescript compiler that file has been changed.
     */
    bumpVersion(filePath: string): void;
    /**
     * Remove file from the list of existing source files
     */
    remove(filePath: string): void;
    /**
     * Returns true when filePath is part of the source files after checking
     * them against `includes`, `excludes` and custom set of `files`.
     */
    isSourceFile(filePath: string): boolean;
    /**
     * Returns file version
     */
    getFileVersion(filePath: string): null | number;
    /**
     * Returns a copy of project source files
     */
    toJSON(): tsStatic.MapLike<{
        version: number;
    }>;
}
