import { Context, Schema, Session, Universal } from 'koishi';
import { HttpServer } from '../http';
import { WsClient, WsServer } from '../ws';
import { QQGuildBot } from './qqguild';
import { BaseBot } from './base';
export * from './base';
export * from './cqcode';
export * from './message';
export * from './qqguild';
export declare class OneBotBot<C extends Context, T extends OneBotBot.Config = OneBotBot.Config> extends BaseBot<C, T> {
    guildBot: QQGuildBot<C>;
    constructor(ctx: C, config: T);
    stop(): Promise<void>;
    initialize(): Promise<void>;
    setupGuildService(): Promise<void>;
    getChannel(channelId: string): Promise<Universal.Channel>;
    getGuild(guildId: string): Promise<Universal.Guild>;
    getGuildList(): Promise<{
        data: Universal.Guild[];
    }>;
    getChannelList(guildId: string): Promise<{
        data: Universal.Channel[];
    }>;
    getGuildMember(guildId: string, userId: string): Promise<Universal.GuildMember>;
    getGuildMemberList(guildId: string): Promise<{
        data: Universal.GuildMember[];
    }>;
    kickGuildMember(guildId: string, userId: string, permanent?: boolean): Promise<void>;
    muteGuildMember(guildId: string, userId: string, duration: number): Promise<void>;
    muteChannel(channelId: string, guildId?: string, enable?: boolean): Promise<void>;
    checkPermission(name: string, session: Partial<Session>): Promise<boolean>;
    createReaction(channelId: string, messageId: string, emojiId: string): Promise<void>;
    deleteReaction(channelId: string, messageId: string, emojiId: string, userId?: string): Promise<void>;
}
export declare namespace OneBotBot {
    interface BaseConfig extends BaseBot.Config {
        selfId: string;
        password?: string;
        token?: string;
    }
    const BaseConfig: Schema<BaseConfig>;
    type Config = BaseConfig & (HttpServer.Options | WsServer.Options | WsClient.Options);
    const Config: Schema<Config>;
}
