import { GahEvent, GahEventType, ExtractEventPayload } from '../models/gah-event'; import { GahFileData } from '../models/install-helper/gah-file-data'; import { PlguinUpdate } from '../models/plugin-update'; export interface IPluginService { init(): Promise; loadInstalledPlugins(): Promise; triggerEvent(type: T, payload: ExtractEventPayload): Promise; registerEventHandler(pluginName: string, type: T, handler: (payload: ExtractEventPayload) => Promise | void | boolean): void; installPlugin(pluginName: string): Promise; removePlugin(pluginName: string): Promise; getUpdateablePlugins(pluginName?: string): Promise; updatePlugins(pluginUpdates: PlguinUpdate[]): Promise; isPluginConfigured(pluginName: string): Promise; registerCommandHandler(pluginName: string, commandName: string, handler: (args: string[], gahFile?: GahFileData) => Promise | boolean): void; run(cmd: string, args: string[]): Promise; storeData(pluginName: string, key: string, data: T): void; readData(pluginName: string, key: string): T; }