///
import { EventEmitter } from 'events'
import { PluginItem, IProjectConfig } from '@tarojs/taro/types/compile'
import { IPreset, IPlugin, IPaths, IHook, ICommand, IPlatform } from '../src/utils/types'
import Plugin from './Plugin'
import Config from './Config'
interface IKernelOptions {
appPath: string;
presets?: PluginItem[];
plugins?: PluginItem[];
}
export default class Kernel extends EventEmitter {
appPath: string;
isWatch: boolean;
isProduction: boolean;
optsPresets: PluginItem[];
optsPlugins: PluginItem[];
plugins: Map;
paths: IPaths;
extraPlugins: IPlugin[];
config: Config;
initialConfig: IProjectConfig;
hooks: Map;
methods: Map;
commands: Map;
platforms: Map;
helper: any;
runOpts: any;
debugger: any;
constructor(options: IKernelOptions);
init(): Promise;
initConfig(): void;
initPaths(): void;
initHelper(): void;
initPresetsAndPlugins(): void;
resolvePresets(presets: any): void;
resolvePlugins(plugins: any): void;
initPreset(preset: IPreset): void;
initPlugin(plugin: IPlugin): void;
registerPlugin(plugin: IPlugin): void;
initPluginCtx({ id, path, ctx }: {
id: string;
path: string;
ctx: Kernel;
}): Plugin;
applyPlugins(args: string | {
name: string;
initialVal?: any;
opts?: any;
}): Promise;
runWithPlatform(platform: any): any;
setRunOpts(opts: any): void;
run(args: string | {
name: string;
opts?: any;
}): Promise;
}