import { ZaloClient } from "../clients/zalo-client";
import { GroupTextMessage, GroupImageMessage, GroupFileMessage, GroupStickerMessage, GroupMentionMessage, GroupMessageResult, GroupInfo, GroupMember } from "../types/group";
/**
 * Service for handling Zalo Official Account Group Message Framework (GMF) APIs
 *
 * CONDITIONS FOR USING ZALO GMF:
 *
 * 1. OPT-IN CONDITIONS FOR SENDING GROUP MESSAGES:
 *    - OA must have the group_id of the chat group
 *    - OA must be added to the chat group by group admin
 *    - OA must have permission to send messages in the group (granted by group admin)
 *    - Chat group must be active (not locked or disbanded)
 *
 * 2. ACCESS PERMISSIONS:
 *    - Application needs to be granted group chat management permissions
 *    - Access token must have "manage_group" scope or equivalent
 *    - OA must be authenticated and have active status
 *
 * 3. LIMITS AND CONSTRAINTS:
 *    - Can only send messages to groups that OA has joined
 *    - Cannot send messages to private groups that OA hasn't been invited to
 *    - Must comply with Zalo's message sending frequency limits
 *    - Message content must comply with Zalo's content policy
 *
 * 4. SUPPORTED MESSAGE TYPES:
 *    - Text message: Plain text messages
 *    - Image message: Image messages (JPG, PNG, GIF - max 5MB)
 *    - File message: File attachments (max 25MB)
 *    - Sticker message: Stickers from Zalo collection
 *    - Mention message: Tag/mention specific members
 *
 * 5. TECHNICAL REQUIREMENTS:
 *    - Use HTTPS for all API calls
 *    - Content-Type: application/json for text/mention messages
 *    - Content-Type: multipart/form-data for file/image uploads
 */
export declare class GroupMessageService {
    private readonly client;
    private readonly endpoints;
    constructor(client: ZaloClient);
    /**
     * Send text message to group
     * @param accessToken OA access token
     * @param groupId Group ID
     * @param message Text message content
     * @returns Send result
     */
    sendTextMessage(accessToken: string, groupId: string, message: GroupTextMessage): Promise<GroupMessageResult>;
    /**
     * Send image message to group
     * @param accessToken OA access token
     * @param groupId Group ID
     * @param message Image message content
     * @returns Send result
     */
    sendImageMessage(accessToken: string, groupId: string, message: GroupImageMessage): Promise<GroupMessageResult>;
    /**
     * Send file message to group
     * @param accessToken OA access token
     * @param groupId Group ID
     * @param message File message content
     * @returns Send result
     */
    sendFileMessage(accessToken: string, groupId: string, message: GroupFileMessage): Promise<GroupMessageResult>;
    /**
     * Send sticker message to group
     * @param accessToken OA access token
     * @param groupId Group ID
     * @param message Sticker message content
     * @returns Send result
     */
    sendStickerMessage(accessToken: string, groupId: string, message: GroupStickerMessage): Promise<GroupMessageResult>;
    /**
     * Send mention message to group
     * @param accessToken OA access token
     * @param groupId Group ID
     * @param message Mention message content
     * @returns Send result
     */
    sendMentionMessage(accessToken: string, groupId: string, message: GroupMentionMessage): Promise<GroupMessageResult>;
    /**
     * Get group information
     * @param accessToken OA access token
     * @param groupId Group ID
     * @returns Group information
     */
    getGroupInfo(accessToken: string, groupId: string): Promise<GroupInfo>;
    /**
     * Get group members
     * @param accessToken OA access token
     * @param groupId Group ID
     * @param offset Offset for pagination
     * @param count Number of members to retrieve
     * @returns Group members list
     */
    getGroupMembers(accessToken: string, groupId: string, offset?: number, count?: number): Promise<{
        members: GroupMember[];
        total: number;
    }>;
    private handleGroupMessageError;
}
//# sourceMappingURL=group-message.service.d.ts.map