import { z } from "zod";
import type { AgentEventEmitter } from "../../domain/agentEvents.js";
import type { SteerBuffer } from "../../domain/steerBuffer.js";
/**
 * `beforeModel` middleware that folds user "steering" instructions into a running
 * turn. Before every model call in the agent loop it drains the per-session
 * {@link SteerBuffer}; any buffered steers are appended to the conversation as
 * user messages (so the model sees them on the very next call) and a
 * `steer-applied` event is emitted on the turn's already-open SSE stream so the
 * frontend knows the steer was actually consumed (not just received/queued).
 *
 * Placed first in the middleware array so the injected messages are present for
 * every downstream `beforeModel` hook (e.g. summarization) and the model itself.
 */
export declare function createSteerMiddleware(steerBuffer: SteerBuffer): import("langchain").AgentMiddleware<undefined, z.ZodObject<{
    sessionId: z.ZodString;
    emit: z.ZodOptional<z.ZodCustom<AgentEventEmitter, AgentEventEmitter>>;
}, z.core.$strip>, {
    sessionId: string;
    emit?: AgentEventEmitter | undefined;
}, readonly (import("@langchain/core/tools").ClientTool | import("@langchain/core/tools").ServerTool)[]>;
