import type ts from 'typescript/lib/tsserverlibrary';
import { ConfigManager } from './config-manager';
import { SvelteSnapshotManager } from './svelte-snapshots';
import { Logger } from './logger';
export interface TsFilesSpec {
    include?: readonly string[];
    exclude?: readonly string[];
}
export declare class ProjectSvelteFilesManager {
    private readonly typescript;
    private readonly project;
    private readonly serverHost;
    private readonly snapshotManager;
    private readonly logger;
    private parsedCommandLine;
    private readonly configManager;
    private projectFileToOriginalCasing;
    private directoryWatchers;
    private static instances;
    static getInstance(projectName: string): ProjectSvelteFilesManager | undefined;
    constructor(typescript: typeof ts, project: ts.server.Project, serverHost: ts.server.ServerHost, snapshotManager: SvelteSnapshotManager, logger: Logger, parsedCommandLine: ts.ParsedCommandLine, configManager: ConfigManager);
    updateProjectConfig(serviceHost: ts.LanguageServiceHost): void;
    getFiles(): string[];
    /**
     * Create directory watcher for include and exclude
     * The watcher in tsserver doesn't support svelte file
     * It won't add new created svelte file to root
     */
    private setupWatchers;
    private watcherCallback;
    private updateProjectSvelteFiles;
    private addFileToProject;
    private readProjectSvelteFilesFromFs;
    private onConfigChanged;
    private removeFileFromProject;
    private disposeWatchers;
    private clearProjectFile;
    dispose(): void;
}
