import Core from './core'; declare type PluginConfig = boolean | any; interface PluginOption { name: string; init?: (this: PluginOption & PluginMethod, config: PluginConfig) => void; onNewAegis?: (this: PluginOption & PluginMethod, aegis: Aegis, option: PluginConfig) => void; [key: string]: any; } interface PluginMethod { $walk: (cb: (aegis: Aegis, config: PluginConfig) => void) => void; $getConfig: (aegis: Aegis) => PluginConfig; [key: string]: any; } export default class Plugin { aegisPlugin: boolean; name: string; option: PluginOption; private instances; private inited; constructor(option: PluginOption); patch(aegis: Aegis): void; unpatch(aegis: Aegis): void; countInstance(): number; uninstall(): void; private walk; private canUse; private getConfig; private exist; private triggerInit; private triggerOnNewAegis; } export {};