/**
 * EventEmittingRunner — Decorator that wraps any AgentRunner to emit events.
 *
 * Delegates all operations to the wrapped runner and emits corresponding
 * events on the provided EventBus (or the global singleton).
 */
import type { AgentRunner, AgentSession, SpawnConfig } from '../runners/agent-runner.js';
import type { EventBus } from './event-bus.js';
/**
 * Wraps an AgentRunner to emit runtime events on every operation.
 *
 * Usage:
 * ```ts
 * const runner = new ClaudeCodeRunner()
 * const emitting = new EventEmittingRunner(runner)
 * // Now all operations emit events on the global EventBus
 * const session = await emitting.spawn(config)
 * ```
 */
export declare class EventEmittingRunner implements AgentRunner {
    readonly name: string;
    private readonly inner;
    private readonly bus;
    constructor(inner: AgentRunner, bus?: EventBus);
    spawn(config: SpawnConfig): Promise<AgentSession>;
    getStatus(session: AgentSession): Promise<'running' | 'done' | 'error'>;
    peek(session: AgentSession, lines?: number): Promise<string>;
    poke(session: AgentSession, message: string): Promise<void>;
    stop(session: AgentSession): Promise<void>;
}
