import { AssembledMessage } from "../client/stream/messages.cjs";
import { ContentBlock, MessageRole, UsageInfo } from "@langchain/protocol";
import { BaseMessage } from "@langchain/core/messages";

//#region src/stream/assembled-to-message.d.ts
type ExtendedMessageRole = MessageRole | "tool";
interface AssembledToMessageInput {
  /** Stable message id (from `MessageStartData.id`). */
  id?: string;
  /** Author role captured from the `message-start` event. */
  role: ExtendedMessageRole;
  /** Content blocks assembled so far. */
  blocks: ContentBlock[];
  /** Tool-call id a `role: "tool"` message is responding to, if any. */
  toolCallId?: string;
  /** Final-token usage (populated on `message-finish`). */
  usage?: UsageInfo;
}
/**
 * Produce a `BaseMessage` class instance from an in-progress or
 * finished assembled message. Safe to call repeatedly across deltas —
 * each call returns a new instance whose content reflects the
 * currently-observed blocks.
 */
declare function assembledToBaseMessage(input: AssembledToMessageInput): BaseMessage;
/**
 * Convenience: given the raw assembled message + the role captured
 * from `message-start`, produce a `BaseMessage` with the same id.
 */
declare function assembledMessageToBaseMessage(assembled: AssembledMessage, role: ExtendedMessageRole, extras?: {
  toolCallId?: string;
}): BaseMessage;
//#endregion
export { AssembledToMessageInput, ExtendedMessageRole, assembledMessageToBaseMessage, assembledToBaseMessage };
//# sourceMappingURL=assembled-to-message.d.cts.map