@typexim/web-sdk 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/types/enums/business.d.ts +115 -0
  2. package/dist/types/enums/index.d.ts +2 -0
  3. package/dist/types/enums/sdk.d.ts +5 -0
  4. package/dist/types/events.d.ts +56 -0
  5. package/dist/types/index.d.ts +21 -0
  6. package/dist/types/interfaces/business.d.ts +141 -0
  7. package/dist/types/interfaces/index.d.ts +3 -0
  8. package/dist/types/interfaces/pushMessage.d.ts +33 -0
  9. package/dist/types/interfaces/sdk/api.d.ts +74 -0
  10. package/dist/types/interfaces/sdk/common.d.ts +42 -0
  11. package/dist/types/interfaces/sdk/index.d.ts +2 -0
  12. package/dist/types/modules/Base.d.ts +51 -0
  13. package/dist/types/modules/BusinessWebsocket.d.ts +21 -0
  14. package/dist/types/modules/ChatSDK.d.ts +120 -0
  15. package/dist/types/modules/FeedCache.d.ts +21 -0
  16. package/dist/types/modules/HttpClient.d.ts +21 -0
  17. package/dist/types/modules/Logger.d.ts +13 -0
  18. package/dist/types/modules/PushMessageProcessor.d.ts +28 -0
  19. package/dist/types/modules/ReConnectWebsocket.d.ts +29 -0
  20. package/dist/types/modules/SingletonLock.d.ts +6 -0
  21. package/dist/types/modules/Storage.d.ts +6 -0
  22. package/dist/types/modules/Version.d.ts +7 -0
  23. package/dist/types/utils/http.d.ts +4 -0
  24. package/dist/types/utils/makeSign.d.ts +2 -0
  25. package/dist/types/utils/message.d.ts +31 -0
  26. package/dist/types/utils/misc.d.ts +1 -0
  27. package/dist/types/utils/promise.d.ts +4 -0
  28. package/dist/types/utils/sleep.d.ts +2 -0
  29. package/dist/web-sdk.esm.js +1525 -0
  30. package/dist/web-sdk.js +1532 -0
  31. package/package.json +44 -0
  32. package/rollup.config.js +39 -0
  33. package/tsconfig.json +22 -0
@@ -0,0 +1,115 @@
1
+ export declare enum Boolean {
2
+ yes = 1,
3
+ no = 0
4
+ }
5
+ export declare enum ApiResponseCode {
6
+ SDK_ERROR = -10000,
7
+ NETWORK_ERROR = -9999,
8
+ MAKE_SIGN_FAIL = -9998,
9
+ REQUEST_SINGLETON_LOCK_FAIL = -9997,
10
+ PARAMS_INVALID = -9996,
11
+ SUCCESS = 0
12
+ }
13
+ export declare enum PushMessageType {
14
+ CREATE_FEED = 0,
15
+ UPDATE_FEED = 1,
16
+ ADD_MESSAGE = 2,
17
+ UPDATE_MESSAGE = 3,
18
+ UPDATE_USER_DATA = 4,
19
+ USER_LOGIN = 5,
20
+ READ_MESSAGE = 6,
21
+ PONG_MESSAGE = 8,
22
+ DELETE_MESSAGE = 9,
23
+ UPDATE_GROUP = 12,
24
+ DELETE_GROUP = 13,
25
+ UPDATE_LOGIN_USER = 17,
26
+ UPDATE_MESSAGE_REACTION = 19,
27
+ ADD_GROUP_MEMBER = 21,
28
+ DEL_GROUP_MEMBER = 22,
29
+ ADD_CONTACTS = 23,
30
+ UPDATE_CONTACTS = 24,
31
+ DEL_CONTACTS = 25,
32
+ BLOCK_USER = 26,
33
+ DEVICE_CODE = 27,
34
+ MSG_OPEN_CLOCK = 28,
35
+ DELETE_SECRET_CHAT = 29,
36
+ DELETE_FEED = 30,
37
+ FAVORITE_UPDATE = 31,
38
+ STICKERS_UPDATE = 32,// 系统商店表情包 状态更新
39
+ CUSTOM_STICKERS_UPDATE = 33,// 用户自定义表情包 更新
40
+ MANAGE_DEVICE_UPDATE = 34,// 用户设备列表更新
41
+ MASS_MESSAGE_UPDATE = 35,// 群发助手列表更新
42
+ CHAT_WALLPAPER_DELETE = 36,// 聊天壁纸列表更新
43
+ CHAT_WALLPAPER_ADD = 37,
44
+ CONTACT_REQUEST = 40,
45
+ USER_PREFERENCE_CHANGE = 38,
46
+ UPDATE_GROUP_PIN = 41,
47
+ RTC_CANCEL = 46,// 通话取消
48
+ ADD_FEED_FOLDER = 43,
49
+ UPDATE_FEED_FOLDER = 44,
50
+ UPDATE_FOLDER_FEED_LIST = 47,
51
+ DELETE_FEED_FOLDER = 45,
52
+ UPDATE_CHATTER = 42,
53
+ PAPER_KEY = 48,
54
+ PAPER_KEY_LOG = 49,
55
+ USER_LOGIN_SCAN = 50,
56
+ RTC_RINGING = 51,// 通话取消
57
+ ON_UPDATE_PRIVATE_SETTING = 52,
58
+ ON_DELETE_PRIVATE_SETTING = 53,
59
+ ON_UPDATE_LOGIN_PRIVATE_SETTING = 54,
60
+ PUSH_LIVE_MESSAGE = 56,
61
+ BIG_PACKAGE_PUSH = 126,
62
+ KICK_OUT_DEVICE = 127,
63
+ CLEAR_HISTORY = 128,
64
+ CLEAR_DATA = 255
65
+ }
66
+ export declare enum ChatType {
67
+ /**
68
+ * 单聊
69
+ */
70
+ singleChat = 1,
71
+ /**
72
+ * 群聊
73
+ */
74
+ groupChat = 2
75
+ }
76
+ export declare enum MessageKind {
77
+ text = 0,//普通
78
+ system = 1
79
+ }
80
+ export declare enum MessageType {
81
+ text = 0,
82
+ image = 1,
83
+ card = 2,
84
+ audio = 3,
85
+ video = 4,
86
+ file = 5,
87
+ mergeForward = 6,//合并转发
88
+ sticker = 7,//表情
89
+ richText = 8,//富文本消息
90
+ custom = 9
91
+ }
92
+ export declare enum MessageSendStatus {
93
+ success = 0,
94
+ sending = 1,
95
+ failed = 2
96
+ }
97
+ /** 群成员角色 */
98
+ export declare enum GroupRole {
99
+ Owner = 1,
100
+ Admin = 2,
101
+ Common = 3,
102
+ Bot = 4
103
+ }
104
+ export declare enum MessageOperation {
105
+ normal = 0,//正常
106
+ recall = 1
107
+ }
108
+ export declare enum GroupType {
109
+ /** 加密群聊 */
110
+ private = 1,
111
+ /** 超级群聊 */
112
+ public = 0,
113
+ /** 匿名群聊,新增群聊类型 */
114
+ anonymous = 2
115
+ }
@@ -0,0 +1,2 @@
1
+ export * from './business';
2
+ export * from './sdk';
@@ -0,0 +1,5 @@
1
+ export declare enum LogLevel {
2
+ error = "ERROR",
3
+ warning = "WARNING",
4
+ info = "INFO"
5
+ }
@@ -0,0 +1,56 @@
1
+ import { Feed, Message } from './interfaces';
2
+ export declare const CHAT_SDK_EVENT: {
3
+ /**
4
+ * sdk用户已登录,可以调用发送消息等API
5
+ */
6
+ readonly SDK_READY: "sdkReady";
7
+ /**
8
+ * sdk用户已登出,无法调用发送消息等API,需要重新登录
9
+ */
10
+ readonly SDK_NOT_READY: "sdkNotReady";
11
+ /**
12
+ * feed列表有更新
13
+ */
14
+ readonly FEED_LIST_UPDATED: "feedListUpdated";
15
+ /**
16
+ * sdk收到新message
17
+ */
18
+ readonly MESSAGE_RECEIVED: "messageReceived";
19
+ /**
20
+ * message有更新
21
+ */
22
+ readonly MESSAGE_UPDATED: "messageUpdated";
23
+ /**
24
+ * sdk收到message已读回执
25
+ */
26
+ readonly MESSAGE_RECEIPT_RECEIVED: "messageReceiptReceived";
27
+ /**
28
+ * sdk收到直播间message
29
+ */
30
+ readonly ROOM_MESSAGE_RECEIVED: "roomMessageReceived";
31
+ };
32
+ export type CHAT_SDK_EVENT_MAP = {
33
+ [CHAT_SDK_EVENT.SDK_READY]: void;
34
+ [CHAT_SDK_EVENT.SDK_NOT_READY]: void;
35
+ [CHAT_SDK_EVENT.FEED_LIST_UPDATED]: {
36
+ is_sync_completed: boolean;
37
+ list: Feed[];
38
+ };
39
+ [CHAT_SDK_EVENT.MESSAGE_RECEIVED]: Message;
40
+ [CHAT_SDK_EVENT.MESSAGE_UPDATED]: Message;
41
+ [CHAT_SDK_EVENT.MESSAGE_RECEIPT_RECEIVED]: {
42
+ /**
43
+ * feed id
44
+ */
45
+ feed_id: string;
46
+ /**
47
+ * 已读消息id列表
48
+ */
49
+ message_ids: string[];
50
+ /**
51
+ * 发送已读回执的用户id
52
+ */
53
+ reader_user_ids: string[];
54
+ };
55
+ [CHAT_SDK_EVENT.ROOM_MESSAGE_RECEIVED]: string;
56
+ };
@@ -0,0 +1,21 @@
1
+ import * as enums from './enums';
2
+ import * as events from './events';
3
+ import * as interfaces from './interfaces';
4
+ import { ChatSDKConfig } from './interfaces/sdk';
5
+ import ChatSDK from './modules/ChatSDK';
6
+ export declare function create(config: ChatSDKConfig): ChatSDK;
7
+ export declare const utils: {
8
+ parseSystemMessageContent: (str: string) => {
9
+ text?: string;
10
+ text_i18n?: Record<string, string>;
11
+ };
12
+ parseTextMessageContent: (str: string) => {
13
+ text?: string;
14
+ client_msg_id?: string;
15
+ };
16
+ parseCustomMessageContent: <T = any>(str: string) => {
17
+ client_msg_id?: string;
18
+ content?: T;
19
+ };
20
+ };
21
+ export { ChatSDK, enums, events, interfaces };
@@ -0,0 +1,141 @@
1
+ import { ChatType, MessageKind, MessageOperation, MessageType } from '../enums';
2
+ export type ApiResponse<T = any> = {
3
+ code: number;
4
+ data: T;
5
+ msg: string;
6
+ msg_i18n?: Record<string, string>;
7
+ };
8
+ export type User = {
9
+ id: string;
10
+ email: string;
11
+ phone: string;
12
+ name: string;
13
+ avatar: string;
14
+ last_active_at: string;
15
+ logoff: number;
16
+ language: string;
17
+ token: string;
18
+ token_expired: string;
19
+ first_name: string;
20
+ last_name: string;
21
+ is_online: boolean;
22
+ last_online_time: number;
23
+ key: string;
24
+ session_id: string;
25
+ };
26
+ export type Feed = {
27
+ /**
28
+ * feedId
29
+ */
30
+ id: string;
31
+ /**
32
+ * 会话id
33
+ */
34
+ chat_id: string;
35
+ /**
36
+ * 单聊时对方的id
37
+ */
38
+ target_id: string;
39
+ /**
40
+ * 聊天类型
41
+ */
42
+ chat_type: ChatType;
43
+ /**
44
+ * 会话成员id
45
+ */
46
+ chat_member: string[];
47
+ /**
48
+ * 头像
49
+ */
50
+ avatar: string;
51
+ /**
52
+ * 会话名称
53
+ */
54
+ name: string;
55
+ /**
56
+ * 未读消息ids
57
+ */
58
+ unread_message_ids?: string[];
59
+ /**
60
+ * 未读数
61
+ */
62
+ badge: number;
63
+ /**
64
+ * 最后更新时间,'2025-09-18T02:24:25Z'
65
+ */
66
+ last_updated_at: string;
67
+ /**
68
+ * 首条消息的position
69
+ */
70
+ first_position: number;
71
+ /**
72
+ * 最后一条消息的position
73
+ */
74
+ last_message_position: number;
75
+ /**
76
+ * 最后一条消息的发送时间
77
+ */
78
+ last_message_send_at: string;
79
+ /**
80
+ * 最后一条消息的内容(content)
81
+ */
82
+ last_message: string;
83
+ /**
84
+ * 最后一条消息的来源类别
85
+ */
86
+ last_message_kind_id: MessageKind;
87
+ /**
88
+ * 最后一条消息的消息类别
89
+ */
90
+ last_message_type_id: MessageType;
91
+ };
92
+ export type Message = {
93
+ /**
94
+ * 消息id
95
+ */
96
+ id: string;
97
+ /**
98
+ * chat id
99
+ */
100
+ chat_id: string;
101
+ /**
102
+ * 消息位置
103
+ */
104
+ position: number;
105
+ /**
106
+ * 发送者Id
107
+ */
108
+ sender_id: string;
109
+ /**
110
+ * 消息来源类别,系统触发,普通触发
111
+ */
112
+ message_kind_id: MessageKind;
113
+ /**
114
+ * 消息类别
115
+ */
116
+ message_type_id: MessageType;
117
+ /**
118
+ * 消息内容
119
+ */
120
+ content: string;
121
+ /**
122
+ * 发送时间
123
+ */
124
+ send_at: string;
125
+ /**
126
+ * 已读信息的用户id
127
+ */
128
+ reader_ids: string[];
129
+ /**
130
+ * 存放对某些隐藏消息的用户的Id
131
+ */
132
+ hide_ids: string[];
133
+ /**
134
+ * 消息操作状态
135
+ */
136
+ operation: MessageOperation;
137
+ /**
138
+ * 消息操作人id
139
+ */
140
+ operation_user_id: string;
141
+ };
@@ -0,0 +1,3 @@
1
+ export * from './business';
2
+ export * from './pushMessage';
3
+ export * from './sdk';
@@ -0,0 +1,33 @@
1
+ import { PushMessageType } from '../enums';
2
+ import { Feed, Message } from './business';
3
+ export type PushMessageBase<T = PushMessageType, U = unknown> = {
4
+ id: string;
5
+ timestamp?: number;
6
+ type: T;
7
+ content: U;
8
+ };
9
+ export type PushMessagePong = PushMessageBase<PushMessageType.PONG_MESSAGE>;
10
+ export type PushMessageBigPackageContent = {
11
+ big_push: PushMessage[];
12
+ };
13
+ export type PushMessageBigPackage = PushMessageBase<PushMessageType.BIG_PACKAGE_PUSH, PushMessageBigPackageContent>;
14
+ export type PushMessageCreateFeed = PushMessageBase<PushMessageType.CREATE_FEED, Feed>;
15
+ export type PushMessageUpdateFeeds = PushMessageBase<PushMessageType.UPDATE_FEED>;
16
+ export type PushMessageAddMessage = PushMessageBase<PushMessageType.ADD_MESSAGE, Message>;
17
+ export type PushMessageUpdateMessage = PushMessageBase<PushMessageType.UPDATE_MESSAGE, Message>;
18
+ export type PushMessageUserLogin = PushMessageBase<PushMessageType.USER_LOGIN>;
19
+ export type PushMessageDeleteFeed = PushMessageBase<PushMessageType.DELETE_FEED, {
20
+ /**
21
+ * feed id
22
+ */
23
+ id: string;
24
+ }>;
25
+ export type PushMessagePushLiveMessage = PushMessageBase<PushMessageType.PUSH_LIVE_MESSAGE, string>;
26
+ export type PushMessageReadMessage = PushMessageBase<PushMessageType.READ_MESSAGE, {
27
+ chat_id: string;
28
+ message_ids: string[];
29
+ reader_ids: string[];
30
+ threadid: string;
31
+ }>;
32
+ export type SpecialPushMessage = PushMessagePong | PushMessageBigPackage | PushMessageCreateFeed | PushMessageUpdateFeeds | PushMessageAddMessage | PushMessageUpdateMessage | PushMessageUserLogin | PushMessageDeleteFeed | PushMessagePushLiveMessage | PushMessageReadMessage;
33
+ export type PushMessage = PushMessageBase<Exclude<PushMessageType, SpecialPushMessage['type']>> | SpecialPushMessage;
@@ -0,0 +1,74 @@
1
+ import { Feed, Message } from '../business';
2
+ import { HttpClientResponse } from './common';
3
+ export type SDKLoginReq = {
4
+ user_code: string;
5
+ };
6
+ export type SDKGetFeedListRespData = {
7
+ /**
8
+ * feed列表
9
+ */
10
+ list: Feed[];
11
+ /**
12
+ * 是否拉取完成
13
+ */
14
+ is_sync_completed: boolean;
15
+ };
16
+ export type SDKGetFeedListResp = HttpClientResponse<SDKGetFeedListRespData>;
17
+ export type SDKGetFeedMessageListReq = {
18
+ /**
19
+ * feed id
20
+ */
21
+ feed_id: string;
22
+ /**
23
+ * 上一次分页查询返回的last_message_position
24
+ */
25
+ last_message_position?: number;
26
+ limit: number;
27
+ };
28
+ export type SDKGetFeedMessageListRespData = {
29
+ /**
30
+ * 是否还有更多
31
+ */
32
+ has_more: boolean;
33
+ /**
34
+ * 消息列表
35
+ */
36
+ list: Message[];
37
+ /**
38
+ * 最后一条消息的position,下一页查询时需要携带
39
+ */
40
+ last_message_position?: number;
41
+ };
42
+ export type SDKGetFeedMessageListResp = HttpClientResponse<SDKGetFeedMessageListRespData>;
43
+ export type SDKCreateCustomMessageReq<T = any> = {
44
+ feed_id: string;
45
+ /**
46
+ * 自定义消息内容
47
+ */
48
+ content: T;
49
+ /**
50
+ * 客户端自定义的消息id,发送成功后content会带
51
+ */
52
+ client_msg_id?: string;
53
+ };
54
+ export type SDKSendMessageReadReceiptReq = {
55
+ /**
56
+ * feed id
57
+ */
58
+ feed_id: string;
59
+ /**
60
+ * 消息id列表
61
+ */
62
+ message_ids: string[];
63
+ };
64
+ export type SDKGetRoomRecentMessageListResp = HttpClientResponse<string[]>;
65
+ export type SDKSendMessageToRoomReq = {
66
+ /**
67
+ * 直播间id
68
+ */
69
+ room_id: string;
70
+ /**
71
+ * 内容
72
+ */
73
+ content: string;
74
+ };
@@ -0,0 +1,42 @@
1
+ export type ChatSDKConfig = {
2
+ /**
3
+ * API服务器域名
4
+ */
5
+ httpHost: string;
6
+ /**
7
+ * websocket服务器域名
8
+ */
9
+ websocketHost: string;
10
+ /**
11
+ * 为http请求添加x-developer消息头(调试用)
12
+ */
13
+ developer?: string;
14
+ };
15
+ type ChatSDKContextBase = {
16
+ isReady: boolean;
17
+ deviceId: string | null;
18
+ };
19
+ type ChatSDKContextLogin = ChatSDKContextBase & {
20
+ isLogin: true;
21
+ loginUser: {
22
+ userId: string;
23
+ secretKey: string;
24
+ sessionId: string;
25
+ };
26
+ };
27
+ type ChatSDKContextNotLogin = ChatSDKContextBase & {
28
+ isLogin: false;
29
+ };
30
+ export type ChatSDKContext = ChatSDKContextLogin | ChatSDKContextNotLogin;
31
+ export type HttpClientResponseOk<T = unknown> = {
32
+ ok: true;
33
+ data: T;
34
+ };
35
+ export type HttpClientResponseFail = {
36
+ ok: false;
37
+ code: number;
38
+ msg: string;
39
+ msg_i18n?: Record<string, string>;
40
+ };
41
+ export type HttpClientResponse<T = unknown> = HttpClientResponseOk<T> | HttpClientResponseFail;
42
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './api';
2
+ export * from './common';
@@ -0,0 +1,51 @@
1
+ export type EventType = string | symbol;
2
+ export type Handler<T = unknown> = (event: T) => void;
3
+ export type WildcardHandler<T = Record<string, unknown>> = (type: keyof T, event: T[keyof T]) => void;
4
+ export type EventHandlerList<T = unknown> = Array<Handler<T>>;
5
+ export type WildCardEventHandlerList<T = Record<string, unknown>> = Array<WildcardHandler<T>>;
6
+ export type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<keyof Events | '*', EventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>>;
7
+ export type GenericEventHandler<Events extends Record<EventType, unknown>> = Handler<Events[keyof Events]> | WildcardHandler<Events>;
8
+ export default class Base<Events extends Record<EventType, unknown>> {
9
+ all: EventHandlerMap<Events>;
10
+ constructor(all?: EventHandlerMap<Events>);
11
+ /**
12
+ * Register an event handler for the given type.
13
+ * @param {string|symbol} type Type of event to listen for, or `'*'` for all events
14
+ * @param {Function} handler Function to call in response to given event
15
+ * @memberOf Emitter
16
+ * @returns {Function} Function to remove the event handler
17
+ */
18
+ on<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): () => void;
19
+ on(type: '*', handler: WildcardHandler<Events>): () => void;
20
+ /**
21
+ * Remove an event handler for the given type.
22
+ * If `handler` is omitted, all handlers of the given type are removed.
23
+ *
24
+ * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)
25
+ * @param {Function} [handler] Handler function to remove
26
+ * @memberOf mitt
27
+ */
28
+ off<Key extends keyof Events>(type: Key, handler?: Handler<Events[Key]>): void;
29
+ off(type: '*', handler: WildcardHandler<Events>): void;
30
+ /**
31
+ * Invoke all handlers for the given type.
32
+ * If present, `'*'` handlers are invoked after type-matched handlers.
33
+ *
34
+ * Note: Manually firing '*' handlers is not supported.
35
+ *
36
+ * @param {string|symbol} type The event type to invoke
37
+ * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler
38
+ * @memberOf Emitter
39
+ */
40
+ emit<Key extends keyof Events>(type: Key, evt: Events[Key]): void;
41
+ emit<Key extends keyof Events>(type: undefined extends Events[Key] ? Key : never): void;
42
+ /**
43
+ * Register an event handler for the given type that will be invoked only once.
44
+ *
45
+ * @param {string|symbol} type Type of event to listen for, or `'*'` for all events
46
+ * @param {Function} handler Function to call in response to given event
47
+ * @memberOf Emitter
48
+ */
49
+ once<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;
50
+ once(type: '*', handler: WildcardHandler<Events>): void;
51
+ }
@@ -0,0 +1,21 @@
1
+ import { PushMessage } from '../interfaces';
2
+ import { ChatSDKContext } from '../interfaces/sdk';
3
+ import Base from './Base';
4
+ import Logger from './Logger';
5
+ export type BusinessWebsocketConfig = {
6
+ host: string;
7
+ context: ChatSDKContext;
8
+ logger: Logger;
9
+ };
10
+ export default class BusinessWebsocket extends Base<{
11
+ message: PushMessage;
12
+ kickoff: void;
13
+ }> {
14
+ private host;
15
+ private context;
16
+ private logger;
17
+ private ws;
18
+ constructor(config: BusinessWebsocketConfig);
19
+ connect(): void;
20
+ disconnect(): void;
21
+ }
@@ -0,0 +1,120 @@
1
+ import { LogLevel } from '../enums';
2
+ import { CHAT_SDK_EVENT_MAP } from '../events';
3
+ import { Feed, Message } from '../interfaces';
4
+ import { ChatSDKConfig, HttpClientResponse, SDKCreateCustomMessageReq, SDKGetFeedListResp, SDKGetFeedMessageListReq, SDKGetFeedMessageListResp, SDKGetRoomRecentMessageListResp, SDKLoginReq, SDKSendMessageReadReceiptReq, SDKSendMessageToRoomReq } from '../interfaces/sdk';
5
+ import Base from './Base';
6
+ export default class ChatSDK extends Base<CHAT_SDK_EVENT_MAP> {
7
+ private context;
8
+ private version;
9
+ private singletonLock;
10
+ private logger;
11
+ private httpClient;
12
+ private feedCache;
13
+ private ws;
14
+ private pushMessageProcessor;
15
+ constructor(config: ChatSDKConfig);
16
+ private init;
17
+ private requestDeviceId;
18
+ private saveContext;
19
+ private loadContext;
20
+ private applyLoginStatus;
21
+ private loadFeedList;
22
+ /**
23
+ * SDK 是否已就绪(登录成功且 WebSocket 已连接)。
24
+ * @returns {boolean} true 表示可用,false 表示未就绪
25
+ */
26
+ isReady(): boolean;
27
+ /**
28
+ * 设置 SDK 的日志级别。
29
+ * @param {LogLevel} level 要设置的日志级别
30
+ */
31
+ setLogLevel(level: LogLevel): void;
32
+ /**
33
+ * 使用一次性 userCode 登录,建立会话并连接 WebSocket。
34
+ * 成功后会触发事件:SDK_READY。
35
+ * @param {SDKLoginReq} req 登录请求参数(包含 userCode)
36
+ * @returns {Promise<HttpClientResponse>} 成功返回 ok,失败返回错误信息
37
+ */
38
+ login(req: SDKLoginReq): Promise<HttpClientResponse>;
39
+ /**
40
+ * 退出当前登录用户并断开 WebSocket。
41
+ * 成功后会触发事件:SDK_NOT_READY。
42
+ * @returns {Promise<HttpClientResponse>} 成功返回 ok,失败返回错误信息
43
+ */
44
+ logout(): Promise<HttpClientResponse>;
45
+ private handleKickoff;
46
+ /**
47
+ * 获取当前登录用户的 userId。
48
+ * @returns {string | null} 已登录返回 userId,未登录返回 null
49
+ */
50
+ getLoginUser(): string | null;
51
+ /**
52
+ * 创建单聊feed,如果已创建就返回已创建的feed
53
+ * @param user_id
54
+ * @returns
55
+ */
56
+ createSingleChatFeed(user_id: string): Promise<HttpClientResponse<Feed>>;
57
+ /**
58
+ * 删除指定feed
59
+ * @param feed_id
60
+ * @returns
61
+ */
62
+ deleteFeed(feed_id: string): Promise<HttpClientResponse>;
63
+ /**
64
+ * 获取当前用户的 Feed 列表
65
+ * @returns
66
+ */
67
+ getFeedList(): Promise<SDKGetFeedListResp>;
68
+ /**
69
+ * 根据 Feed ID 获取详情
70
+ * @param feed_id
71
+ * @returns
72
+ */
73
+ getFeedDetail(feed_id: string): Promise<HttpClientResponse<Feed | null>>;
74
+ /**
75
+ * 获取某个 Feed 的消息列表
76
+ * @param req
77
+ * @returns
78
+ */
79
+ getFeedMessageList(req: SDKGetFeedMessageListReq): Promise<SDKGetFeedMessageListResp>;
80
+ /**
81
+ * 本地创建一条 Feed 自定义消息
82
+ * @param req
83
+ * @returns
84
+ */
85
+ createCustomMessage<T = any>(req: SDKCreateCustomMessageReq<T>): HttpClientResponse<Message>;
86
+ /**
87
+ * 发送一条消息到指定 Feed。
88
+ */
89
+ sendMessageToFeed(message: Message): Promise<HttpClientResponse>;
90
+ /**
91
+ * 发送消息已读回执
92
+ * @param req
93
+ * @returns
94
+ */
95
+ sendMessageReadReceipt(req: SDKSendMessageReadReceiptReq): Promise<HttpClientResponse>;
96
+ /**
97
+ * 加入直播间
98
+ * @param {string} room_id 直播间id
99
+ * @returns {Promise<HttpClientResponse>} 请求结果
100
+ */
101
+ joinRoom(room_id: string): Promise<HttpClientResponse>;
102
+ /**
103
+ * 离开直播间
104
+ * @param {string} room_id 直播间id
105
+ * @returns {Promise<HttpClientResponse>} 请求结果
106
+ */
107
+ leaveRoom(room_id: string): Promise<HttpClientResponse>;
108
+ /**
109
+ * 获取直播间的最近50条消息
110
+ * @param room_id 直播间id
111
+ * @returns
112
+ */
113
+ getRoomRecentMessageList(room_id: string): Promise<SDKGetRoomRecentMessageListResp>;
114
+ /**
115
+ * 向直播间发送一条消息。
116
+ * @param req
117
+ * @returns
118
+ */
119
+ sendMessageToRoom(req: SDKSendMessageToRoomReq): Promise<HttpClientResponse>;
120
+ }