/// <reference types="xmpp__connection" />
/// <reference types="xmpp__jid" />
/// <reference types="xmpp__xml" />
import type { Node } from '@xmpp/xml';
import type { XMPPElementType } from './stanza';
import type { RoomConf } from './config/read';
import Connection from '@xmpp/connection';
import { JID } from '@xmpp/jid';
import { Logger } from './logger';
import { Room } from './room';
export declare class Bot {
    readonly botName: string;
    protected readonly xmpp: Connection;
    protected address?: JID;
    readonly logger: Logger;
    protected rooms: Map<string, Room>;
    protected dirListeners: Map<string, () => void>;
    constructor(botName: string, xmpp: Connection, logger?: Logger);
    static loadsFromConfigFile(filepath: string): Promise<Bot>;
    connect(): Promise<void>;
    disconnect(): Promise<any>;
    waitOnline(): Promise<void>;
    sendStanza(type: XMPPElementType, attrs: object, ...children: Node[]): Promise<void>;
    joinRoom(local: string, domain: string, nick: string): Promise<Room>;
    partRoom(local: string, mucDomain: string): Promise<void>;
    getAddress(): JID | undefined;
    loadRoomConfDir(dir: string): Promise<void>;
    loadRoomConf(conf: RoomConf): Promise<void>;
}
