/**
 * Stream JSON Formatter
 *
 * Formats streaming output as newline-delimited JSON (NDJSON).
 * Each event is a JSON object on its own line, suitable for
 * machine-readable streaming output via --output-format stream-json.
 */
export interface StartEvent {
    type: 'start';
    session_id: string;
    model: string;
}
export interface TextEvent {
    type: 'text';
    content: string;
}
export interface ToolUseEvent {
    type: 'tool_use';
    tool: string;
    input: Record<string, unknown>;
}
export interface ToolResultEvent {
    type: 'tool_result';
    tool: string;
    output: string;
    success: boolean;
}
export interface ThinkingEvent {
    type: 'thinking';
    content: string;
}
export interface DoneEvent {
    type: 'done';
    cost: number;
    tokens: {
        input: number;
        output: number;
    };
}
export type StreamEvent = StartEvent | TextEvent | ToolUseEvent | ToolResultEvent | ThinkingEvent | DoneEvent;
export declare class StreamJsonFormatter {
    /**
     * Format a single event as an NDJSON line (JSON + newline).
     */
    formatEvent(event: StreamEvent): string;
    /**
     * Format multiple events as NDJSON.
     */
    formatEvents(events: StreamEvent[]): string;
    /**
     * Create a start event.
     */
    start(sessionId: string, model: string): string;
    /**
     * Create a text event.
     */
    text(content: string): string;
    /**
     * Create a tool_use event.
     */
    toolUse(tool: string, input: Record<string, unknown>): string;
    /**
     * Create a tool_result event.
     */
    toolResult(tool: string, output: string, success: boolean): string;
    /**
     * Create a thinking event.
     */
    thinking(content: string): string;
    /**
     * Create a done event.
     */
    done(cost: number, tokens: {
        input: number;
        output: number;
    }): string;
}
