import { Logger } from './Logger';
import { CommanderMode, DisconnectReason, ResponseType } from './Commander';
import { PayloadData } from './Payload';
import { Service, ServiceOptions } from './Service';
import { Connection } from './Connection';
export declare class Client {
    private connection;
    id: string;
    log: Logger;
    private service;
    private options;
    private mode;
    onDisconnect: (id: string, reason: DisconnectReason) => void;
    onReady: () => void;
    isConnected: boolean;
    private commander;
    constructor(connection: Connection, id: string, log: Logger, service: Service, options: ServiceOptions, mode?: CommanderMode);
    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>;
    disconnect(): Promise<void>;
    kick(reason: DisconnectReason): Promise<void>;
    handshake(body?: Buffer): Promise<void>;
    cancel(id: number): Promise<void>;
    on(command: string, callback: ResponseType): Promise<void>;
    off(command: string, callback?: ResponseType): Promise<void>;
    onRequest(request: string, callback: ResponseType): Promise<void>;
    offRequest(request: string): Promise<void>;
    destroy(): Promise<void>;
}
