import type { TraceEvent, TraceEventType } from '../types'; export declare const TRACE_EVENT_TYPES: readonly ["route_selected", "tool_command_run", "validation_result", "gate_approved", "retry_count", "blocked_reason", "close_snapshot"]; export interface TraceReadOptions { tail?: number; type?: TraceEventType; } export interface TraceReadResult { events: TraceEvent[]; skipped: number; } export declare function emitTraceEvent(event: TraceEvent): void; /** * Read a scope's trace from the current path plus the legacy one it used through 4.47.0. * * This runtime only ever appends to the current path, but that is not a guarantee about the file * on disk: a rollback, a mixed-version team, or an older binary run by hand can still append to the * legacy path *after* current-path events exist. So the two files are merged by timestamp rather * than concatenated — otherwise `--tail` would drop genuinely newer events. Ties keep legacy first * and preserve each file's own line order, so the same inputs always render the same output. */ export declare function readTrace(scope: string, options?: TraceReadOptions): TraceReadResult; export declare function traceSnapshotId(snapshotPath: string): string; export declare function normalizeTraceCloseOutcome(outcome: string): 'shipped' | 'partial' | 'aborted'; export declare function emitToolCommandRun(scope: string, surface: 'cli' | 'mcp', command: string, args?: Record): void; export declare function emitGateApproved(scope: string, gate: string, taskId?: string): void; export declare function emitRetryCount(scope: string, round: number, limit: number, blocked: boolean): void; export declare function emitBlockedReason(scope: string, reason: string, code?: string): void; export declare function isTraceEventType(value: string): value is TraceEventType; //# sourceMappingURL=trace.d.ts.map