export {
  createAssistantStream,
  createAssistantStreamController,
} from "./core/modules/assistant-stream";
export { createAssistantStreamResponse } from "./core/modules/assistant-stream-response";
export {
  AssistantMessageAccumulator,
  /** @deprecated Experimental since 2025-09-14. Not scheduled for removal; the API may change in any release. */
  createInitialMessage as unstable_createInitialMessage,
} from "./core/accumulators/assistant-message-accumulator";
export { AssistantStream } from "./core/AssistantStream";
export {
  registerJsonParserBackend,
  type JsonParserBackend,
  type JsonParserBackendContext,
  type JsonParserBackendFactory,
} from "./utils/json/json-parser-backend";
export type { AssistantStreamController } from "./core/modules/assistant-stream";
export type { AssistantStreamChunk } from "./core/AssistantStreamChunk";
export {
  DataStreamDecoder,
  DataStreamEncoder,
  type DataStreamOptions,
} from "./core/serialization/data-stream/DataStream";
export {
  PlainTextDecoder,
  PlainTextEncoder,
} from "./core/serialization/PlainText";
export {
  AssistantTransportDecoder,
  AssistantTransportEncoder,
} from "./core/serialization/assistant-transport/AssistantTransport";
export {
  UIMessageStreamDecoder,
  type UIMessageStreamChunk,
  type UIMessageStreamDataChunk,
  type UIMessageStreamDecoderOptions,
} from "./core/serialization/ui-message-stream/UIMessageStream";
export { AssistantMessageStream } from "./core/accumulators/AssistantMessageStream";
export type {
  AssistantMessage,
  AssistantMessageTiming,
  DataPart,
  MessagePartTiming,
  ToolCallApproval,
  ToolCallTiming,
} from "./core/utils/types";

export type {
  Tool,
  ToolDeclaration,
  McpServerConfig,
  ToolModelContentPart,
  ToolModelOutputFunction,
} from "./core/tool/tool-types";
export { ToolResponse, type ToolResponseLike } from "./core/tool/ToolResponse";
export { ToolExecutionStream } from "./core/tool/ToolExecutionStream";
export type { ProviderOptions, ToolCallReader } from "./core/tool/tool-types";
export {
  /** @deprecated Experimental since 2025-04-11. Not scheduled for removal; the API may change in any release. */
  toolResultStream as unstable_toolResultStream,
  unstable_runPendingTools,
  type ToolResultStreamOptions,
} from "./core/tool/toolResultStream";
export {
  toJSONSchema,
  toPartialJSONSchema,
  toToolsJSONSchema,
  type ToolJSONSchema,
  type ToToolsJSONSchemaOptions,
} from "./core/tool/schema-utils";

export type { TextStreamController } from "./core/modules/text";
export type { ToolCallStreamController } from "./core/modules/tool-call";

import { createGorpStream } from "./core/gorp/createGorpStream";
import {
  GorpStreamResponse,
  fromGorpStreamResponse,
} from "./core/gorp/GorpStreamResponse";
import type { GorpStreamChunk } from "./core/gorp/types";
import { GorpStreamDeltaTracker } from "./core/gorp/GorpStreamDeltaTracker";

export { GorpStreamDeltaTracker as AssistantTransportDeltaTracker };
export type { AssistantTransportStateOperation } from "./core/gorp/types";

/** @deprecated Use the assistant-transport surface instead. */
export const createObjectStream = createGorpStream;
/** @deprecated Use the assistant-transport surface instead. */
export const ObjectStreamResponse = GorpStreamResponse;
/** @deprecated Use the assistant-transport surface instead. */
export type ObjectStreamResponse = GorpStreamResponse;
/** @deprecated Use the assistant-transport surface instead. */
export const fromObjectStreamResponse = fromGorpStreamResponse;
/** @deprecated Use the assistant-transport surface instead. */
export type ObjectStreamChunk = GorpStreamChunk;

export {
  toGenericMessages,
  type GenericMessage,
  type GenericSystemMessage,
  type GenericUserMessage,
  type GenericAssistantMessage,
  type GenericToolMessage,
  type GenericTextPart,
  type GenericFilePart,
  type GenericToolCallPart,
  type GenericToolResultPart,
} from "./core/converters/toGenericMessages";
