import { ZaloClient } from "../clients/zalo-client";
import { Message, SendMessageResponse, ImageMessage, MessageRecipient, AnonymousTextMessage } from "../types/message";
/**
 * Service xử lý các API tin nhắn tổng quát của Zalo Official Account
 *
 * Bao gồm các loại tin nhắn:
 * - Tin nhắn phản hồi (Response Message)
 * - Tin nhắn ẩn danh (Anonymous Message)
 * - Tin nhắn tự động (Auto Message)
 * - Tin nhắn hệ thống (System Message)
 *
 * ĐIỀU KIỆN GỬI TIN NHẮN TỔNG QUÁT:
 *
 * 1. TIN NHẮN PHẢN HỒI:
 *    - Chỉ được gửi trong vòng 24 giờ kể từ khi người dùng gửi tin nhắn đến OA
 *    - Không giới hạn số lượng tin nhắn phản hồi
 *    - Có thể chứa bất kỳ nội dung nào (tư vấn, quảng cáo, thông tin)
 *
 * 2. TIN NHẮN ẨN DANH:
 *    - Gửi tin nhắn mà không hiển thị thông tin OA
 *    - Chỉ dành cho các trường hợp đặc biệt
 *    - Cần được Zalo phê duyệt trước khi sử dụng
 *
 * 3. TIN NHẮN TỰ ĐỘNG:
 *    - Tin nhắn được gửi tự động dựa trên trigger
 *    - Bao gồm: tin chào mừng, tin cảm ơn, tin nhắc nhở
 *
 * 4. TIN NHẮN HỆ THỐNG:
 *    - Tin nhắn thông báo từ hệ thống
 *    - Bao gồm: thông báo bảo trì, cập nhật chính sách
 */
export declare class GeneralMessageService {
    private readonly client;
    private readonly endpoints;
    constructor(client: ZaloClient);
    /**
     * Gửi tin nhắn phản hồi hình ảnh
     * @param accessToken Access token của Official Account
     * @param recipient Thông tin người nhận
     * @param message Nội dung tin nhắn hình ảnh
     * @returns Thông tin tin nhắn đã gửi
     */
    sendResponseImageMessage(accessToken: string, recipient: MessageRecipient, message: ImageMessage): Promise<SendMessageResponse>;
    /**
     * Gửi tin nhắn ẩn danh
     * @param accessToken Access token của Official Account
     * @param recipient Thông tin người nhận
     * @param message Nội dung tin nhắn ẩn danh
     * @returns Thông tin tin nhắn đã gửi
     */
    sendAnonymousMessage(accessToken: string, recipient: MessageRecipient, message: AnonymousTextMessage): Promise<SendMessageResponse>;
    /**
     * Gửi tin nhắn tổng quát
     * @param accessToken Access token của Official Account
     * @param recipient Thông tin người nhận
     * @param message Nội dung tin nhắn
     * @param messagingType Loại tin nhắn (response, update, message_tag)
     * @returns Thông tin tin nhắn đã gửi
     */
    sendMessage(accessToken: string, recipient: MessageRecipient, message: Message, messagingType?: "consultation" | "transaction" | "promotion" | "response" | "update" | "message_tag"): Promise<SendMessageResponse>;
}
//# sourceMappingURL=general-message.service.d.ts.map