import type { AssistantStream } from "../AssistantStream.js";
import type { AssistantStreamChunk } from "../AssistantStreamChunk.js";
import { type ToolResponseLike } from "../tool/ToolResponse.js";
import type { ReadonlyJSONValue } from "../../utils/json/json-value.js";
import type { ToolCallApproval } from "../utils/types.js";
import type { UnderlyingReadable } from "../utils/stream/UnderlyingReadable.js";
import { TextStreamControllerImpl, type TextStreamController } from "./text.js";
export type ToolCallStreamController = {
    argsText: TextStreamController;
    /**
     * Sets a tool response. Preliminary responses keep the part open; a final
     * response closes it automatically and subsequent calls are ignored.
     */
    setResponse(response: ToolResponseLike<ReadonlyJSONValue>): void;
    /** Sets the call's approval gate, replacing any earlier one. Ignored once the part is closed. */
    setApproval(approval: ToolCallApproval): void;
    close(): void;
};
type ToolCallStreamOptions = {
    strict?: boolean | undefined;
    onClose?: (() => void) | undefined;
};
export declare class ToolCallStreamControllerImpl implements ToolCallStreamController {
    private _isClosed;
    private _hasArgsText;
    private _argsTextState;
    private _controller;
    private _argsTextController;
    private _options;
    constructor(_controller: ReadableStreamDefaultController<AssistantStreamChunk>, options?: ToolCallStreamOptions);
    private _finishArgsText;
    get argsText(): TextStreamControllerImpl;
    setResponse(response: ToolResponseLike<ReadonlyJSONValue>): Promise<void>;
    setApproval(approval: ToolCallApproval): void;
    close(): Promise<void>;
    __internal_truncate(): void;
}
export declare const createToolCallStream: (readable: UnderlyingReadable<ToolCallStreamController>, options?: ToolCallStreamOptions) => AssistantStream;
export declare const createToolCallStreamController: (options?: ToolCallStreamOptions) => readonly [ReadableStream<AssistantStreamChunk>, ToolCallStreamControllerImpl];
export {};
//# sourceMappingURL=tool-call.d.ts.map