import type { EventEnvelope, ServerEvent, ThreadId, ThreadTranscriptStats } from "@best-agent/protocol";
export type RuntimeEventListener = (event: EventEnvelope) => void;
export interface RuntimeEventRecorder {
    appendEvent(event: ServerEvent): EventEnvelope;
}
export declare class RuntimeEventBus {
    #private;
    constructor(recorder?: RuntimeEventRecorder);
    subscribe(listener: RuntimeEventListener): () => void;
    clear(): void;
    emit(event: ServerEvent): EventEnvelope;
    emitTransient(event: ServerEvent): EventEnvelope;
    getTranscriptStats(threadId: ThreadId): ThreadTranscriptStats;
}
//# sourceMappingURL=runtime-events.d.ts.map