/**
 * Friend & Group Event Job Types
 * 100% khớp với automation-web friend/group event jobs
 */
import { BaseZaloWebhookEvent, ZaloWebhookEventType, BaseQueueJob } from './webhook-job.types';
import { FriendEvent, GroupEvent } from '../webhook';
/**
 * Friend Event Data - sử dụng trực tiếp FriendEvent từ zalo-personal-sdk
 * Automation-web sử dụng trực tiếp: data: friendEvent
 */
export type ZaloFriendEventData = FriendEvent;
/**
 * Union type for all friend events
 */
export type ZaloFriendEvent = ZaloFriendEventAddEvent | ZaloFriendEventRemoveEvent | ZaloFriendEventRequestEvent | ZaloFriendEventUndoRequestEvent | ZaloFriendEventRejectRequestEvent | ZaloFriendEventSeenRequestEvent | ZaloFriendEventBlockEvent | ZaloFriendEventUnblockEvent | ZaloFriendEventBlockCallEvent | ZaloFriendEventUnblockCallEvent | ZaloFriendEventPinUnpinEvent | ZaloFriendEventPinCreateEvent | ZaloFriendEventUnknownEvent;
export interface ZaloFriendEventAddEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_ADD;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventRemoveEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_REMOVE;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventRequestEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_REQUEST;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventUndoRequestEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_UNDO_REQUEST;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventRejectRequestEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_REJECT_REQUEST;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventSeenRequestEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_SEEN_REQUEST;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventBlockEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_BLOCK;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventUnblockEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_UNBLOCK;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventBlockCallEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_BLOCK_CALL;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventUnblockCallEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_UNBLOCK_CALL;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventPinUnpinEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_PIN_UNPIN;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventPinCreateEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_PIN_CREATE;
    data: ZaloFriendEventData;
}
export interface ZaloFriendEventUnknownEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.FRIEND_EVENT_UNKNOWN;
    data: ZaloFriendEventData;
}
/**
 * Group Event Data - sử dụng trực tiếp GroupEvent từ zalo-personal-sdk
 * Automation-web sử dụng trực tiếp: data: groupEvent
 */
export type ZaloGroupEventData = GroupEvent;
/**
 * Union type for all group events
 */
export type ZaloGroupEvent = ZaloGroupEventJoinRequestEvent | ZaloGroupEventJoinEvent | ZaloGroupEventLeaveEvent | ZaloGroupEventRemoveMemberEvent | ZaloGroupEventBlockMemberEvent | ZaloGroupEventUpdateSettingEvent | ZaloGroupEventUpdateEvent | ZaloGroupEventNewLinkEvent | ZaloGroupEventAddAdminEvent | ZaloGroupEventRemoveAdminEvent | ZaloGroupEventNewPinTopicEvent | ZaloGroupEventUpdatePinTopicEvent | ZaloGroupEventReorderPinTopicEvent | ZaloGroupEventUpdateBoardEvent | ZaloGroupEventRemoveBoardEvent | ZaloGroupEventUpdateTopicEvent | ZaloGroupEventUnpinTopicEvent | ZaloGroupEventRemoveTopicEvent | ZaloGroupEventAcceptRemindEvent | ZaloGroupEventRejectRemindEvent | ZaloGroupEventRemindTopicEvent | ZaloGroupEventUpdateAvatarEvent | ZaloGroupEventUnknownEvent;
export interface ZaloGroupEventJoinRequestEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_JOIN_REQUEST;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventJoinEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_JOIN;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventLeaveEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_LEAVE;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventRemoveMemberEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REMOVE_MEMBER;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventBlockMemberEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_BLOCK_MEMBER;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUpdateSettingEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UPDATE_SETTING;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUpdateEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UPDATE;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventNewLinkEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_NEW_LINK;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventAddAdminEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_ADD_ADMIN;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventRemoveAdminEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REMOVE_ADMIN;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventNewPinTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_NEW_PIN_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUpdatePinTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UPDATE_PIN_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventReorderPinTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REORDER_PIN_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUpdateBoardEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UPDATE_BOARD;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventRemoveBoardEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REMOVE_BOARD;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUpdateTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UPDATE_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUnpinTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UNPIN_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventRemoveTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REMOVE_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventAcceptRemindEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_ACCEPT_REMIND;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventRejectRemindEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REJECT_REMIND;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventRemindTopicEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_REMIND_TOPIC;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUpdateAvatarEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UPDATE_AVATAR;
    data: ZaloGroupEventData;
}
export interface ZaloGroupEventUnknownEvent extends BaseZaloWebhookEvent {
    eventType: ZaloWebhookEventType.GROUP_EVENT_UNKNOWN;
    data: ZaloGroupEventData;
}
/**
 * Friend Event Queue Job
 */
export interface FriendEventQueueJob extends BaseQueueJob<ZaloFriendEvent> {
    name: 'friend-event';
    data: ZaloFriendEvent;
}
/**
 * Group Event Queue Job
 */
export interface GroupEventQueueJob extends BaseQueueJob<ZaloGroupEvent> {
    name: 'group-event';
    data: ZaloGroupEvent;
}
//# sourceMappingURL=friend-group-job.types.d.ts.map