/**
 * Terminal renderer for StreamingUpdate events.
 *
 * PR1 scope: stateless line-by-line logging, no spinner/animation.
 * The spinner + clear-line tricks needed for a polished typewriter
 * effect belong in PR3's REPL — in one-shot mode, stable line-based
 * output is easier to grep and read in CI/scripts.
 *
 * ANSI colors are stripped when stdout is not a TTY or `--no-color`
 * is passed — ensures `smartperfetto analyze ... > log.txt` stays clean.
 */
import type { StreamingUpdate } from '../../agent/types';
export interface RendererOptions {
    verbose: boolean;
    useColor: boolean;
    format?: OutputFormat;
}
interface ClaimVerificationSummary {
    status?: string;
    checkedClaimCount?: number;
    unsupportedClaimCount?: number;
    issueCount?: number;
}
export type OutputFormat = 'text' | 'json' | 'ndjson';
export type TextJsonFormat = Extract<OutputFormat, 'text' | 'json'>;
export declare function parseOutputFormat(value: string | undefined): OutputFormat;
export declare function parseTextJsonFormat(value: string | undefined): TextJsonFormat;
export interface Renderer {
    format: OutputFormat;
    onEvent(update: StreamingUpdate): void;
    /** Called once after the SDK result arrives — prints the conclusion block. */
    printConclusion(conclusion: string, meta: {
        confidence?: number;
        rounds?: number;
        durationMs?: number;
        claimVerification?: ClaimVerificationSummary;
    }): void;
    /** Called on fatal errors that abort the run. */
    printError(message: string): void;
    /** Called last to summarize report path + any diagnostics. */
    printCompletion(meta: {
        reportPath: string;
        turnReportPath?: string;
        sessionDir: string;
        sessionId: string;
        success?: boolean;
    }): void;
}
export declare function createRenderer(opts: RendererOptions): Renderer;
export {};
//# sourceMappingURL=renderer.d.ts.map