/** * Generic custom event processor for task-specific data * Allows tasks to define their own event types and collect custom data */ export interface CustomEvent { type: string; subtype?: string; data: T; timestamp: number; metadata?: Record; } export interface CustomEventProcessorOptions { eventType: string; subtypes?: string[]; maxHistory?: number; reducer?: (state: T, event: CustomEvent) => T; initialState?: T; } export declare class CustomEventProcessor { private eventType; private subtypes?; private maxHistory; private events; private state; private reducer?; private latestBySubtype; constructor(options: CustomEventProcessorOptions); /** * Process a custom event */ processEvent(event: CustomEvent): { state: T; events: CustomEvent[]; latest: CustomEvent | null; latestBySubtype: Map; }; /** * Get all processed data */ getProcessedData(): { state: T; events: CustomEvent[]; latest: CustomEvent | null; latestBySubtype: Map>; }; /** * Get events filtered by subtype */ getEventsBySubtype(subtype: string): CustomEvent[]; /** * Get latest event */ getLatest(): CustomEvent | null; /** * Get latest event by subtype */ getLatestBySubtype(subtype: string): CustomEvent | null; /** * Get current state */ getState(): T; /** * Reset the processor */ reset(): void; } /** * Example: Image generation event processor */ export interface ImageData { url: string; prompt: string; size?: string; style?: string; } export declare function createImageEventProcessor(): CustomEventProcessor<{ images: ImageData[]; latestImage: ImageData | null; imagesByPrompt: Map; }>; /** * Example: Design iteration event processor */ export interface DesignIterationData { version: number; description: string; imageUrl?: string; feedback?: string; approved?: boolean; } export declare function createDesignIterationProcessor(): CustomEventProcessor<{ iterations: DesignIterationData[]; currentVersion: number; approvedVersion?: DesignIterationData; }>; /** * Create a custom event processor */ export declare function createCustomEventProcessor(options: CustomEventProcessorOptions): CustomEventProcessor; //# sourceMappingURL=customEventProcessor.d.ts.map