import { ChatTransport, LanguageModel, ToolSet, UIMessage, UIMessageChunk, generateObject, generateText, streamObject, streamText } from "ai";
export declare const PROVIDER_OVERRIDES: {
    readonly "mistral.chat": {
        readonly mode: "auto";
    };
    readonly "google.generative-ai": {
        readonly mode: "auto";
    };
    readonly "groq.chat": {
        readonly providerOptions: {
            readonly groq: {
                readonly structuredOutputs: false;
            };
        };
    };
};
export declare function getProviderOverrides(model: Exclude<LanguageModel, string>): {
    readonly mode: "auto";
} | {
    readonly mode: "auto";
} | {
    readonly providerOptions: {
        readonly groq: {
            readonly structuredOutputs: false;
        };
    };
};
export declare class ClientSideTransport<UI_MESSAGE extends UIMessage> implements ChatTransport<UI_MESSAGE> {
    readonly opts: {
        /**
         * The language model to use for the LLM call (AI SDK)
         *
         * (when invoking `callLLM` via the `AIExtension` this will default to the
         * model set in the `AIExtension` options)
         *
         * Note: perhaps we want to remove this
         */
        model: LanguageModel;
        /**
         * The system prompt to use for the LLM call
         *
         * @default undefined
         */
        systemPrompt?: string;
        /**
         * Whether to stream the LLM response or not
         *
         * When streaming, we use the AI SDK stream functions `streamObject` / `streamText,
         * otherwise, we use the AI SDK `generateObject` / `generateText` functions.
         *
         * @default true
         */
        stream?: boolean;
        /**
         * Use object generation instead of tool calling
         *
         * @default false
         */
        objectGeneration?: boolean;
        /**
         * Additional options to pass to the AI SDK `generateObject` / `streamObject` / `streamText` / `generateText` functions
         */
        _additionalOptions?: Partial<Parameters<typeof generateObject>[0]> | Partial<Parameters<typeof streamObject>[0]> | Partial<Parameters<typeof generateText>[0]> | Partial<Parameters<typeof streamText>[0]>;
    };
    constructor(opts: {
        /**
         * The language model to use for the LLM call (AI SDK)
         *
         * (when invoking `callLLM` via the `AIExtension` this will default to the
         * model set in the `AIExtension` options)
         *
         * Note: perhaps we want to remove this
         */
        model: LanguageModel;
        /**
         * The system prompt to use for the LLM call
         *
         * @default undefined
         */
        systemPrompt?: string;
        /**
         * Whether to stream the LLM response or not
         *
         * When streaming, we use the AI SDK stream functions `streamObject` / `streamText,
         * otherwise, we use the AI SDK `generateObject` / `generateText` functions.
         *
         * @default true
         */
        stream?: boolean;
        /**
         * Use object generation instead of tool calling
         *
         * @default false
         */
        objectGeneration?: boolean;
        /**
         * Additional options to pass to the AI SDK `generateObject` / `streamObject` / `streamText` / `generateText` functions
         */
        _additionalOptions?: Partial<Parameters<typeof generateObject>[0]> | Partial<Parameters<typeof streamObject>[0]> | Partial<Parameters<typeof generateText>[0]> | Partial<Parameters<typeof streamText>[0]>;
    });
    /**
     * Calls an LLM with StreamTools, using the `generateObject` of the AI SDK.
     *
     * This is the non-streaming version.
     */
    protected generateObject(messages: UIMessage[], tools: ToolSet): Promise<ReadableStream<UIMessageChunk>>;
    /**
     * Calls an LLM with StreamTools, using the `streamObject` of the AI SDK.
     *
     * This is the streaming version.
     */
    protected streamObject(messages: UIMessage[], tools: ToolSet): Promise<ReadableStream<UIMessageChunk>>;
    /**
     * Calls an LLM with StreamTools, using the `streamText` of the AI SDK.
     *
     * This is the streaming version.
     */
    protected streamText(messages: UIMessage[], tools: ToolSet): Promise<import("ai").AsyncIterableStream<import("ai").InferUIMessageChunk<UIMessage<unknown, import("ai").UIDataTypes, import("ai").UITools>>>>;
    sendMessages({ messages, body, }: Parameters<ChatTransport<UI_MESSAGE>["sendMessages"]>[0]): Promise<ReadableStream<UIMessageChunk>>;
    reconnectToStream(): Promise<ReadableStream<UIMessageChunk> | null>;
}
