/// <reference types="node" />
import events from 'events';
import IPlugin from '../../types/plugin/interface/IPlugin';
import ICommander from '../../types/helpers/interface/ICommander';
import { IWatchCallback } from '../../types/app/interface/IWatcher';
import IProgramCallback from '../../types/helpers/interface/ICommandCallback';
import IGluePluginStoreFactory from '../../types/store/interface/IGluePluginStoreFactory';
import IInstance from '../../types/plugin/interface/IInstance';
export default class AppCLI {
    plugins: Array<IPlugin>;
    commander: ICommander;
    eventEmitter: events;
    gluePluginStoreFactory: IGluePluginStoreFactory;
    constructor();
    addCommand: (runner: IProgramCallback) => void;
    populatePlugins(localPlugins: IPlugin[]): Promise<void>;
    initPlugins(localPlugins: Array<IPlugin>): Promise<void>;
    destroyPlugins(): Promise<void>;
    initPluginInstances(): Promise<void>;
    destroyPluginInstances(): Promise<void>;
    doctor(): Promise<void>;
    prepare(): Promise<void>;
    dispatchEvent(eventName: string, ...args: any): void;
    addEventListener(eventName: string, callback?: (...args: any) => void): void;
    createPluginInstance(plugin: IPlugin, instance: string, src?: string, target?: string): Promise<IInstance>;
    getPluginByName(pluginName: string): IPlugin | null;
    getPlugins(): IPlugin[];
    getContainerTypePluginInstances(bottomToTop?: boolean): IInstance[];
    listen(cwd: string, pattern: string | string[], callback: IWatchCallback): void;
    generateSourceMap(sourcePath: string, destinationPath: string): void;
    removeSourceMap(destinationPath: string): void;
    extractImports(jsString: string): {
        importedNames: string[];
        fromModule: string;
    }[];
    updateConfigFile(instanceName: string, configType?: string): void;
    getProvidersFromConfig(config: string): any;
    getGeneratedPackagePath(packageName: string): string;
    watch(source: string, destination: string, callback: IWatchCallback): void;
    write(source: string, destination: string): Promise<void>;
    destroy(): Promise<void>;
    init(localPlugins: Array<IPlugin>): Promise<void>;
    initLocalCommands(): Promise<void>;
    updateServices(instanceWorkspacePath?: string): Promise<void>;
    replaceTemplateValues(filePath: string, template: string, value: string): Promise<void>;
    getAllServicePaths(): string[];
    getAllPackagePaths(): string[];
    getAllServiceInstances(): IInstance[];
    updateNameInPackageJSON(packagePath: string, packageName: string): Promise<void>;
    createPackage(packageName: string, packageSourcePath?: string): Promise<string>;
}
