import { Chat, Contact, proto, WAMessage } from "@whiskeysockets/baileys";
import { ChatProcesado } from '../../types/chat-processed';
/**
 * Interfaz para los datos recibidos del evento messaging-history.set
 */
interface MessagingHistoryData {
    chats: Chat[];
    contacts: Contact[];
    messages: WAMessage[];
    isLatest?: boolean;
    progress?: number | null;
    syncType?: proto.HistorySync.HistorySyncType;
    peerDataRequestSessionId?: string | null;
}
/**
 * Interfaz para los metadatos de la sincronización
 */
interface MetadatosSincronizacion {
    syncType?: proto.HistorySync.HistorySyncType;
    isLatest?: boolean;
    progress?: number | null;
    peerDataRequestSessionId?: string | null;
    completado: boolean;
}
/**
 * Interfaz para el resultado del procesamiento
 */
export interface ResultadoProcesamiento {
    [chatId: string]: ChatProcesado | Record<string, Contact> | MetadatosSincronizacion | undefined;
    todosLosContactos?: Record<string, Contact>;
    metadatos: MetadatosSincronizacion;
}
/**
 * Clase para manejar el historial de mensajes, incluyendo sincronizaciones parciales
 */
export declare class ManejadorHistoriaChats {
    private resultado;
    private historyCache;
    private maxChats;
    constructor(maxChats?: number);
    /**
     * Procesa los datos del evento messaging-history.set
     * @param data - Datos del evento
     * @returns El resultado procesado acumulado
     */
    procesarHistoriaDeChats(data: MessagingHistoryData): ResultadoProcesamiento;
    /**
     * Obtiene una clave única para un mensaje
     */
    private getMessageKey;
    /**
     * Ordena los mensajes por timestamp
     */
    private ordenarMensajes;
    /**
     * Reinicia el procesador para una nueva sincronización completa
     */
    reiniciar(): void;
    /**
     * Obtiene el resultado actual, limitando a los N chats más recientes si maxChats > 0
     */
    obtenerResultado(): ResultadoProcesamiento;
    /**
     * Obtiene el timestamp del mensaje más reciente en un chat
     */
    private obtenerTimestampUltimoMensaje;
    /**
     * Obtiene el estado serializable del manager para cache distribuido
     */
    getSerializableState(): any;
    /**
     * Restaura el estado desde datos serializados
     */
    restoreFromState(state: any): void;
    /**
     * Obtiene estadísticas del manager
     */
    getStats(): {
        chatsCount: number;
        messagesCount: number;
        contactsCount: number;
        cacheSize: number;
        isCompleted: boolean;
    };
    /**
     * Obtiene el valor de maxChats (getter para compatibilidad)
     */
    getMaxChats(): number;
}
export {};
//# sourceMappingURL=history-manager.d.ts.map