import { SIMTypes } from "./index.i";
import { IMReceiveTypes } from "./IM.i";
export declare namespace GroupTypes {
    enum GroupUserRoleEnum {
        GroupOwner = 0,
        GroupAdmin = 1,
        GroupUser = 2
    }
    interface GetAllUserGroupResItem {
        /** 群组Id */
        "id": string;
        /** 群组名称 */
        "name": string;
        /** 群组头像 */
        "avatar": string;
        /** 群主ID */
        "ownerId": string;
        /** 人数上限 */
        "maxCount": number;
        /** 用户状态: 1需要审核，0不需要审核 */
        "isReview": 0 | 1;
        /** 群组类型 1内部群，3事件群，4外部群 */
        "groupType": GroupTypeEnum;
        /** 应用ID */
        "appId": string;
        /** 建群时间 */
        "createTime": number;
        /** 群组的默认类型：0名字头像都是自定义, 1名字默认头像自定义, 2名字是自定义头像是默认, 3都是默认 */
        "defaultType": 0 | 1 | 2 | 3;
        /** 组成默认信息的人员id */
        "defaultAccounts": string;
        /** 群人数  */
        "num": number;
        /** 邀请开关 */
        "invitedToggle": 0 | 1;
        /** @all开关 */
        "atallToggle": 0 | 1;
    }
    interface GroupMemberItemType {
        /** 租户ID */
        "appId": string;
        /** 群ID */
        "groupId": string;
        /** 用户ID */
        "userId": string;
        /** 用户角色（0群主，1管理员，2普通用户） */
        "role": GroupUserRoleEnum;
        /** 群成员昵称 */
        "nickname": string;
        /** 用户昵称 */
        "petName": string;
        /** 用户昵称拼音 */
        "nicknamePy": string;
        /** 免打扰（1表示消息免打扰）  */
        "disturb": 0 | 1;
        /** 删除标识，0代表为删除，1代表已删除  */
        "delFlag": 0 | 1;
        /** 创建时间（加入时间） */
        "createTime": number;
        /** 修改时间 */
        "updateTime": number;
        /** 本人被谁邀请进群的（非邀请的情况，本字段则可为空） */
        "beInviteId"?: string;
        /** 如是群的被转让人，本字段填的就是最近一次被转让时的时间 */
        beOwnerTime?: string;
    }
    interface GroupEventExplainType {
        /** 建群人-account */
        "createBy": string;
        /** 建群人-name */
        "createName": string;
        /** 建群时间 */
        "createTime": number;
        /** 是否解散：0正常，1解散 */
        "delFlag": boolean;
        /** 附件地址JSON数组格式 */
        "fileInfo": string;
        /** 群组ID  */
        "groupId": string;
        /** 事件ID */
        "id": string;
        /** 图片地址JSON数组格式  */
        "imageInfo": string;
        /** 文字内容 */
        "text": string;
    }
    interface GetGroupDetailRes extends GetAllUserGroupResItem {
        /** 群成员信息 */
        groupMembers: GroupMemberItemType[];
        /** 群公告信息 */
        groupEventExplain?: GroupEventExplainType;
    }
    interface GroupInterfaceType extends DefaultApiTypes.DefaultApiClass {
        /** 群组查询-查询用户的所有群 */
        getAllUserGroup(params: GetAllUserGroupParams): Promise<DefaultApiTypes.DefaultResponse<GetAllUserGroupResItem[]>>;
        /** 修改群 */
        modifyGroup(params: ModifyGroupParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 切换@All的设置 */
        setGroupAtAllToggle(p: SetGroupAtAllToggleParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 更改邀请群成员的设置 */
        setGroupInvitedToggle(p: SetGroupInvitedToggleParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 获取群的简要信息 */
        getGroupIntro(p: GetGroupIntroParams): Promise<DefaultApiTypes.DefaultResponse<GetAllUserGroupResItem>>;
        /** 获取群组的详细信息 */
        getGroupDetail(p: GetGroupDetailParams): Promise<DefaultApiTypes.DefaultResponse<GetGroupDetailRes>>;
        /** 获取群组的详细信息 - 列表获取 */
        getGroupDetailList(p: GetGroupListDetailParams): Promise<DefaultApiTypes.DefaultResponse<GetGroupDetailRes[]>>;
        /** 通过群组名称和群组类型来搜索当前用户拥有的群组 */
        searchGroups(p: SearchGroupsParams): Promise<DefaultApiTypes.DefaultResponse<GetAllUserGroupResItem[]>>;
        /** 邀请加入群聊 */
        inviteJoinGroup(p: InviteGroupParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 转让群主 */
        changeGroupOwner(p: ChangeOwnerParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 获取群组管理员 */
        getGroupManagers(p: GetGroupManagerParams): Promise<DefaultApiTypes.DefaultResponse<GroupMemberItemType[]>>;
        /** getGroupMemberIds */
        getGroupMemberIds(p: GetGroupMemberIdsParams): Promise<DefaultApiTypes.DefaultResponse<string[]>>;
        /** 获取群组成员集合 */
        getGroupMemberList(p: GetGroupMemberListParams): Promise<DefaultApiTypes.DefaultResponse<GroupMemberItemType[]>>;
        /** 将人员移出群聊 */
        deleteGroupMember(p: DeleteGroupMemberParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 退出群组 */
        quitGroup(p: QuitGroupParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 修改群成员角色 */
        setGroupMemberRole(p: SetGroupMemberRoleParams): Promise<DefaultApiTypes.DefaultResponse>;
    }
    interface ConstructorParams {
        baseUrl: string;
    }
    enum GroupTypeEnum {
        /** 内部群 */
        InnerGroup = 1,
        /** 事件群 */
        EventGroup = 3,
        /** 外部群 */
        OuterGroup = 4,
        /** 组织群 */
        OrgGroup = 5,
        /** 会议群聊 */
        MeetingGroup = 6
    }
    interface CreateGroupParams {
        /** 群组类型，0-群组，1-讨论组 */
        groupType: 0 | 1;
        /** 群组名称 */
        groupName: string;
        /** 人员列表 */
        userIds: string[];
    }
    /** 获取群成员参数 */
    interface GetAllUserGroupParams {
        typeArr?: (1 | 3 | 4)[];
    }
    /** 修改群组 */
    interface ModifyGroupParams {
        groupType: GroupTypeEnum;
        groupId: string;
        groupName?: string;
        avatar?: string;
        /** 是否需要审批 1需要审核，0不需要审核 */
        isReview?: 0 | 1;
        notice?: string;
    }
    interface SetGroupAtAllToggleParams {
        groupType: GroupTypeEnum;
        groupId: string;
        /** @All的设置 是否开启@All */
        toggle: 0 | 1;
    }
    interface SetGroupInvitedToggleParams {
        groupType: GroupTypeEnum;
        groupId: string;
        /** 是否允许邀请 */
        toggle: 0 | 1;
    }
    interface GetGroupIntroParams {
        groupType: GroupTypeEnum;
        groupId: string;
    }
    interface GetGroupDetailParams {
        groupType: GroupTypeEnum;
        groupId: string;
    }
    interface GetGroupListDetailParams {
        groupType: GroupTypeEnum;
        groupIds: string[];
    }
    interface SearchGroupsParams {
        groupName: string;
        /** 0私密群，1公开群，2讨论组，3事件群(默认查询所有 */
        typeJsonArray?: (0 | 1 | 2 | 3)[];
    }
    interface JoinGroupParams {
        groupId: string;
        reason?: string;
    }
    interface InviteGroupParams {
        groupType: GroupTypeEnum;
        groupId: string;
        userIds: string[];
    }
    interface ConfirmInviteJoinGroup {
        invitedId: string;
        agree: boolean;
    }
    interface GroupMemberInterfaceType {
    }
    interface ConstructorParams {
        baseUrl: string;
        loginMessage?: {
            userSig: string;
            terminal: string;
            appId: string;
            appversion: string;
            account: string;
        };
    }
    /** 转让群组参数 */
    interface ChangeOwnerParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
        newOwnerId: string;
    }
    /** 获取群组管理员参数 */
    interface GetGroupManagerParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
    }
    /** 获取群组成员Id集合参数 */
    interface GetGroupMemberIdsParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
    }
    /** 获取群组成员集合参数 */
    interface GetGroupMemberListParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
    }
    /** 踢人参数 */
    interface DeleteGroupMemberParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
        userIds: string[];
    }
    /** 退出群组 */
    interface QuitGroupParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
    }
    /** 设置群成员角色 */
    interface SetGroupMemberRoleParams {
        groupType: GroupTypes.GroupTypeEnum;
        groupId: string;
        managerIds: string[];
        /** 1设置管理员，2取消管理员 */
        type: 1 | 2;
    }
    /** ES 搜索群 */
    interface SearchEsGroupByNameParams {
        text: string;
        /** 页码 */
        index: number;
        /** 当前页有多少数据 */
        rows: number;
    }
    /** 通过手机号搜索群聊 */
    interface SearchGroupByMobileParams {
        mobile: string;
        /** 页码 */
        page: number;
        /** 当前页有多少数据 */
        rows: number;
    }
}
/** 人员相关信息接口类型 */
export declare namespace UserTypes {
    interface FetchMultiPersonalDataResItem {
        /** 账号 */
        account: string;
        /** 用户头像url地址 */
        avatar: string;
        /** 账号创建时间 */
        createTime: string;
        /** 自定义字段内容 */
        definition: string;
        /** 0正常，1禁用手机离线推送 */
        disablePush: number;
        /** 用户昵称拼音  */
        nicknamePy: string;
        /** 用户昵称 */
        petName: string;
        /** 用户姓名 */
        userNickname: string;
        /** 用户状态0正常，1禁用 */
        userStatus: number;
        /** 用户id */
        userId: number;
    }
    interface UserInterfaceType extends DefaultApiTypes.DefaultApiClass {
        fetchMultiPersonalData: (params: UserTypes.FetchMultiPersonalDataParams) => Promise<DefaultApiTypes.DefaultResponse<FetchMultiPersonalDataResItem>>;
    }
    interface ConstructorParams {
        baseUrl: string;
        loginMessage?: {
            userSig: string;
            terminal: string;
            appId: string;
            appversion: string;
            account: string;
        };
    }
    interface FetchMultiPersonalDataParams {
        accounts: string[];
    }
}
/** 会话相关接口类型 */
export declare namespace ChatTypes {
    interface GetChatInfoTypes {
        /** id */
        "id": string;
        /** 应用id */
        "appId": string;
        /** 账号 */
        "account": string;
        /** 聊天会话id(单聊为聊天对象用户id,群聊为群组id) */
        "sessionId": string;
        /** 聊天会话名称 */
        "sessionName": string;
        /** 聊天会话头像路径 */
        "avatar": string;
        /** 会话类型,0单聊，1群聊，2订阅号，10订阅号盒子 */
        "sessionType": SIMTypes.ChatTypeEnum;
        /** 群组类型 0私密群，1公开群，2讨论组，3事件群 */
        "groupType": GroupTypes.GroupTypeEnum;
        /** 置顶时间 */
        "toppingTime": string;
        /** 置顶时间Long型 */
        "toppingTimeLong": string;
        /** 是否置顶 */
        "isTop": 0 | 1;
        /** 安全类型0普通，1私聊 */
        "securityType": 0 | 1;
        /** 是否免打扰：0否，1是 */
        "notDisturb": 0 | 1;
        /** 是否显示：0否，1是 */
        "isShow": 0 | 1;
        /** 创建时间 */
        "createTime": string;
        /** 修改时间 */
        "updateTime": string;
        /** 最后消息包 */
        "lastMsg": IMReceiveTypes.DefaultMsg;
        /** 是否@标记：0否，1是 */
        "isAt": 0 | 1;
        /** 会话状态: 0正常，1解散群，2被踢出群，3单聊对方账号禁用, 10彻底删除，不可恢复 */
        "invalid": 0 | 1 | 2 | 3 | 10;
        /** 域状态 0内域，1外域 */
        "cross": 0 | 1;
        /** 会话级别：0外层，1内层  */
        "sessionLevel": 0 | 1;
    }
    interface ChatInterfaceType extends DefaultApiTypes.DefaultApiClass {
        /** 设置会话 */
        setChatSession(p: SetChatSessionParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 获取会话详情信息 */
        getChatInfo(p: GetChatInfoParams): Promise<DefaultApiTypes.DefaultResponse<GetChatInfoTypes>>;
        /** 获取所有会话 - 有增量选项 */
        getAllChat(p: GetAllChatParams): Promise<DefaultApiTypes.DefaultResponse<GetChatInfoTypes[]>>;
        /** 删除会话（设置为不可见） */
        deleteChat(p: DeleteChatParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 删除会话(彻底删除) */
        destroyChat(p: DeleteChatParams): Promise<DefaultApiTypes.DefaultResponse>;
    }
    interface ConstructorParams {
        baseUrl: string;
        loginMessage?: {
            userSig: string;
            terminal: string;
            appId: string;
            appversion: string;
            account: string;
        };
    }
    interface SetChatSessionParams {
        sessionId: string;
        securityType: 0 | 1;
        sessionType: SIMTypes.ChatTypeEnum;
        /** 是否置顶 0否，1是 */
        isTop?: 0 | 1;
        /** 是否免打扰 0否，1是 */
        notDisturb?: 0 | 1;
    }
    interface GetChatInfoParams {
        sessionId: string;
        securityType: 0 | 1;
        sessionType: SIMTypes.ChatTypeEnum;
    }
    interface GetAllChatParams {
        sessionLevel?: 0 | 1;
        lastPullTime?: number;
    }
    interface DeleteChatParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
    }
    type SetChatSessionLaterDealParams = {
        sessionId: string;
        securityType: 0 | 1;
        sessionType: SIMTypes.ChatTypeEnum;
        isLaterDeal: 0 | 1;
    };
}
/** 消息相关接口类型 */
export declare namespace MessageTypes {
    interface GetMsgListAndCdMsgRes {
        msg: IMReceiveTypes.DefaultMsg[];
        cdMsg: IMReceiveTypes.CdMsgBody[];
    }
    interface GetMsgReadDataRes {
        "appId": number;
        "avatar": string;
        "createBy": string;
        "createDate": string;
        "delFlag": 0 | 1;
        "groupId": string;
        "id": string;
        "isRead": 0 | 1;
        "msgId": string;
        "owner": string;
        "petName": string;
        "readDate": string;
        "remarks": string;
        "securityType": 0 | 1;
        "tId": string;
        "updateBy": string;
        "updateDate": string;
        "userName": string;
    }
    interface GetMsgStatusItemType {
        /** 是否标记 */
        "sign": boolean;
        /** 是否删除 */
        "delFlag": boolean;
        /** 删除标记 */
        "priDelFlag": boolean;
        /** 回复数量 */
        "replyCount": number;
        /** 是否有小红点？ */
        "redDarkenFlag": boolean;
        /** 排序ID */
        "serialId": string;
    }
    interface MessageInterfaceType extends DefaultApiTypes.DefaultApiClass {
        /** 获取指定区间内消息和被指令修改的消息 */
        getMsgListAndCdMsgById(p: GetMsgListAndCdMsgByIdParams): Promise<DefaultApiTypes.DefaultResponse<GetMsgListAndCdMsgRes>>;
        /** 历史记录搜索 */
        searchMsg(p: SearchMsgParams): Promise<DefaultApiTypes.DefaultResponse<IMReceiveTypes.DefaultMsg[]>>;
        /** 获取已读状态 */
        getMsgReadData(p: GetMsgReadDataParams): Promise<DefaultApiTypes.DefaultResponse<GetMsgReadDataRes[]>>;
        /** 查询回复消息列表 */
        getReplyList(p: GetReplyListParams): Promise<DefaultApiTypes.DefaultResponse<IMReceiveTypes.DefaultMsg[]>>;
        /** 根据消息Id列表查询消息列表 */
        getMessageDetails(p: GetMessageDetailsParams): Promise<DefaultApiTypes.DefaultResponse<IMReceiveTypes.DefaultMsg[]>>;
        /** 标记消息 */
        signMessage(p: SignMessageParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 取消标记消息 */
        unSignMessage(p: SignMessageParams): Promise<DefaultApiTypes.DefaultResponse>;
        /** 获取标记列表 */
        getSignList(p: GetSignListParams): Promise<DefaultApiTypes.DefaultResponse<IMReceiveTypes.DefaultMsg[]>>;
        /** 查询用户敏感消息（查询指令） */
        getCdMsgList(p: GetCdMsgListParams): Promise<DefaultApiTypes.DefaultResponse<IMReceiveTypes.CdMsgBody[]>>;
        /** 根据会话消息序号查询消息列表 */
        getMsgList(p: GetMsgListParams): Promise<DefaultApiTypes.DefaultResponse<IMReceiveTypes.DefaultMsg[]>>;
        /** 根据会话消息序号区间查询消息状态列表 */
        getMsgStatusList(p: GetMsgStatusListParams): Promise<DefaultApiTypes.DefaultResponse<GetMsgStatusItemType[]>>;
    }
    interface ConstructorParams {
        baseUrl: string;
        loginMessage?: {
            userSig: string;
            terminal: string;
            appId: string;
            appversion: string;
            account: string;
        };
    }
    /** 获取指定区间内消息和被指令修改的消息参数 */
    interface GetMsgListAndCdMsgByIdParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
        /** 消息id */
        msgId?: string;
        /** 获取数量 */
        rows?: number;
        /** 0向下拉，1向上拉，2定位前后 */
        type?: 0 | 1 | 2;
    }
    interface SearchMsgParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
        /** 消息id */
        msgId?: string;
        /** 搜索文字 */
        searchName?: string;
        /** 获取数量 */
        rows?: number;
        /** 搜索类型 0全部，1文件，2图片及视频 */
        type: 0 | 1 | 2;
    }
    interface GetMsgReadDataParams {
        msgId: string;
    }
    interface GetReplyListParams {
        msgId: string;
        sessionType: SIMTypes.ChatTypeEnum;
    }
    interface GetMessageDetailsParams {
        msgIds: string[];
        sessionType: SIMTypes.ChatTypeEnum;
    }
    interface SignMessageParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
        msgId: string;
        cross: 0 | 1;
    }
    interface GetSignListParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
        signDate?: number;
        rows?: number;
    }
    interface GetCdMsgListParams {
        time: string;
    }
    interface GetMsgListParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
        serialId?: number;
        msgId?: string;
        rows: number;
        type: 0 | 1 | 2;
    }
    interface GetMsgStatusListParams {
        sessionId: string;
        sessionType: SIMTypes.ChatTypeEnum;
        securityType: 0 | 1;
        startSerialId: number;
        endSerialId: number;
    }
}
export declare namespace DefaultApiTypes {
    interface TbRequestConfig {
        url?: string;
        baseURL?: string;
        method: 'get' | 'post';
        headers?: any;
        params?: any;
        paramsSerializer?: (params: any) => string;
        data?: any;
        timeout?: number;
        timeoutErrorMessage?: string;
        withCredentials?: boolean;
        responseType?: ResponseType;
        xsrfCookieName?: string;
        xsrfHeaderName?: string;
        onUploadProgress?: (progressEvent: any) => void;
        onDownloadProgress?: (progressEvent: any) => void;
        maxContentLength?: number;
        validateStatus?: ((status: number) => boolean) | null;
        maxBodyLength?: number;
        maxRedirects?: number;
        socketPath?: string | null;
        httpAgent?: any;
        httpsAgent?: any;
        decompress?: boolean;
    }
    interface TbResponse {
        [key: string]: any;
    }
    type HttpClient = {
        get: <T = any>(...params: any[]) => Promise<T>;
        post: <T = any>(...params: any[]) => Promise<T>;
        interceptors: {
            request: {
                use: (config: (config: DefaultApiTypes.TbRequestConfig) => DefaultApiTypes.TbRequestConfig) => DefaultApiTypes.TbRequestConfig;
            };
            response: {
                use: (p: (response: DefaultApiTypes.TbResponse) => DefaultApiTypes.TbResponse, p1: (err: any) => void) => DefaultApiTypes.TbResponse;
            };
        };
        setDefaultConfig: (params: any) => void;
    };
    interface DefaultApiClass {
        readonly Http: HttpClient;
        headers: DefaultApiConstructorProps['headers'];
        setDefaultHeaders: (headers: DefaultApiConstructorProps['headers']) => void;
        setLoginHeader: (headers: AppLoginHeader) => void;
    }
    interface DefaultApiConstructorProps {
        baseUrl: string;
        headers?: {
            [key: string]: string;
        };
    }
    interface AppLoginHeader {
        userSig: string;
        terminal: string;
        appId: string;
        appversion: string;
        account: string;
    }
    interface DefaultResponse<T = {}> {
        code: number;
        message: string;
        success: boolean;
        data: T;
    }
}
