///
import { EventEmitter } from 'events';
import { FullVersion as PackageJson } from 'package-json';
import { BreezrPlugin, PluginAsyncMethodMap, Thenable, PluginConfig, PluginSyncMethodMap } from './types/PluginAPI';
import { ServiceOption } from './types/ServiceOption';
import { CommandMap, CommandArgs } from './types/Command';
/**
*
*/
export declare class Service extends EventEmitter {
readonly cwd: string;
readonly pkg: PackageJson;
readonly plugins: Array;
readonly commands: CommandMap;
readonly asyncMethods: PluginAsyncMethodMap;
readonly syncMethods: PluginSyncMethodMap;
private _pluginStateMap;
private _serviceOptions;
constructor(options: ServiceOption);
/**
*
* @param name
* @param args
* @param rawArv
*/
run(name: string, args?: CommandArgs): Promise;
/**
* get project config
*/
getConfig(): PluginConfig;
invoke(apiName: string, ...args: any[]): Thenable;
invokeSync(apiName: string, ...args: any[]): T;
/**
* init plugin
*/
init(args: CommandArgs): Promise;
private resolvePresets;
private loadPluginOptions;
/**
*
* @param {BreezrPlugin} plugin
*/
initPlugin(plugin: BreezrPlugin): Promise;
/**
* find all first class plugins for project
* @returns {Array} - plugins
*/
private resolveBuiltInPlugins;
/**
* Check if the project has a given plugin
* @param {string} id - Plugin id, can omit the (@breezr/|breezr-|@scope/breezr)-plugin- prefix
*/
hasPlugin(id: string): boolean;
}