/**
 * Zalo Personal Webhook Events SDK
 * Chuẩn hóa types cho tất cả webhook events từ automation-web
 * Source: automation-web/src/shared/types/zalo-webhook-events.types.ts
 */
/**
 * Thread Type enum
 */
export declare enum ZaloThreadType {
    USER = "user",
    GROUP = "group"
}
/**
 * Event Type enum - Chuẩn hóa tất cả event types
 */
export declare enum ZaloWebhookEventType {
    TEXT_MESSAGE_SENT_TO_USER = "text-message-sent-to-user",// Gửi tin nhắn text cho user cá nhân
    TEXT_MESSAGE_SENT_TO_GROUP = "text-message-sent-to-group",// Gửi tin nhắn text vào nhóm
    TEXT_MESSAGE_RECEIVED_FROM_USER = "text-message-received-from-user",// Nhận tin nhắn text từ user cá nhân
    TEXT_MESSAGE_RECEIVED_FROM_GROUP = "text-message-received-from-group",// Nhận tin nhắn text từ nhóm
    IMAGE_MESSAGE_SENT_TO_USER = "image-message-sent-to-user",// Gửi hình ảnh cho user cá nhân
    IMAGE_MESSAGE_SENT_TO_GROUP = "image-message-sent-to-group",// Gửi hình ảnh vào nhóm
    IMAGE_MESSAGE_RECEIVED_FROM_USER = "image-message-received-from-user",// Nhận hình ảnh từ user cá nhân
    IMAGE_MESSAGE_RECEIVED_FROM_GROUP = "image-message-received-from-group",// Nhận hình ảnh từ nhóm
    VIDEO_MESSAGE_SENT_TO_USER = "video-message-sent-to-user",// Gửi video cho user cá nhân
    VIDEO_MESSAGE_SENT_TO_GROUP = "video-message-sent-to-group",// Gửi video vào nhóm
    VIDEO_MESSAGE_RECEIVED_FROM_USER = "video-message-received-from-user",// Nhận video từ user cá nhân
    VIDEO_MESSAGE_RECEIVED_FROM_GROUP = "video-message-received-from-group",// Nhận video từ nhóm
    VOICE_MESSAGE_SENT_TO_USER = "voice-message-sent-to-user",// Gửi voice/audio cho user cá nhân
    VOICE_MESSAGE_SENT_TO_GROUP = "voice-message-sent-to-group",// Gửi voice/audio vào nhóm
    VOICE_MESSAGE_RECEIVED_FROM_USER = "voice-message-received-from-user",// Nhận voice/audio từ user cá nhân
    VOICE_MESSAGE_RECEIVED_FROM_GROUP = "voice-message-received-from-group",// Nhận voice/audio từ nhóm
    FILE_MESSAGE_SENT_TO_USER = "file-message-sent-to-user",// Gửi file cho user cá nhân
    FILE_MESSAGE_SENT_TO_GROUP = "file-message-sent-to-group",// Gửi file vào nhóm
    FILE_MESSAGE_RECEIVED_FROM_USER = "file-message-received-from-user",// Nhận file từ user cá nhân
    FILE_MESSAGE_RECEIVED_FROM_GROUP = "file-message-received-from-group",// Nhận file từ nhóm
    STICKER_MESSAGE_SENT_TO_USER = "sticker-message-sent-to-user",// Gửi sticker cho user cá nhân
    STICKER_MESSAGE_SENT_TO_GROUP = "sticker-message-sent-to-group",// Gửi sticker vào nhóm
    STICKER_MESSAGE_RECEIVED_FROM_USER = "sticker-message-received-from-user",// Nhận sticker từ user cá nhân
    STICKER_MESSAGE_RECEIVED_FROM_GROUP = "sticker-message-received-from-group",// Nhận sticker từ nhóm
    LOCATION_MESSAGE_SENT_TO_USER = "location-message-sent-to-user",// Gửi vị trí cho user cá nhân
    LOCATION_MESSAGE_SENT_TO_GROUP = "location-message-sent-to-group",// Gửi vị trí vào nhóm
    LOCATION_MESSAGE_RECEIVED_FROM_USER = "location-message-received-from-user",// Nhận vị trí từ user cá nhân
    LOCATION_MESSAGE_RECEIVED_FROM_GROUP = "location-message-received-from-group",// Nhận vị trí từ nhóm
    GIF_MESSAGE_SENT_TO_USER = "gif-message-sent-to-user",// Gửi GIF cho user cá nhân
    GIF_MESSAGE_SENT_TO_GROUP = "gif-message-sent-to-group",// Gửi GIF vào nhóm
    GIF_MESSAGE_RECEIVED_FROM_USER = "gif-message-received-from-user",// Nhận GIF từ user cá nhân
    GIF_MESSAGE_RECEIVED_FROM_GROUP = "gif-message-received-from-group",// Nhận GIF từ nhóm
    LINK_MESSAGE_SENT_TO_USER = "link-message-sent-to-user",// Gửi link cho user cá nhân
    LINK_MESSAGE_SENT_TO_GROUP = "link-message-sent-to-group",// Gửi link vào nhóm
    LINK_MESSAGE_RECEIVED_FROM_USER = "link-message-received-from-user",// Nhận link từ user cá nhân
    LINK_MESSAGE_RECEIVED_FROM_GROUP = "link-message-received-from-group",// Nhận link từ nhóm
    DOODLE_MESSAGE_SENT_TO_USER = "doodle-message-sent-to-user",// Gửi doodle/vẽ cho user cá nhân
    DOODLE_MESSAGE_SENT_TO_GROUP = "doodle-message-sent-to-group",// Gửi doodle/vẽ vào nhóm
    DOODLE_MESSAGE_RECEIVED_FROM_USER = "doodle-message-received-from-user",// Nhận doodle/vẽ từ user cá nhân
    DOODLE_MESSAGE_RECEIVED_FROM_GROUP = "doodle-message-received-from-group",// Nhận doodle/vẽ từ nhóm
    RECOMMENDED_MESSAGE_SENT_TO_USER = "recommended-message-sent-to-user",
    RECOMMENDED_MESSAGE_SENT_TO_GROUP = "recommended-message-sent-to-group",
    RECOMMENDED_MESSAGE_RECEIVED_FROM_USER = "recommended-message-received-from-user",
    RECOMMENDED_MESSAGE_RECEIVED_FROM_GROUP = "recommended-message-received-from-group",
    OLD_MESSAGES = "old-messages",// Lấy tin nhắn cũ từ lịch sử
    TYPING_BY_SELF_IN_USER = "typing-by-self-in-user",// Mình đang soạn tin trong chat cá nhân
    TYPING_BY_SELF_IN_GROUP = "typing-by-self-in-group",// Mình đang soạn tin trong nhóm
    TYPING_BY_OTHER_IN_USER = "typing-by-other-in-user",// Người khác đang soạn tin trong chat cá nhân
    TYPING_BY_OTHER_IN_GROUP = "typing-by-other-in-group",// Người khác đang soạn tin trong nhóm
    SEEN_MESSAGES_BY_SELF_IN_USER = "seen-messages-by-self-in-user",// Mình đã xem tin nhắn trong chat cá nhân
    SEEN_MESSAGES_BY_SELF_IN_GROUP = "seen-messages-by-self-in-group",// Mình đã xem tin nhắn trong nhóm
    SEEN_MESSAGES_BY_OTHER_IN_USER = "seen-messages-by-other-in-user",// Người khác đã xem tin nhắn trong chat cá nhân
    SEEN_MESSAGES_BY_OTHER_IN_GROUP = "seen-messages-by-other-in-group",// Người khác đã xem tin nhắn trong nhóm
    DELIVERED_MESSAGES_BY_SELF_IN_USER = "delivered-messages-by-self-in-user",// Tin nhắn của mình đã được gửi đến user cá nhân
    DELIVERED_MESSAGES_BY_SELF_IN_GROUP = "delivered-messages-by-self-in-group",// Tin nhắn của mình đã được gửi đến nhóm
    DELIVERED_MESSAGES_BY_OTHER_IN_USER = "delivered-messages-by-other-in-user",// Tin nhắn của người khác đã được gửi đến mình (chat cá nhân)
    DELIVERED_MESSAGES_BY_OTHER_IN_GROUP = "delivered-messages-by-other-in-group",// Tin nhắn của người khác đã được gửi đến nhóm
    REACTION_BY_SELF_IN_USER = "reaction-by-self-in-user",// Mình react tin nhắn trong chat cá nhân
    REACTION_BY_SELF_IN_GROUP = "reaction-by-self-in-group",// Mình react tin nhắn trong nhóm
    REACTION_BY_OTHER_IN_USER = "reaction-by-other-in-user",// Người khác react tin nhắn trong chat cá nhân
    REACTION_BY_OTHER_IN_GROUP = "reaction-by-other-in-group",// Người khác react tin nhắn trong nhóm
    OLD_REACTIONS_BY_SELF_IN_USER = "old-reactions-by-self-in-user",// Lấy reaction cũ của mình trong chat cá nhân
    OLD_REACTIONS_BY_SELF_IN_GROUP = "old-reactions-by-self-in-group",// Lấy reaction cũ của mình trong nhóm
    OLD_REACTIONS_BY_OTHER_IN_USER = "old-reactions-by-other-in-user",// Lấy reaction cũ của người khác trong chat cá nhân
    OLD_REACTIONS_BY_OTHER_IN_GROUP = "old-reactions-by-other-in-group",// Lấy reaction cũ của người khác trong nhóm
    FRIEND_EVENT_ADD = "friend-event-add",// Thêm bạn bè
    FRIEND_EVENT_REMOVE = "friend-event-remove",// Xóa bạn bè
    FRIEND_EVENT_REQUEST = "friend-event-request",// Gửi lời mời kết bạn
    FRIEND_EVENT_UNDO_REQUEST = "friend-event-undo-request",// Hủy lời mời kết bạn
    FRIEND_EVENT_REJECT_REQUEST = "friend-event-reject-request",// Từ chối lời mời kết bạn
    FRIEND_EVENT_SEEN_REQUEST = "friend-event-seen-request",// Đã xem lời mời kết bạn
    FRIEND_EVENT_BLOCK = "friend-event-block",// Chặn bạn bè
    FRIEND_EVENT_UNBLOCK = "friend-event-unblock",// Bỏ chặn bạn bè
    FRIEND_EVENT_BLOCK_CALL = "friend-event-block-call",// Chặn cuộc gọi từ bạn bè
    FRIEND_EVENT_UNBLOCK_CALL = "friend-event-unblock-call",// Bỏ chặn cuộc gọi từ bạn bè
    FRIEND_EVENT_PIN_UNPIN = "friend-event-pin-unpin",// Ghim/bỏ ghim bạn bè
    FRIEND_EVENT_PIN_CREATE = "friend-event-pin-create",// Tạo ghim bạn bè
    FRIEND_EVENT_UNKNOWN = "friend-event-unknown",// Sự kiện bạn bè không xác định
    GROUP_EVENT_JOIN_REQUEST = "group-event-join-request",// Yêu cầu tham gia nhóm
    GROUP_EVENT_JOIN = "group-event-join",// Tham gia nhóm
    GROUP_EVENT_LEAVE = "group-event-leave",// Rời khỏi nhóm
    GROUP_EVENT_REMOVE_MEMBER = "group-event-remove-member",// Xóa thành viên khỏi nhóm
    GROUP_EVENT_BLOCK_MEMBER = "group-event-block-member",// Chặn thành viên trong nhóm
    GROUP_EVENT_UPDATE_SETTING = "group-event-update-setting",// Cập nhật cài đặt nhóm
    GROUP_EVENT_UPDATE = "group-event-update",// Cập nhật thông tin nhóm
    GROUP_EVENT_NEW_LINK = "group-event-new-link",// Tạo link mời nhóm mới
    GROUP_EVENT_ADD_ADMIN = "group-event-add-admin",// Thêm admin nhóm
    GROUP_EVENT_REMOVE_ADMIN = "group-event-remove-admin",// Xóa admin nhóm
    GROUP_EVENT_NEW_PIN_TOPIC = "group-event-new-pin-topic",// Tạo chủ đề ghim mới
    GROUP_EVENT_UPDATE_PIN_TOPIC = "group-event-update-pin-topic",// Cập nhật chủ đề ghim
    GROUP_EVENT_REORDER_PIN_TOPIC = "group-event-reorder-pin-topic",// Sắp xếp lại chủ đề ghim
    GROUP_EVENT_UPDATE_BOARD = "group-event-update-board",// Cập nhật bảng nhóm
    GROUP_EVENT_REMOVE_BOARD = "group-event-remove-board",// Xóa bảng nhóm
    GROUP_EVENT_UPDATE_TOPIC = "group-event-update-topic",// Cập nhật chủ đề
    GROUP_EVENT_UNPIN_TOPIC = "group-event-unpin-topic",// Bỏ ghim chủ đề
    GROUP_EVENT_REMOVE_TOPIC = "group-event-remove-topic",// Xóa chủ đề
    GROUP_EVENT_ACCEPT_REMIND = "group-event-accept-remind",// Chấp nhận nhắc nhở
    GROUP_EVENT_REJECT_REMIND = "group-event-reject-remind",// Từ chối nhắc nhở
    GROUP_EVENT_REMIND_TOPIC = "group-event-remind-topic",// Nhắc nhở về chủ đề
    GROUP_EVENT_UPDATE_AVATAR = "group-event-update-avatar",// Cập nhật avatar nhóm
    GROUP_EVENT_UNKNOWN = "group-event-unknown",// Sự kiện nhóm không xác định
    UNDO_BY_SELF_IN_USER = "undo-by-self-in-user",// Mình thu hồi tin nhắn trong chat cá nhân
    UNDO_BY_SELF_IN_GROUP = "undo-by-self-in-group",// Mình thu hồi tin nhắn trong nhóm
    UNDO_BY_OTHER_IN_USER = "undo-by-other-in-user",// Người khác thu hồi tin nhắn trong chat cá nhân
    UNDO_BY_OTHER_IN_GROUP = "undo-by-other-in-group",// Người khác thu hồi tin nhắn trong nhóm
    CONNECTION_STATUS_CONNECTED = "connection-status-connected",// Đã kết nối thành công
    CONNECTION_STATUS_DISCONNECTED = "connection-status-disconnected",// Mất kết nối
    CONNECTION_STATUS_RECONNECTING = "connection-status-reconnecting",// Đang kết nối lại
    CONNECTION_STATUS_LOGGED_OUT = "connection-status-logged-out",// Đã đăng xuất
    UPLOAD_ATTACHMENT_IN_PROGRESS = "upload-attachment-in-progress",// Đang upload file
    UPLOAD_ATTACHMENT_COMPLETED = "upload-attachment-completed",// Upload file thành công
    UPLOAD_ATTACHMENT_FAILED = "upload-attachment-failed",// Upload file thất bại
    CIPHER_KEY_UPDATED_IN_USER = "cipher-key-updated-in-user",// Cập nhật cipher key trong chat cá nhân
    CIPHER_KEY_UPDATED_IN_GROUP = "cipher-key-updated-in-group",// Cập nhật cipher key trong nhóm
    CIPHER_KEY_EXPIRED_IN_USER = "cipher-key-expired-in-user",// Cipher key hết hạn trong chat cá nhân
    CIPHER_KEY_EXPIRED_IN_GROUP = "cipher-key-expired-in-group",// Cipher key hết hạn trong nhóm
    ERROR_SYSTEM = "error-system",// Lỗi hệ thống
    ERROR_NETWORK = "error-network",// Lỗi mạng
    ERROR_AUTHENTICATION = "error-authentication",// Lỗi xác thực
    ERROR_VALIDATION = "error-validation",// Lỗi validation dữ liệu
    ERROR_BUSINESS_LOGIC = "error-business-logic",// Lỗi logic nghiệp vụ
    ERROR_UNKNOWN = "error-unknown"
}
/**
 * Base webhook event interface
 */
export interface BaseZaloWebhookEvent {
    sessionId: string;
    userUuid: string;
    timestamp: number;
    eventType: ZaloWebhookEventType;
    metadata?: Record<string, any>;
}
/**
 * Attachment content interface
 */
export interface ZaloAttachmentContent {
    title: string;
    description: string;
    href: string;
    thumb: string;
    childnumber: number;
    action: string;
    params: string;
    type: string;
}
/**
 * Message mention interface
 */
export interface ZaloMessageMention {
    uid: string;
    name: string;
    startIndex: number;
    length: number;
}
/**
 * Message quote interface
 */
export interface ZaloMessageQuote {
    ownerId: number;
    cliMsgId: number;
    globalMsgId: number;
    cliMsgType: number;
    ts: number;
    msg: string;
    attach: string;
    fromD: string;
    ttl: number;
}
/**
 * Complete message data từ SDK - FULL FIELDS
 */
export interface ZaloMessageData {
    actionId: string;
    msgId: string;
    cliMsgId: string;
    msgType: string;
    uidFrom: string;
    idTo: string;
    dName: string;
    ts: string;
    status: number;
    content: string | ZaloAttachmentContent | Record<string, any>;
    notify: string;
    ttl: number;
    userId: string;
    uin: string;
    realMsgId: string;
    topOut: string;
    topOutTimeOut: string;
    topOutImprTimeOut: string;
    propertyExt?: {
        color: number;
        size: number;
        type: number;
        subType: number;
        ext: string;
    };
    paramsExt: {
        countUnread: number;
        containType: number;
        platformType: number;
    };
    cmd: number;
    st: number;
    at: number;
    mentions?: ZaloMessageMention[];
    quote?: ZaloMessageQuote;
}
/**
 * Message Type enum từ SDK - đồng nhất với automation-web
 */
export declare enum ZaloMessageType {
    TEXT = "webchat",
    VOICE = "chat.voice",
    PHOTO = "chat.photo",
    STICKER = "chat.sticker",
    DOODLE = "chat.doodle",
    RECOMMENDED = "chat.recommended",
    LINK = "chat.link",
    VIDEO = "chat.video.msg",
    FILE = "share.file",
    GIF = "chat.gif",
    LOCATION = "chat.location.new"
}
/**
 * Message Category enum
 */
export declare enum ZaloMessageCategory {
    TEXT = "text",
    MEDIA = "media",
    FILE = "file",
    SOCIAL = "social",
    OTHER = "other"
}
/**
 * Base message event data - chứa tất cả fields từ SDK
 */
export interface BaseMessageEventData extends ZaloMessageData {
    threadId: string;
    threadType: ZaloThreadType;
    isSelf: boolean;
    messageType: ZaloMessageType;
    messageCategory: ZaloMessageCategory;
    hasAttachment: boolean;
}
/**
 * TEXT message data - chỉ chứa text content
 */
export interface ZaloTextMessageData extends BaseMessageEventData {
    messageType: ZaloMessageType.TEXT;
    messageCategory: ZaloMessageCategory.TEXT;
    hasAttachment: false;
    content: string;
}
/**
 * IMAGE message data - chứa thông tin hình ảnh
 */
export interface ZaloImageMessageData extends BaseMessageEventData {
    messageType: ZaloMessageType.PHOTO;
    messageCategory: ZaloMessageCategory.MEDIA;
    hasAttachment: true;
    content: ZaloAttachmentContent & {
        type: 'image';
        width?: number;
        height?: number;
        fileSize?: number;
        mimeType?: string;
    };
}
/**
 * VIDEO message data - chứa thông tin video
 */
export interface ZaloVideoMessageData extends BaseMessageEventData {
    messageType: ZaloMessageType.VIDEO;
    messageCategory: ZaloMessageCategory.MEDIA;
    hasAttachment: true;
    content: ZaloAttachmentContent & {
        type: 'video';
        duration?: number;
        width?: number;
        height?: number;
        fileSize?: number;
        mimeType?: string;
    };
}
/**
 * VOICE message data - chứa thông tin voice/audio
 */
export interface ZaloVoiceMessageData extends BaseMessageEventData {
    messageType: ZaloMessageType.VOICE;
    messageCategory: ZaloMessageCategory.MEDIA;
    hasAttachment: true;
    content: ZaloAttachmentContent & {
        type: 'voice' | 'audio';
        duration?: number;
        fileSize?: number;
        mimeType?: string;
    };
}
/**
 * FILE message data - chứa thông tin file
 */
export interface ZaloFileMessageData extends BaseMessageEventData {
    messageType: ZaloMessageType.FILE;
    messageCategory: ZaloMessageCategory.FILE;
    hasAttachment: true;
    content: ZaloAttachmentContent & {
        type: 'file';
        fileName?: string;
        fileSize?: number;
        mimeType?: string;
        extension?: string;
    };
}
/**
 * STICKER message data - chứa thông tin sticker
 */
export interface ZaloStickerMessageData extends BaseMessageEventData {
    messageType: ZaloMessageType.STICKER;
    messageCategory: ZaloMessageCategory.SOCIAL;
    hasAttachment: true;
    content: ZaloAttachmentContent & {
        type: 'sticker';
        stickerId?: string;
        stickerPackId?: string;
        width?: number;
        height?: number;
    };
}
/**
 * TYPING event data - chứa thông tin typing status
 */
export interface ZaloTypingEventData {
    uid: string;
    ts: string;
    isPC: number;
    gid?: string;
    threadId: string;
    threadType: ZaloThreadType;
    fromId: string;
    fromName: string;
    isTyping: boolean;
}
/**
 * REACTION event data - chứa thông tin reaction
 */
export interface ZaloReactionEventData {
    msgId: string;
    uidFrom: string;
    dName: string;
    ts: string;
    content: {
        rIcon: ZaloReactionType;
        rType: number;
    };
    realMsgId: string;
    groupId?: string;
    threadId: string;
    threadType: ZaloThreadType;
    fromId: string;
    fromName: string;
    reaction: string;
    timestamp: number;
}
/**
 * Reaction types enum từ SDK
 */
export declare enum ZaloReactionType {
    LIKE = "/-heart",
    LOVE = "/-heart",
    HAHA = ":))",
    WOW = ":-o",
    SAD = ":(",
    ANGRY = ":-@",
    NONE = ""
}
/**
 * UNDO event data - chứa thông tin thu hồi tin nhắn
 */
export interface ZaloUndoEventData {
    msgId: string;
    cliMsgId: string;
    uidFrom: string;
    idTo: string;
    dName: string;
    ts: string;
    realMsgId: string;
    groupId?: string;
    threadId: string;
    threadType: ZaloThreadType;
    fromId: string;
    fromName: string;
    undoMsgId: string;
    timestamp: number;
}
/**
 * CONNECTION STATUS event data - chứa thông tin trạng thái kết nối
 */
export interface ZaloConnectionStatusEventData {
    status: ZaloConnectionStatus;
    reason?: string;
    timestamp: number;
    sessionInfo?: {
        sessionId: string;
        userUuid: string;
        userId?: string;
    };
}
/**
 * Connection Status enum
 */
export declare enum ZaloConnectionStatus {
    CONNECTED = "connected",
    DISCONNECTED = "disconnected",
    RECONNECTING = "reconnecting",
    LOGGED_OUT = "logged_out"
}
/**
 * Simplified webhook event for SDK usage
 * Updated to match automation-web WebhookJobData interface
 */
export interface WebhookEvent extends BaseZaloWebhookEvent {
    eventData: ZaloMessageData | ZaloTypingEventData | ZaloReactionEventData | ZaloUndoEventData | any;
}
/**
 * Webhook event handler function type
 */
export type WebhookEventHandler<T extends WebhookEvent = WebhookEvent> = (event: T) => void | Promise<void>;
export declare const WebhookEventType: typeof ZaloWebhookEventType;
export type MessageEventData = ZaloMessageData;
export type BaseWebhookEvent = BaseZaloWebhookEvent;
export type TypingEventData = ZaloTypingEventData;
export type ReactionEventData = ZaloReactionEventData;
//# sourceMappingURL=webhook.types.d.ts.map