import { ChatSDK } from '@tencentcloud/chat';
/**
* TUILogin login 参数信息(未说明的参数均可忽略)
* @interface LoginParams
* @property {number} SDKAppID 云通信应用的 SDKAppID
* @property {string} userID 用户 ID
* @property {string} userSig 用户登录即时通信 IM 的密码,其本质是对 UserID 等信息加密后得到的密文。
具体生成方法请参见{@link https://cloud.tencent.com/document/product/269/32688 生成 UserSig}
* @property {any} [TIMPush] uniapp 推送插件 默认 undefined
* @property {any} [pushConfig] uniapp 推送插件配置信息 默认 undefined
* @property {any} [TUIOfflinePush] uniapp 离线推送插件 默认 undefined(已废弃,推荐使用 TIMPush)
* @property {any} [offlinePushConfig] uniapp 离线推送插件配置信息 默认 undefined(已废弃,推荐使用 TIMPush 对应的 pushConfig 参数)
* @property {boolean} [useUploadPlugin] 是否使用上传插件 默认 false
* @property {string} [fileUploadProxy] 图片、视频、文件上传代理地址
* @property {string} [fileDownloadProxy] 图片、视频、文件下载代理地址
* @property {string} [proxyServer] 设置 IM 服务代理服务
* @property {string} [framework] 单前使用的框架 vue2 或 vue3,请务必准确填写,用于分析 badcase
*/
interface LoginParams {
SDKAppID: number;
userID: string;
userSig: string;
TIMPush?: any;
pushConfig?: any;
TUIOfflinePush?: any;
offlinePushConfig?: any;
useUploadPlugin?: boolean;
useProfanityFilterPlugin?: boolean;
unlimitedAVChatRoom?: boolean;
scene?: string;
fileUploadProxy?: string;
fileDownloadProxy?: string;
proxyServer?: string;
devMode?: boolean;
framework?: string;
}
type func = (...args: any[]) => any;
/**
* 调用服务的参数信息
* @interface CallServiceParams
* @property {string} serviceName 服务名
* @property {string} method 调用的方法名
* @property {any} params 业务参数
* @property {func} [callback] 回调函数
*/
interface CallServiceParams {
serviceName: string;
method: string;
params: Record;
callback?: func;
}
/**
* 扩展配置信息
* @interface ExtensionInfo
* @property {number} weight 扩展组件权重,用于排序,weight 值越大显示位置越靠前
* @property {string} text 扩展组件显示的名称
* @property {string} icon 扩展组件图标 url
* @property {object} data 自定义扩展信息
* @property {object} listener 回调函数
* @property {func} [listener.onClicked] 页面点击回调
* @property {func} [listener.onLongPressed] 页面长按回调
* @property {func} [listener.onTouched] 屏幕触摸回调
* @property {func} [listener.onSwiped] 页面左右滑动回调
*/
interface ExtensionInfo {
weight: number;
text: string;
icon: string;
data: Record;
listener: {
onClicked?: func;
onLongPressed?: func;
onTouched?: func;
onSwiped?: func;
};
}
interface ITUIService {
onCall(method: string, params: object, callback?: func): void;
}
/**
* @interface TUICore
*/
interface ITUICore {
/**
* 注册服务
* @function
* @param {string} serviceName 服务名
* @param {ITUIService} service 服务实例
* @example
* TUICore.registerService(TUIConstants.TUICall.SERVICE.NAME, this);
*/
registerService(serviceName: string, service: any): void;
/**
* 反注册服务
* @function
* @param {string} serviceName 服务名
* @example
* TUICore.unregisterService(TUIConstants.TUICall.SERVICE.NAME);
*/
unregisterService(serviceName: string): void;
/**
* 获取服务
* @function
* @param {string} serviceName 服务名
* @example
* TUICore.getService(TUIConstants.TUICall.SERVICE.NAME);
*/
getService(serviceName: string): ITUIService;
/**
* 调用服务
* @function
* @param {CallServiceParams} options 调用服务的参数
* @example
* TUICore.callService({
* serviceName: TUIConstants.TUICall.SERVICE.NAME,
* method: TUIConstants.TUICall.SERVICE.METHOD.CALL,
* params: {
* callType: 1,
* mediaType: 2
* },
* callback: (result) => {
* // todo
* },
* });
*/
callService(options: CallServiceParams): void;
/**
* 注册扩展组件
* @function
* @param {string} extensionID 扩展点 ID
* @param {ITUIExtension} extension
* @example
* TUICore.registerExtension(TUIConstants.TUIChat.EXTENSION.INPUT_TOOLBAR, this);
*/
registerExtension(extensionID: string, extension: any): void;
/**
* 反注册扩展组件
* @function
* @param {string} extensionID 扩展点 ID
* @param {ITUIExtension} extension
* @example
* TUICore.unregisterExtension(TUIConstants.TUIChat.EXTENSION.INPUT_TOOLBAR, this);
*/
unregisterExtension(extensionID: string, extension: any): void;
/**
* 获取注册扩展组件列表
* @function
* @param {string} extensionID 扩展点 ID
* @param {object} [params] 扩展点参数
* @example
* TUICore.getExtension(TUIConstants.TUIChat.EXTENSION.INPUT_TOOLBAR, { filterVoice: true });
*/
getExtensionList(extensionID: string, params?: object): Array;
/**
* 注册广播监听
* @function
* @param {string} eventName 事件名
* @param {string} subKey 事件的具体操作
* @param {ITUINotification} notification 事件监听者
* @example
* TUICore.registerEvent(TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED, this);
*/
registerEvent(eventName: string, subKey: string, notification: any): void;
/**
* 反注册广播监听
* @function
* @param {string} eventName 事件名
* @param {string} subKey 事件的具体操作
* @param {ITUINotification} notification 事件监听者
* @example
* TUICore.unregisterEvent(TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED, this);
*/
unregisterEvent(eventName: string, subKey: string, notification: any): void;
/**
* 广播消息通知
* @function
* @param {string} eventName 事件名
* @param {string} subKey 事件的具体操作
* @param {object} [params] 业务数据
* @example
* TUICore.notifyEvent(TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED, TUIConstants.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS);
*/
notifyEvent(eventName: string, subKey: string, params?: object): void;
}
interface GetContextResult {
chat: ChatSDK;
SDKAppID: number;
userID: string;
userSig: string;
}
/**
* @interface TUILogin
*/
interface ITUILogin {
/**
* 登录 Chat SDK
* @function
* @param {LoginParams} options 登录参数
* @example
* TUILogin.login({
* SDKAppID: xxx,
* userID: 'xxx',
* userSig: 'xxx',
* useUploadPlugin: true, // 使用文件上传插件
* });
*/
login(options: LoginParams): Promise;
/**
* 登出 Chat SDK
* @function
* @example
* let promise = TUILogin.logout();
* promise.then(() => {
* // 登出成功后进行相关业务逻辑处理
* })
*/
logout(): Promise;
/**
* 销毁 Chat SDK 实例,SDK 会先 logout,然后断开 WebSocket 长连接,并释放资源。
* @function
* @example
* let promise = TUILogin.destroy();
*/
destroy(): Promise;
/**
* 设置 Chat SDK 日志级别
* @function
* @param {number} level 日志级别
* - 0 普通级别,日志量较多,接入时建议使用
* - 1 release级别,SDK 输出关键信息,生产环境时建议使用
* - 2 告警级别,SDK 只输出告警和错误级别的日志
* - 3 错误级别,SDK 只输出错误级别的日志
* - 4 无日志级别,SDK 将不打印任何日志
* @example
* TUILogin.setLogLevel(0)
*/
setLogLevel(level: number): void;
/**
* 获取 TUILogin 当前上下文信息
* @function
* @example
* const { chat, SDKAppID, userID, userSig } = TUILogin.getContext();
* // chat - Chat SDK 实例
* // SDKAppID - 即时通信应用 AppID
* // userID - 用户 ID
* // userSig - 用户登录前面
*/
getContext(): GetContextResult;
}
declare const TUIConstants: {
TUILogin: {
EVENT: {
LOGIN_STATE_CHANGED: string;
};
EVENT_SUB_KEY: {
USER_LOGIN_SUCCESS: string;
USER_LOGOUT_SUCCESS: string;
USER_KICKED_OFFLINE: string;
USER_SIG_EXPIRED: string;
};
};
TUIConversation: {
SERVICE: {
NAME: string;
METHOD: {
CREATE_CONVERSATION: string;
HIDE_CONVERSATION_HEADER: string;
};
};
EXTENSION: {
CONV_POP_MENU: {
EXT_ID: string;
};
CONV_GROUP: {
EXT_ID: string;
};
};
};
TUIChat: {
SERVICE: {
NAME: string;
METHOD: {
UPDATE_MESSAGE_LIST: string;
CLOSE_MESSAGE_POP_MENU: string;
SEND_CUSTOM_MESSAGE: string;
SEND_TEXT_MESSAGE: string;
SET_CHAT_TYPE: string;
UPDATE_MESSAGE_INFO: string;
};
};
EXTENSION: {
INPUT_MORE: {
EXT_ID: string;
};
MSG_POP_MENU: {
EXT_ID: string;
};
CHAT_HEADER: {
EXT_ID: string;
};
};
TYPE: {
C2C: string;
GROUP: string;
CUSTOMER_SERVICE: string;
ROOM: string;
};
EVENT: {
CHAT_STATE_CHANGED: string;
CHAT_TYPE_CHANGED: string;
};
EVENT_SUB_KEY: {
CHAT_OPENED: string;
CHANGE_SUCCESS: string;
};
FEATURE: {
DownloadFile: string;
CopyMessage: string;
DeleteMessage: string;
RevokeMessage: string;
QuoteMessage: string;
ForwardMessage: string;
TranslateMessage: string;
VoiceToText: string;
MultiSelection: string;
EmojiReaction: string;
InputEmoji: string;
InputStickers: string;
InputImage: string;
InputVoice: string;
InputVideo: string;
InputFile: string;
InputEvaluation: string;
InputQuickReplies: string;
InputMention: string;
MessageSearch: string;
ReadStatus: string;
};
};
TUIGroup: {
SERVICE: {
NAME: string;
METHOD: {
CREATE_GROUP: string;
OPEN_GROUP_MANAGEMENT: string;
SELECT_GROUP_MEMBER: string;
};
};
};
TUIContact: {
SERVICE: {
NAME: string;
METHOD: {
SELECT_FRIEND: string;
};
};
EXTENSION: {
CONTACT_LIST: {
EXT_ID: string;
};
};
};
TUISearch: {
SERVICE: {
NAME: string;
METHOD: {
SEARCH_GROUP: string;
SEARCH_USER: string;
SEARCH_FRIEND: string;
SEARCH_GROUP_MEMBER: string;
};
};
EXTENSION: {
SEARCH_MORE: {
EXT_ID: string;
};
};
};
TUICalling: {
SERVICE: {
NAME: string;
METHOD: {
START_CALL: string;
};
};
};
TUIRoom: {
SERVICE: {
NAME: string;
};
};
TUIEmojiPlugin: {
SERVICE: {
NAME: string;
METHOD: {
CLOSE_EMOJI_DETAIL: string;
};
};
};
TUITranslate: {
EVENT: {
LANGUAGE_CHANGED: string;
};
EVENT_SUB_KEY: {
CHANGE_SUCCESS: string;
};
};
TUITranslatePlugin: {
SERVICE: {
NAME: string;
};
};
TUIVoiceToTextPlugin: {
SERVICE: {
NAME: string;
};
};
TUICustomerServicePlugin: {
SERVICE: {
NAME: string;
METHOD: {
ACTIVE_CONVERSATION: string;
FILTER_MESSAGE: string;
};
};
EXTENSION: {};
};
TUIPushPlugin: {
SERVICE: {
NAME: string;
};
};
TUIChatbotPlugin: {
SERVICE: {
NAME: string;
};
};
TUITheme: {
EVENT: {
THEME_CHANGED: string;
};
EVENT_SUB_KEY: {
CHANGE_SUCCESS: string;
};
};
};
declare const tuiCore: ITUICore;
declare const tuiLogin: ITUILogin;
export { CallServiceParams, ExtensionInfo, LoginParams, TUIConstants, tuiCore as TUICore, tuiLogin as TUILogin, tuiCore as default, func };