import { Chat, proto, BufferedEventData } from "@whiskeysockets/baileys";
import { PoolClient } from "pg";
import BaseRepository from "./base-repository";
import { ChatProcesado } from "../types/chat-processed";
export type ChatUpdate = Partial<proto.IConversation & {
    lastMessageRecvTimestamp?: number;
} & {
    conditional: (bufferedData: BufferedEventData) => boolean | undefined;
}>;
export declare class ChatRepository extends BaseRepository {
    /**
     * Guarda múltiples chats en la base de datos en una sola operación
     */
    guardarChatsBulk(client: PoolClient, chats: ChatProcesado[], tenantId: string, agentId: number): Promise<void>;
    /**
     * Procesa inserciones o actualizaciones de chats
     */
    handleChatUpserts(chats: Chat[], tenantId: string, agentId: number): Promise<void>;
    /**
     * Procesa una inserción o actualización individual de chat
     */
    handleSingleChatUpsert(tenantId: string, agentId: number, client: PoolClient, chat: Chat): Promise<void>;
    /**
     * Procesa actualizaciones de chats
     */
    handleChatUpdates(tenantId: string, agentId: number, updates: ChatUpdate[]): Promise<void>;
    /**
     * Procesa una actualización individual de chat
     */
    handleSingleChatUpdate(tenantId: string, agentId: number, client: PoolClient, chatUpdate: ChatUpdate): Promise<void>;
    /**
     * Procesa múltiples actualizaciones de chat en lote
     */
    handleBulkChatUpdates(tenantId: string, agentId: number, chatUpdates: ChatUpdate[]): Promise<void>;
    /**
     * Consolida múltiples actualizaciones de chat en una sola
     */
    private consolidateChatUpdates;
}
//# sourceMappingURL=chat-repository.d.ts.map