export interface SDKConfig { appKey: string appSecret: string apiBaseUrl: string imBaseUrl: string debug?: boolean } export type MsgType = | 'TEXT' | 'IMAGE' | 'VIDEO' | 'AUDIO' | 'FILE' | 'CUSTOM' | 'LOCATION' | 'NOTIFY' | 'RICH_TEXT' | 'CALL_AUDIO' | 'CALL_VIDEO' | 'REVOKED' | 'FORWARD' export type ChatType = 'SINGLE' | 'GROUP' export type MsgStatus = 'SENDING' | 'SENT' | 'DELIVERED' | 'READ' | 'FAILED' | 'REVOKED' export interface ImMessage { id: string appId: string fromUserId: string fromId?: string toId: string chatType: ChatType msgType: MsgType content: string status: MsgStatus mentionedUserIds?: string groupReadCount?: number revoked?: boolean createdAt: string } export interface ConversationView { targetId: string chatType: ChatType lastMsgContent?: string | null lastMsgType?: string | null lastMsgTime: number unreadCount: number isMuted: boolean isPinned: boolean } export interface PageResult { content: T[] totalElements: number totalPages: number size: number number: number numberOfElements: number first: boolean last: boolean empty: boolean } export interface HistoryQuery { msgType?: MsgType keyword?: string startTime?: string | Date endTime?: string | Date page?: number size?: number } export interface UserProfile { id?: string appId?: string userId: string nickname?: string | null avatar?: string | null gender?: string | null status?: string | null createdAt?: string | number | null } export interface ImGroup { id: string appId?: string name: string groupType?: string creatorId: string memberIds: string adminIds: string announcement?: string | null createdAt?: string | number | null } export interface FriendRequest { id: string appId?: string fromUserId: string toUserId: string remark?: string | null status: 'PENDING' | 'ACCEPTED' | 'REJECTED' createdAt: string | number reviewedAt?: string | number | null } export interface GroupJoinRequest { id: string appId?: string groupId: string requesterId: string remark?: string | null status: 'PENDING' | 'ACCEPTED' | 'REJECTED' createdAt: string | number reviewedAt?: string | number | null } export interface SendMessageParams { messageId?: string toId: string chatType: ChatType msgType: MsgType content: string extra?: string mentionedUserIds?: string } export interface ImEventMap { message: (msg: ImMessage) => void revoke: (data: { msgId: string; operatorId: string }) => void connected: () => void disconnected: (code: number, reason: string) => void error: (err: Event) => void } export interface ApiResponse { code: number status: string data: T message: string }