import type { UnstampedMessageStreamEvent } from "#protocol/message.js";
/** Interrupts generation without cancelling the turn or replaying local effects. */
export declare class GenerationSteering {
    private readonly controller;
    private active;
    private effectsStarted;
    private readonly steeringSignal;
    readonly signal: AbortSignal;
    outputStarted: boolean;
    constructor(input: {
        abortSignal?: AbortSignal;
        steeringSignal?: AbortSignal;
        outputStarted?: boolean;
    });
    get interrupted(): boolean;
    begin(): void;
    protectToolExecution(): void;
    beforeEvent(event: UnstampedMessageStreamEvent): void;
    check(): void;
    dispose(): void;
    private readonly onSteering;
}
