import { type ChatOpenAI } from '@langchain/openai';
import { type AIActionMetadata } from '../../../../../../src/lib/llm/openai/types';
import type { BaseCallbackHandler } from "@langchain/core/callbacks/base";
/**
 * Uses LLM to categorize a message into predefined categories.
 * The function follows these steps:
 * 1. Formats prompt with available categories
 * 2. Runs LLM chain with structured output parsing
 * 3. Validates and processes the result
 *
 * @example
 * const result = await categorizeMessageWithLLM({
 *   model,
 *   message: "I need to schedule an appointment",
 *   categories: ["Scheduling", "Medical Question"],
 *   metadata: { ... }
 * })
 * // Returns: { category: "Scheduling", explanation: "..." }
 */
export declare const categorizeMessageWithLLM: ({ model, message, categories, metadata, callbacks, }: {
    model: ChatOpenAI;
    message: string;
    categories: string[];
    metadata: AIActionMetadata;
    callbacks?: BaseCallbackHandler[];
}) => Promise<{
    category: string;
    explanation: string;
}>;
