/** * Event Publisher Implementations * * Provides different ways to publish Claude Code events for streaming. */ import type { ClaudeCodeEvent, ClaudeCodeEventHandler, ClaudeCodeEventPublisher, ClaudeCodeEventSubscriber } from "./types.js"; import type { RedisEventPublisherConfig } from "../../extensions/distributed/redis-runtime-provider.js"; export type { RedisEventPublisherConfig }; /** * In-memory event publisher using EventTarget * Useful for testing or single-process deployments */ export declare class MemoryEventPublisher implements ClaudeCodeEventPublisher, ClaudeCodeEventSubscriber { private handlers; private globalHandlers; publish(event: ClaudeCodeEvent): void | Promise; subscribe(runId: string, handler: ClaudeCodeEventHandler): Promise<() => void>; subscribeAll(handler: ClaudeCodeEventHandler): () => void; close(): void; } /** Redis-backed publisher whose implementation is supplied by the Redis extension. */ export declare class RedisEventPublisher implements ClaudeCodeEventPublisher, ClaudeCodeEventSubscriber { private readonly config; private implementation; private initialization; private closePromise; constructor(config: RedisEventPublisherConfig); private getImplementation; publish(event: ClaudeCodeEvent): Promise; subscribe(runId: string, handler: ClaudeCodeEventHandler): Promise<() => void>; close(): Promise; } /** * Server-Sent Events publisher * Writes events directly to a ReadableStream controller */ export declare class SSEEventPublisher implements ClaudeCodeEventPublisher { private encoder; private controller; private state; /** * Create an SSE publisher with an associated ReadableStream */ createStream(): ReadableStream; publish(event: ClaudeCodeEvent): void; close(): void; } /** * Simple callback-based publisher * Calls a function for each event */ export declare class CallbackEventPublisher implements ClaudeCodeEventPublisher { private callback; constructor(callback: ClaudeCodeEventHandler); publish(event: ClaudeCodeEvent): void | Promise; close(): void; } /** * Publishes events to multiple publishers */ export declare class MultiEventPublisher implements ClaudeCodeEventPublisher { private publishers; constructor(...publishers: ClaudeCodeEventPublisher[]); publish(event: ClaudeCodeEvent): Promise; close(): Promise; addPublisher(publisher: ClaudeCodeEventPublisher): void; removePublisher(publisher: ClaudeCodeEventPublisher): void; } /** * Create an event publisher based on environment */ export declare function createEventPublisher(options: { type: "memory" | "redis" | "sse" | "callback"; redisUrl?: string; callback?: ClaudeCodeEventHandler; }): ClaudeCodeEventPublisher; //# sourceMappingURL=event-publisher.d.ts.map