/**
* @ahmedrowaihi/flowise-vercel-ai-sdk-provider v2.1.1
* Flowise AI SDK Provider
* Ahmed Rowaihi
* MIT
* git+https://github.com/ahmedrowaihi/flowise-ai-sdk-provider.git
* https://github.com/ahmedrowaihi/flowise-ai-sdk-provider#readme
*/
import { UIMessage } from 'ai';
import { LanguageModelV2Prompt, ProviderV2, LanguageModelV2 } from '@ai-sdk/provider';
import { FlowiseClient } from 'flowise-sdk';
import { PredictionData } from 'flowise-sdk/dist/flowise-sdk';

interface FlowiseChatMessage {
    id: string;
    role: "userMessage" | "apiMessage";
    content: string;
    chatId: string;
    chatflowid: string;
    createdDate: Date;
    sourceDocuments?: string;
    usedTools?: string;
    fileAnnotations?: string;
    agentReasoning?: string;
    artifacts?: string;
    action?: string;
    followUpPrompts?: string;
}
interface ConvertToAiSdkMessageOptions {
    allowMessageTypes?: FlowiseChatMessage["role"][];
}
declare function convertToAiSdkMessage(messages: FlowiseChatMessage[], options?: ConvertToAiSdkMessageOptions): UIMessage[];

declare function convertToFlowiseMessage(prompt: LanguageModelV2Prompt): string;

interface Logger {
    debug: (...args: Parameters<typeof console.debug>) => void;
    warn: (...args: Parameters<typeof console.warn>) => void;
    error: (...args: Parameters<typeof console.error>) => void;
}

interface FlowisePredictionRequest extends Omit<PredictionData, "chatflowId"> {
}
interface FlowiseClientOptions {
    baseUrl: string;
    apiKey?: string;
    timeout?: number;
    logger?: Logger;
}

interface FlowiseProvider extends ProviderV2 {
    (chatflowId: string): LanguageModelV2;
    /**
     Creates a model for text generation.
     */
    chat(chatflowId: string): LanguageModelV2;
    client: FlowiseClient;
}
/**
 Create a Flowise AI provider instance.
 */
declare function createFlowiseProvider(options: FlowiseClientOptions): FlowiseProvider;
/**
 Create a Flowise model instance directly with credentials and chatflow ID.
 This is a convenience function for one-shot usage.
 */
declare function createFlowiseModel(options: FlowiseClientOptions & {
    chatflowId: string;
}): LanguageModelV2;

export { convertToAiSdkMessage, convertToFlowiseMessage, createFlowiseModel, createFlowiseProvider };
export type { FlowiseChatMessage, FlowiseClientOptions, FlowisePredictionRequest, FlowiseProvider };
