import { BaseChatModel, BaseChatModelCallOptions, BaseChatModelParams } from "@langchain/core/language_models/chat_models";
import { BaseMessage } from "@langchain/core/messages";
import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
import { ChatGenerationChunk } from "@langchain/core/outputs";
import { Tool } from "@langchain/core/tools";
/**
 * Interfaz para las opciones de entrada del modelo de chat
 */
export interface ChatNvidiaLlama4ToolsInput extends BaseChatModelParams {
    /** Clave API para NVIDIA Llama4 */
    apiKey: string;
    /** URL para las llamadas a la API. Por defecto es la URL de NVIDIA para chat */
    baseUrl?: string;
    /** El modelo a utilizar (por defecto: meta/llama-4-maverick-17b-128e-instruct) */
    model?: string;
    /** Habilitar o deshabilitar streaming */
    streaming?: boolean;
    /** Temperatura para la generación de texto (0-1) */
    temperature?: number;
    /** Número máximo de tokens a generar */
    maxTokens?: number;
    /** Valor de Top-P para muestreo de tokens */
    topP?: number;
    /** Valor de Top-K para muestreo de tokens */
    topK?: number;
    /** Penalización por presencia */
    presencePenalty?: number;
    /** Penalización por frecuencia */
    frequencyPenalty?: number;
    /** Tokens de parada */
    stop?: string[];
    /** Habilitar el soporte de herramientas */
    tools?: boolean | Tool[];
    /** Opción para elegir herramientas */
    toolChoice?: "auto" | "none" | {
        type: string;
        function: {
            name: string;
        };
    };
}
/**
 * Interfaz para las opciones de llamada del modelo de chat
 */
export interface ChatNvidiaLlama4ToolsCallOptions extends BaseChatModelCallOptions {
    /** Lista de URLs de imágenes en formato base64 para entrada multimodal */
    images?: string[];
    /** Lista de herramientas para usar con el modelo */
    tools?: Tool[];
    /** Opción para elegir una herramienta específica o auto para selección automática */
    tool_choice?: "auto" | "none" | {
        type: string;
        function: {
            name: string;
        };
    };
    /** Configuraciones adicionales que se pasarán directamente a la API */
    [key: string]: unknown;
}
/**
 * Formato de herramienta compatible con OpenAI/NVIDIA
 */
export interface OpenAITool {
    type: string;
    function: {
        name: string;
        description?: string;
        parameters: Record<string, unknown>;
    };
}
/**
 * Formato para conversiones de mensajes
 */
export interface NvidiaMessage {
    role: "system" | "user" | "assistant";
    content: string | Array<string | {
        type: string;
        [key: string]: unknown;
    }>;
}
/**
 * Implementación mejorada del modelo de chat NVIDIA Llama4 para n8n
 * Optimizada para trabajar con Tools Agent
 */
export declare class ChatNvidiaLlama4Tools extends BaseChatModel<ChatNvidiaLlama4ToolsCallOptions> {
    apiKey: string;
    baseUrl: string;
    modelName: string;
    streaming: boolean;
    defaultOptions: Record<string, unknown>;
    private linkedTools;
    toolCallModel: boolean;
    static lc_name(): string;
    constructor(fields: ChatNvidiaLlama4ToolsInput);
    _llmType(): string;
    /**
     * Método requerido por n8n Tools Agent para vincular herramientas
     */
    bindTools(tools: Tool[]): this;
    /**
     * Convierte una herramienta al formato compatible con OpenAI/NVIDIA
     */
    private convertToOpenAITool;
    /**
     * Prepara los mensajes para la API de NVIDIA
     */
    private formatMessagesForNvidia;
    /**
     * Obtiene los parámetros para la llamada a la API
     */
    private getParams;
    /**
     * Procesa una respuesta de la API a formato LangChain
     */
    private convertResponseToMessage;
    /**
     * Genera una respuesta sincrónica (no streaming)
     */
    _generate(messages: BaseMessage[], options?: ChatNvidiaLlama4ToolsCallOptions): Promise<any>;
    /**
     * Procesa la respuesta de streaming de la API
     */
    _streamResponseChunks(messages: BaseMessage[], options?: ChatNvidiaLlama4ToolsCallOptions, runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
    /**
     * Método principal para llamar al modelo
     */
    _call(messages: BaseMessage[], options?: ChatNvidiaLlama4ToolsCallOptions): Promise<string>;
}
