/**
 * Message Job Types
 * 100% khớp với automation-web message event jobs
 */
import { BaseZaloWebhookEvent, ZaloWebhookEventType, BaseQueueJob } from './webhook-job.types';
import { Message } from '../webhook/message';
/**
 * Message Event Data - sử dụng trực tiếp Message từ zalo-personal-sdk
 * Không cần wrapper, automation-web sử dụng trực tiếp: data: message
 */
export type ZaloMessageData = Message;
/**
 * TEXT message events
 */
export interface ZaloTextMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.TEXT_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.TEXT_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * IMAGE message events
 */
export interface ZaloImageMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.IMAGE_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.IMAGE_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * VIDEO message events
 */
export interface ZaloVideoMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.VIDEO_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.VIDEO_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * VOICE message events
 */
export interface ZaloVoiceMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.VOICE_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.VOICE_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * FILE message events
 */
export interface ZaloFileMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.FILE_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.FILE_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * STICKER message events
 */
export interface ZaloStickerMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.STICKER_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.STICKER_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * LOCATION message events
 */
export interface ZaloLocationMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.LOCATION_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.LOCATION_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * GIF message events
 */
export interface ZaloGifMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.GIF_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.GIF_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * LINK message events
 */
export interface ZaloLinkMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.LINK_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.LINK_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * DOODLE message events
 */
export interface ZaloDoodleMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.DOODLE_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.DOODLE_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * RECOMMENDED message events
 */
export interface ZaloRecommendedMessageEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_USER | ZaloWebhookEventType.RECOMMENDED_MESSAGE_SENT_TO_GROUP | ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_USER | ZaloWebhookEventType.RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP;
    data: ZaloMessageData;
}
/**
 * Union type for all message events
 */
export type ZaloMessageEvent = ZaloTextMessageEvent | ZaloImageMessageEvent | ZaloVideoMessageEvent | ZaloVoiceMessageEvent | ZaloFileMessageEvent | ZaloStickerMessageEvent | ZaloLocationMessageEvent | ZaloGifMessageEvent | ZaloLinkMessageEvent | ZaloDoodleMessageEvent | ZaloRecommendedMessageEvent;
/**
 * Message Queue Job - Job cụ thể cho message events
 */
export interface MessageQueueJob extends BaseQueueJob<ZaloMessageEvent> {
    name: 'message-event';
    data: ZaloMessageEvent;
}
/**
 * Text Message Queue Job
 */
export interface TextMessageQueueJob extends BaseQueueJob<ZaloTextMessageEvent> {
    name: 'text-message-event';
    data: ZaloTextMessageEvent;
}
/**
 * Image Message Queue Job
 */
export interface ImageMessageQueueJob extends BaseQueueJob<ZaloImageMessageEvent> {
    name: 'image-message-event';
    data: ZaloImageMessageEvent;
}
/**
 * Video Message Queue Job
 */
export interface VideoMessageQueueJob extends BaseQueueJob<ZaloVideoMessageEvent> {
    name: 'video-message-event';
    data: ZaloVideoMessageEvent;
}
/**
 * Voice Message Queue Job
 */
export interface VoiceMessageQueueJob extends BaseQueueJob<ZaloVoiceMessageEvent> {
    name: 'voice-message-event';
    data: ZaloVoiceMessageEvent;
}
/**
 * File Message Queue Job
 */
export interface FileMessageQueueJob extends BaseQueueJob<ZaloFileMessageEvent> {
    name: 'file-message-event';
    data: ZaloFileMessageEvent;
}
/**
 * Sticker Message Queue Job
 */
export interface StickerMessageQueueJob extends BaseQueueJob<ZaloStickerMessageEvent> {
    name: 'sticker-message-event';
    data: ZaloStickerMessageEvent;
}
/**
 * Location Message Queue Job
 */
export interface LocationMessageQueueJob extends BaseQueueJob<ZaloLocationMessageEvent> {
    name: 'location-message-event';
    data: ZaloLocationMessageEvent;
}
/**
 * GIF Message Queue Job
 */
export interface GifMessageQueueJob extends BaseQueueJob<ZaloGifMessageEvent> {
    name: 'gif-message-event';
    data: ZaloGifMessageEvent;
}
/**
 * Link Message Queue Job
 */
export interface LinkMessageQueueJob extends BaseQueueJob<ZaloLinkMessageEvent> {
    name: 'link-message-event';
    data: ZaloLinkMessageEvent;
}
/**
 * Doodle Message Queue Job
 */
export interface DoodleMessageQueueJob extends BaseQueueJob<ZaloDoodleMessageEvent> {
    name: 'doodle-message-event';
    data: ZaloDoodleMessageEvent;
}
/**
 * Recommended Message Queue Job
 */
export interface RecommendedMessageQueueJob extends BaseQueueJob<ZaloRecommendedMessageEvent> {
    name: 'recommended-message-event';
    data: ZaloRecommendedMessageEvent;
}
/**
 * Union type for all message queue jobs
 */
export type MessageQueueJobUnion = MessageQueueJob | TextMessageQueueJob | ImageMessageQueueJob | VideoMessageQueueJob | VoiceMessageQueueJob | FileMessageQueueJob | StickerMessageQueueJob | LocationMessageQueueJob | GifMessageQueueJob | LinkMessageQueueJob | DoodleMessageQueueJob | RecommendedMessageQueueJob;
//# sourceMappingURL=message-job.types.d.ts.map