import { EventName } from "../Constant/event";
import { ZIMErrorCallback, ZIMConnectionStateChanged, ZIMTokenWillExpire, ZIMReceivePeerMessage, ZIMReceiveGroupMessage, ZIMConversationTotalUnreadMessageCountUpdated, ZIMConversationChanged, ZIMGroupFullInfo, ZIMUserInfo } from '../../ZIMAdapter/index.entity';
import ZIMKitConversationModel from '../../ZIMKitConversation/Model';
import ZIMKitMessageModel, { ZIMKitImgMessageModel } from '../../ZIMKitMessage/Model';
export interface ZIMKitEventHandlerInterface {
    [EventName.zimError]: ZIMErrorCallback[];
    [EventName.zimConnectionStateChanged]: ZIMConnectionStateChanged[];
    [EventName.zimTokenWillExpire]: ZIMTokenWillExpire[];
    [EventName.zimReceivePeerMessage]: ZIMReceivePeerMessage[];
    [EventName.zimReceiveGroupMessage]: ZIMReceiveGroupMessage[];
    [EventName.zimConversationTotalUnreadMessageCountUpdated]: ZIMConversationTotalUnreadMessageCountUpdated[];
    [EventName.zimConversationChanged]: ZIMConversationChanged[];
    [EventName.zimKitIsLoggedIn]: (() => void)[];
    [EventName.zimKitLoginUserUpdate]: ((userInfo: ZIMUserInfo) => void)[];
    [EventName.zimKitDeleteConversation]: ((conversationID: string) => void)[];
    [EventName.zimKitCurrentConversationUpdate]: ((conversation: ZIMKitConversationModel) => void)[];
    [EventName.zimKitConversationListUpdate]: ((conversationList: ZIMKitConversationModel[]) => void)[];
    [EventName.zimKitConversationListQueryAbnormally]: ((isAbnormal: boolean) => void)[];
    [EventName.zimKitCreateGroup]: (() => void)[];
    [EventName.zimKitCurrentChatUpdated]: ((conversation: ZIMKitConversationModel) => void)[];
    [EventName.zimKitCurrentMessageListUpdated]: ((currentMessageList: (ZIMKitMessageModel | ZIMKitImgMessageModel)[]) => void)[];
    [EventName.zimKitCurrentGroupInfoUpdated]: ((groupInfo: ZIMGroupFullInfo) => void)[];
    [EventName.zimKitImgMessageUpdated]: ((message: ZIMKitImgMessageModel) => void)[];
}
export default class ZIMKitEventHandler {
    static instance: ZIMKitEventHandler;
    eventList: ZIMKitEventHandlerInterface;
    constructor();
    static getInstance(): ZIMKitEventHandler;
    addEventListener<K extends keyof ZIMKitEventHandlerInterface>(event: K, callBackList: ZIMKitEventHandlerInterface[K]): boolean;
    removeEventListener<K extends keyof ZIMKitEventHandlerInterface>(event: K, callBackList: ZIMKitEventHandlerInterface[K]): boolean;
    actionListener<K extends keyof ZIMKitEventHandlerInterface>(event: K, ...args: Array<any>): void;
}
