import { TraceFrame } from '@voiceflow/general-types/build/nodes/types'; import { GeneralTrace, TraceEvent, TraceMap, TraceType } from "../types"; import Context from '../Context'; export declare type ResponseHandler> = (trace: TraceFrame, context: Context) => Promise; export declare type TraceEventHandler> = (trace: TraceMap[T], context: Context, index: number) => void; export declare type GeneralTraceEventHandler> = (trace: GeneralTrace, context: Context, index: number) => void; export declare type BeforeProcessingEventHandler> = (context: Context) => void; export declare type AfterProcessingEventHandler> = (context: Context) => void; declare type TraceEventHandlerMap = { [TraceEvent.BEFORE_PROCESSING]: BeforeProcessingEventHandler; [TraceEvent.AFTER_PROCESSING]: AfterProcessingEventHandler; }; export declare class EventManager> { private specHandlers; private genHandlers; private traceEventHandlers; constructor(); onTraceType(event: T, handler: TraceEventHandler): void; offTraceType(event: T, handler: TraceEventHandler): void; onTraceEvent>(event: T, handler: TraceEventHandlerMap[T]): void; offTraceEvent>(event: T, handler: TraceEventHandlerMap[T]): void; onGeneral(handler: GeneralTraceEventHandler): void; offGeneral(handler: GeneralTraceEventHandler): void; handleProcessing(event: E, context: Context): Promise; handleTrace(trace: TraceMap[T], context: Context): Promise; private addHandler; private removeHandler; } export default EventManager;