import { EventEmitter } from "events";
import { V11 } from "./service/V11";
import { V12 } from "./service/V12";
import { Adapter } from "./adapter";
import { Service } from "./service";
import { Logger } from "log4js";
export declare class NotFoundError extends Error {
    message: string;
}
export declare class OneBot<T = any> extends EventEmitter {
    #private;
    adapter: Adapter;
    readonly uin: string;
    config: OneBot.Config[];
    status: OneBotStatus;
    avatar: string;
    nickname: string;
    dependency: string;
    protected password: string;
    internal: T;
    instances: (V11 | V12)[];
    get app(): import(".").App;
    get V11(): V11;
    get V12(): V12;
    get platform(): string;
    get logger(): Logger;
    get info(): {
        uin: string;
        status: OneBotStatus;
        platform: string;
        avatar: string;
        nickname: string;
        dependency: string;
        urls: string[];
    };
    constructor(adapter: Adapter, uin: string, version_configs: OneBot.Config[]);
    start(): Promise<void>;
    stop(force?: boolean): Promise<void>;
    getGroupList<V extends OneBot.Version>(version: V): Promise<OneBot.GroupInfo<V>[]>;
    getFriendList<V extends OneBot.Version>(version: V): Promise<OneBot.UserInfo<V>[]>;
    dispatch(event: any, data: any): Promise<void>;
}
export declare enum OneBotStatus {
    Pending = "pending",// 上线中
    Online = "online",// 已上线
    OffLine = "offline"
}
export declare namespace OneBot {
    type Filters = {};
    type Version = "V11" | "V12";
    type Config<V extends Version = Version> = {
        version?: V;
        filters?: Service.Filters;
    } & (V extends "V11" ? V11.Config : V12.Config);
    const UnsupportedMethodError: Error;
    const UnsupportedVersionError: Error;
    type Payload<V extends Version = Version> = V extends "V11" ? V11.Payload : V12.Payload;
    type Segment<V extends Version = Version> = V extends "V11" ? V11.Segment : V12.Segment;
    type SelfInfo<V extends Version = Version> = V extends "V11" ? V11.SelfInfo : V12.SelfInfo;
    type GroupInfo<V extends Version> = V extends "V11" ? V11.GroupInfo : V12.GroupInfo;
    type UserInfo<V extends Version> = V extends "V11" ? V11.UserInfo : V12.UserInfo;
    type Message<V extends Version> = V extends "V11" ? V11.Message : V12.Message;
    type GroupMemberInfo<V extends Version> = V extends "V11" ? V11.GroupMemberInfo : V12.GroupMemberInfo;
    type MessageRet<V extends Version> = V extends "V11" ? V11.MessageRet : V12.MessageRet;
    interface Base {
        start(path?: string): any;
        stop(): any;
        dispatch(...args: any[]): any;
        apply(...args: any[]): any;
    }
    type MessageNode<V extends Version> = V extends "V11" ? V11.MessageNode : V12.MessageNode;
}
export declare const BOOLS: string[];
