import { CrewxPlugin } from '../plugin'; import type { Crewx } from '../facade/Crewx'; import type { ObserverContext, ObserverResult, ToolName } from './types'; export interface ObserverSubscription { beforeTool?: ToolName[] | true; afterTool?: ToolName[] | true; beforePrompt?: true; sessionStart?: true; } export declare abstract class ToolObserverPlugin extends CrewxPlugin { abstract readonly version: string; abstract readonly on: ObserverSubscription; private unsubs; abstract run(ctx: ObserverContext): Promise; attach(crewx: Crewx): void; detach(_crewx: Crewx): Promise; private matchesTool; private buildContext; }