export interface PluginContext { [key: string]: any; requestType?: 'complete' | 'chatComplete' | 'embed' | 'messages'; provider?: string; metadata?: Record; } export interface PluginParameters> { [key: string]: any; credentials?: K; } export interface PluginHandlerResponse { error: any; verdict?: boolean; // The data object can be any JSON object or null. data?: any | null; transformedData?: any; transformed?: boolean; } export type HookEventType = 'beforeRequestHook' | 'afterRequestHook'; export type PluginHandler

> = ( context: PluginContext, parameters: PluginParameters

, eventType: HookEventType, options?: { env: Record; getFromCacheByKey?: (key: string) => Promise; putInCacheWithValue?: (key: string, value: any) => Promise; } ) => Promise;