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 { ChatGeneration, ChatGenerationChunk } from "@langchain/core/outputs";
import { NvidiaCamelCaseOptions } 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[];
}
/**
 * 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;
    /**
     * 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>;
    /**
     * Implementación del método _call requerido para los modelos de chat
     */
    _call(messages: BaseMessage[], options: ChatNvidiaLlama4CallOptions): Promise<string>;
}
