/**
 * The single-model-turn driver.
 *
 * A {@link Channel} is the raw streaming surface a {@link ModelInvoker} hands
 * back: an async iterable of provider-neutral {@link Emission}s terminated by a
 * `done` or `error`. {@link driveTurn} adapts that low-level stream into the
 * {@link Signal} vocabulary the run state machine consumes. It is the thin,
 * stateless seam between "bytes off the wire" and "inputs the reducer
 * understands": every emission becomes an `emission` signal, the exhausted
 * stream becomes a single terminal `stream_end`, and any thrown failure becomes
 * a `fault` carrying a normalized {@link RunError}.
 *
 * The driver holds no run state and performs no folding — it only translates
 * and forwards, leaving interpretation to the pure reducer downstream.
 */
import type { Channel } from "../../llmgateway/contract";
import type { Signal } from "../contract";
/**
 * Drive one model invocation's {@link Channel} to completion as a stream of
 * {@link Signal}s.
 *
 * Each {@link Emission} pulled from the channel is yielded as an `emission`
 * signal in arrival order. When the channel is exhausted cleanly, a single
 * terminal `stream_end` signal is yielded. If iterating the channel throws —
 * including a {@link GatewayError} surfaced by the underlying connector — a
 * `fault` signal carrying the mapped {@link RunError} is yielded instead, and no
 * `stream_end` follows.
 *
 * @param channel The streaming emissions from a model invocation.
 * @returns An async generator of the signals that advance the run.
 */
export declare function driveTurn(channel: Channel): AsyncGenerator<Signal>;
