import { Message } from "../entities/Message";
import { Conversation } from "../entities/Conversation";
export interface MessageDisplayData {
    id: string;
    content: string;
    type: "text" | "image" | "document" | "audio" | "video" | "location" | "contact";
    senderType: "user" | "system" | "bot";
    senderId: string;
    senderName: string;
    senderAvatar?: string;
    timestamp: Date;
    status: "sent" | "delivered" | "read" | "failed" | "pending";
    isOutgoing: boolean;
    channelType: "telegram" | "whatsapp" | "email" | "web";
    metadata?: {
        telegramMessageId?: number;
        replyToMessageId?: string;
        inlineKeyboard?: Array<Array<{
            text: string;
            callbackData: string;
        }>>;
        fileUrl?: string;
        fileName?: string;
        fileSize?: number;
        mimeType?: string;
    };
}
export interface ConversationDisplayData {
    id: string;
    title: string;
    status: string;
    lastMessage?: MessageDisplayData;
    unreadCount: number;
    participants: Array<{
        id: string;
        name: string;
        avatar?: string;
        type: "user" | "bot" | "system";
    }>;
    channelType: "telegram" | "whatsapp" | "email" | "web";
    createdAt: Date;
    updatedAt: Date;
}
export declare class MessageDisplayService {
    /**
     * Convierte un mensaje de la base de datos a formato de visualización
     */
    formatMessageForDisplay(message: Message): MessageDisplayData;
    /**
     * Convierte una conversación a formato de visualización
     */
    formatConversationForDisplay(conversation: Conversation, lastMessage?: Message, unreadCount?: number): ConversationDisplayData;
    /**
     * Determina el tipo de mensaje basado en el contenido
     */
    private determineMessageType;
    /**
     * Obtiene información del remitente
     */
    private getSenderInfo;
    /**
     * Extrae metadata específica del canal
     */
    private extractChannelMetadata;
    /**
     * Determina el tipo de canal basado en el mensaje
     */
    private determineChannelType;
    /**
     * Determina el tipo de canal basado en la conversación
     */
    private determineChannelTypeFromConversation;
    /**
     * Obtiene los participantes de una conversación
     */
    private getConversationParticipants;
    /**
     * Formatea timestamp para visualización
     */
    formatTimestamp(timestamp: Date): string;
    /**
     * Obtiene el estado visual del mensaje
     */
    getMessageStatusDisplay(status: string): {
        text: string;
        icon: string;
        color: string;
    };
}
//# sourceMappingURL=MessageDisplayService.d.ts.map