import { Repository } from 'typeorm';
import { SessionService } from '../session/session.service';
import { SendTextMessageDto, SendMediaMessageDto, MessageResponseDto } from './dto';
import { Message } from './entities/message.entity';
import { HookManager } from '../../core/hooks';
export interface GetMessagesOptions {
    chatId?: string;
    limit?: number;
    offset?: number;
}
export declare class MessageService {
    private readonly messageRepository;
    private readonly sessionService;
    private readonly hookManager;
    constructor(messageRepository: Repository<Message>, sessionService: SessionService, hookManager: HookManager);
    sendText(sessionId: string, dto: SendTextMessageDto): Promise<MessageResponseDto>;
    sendImage(sessionId: string, dto: SendMediaMessageDto): Promise<MessageResponseDto>;
    sendVideo(sessionId: string, dto: SendMediaMessageDto): Promise<MessageResponseDto>;
    sendAudio(sessionId: string, dto: SendMediaMessageDto): Promise<MessageResponseDto>;
    sendDocument(sessionId: string, dto: SendMediaMessageDto): Promise<MessageResponseDto>;
    getMessages(sessionId: string, options?: GetMessagesOptions): Promise<{
        messages: Message[];
        total: number;
    }>;
    sendLocation(sessionId: string, dto: {
        chatId: string;
        latitude: number;
        longitude: number;
        description?: string;
        address?: string;
    }): Promise<MessageResponseDto>;
    sendContact(sessionId: string, dto: {
        chatId: string;
        contactName: string;
        contactNumber: string;
    }): Promise<MessageResponseDto>;
    sendSticker(sessionId: string, dto: SendMediaMessageDto): Promise<MessageResponseDto>;
    reply(sessionId: string, dto: {
        chatId: string;
        quotedMessageId: string;
        text: string;
    }): Promise<MessageResponseDto>;
    forward(sessionId: string, dto: {
        fromChatId: string;
        toChatId: string;
        messageId: string;
    }): Promise<MessageResponseDto>;
    saveIncomingMessage(sessionId: string, data: Partial<Message>): Promise<Message>;
    private saveOutgoingMessage;
    reactToMessage(sessionId: string, dto: {
        chatId: string;
        messageId: string;
        emoji: string;
    }): Promise<void>;
    getMessageReactions(sessionId: string, chatId: string, messageId: string): Promise<import("../../engine/interfaces/whatsapp-engine.interface").MessageReaction[]>;
    deleteMessage(sessionId: string, dto: {
        chatId: string;
        messageId: string;
        forEveryone?: boolean;
    }): Promise<void>;
    private getEngine;
    private buildMediaInput;
}
