/** * Extension System - Event Bus Types * * Type-safe event bus for inter-extension communication. */ interface ExtensionLogger { debug(msg: string): void; info(msg: string): void; warn(msg: string): void; error(msg: string): void; } export interface EventMap extends Record { } export interface RequestMap extends Record { } export interface ResponseMap extends Record { } export type EventHandler = (data: T) => void | Promise; export interface EventHandlerMeta { handler: EventHandler; extensionId?: string; once?: boolean; } export type RequestHandler = (params: TParams) => TResponse | Promise; export interface RequestHandlerMeta { handler: RequestHandler; extensionId?: string; } export type WildcardEventHandler = (data: unknown, eventType: string) => void | Promise; export interface WildcardHandlerMeta { handler: WildcardEventHandler; extensionId?: string; pattern: string; } export interface TypedEventBusOptions { requestTimeout?: number; catchErrors?: boolean; logger?: ExtensionLogger; } export interface RequestOptions { timeout?: number; } export interface TypedEventBus { on(event: K, handler: (data: unknown) => void, options?: { extensionId?: string; once?: boolean; }): () => void; off(event: K, handler: (data: unknown) => void): void; emit(event: K, data: unknown): void; onWildcard(pattern: string, handler: (data: unknown, eventType: string) => void, options?: { extensionId?: string; }): () => void; onRequest(method: K, handler: (params: unknown) => unknown | Promise, options?: { extensionId?: string; }): void; request(method: K, params: unknown, options?: { timeout?: number; }): Promise; cleanup(extensionId: string): void; cleanupAll(): void; } export {};