import { PluginTypes } from './IPluginTypes';
import type { Agent, Tab, FrameEnvironment } from '../client';
export default interface IClientPlugin {
id: string;
onAgent?(agent: Agent, sendToCore: ISendToCoreFn): void;
onTab?(agent: Agent, tab: Tab, sendToCore: ISendToCoreFn): void;
onFrameEnvironment?(
agent: Agent,
frameEnvironment: FrameEnvironment,
sendToCore: ISendToCoreFn,
): void;
}
export interface IClientPluginClass {
id: string;
type: PluginTypes.ClientPlugin;
coreDependencyIds?: string[];
new (): IClientPlugin;
}
export function ClientPluginClassDecorator(constructor: IClientPluginClass): void {}
export type ISendToCoreFn = (toPluginId: string, ...args: any[]) => Promise<any>;