import type { ProviderEvent } from '../../../provider.js'; import type { TraceSink } from '../../../trace/index.js'; import { type StreamState } from '../translate.js'; export interface IterationResult { state: StreamState; events: ProviderEvent[]; text: string; needsToolDispatch: boolean; } export interface StreamDriveStrategy { createStream: (signal: AbortSignal) => Promise>; translate: (event: TEvent, state: StreamState) => Iterable; clarifyError: (err: unknown) => Error; } export interface StreamDriveContext { controller: AbortController; traceWriter: TraceSink | undefined; initSessionId: string; currentModel: string; isClosed: () => boolean; } export declare function driveStream(ctx: StreamDriveContext, strategy: StreamDriveStrategy): AsyncGenerator;