import { Bot, Fragment, Logger, MaybeArray, Quester, SendOptions, Session, Universal } from 'koishi';
import { WecomEventBody, WecomEvents, WecomMenuDef } from './def';
declare global {
    namespace Satori {
        interface Session {
            wecom?: WecomEventBody;
        }
    }
}
declare module 'koishi' {
    interface Events extends WecomEvents {
    }
}
export declare class WeComBotConfig {
    corpId: string;
    agentId: string;
    secret: string;
    path: string;
    token: string;
    encodingAESKey: string;
    menus?: WecomMenuDef[];
    platform: string;
    get selfId(): string;
}
export default class WeComBot extends Bot<Partial<WeComBotConfig>> {
    internal: {};
    private aragami;
    http: Quester;
    logger: Logger;
    private buttonKeyMap;
    private loadAdapter;
    private initializeMenu;
    private fetchNewToken;
    getToken(): Promise<string>;
    handleMenuEvent(event: string, session: Session): Promise<void>;
    initialize(): Promise<void>;
    getSelf(): Promise<Universal.User>;
    getUser(userId: string): Promise<Universal.User>;
    getFriendList(): Promise<any[]>;
    deleteFriend(userId: string): Promise<void>;
    getGuild(guildId: string): Promise<any>;
    getGuildList(): Promise<any[]>;
    getGuildMember(guildId: string, userId: string): Promise<any>;
    getGuildMemberList(guildId: string): Promise<any[]>;
    getChannel(channelId: string, guildId?: string): Promise<any>;
    getChannelList(guildId: string): Promise<any[]>;
    handleFriendRequest(messageId: string, approve: boolean, comment?: string): Promise<void>;
    handleGuildRequest(messageId: string, approve: boolean, comment?: string): Promise<void>;
    handleGuildMemberRequest(messageId: string, approve: boolean, comment?: string): Promise<void>;
    deleteMessage(channelId: string, messageId: string): Promise<void>;
    sendMessage(channelId: string, content: Fragment, guildId?: string, options?: SendOptions): Promise<string[]>;
    sendPrivateMessage(userIds: MaybeArray<string>, content: Fragment, options?: SendOptions): Promise<string[]>;
    broadcast(channels: (string | [string, string])[], content: string, delay?: number): Promise<string[]>;
}
