import { type ChunkSpec } from "./chunks.js"; /** Input used to create a realistic sequence of streamed tool-call events. */ export interface ToolCallInput { /** Stable tool-call identifier. */ readonly id: string; /** Registered Pi tool name. */ readonly name: string; /** Complete serialized JSON object streamed as tool arguments. */ readonly argumentsJson: string; /** Assistant content index. Defaults to zero. */ readonly contentIndex?: number; /** How `argumentsJson` is divided into deltas. */ readonly chunks: ChunkSpec; /** Set to `false` to omit the final `toolcall_end` event. */ readonly includeEnd?: boolean; } /** Minimal partial tool-call block exposed with a start event. */ export interface PartialToolCallBlock { /** Pi assistant content discriminator. */ readonly type: "toolCall"; /** Stable tool-call identifier. */ readonly id: string; /** Registered Pi tool name. */ readonly name: string; } /** First event in a streamed tool call. */ export interface ToolCallStartEvent { /** Pi provider event discriminator. */ readonly type: "toolcall_start"; /** Assistant content index that receives the tool call. */ readonly contentIndex: number; /** Minimal assistant content available when streaming starts. */ readonly partial: { readonly content: readonly (PartialToolCallBlock | { readonly type: "text"; readonly text: string; })[]; }; } /** One serialized argument delta in a streamed tool call. */ export interface ToolCallDeltaEvent { /** Pi provider event discriminator. */ readonly type: "toolcall_delta"; /** Assistant content index being updated. */ readonly contentIndex: number; /** Next serialized argument fragment. */ readonly delta: string; } /** Final event containing parsed tool arguments. */ export interface ToolCallEndEvent { /** Pi provider event discriminator. */ readonly type: "toolcall_end"; /** Assistant content index containing the completed tool call. */ readonly contentIndex: number; /** Complete tool call passed to Pi. */ readonly toolCall: { readonly type: "toolCall"; readonly id: string; readonly name: string; readonly arguments: Readonly>; }; } /** Start, delta, or end event for one streamed tool call. */ export type ToolCallEvent = ToolCallStartEvent | ToolCallDeltaEvent | ToolCallEndEvent; /** Minimal Pi `message_update` shape used by low-level extension tests. */ export interface MessageUpdateEvent { /** Stream event carried by the update. */ readonly assistantMessageEvent: ToolCallEvent; } /** Handler compatible with tests that feed generated updates into extension logic. */ export type MessageUpdateHandler = (event: MessageUpdateEvent, context: TContext) => void | Promise; /** Generate the exact start/delta/end sequence for a streamed tool call. */ export declare function generateToolCallEvents(input: ToolCallInput): ToolCallEvent[]; /** Deliver generated events to a handler in order and await each handler invocation. */ export declare function emitMessageUpdateEvents(events: Iterable, handler: MessageUpdateHandler, context: TContext): Promise;