/** Minimal component surface the reveal pushes frames into. */
type ToolArgsRevealComponent = {
    updateArgs(args: unknown, toolCallId?: string): void;
};
type ToolArgsRevealControllerOptions = {
    getSmoothStreaming(): boolean;
    requestRender(): void;
};
/**
 * Paces streamed tool-call arguments the same way StreamingRevealController
 * paces assistant text: providers that deliver `partialJson` in large batches
 * (or throttle their partial parses) would otherwise make write/edit/bash
 * streaming previews jump in chunks. Each pending tool call reveals its raw
 * argument stream at the shared 30fps cadence with the same adaptive
 * catch-up step, re-parsing the revealed prefix per frame.
 *
 * Reveal units are UTF-16 code units of the raw stream, not graphemes —
 * the prefix goes through a JSON parser rather than straight to the screen,
 * so only surrogate-pair integrity matters (see {@link clampSliceEnd}).
 */
export declare class ToolArgsRevealController {
    #private;
    constructor(options: ToolArgsRevealControllerOptions);
    /**
     * Record the latest streamed argument text for a tool call and return the
     * args to render right now. With smoothing disabled the full target passes
     * through in the caller's legacy shape (`{ ...args, __partialJson }`).
     */
    setTarget(id: string, partialJson: string, rawInput: boolean, fullArgs: Record<string, unknown>): Record<string, unknown>;
    /** Attach the component future ticks push frames into. */
    bind(id: string, component: ToolArgsRevealComponent): void;
    /** Final arguments arrived (the JSON closed): drop the reveal so the
     *  caller's final-args render wins immediately, mirroring how assistant
     *  text snaps to the full message at message_end. */
    finish(id: string): void;
    /** Snap every live entry to its full received stream and clear. Used at
     *  message_end (abort/error mid-stream) so sealed components freeze showing
     *  everything that arrived rather than a mid-reveal prefix. */
    flushAll(): void;
    /** Clear without pushing (teardown). */
    stop(): void;
}
export {};
