/**
 * Emission folding.
 *
 * `foldReply` is a pure functional reducer (no class, no mutation of inputs)
 * that collapses a sequence of streaming {@link Emission}s into the terminal
 * {@link Reply}. It accumulates text and thinking prose, reassembles tool-call
 * argument fragments back into structured input, tracks the latest usage and
 * stop reason, and assembles the ordered block list.
 *
 * Ordering rule: thinking, then text, then tool calls — the canonical order an
 * assistant turn takes. Tool calls preserve their first-seen order.
 */
import type { Emission, Reply } from "../contract";
/**
 * Fold a sequence of emissions into a {@link Reply} for `model`.
 *
 * Pure with respect to its inputs: it allocates its own scratch state, never
 * mutates the supplied emissions, and returns a fresh immutable-shaped reply.
 */
export declare function foldReply(model: string, emissions: Iterable<Emission>): Reply;
