import type { ChorusRunEvent } from "../types.js"; export interface RunEventState { runId?: string; status: "idle" | "running" | "success" | "error" | "aborted"; totalVoices: number; voiceStatuses: Record; } export interface RunMetrics { runs: number; successes: number; failures: number; retries: number; totalCostUsd: number; totalDurationMs: number; byProvider: Record; } export type RunEventSink = (event: ChorusRunEvent) => void | Promise; export declare function reduceRunEvent(state: RunEventState, event: ChorusRunEvent): RunEventState; export declare function createMetrics(): RunMetrics; export declare function recordMetric(metrics: RunMetrics, event: ChorusRunEvent): void; export declare class EventJournal { private readonly maxEvents; private readonly events; constructor(maxEvents?: number); append(event: ChorusRunEvent): void; list(): ChorusRunEvent[]; } export declare function emitSafely(sink: RunEventSink | undefined, event: ChorusRunEvent): Promise;