import type { StreamConfig } from "./config.js";
import type { StreamEventBus } from "./event-bus.js";
/**
 * Interface for stream event observers.
 *
 * Observers subscribe to session events via the attach() method.
 * They can perform side effects (logging, tracing, etc.) but cannot
 * modify the stream flow.
 *
 * @example
 * ```typescript
 * class LoggingObserver implements StreamObserver {
 *   attach(events: StreamEventBus, config: StreamConfig): void {
 *     events.on("session:start", (session) => {
 *       console.log(`Session ${session.id} started`);
 *     });
 *
 *     events.on("session:complete", (session) => {
 *       console.log(`Session ${session.id} completed`);
 *     });
 *   }
 * }
 * ```
 */
export interface StreamObserver {
    /**
     * Subscribe to session events.
     *
     * Called once when the observer is registered with an orchestrator.
     * The observer should set up all its event subscriptions here.
     */
    attach(events: StreamEventBus, config: StreamConfig): void;
}
//# sourceMappingURL=observer.d.ts.map