import { BaseChatModel, BaseChatModelCallOptions, BaseChatModelParams } from "@langchain/core/language_models/chat_models";
import { AIMessageChunk, BaseMessage } from "@langchain/core/messages";
import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
import { ChatGeneration, ChatGenerationChunk } from "@langchain/core/outputs";
import { BaseLanguageModelInput } from "@langchain/core/language_models/base";
import { Runnable } from "@langchain/core/runnables";
import { NvidiaCamelCaseOptions, BindToolsInput } from "./utils.js";
/**
 * Interfaz para las opciones de entrada del modelo de chat
 */
export interface ChatNvidiaLlama4Input 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[];
}
/**
 * Interfaz para las opciones de llamada del modelo de chat
 */
export interface ChatNvidiaLlama4CallOptions extends BaseChatModelCallOptions, NvidiaCamelCaseOptions {
    /** Lista de URLs de imágenes en formato base64 para entrada multimodal */
    images?: string[];
    /** Lista de herramientas para usar con el modelo */
    tools?: BindToolsInput[];
    /** Opción para elegir una herramienta específica o auto para selección automática */
    tool_choice?: "auto" | "none" | {
        type: string;
        function: {
            name: string;
        };
    };
}
/**
 * Implementación del modelo de chat NVIDIA Llama4 para LangChain
 */
export declare class ChatNvidiaLlama4 extends BaseChatModel<ChatNvidiaLlama4CallOptions> {
    apiKey: string;
    baseUrl: string;
    modelName: string;
    defaultOptions: NvidiaCamelCaseOptions;
    streaming: boolean;
    static lc_name(): string;
    constructor(fields: ChatNvidiaLlama4Input);
    _llmType(): string;
    /**
     * Vincula herramientas al modelo para habilitar la funcionalidad de agente
     * @param tools Lista de herramientas para vincular al modelo
     * @param kwargs Opciones adicionales para la llamada
     */
    bindTools(tools: BindToolsInput[], kwargs?: Partial<this["ParsedCallOptions"]>): Runnable<BaseLanguageModelInput, AIMessageChunk, ChatNvidiaLlama4CallOptions>;
    /**
     * Obtiene los parámetros para la llamada a la API
     */
    private getParams;
    /**
     * Genera una respuesta sincrónica (no streaming)
     */
    _generate(messages: BaseMessage[], options: ChatNvidiaLlama4CallOptions): Promise<{
        generations: ChatGeneration[];
    }>;
    /**
     * Procesa la respuesta de streaming de la API
     */
    _streamResponseChunks(messages: BaseMessage[], options: ChatNvidiaLlama4CallOptions, runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
    _call(messages: BaseMessage[], options: ChatNvidiaLlama4CallOptions): Promise<string>;
}
