import { Logger } from './Logger';
import { TransportType } from './Transport';
import { DisconnectReason, ResponseType } from './Commander';
import { PayloadData } from './Payload';
import { ServiceOptions } from './Service';
export declare class Bot {
    private host;
    private port;
    private transport;
    private options;
    private handshakeBody?;
    onDisconnect: (reason: DisconnectReason) => void;
    onConnect: () => void;
    onReady: () => void;
    log: Logger;
    isConnected: boolean;
    private client;
    private connection;
    constructor(host: string, port: number, transport: TransportType, options: ServiceOptions, handshakeBody?: Buffer | undefined);
    start(): Promise<void>;
    command(command: string, data?: Buffer): Promise<void>;
    fetch(request: string, data?: Buffer): Promise<PayloadData>;
    request(request: string, callback: ResponseType, data?: Buffer): Promise<number>;
    response(request: PayloadData, data?: Buffer): Promise<void>;
    on(command: string, callback: ResponseType): Promise<void>;
    off(command: string, callback?: ResponseType): Promise<void>;
    cancel(id: number): Promise<void>;
    onRequest(request: string, callback: ResponseType): Promise<void>;
    offRequest(request: string): Promise<void>;
    handshake(body?: Buffer): Promise<void>;
    disconnect(): Promise<void>;
    destroy(): Promise<void>;
    private onClientConnect;
    private onClientDisconnect;
}
