import { BaseClient } from "./core/baseClient";
import { Logger } from "log4js";
import { Friend } from "./entries/friend";
import { Group } from "./entries/group";
import { Member } from "./entries/member";
import { Sendable } from "./elements";
import { Message } from "./message";
type MemberMap = Map<string, Member.Info>;
export declare class Client extends BaseClient {
    logger: Logger;
    fl: Map<string, Friend.Info>;
    gl: Map<string, Group.Info>;
    gml: Map<string, MemberMap>;
    pickGroup: (group_id: string) => Group;
    pickMember: (group_id: string, member_id: string) => Member;
    pickFriend: (user_id: string) => Friend;
    constructor(config?: BaseClient.Config);
    private handleOnline;
    getGroupList(): Group.Info[];
    getGroupInfo(group_id: string): Group.Info;
    getGroupMemberList(group_id: string): Member.Info[];
    getGroupMemberInfo(group_id: string, member_id: string): Member.Info;
    getFriendList(): Friend.Info[];
    getFriendInfo(user_id: string): Friend.Info;
    sendPrivateMsg(user_id: string, message: Sendable): Promise<string | string[]>;
    sendGroupMsg(group_id: string, message: Sendable): Promise<string | string[]>;
    recallMsg(username: string, message_id: string): Promise<boolean>;
    private handleSync;
    /** 收到消息 */
    private handleMsg;
    /** 收到加好友请求 */
    private handleRequest;
    /** 通知消息 */
    private handleNotice;
    /** 消息总线 */
    messageListener(messageList: Message.Original[]): Promise<void>;
    private updateContacts;
    start(): Promise<string | void>;
    stop(): Promise<void>;
}
export declare namespace Client {
    const defaultConfig: BaseClient.Config;
}
export {};
