import { References, SomeMessage, DataStreamer, Conversation, OpenAiChatMessage, ConversationCustomData, ChatLlm } from "mongodb-rag-core";
import { Request as ExpressRequest } from "express";
import { GenerateUserPromptFunc } from "../processors/GenerateUserPromptFunc";
import { FilterPreviousMessages } from "../processors/FilterPreviousMessages";
export interface GenerateResponseParams {
    shouldStream: boolean;
    llm: ChatLlm;
    latestMessageText: string;
    customData?: ConversationCustomData;
    dataStreamer?: DataStreamer;
    generateUserPrompt?: GenerateUserPromptFunc;
    filterPreviousMessages?: FilterPreviousMessages;
    reqId: string;
    llmNotWorkingMessage: string;
    noRelevantContentMessage: string;
    conversation: Conversation;
    request?: ExpressRequest;
}
interface GenerateResponseReturnValue {
    messages: SomeMessage[];
}
export type GenerateResponse = (params: GenerateResponseParams) => Promise<GenerateResponseReturnValue>;
/**
  Generate a response with/without streaming. Supports tool calling
  and standard response generation.
  Response includes the user message with any data mutations
  and the assistant response message, plus any intermediate tool calls.
 */
export declare function generateResponse({ shouldStream, llm, latestMessageText, customData, generateUserPrompt, filterPreviousMessages, dataStreamer, reqId, llmNotWorkingMessage, noRelevantContentMessage, conversation, request, }: GenerateResponseParams): Promise<GenerateResponseReturnValue>;
type BaseGenerateResponseMessageParams = Omit<GenerateResponseParams, "latestMessageText" | "customData" | "filterPreviousMessages" | "shouldStream"> & {
    references?: References;
    shouldGenerateMessage?: boolean;
    llmConversation: OpenAiChatMessage[];
};
export type AwaitGenerateResponseParams = Omit<BaseGenerateResponseMessageParams, "dataStreamer">;
export declare function awaitGenerateResponseMessage({ reqId, llmConversation, llm, llmNotWorkingMessage, noRelevantContentMessage, request, references, conversation, shouldGenerateMessage, }: AwaitGenerateResponseParams): Promise<GenerateResponseReturnValue>;
export type StreamGenerateResponseParams = BaseGenerateResponseMessageParams & Required<Pick<GenerateResponseParams, "dataStreamer">> & {
    /**
      Arbitrary data about the message to stream before the generated response.
    */
    metadata?: Record<string, unknown>;
};
export declare function streamGenerateResponseMessage({ dataStreamer, llm, llmConversation, reqId, references, noRelevantContentMessage, llmNotWorkingMessage, conversation, request, metadata, shouldGenerateMessage, }: StreamGenerateResponseParams): Promise<GenerateResponseReturnValue>;
export declare function convertMessageFromLlmToDb(message: OpenAiChatMessage): SomeMessage;
export {};
//# sourceMappingURL=generateResponse.d.ts.map