/// <reference types="node" />
import { EventEmitter } from 'events';
import Logcat from '@devicefarmer/adbkit-logcat';
import Connection from './connection';
import Sync from './sync';
import ProcStat from './proc/stat';
import TcpUsbServer from './tcpusb/server';
import { Callback } from '../Callback';
import { Device } from '../Device';
import { Forward } from '../Forward';
import { Reverse } from '../Reverse';
import { StartActivityOptions } from '../StartActivityOptions';
import { StartServiceOptions } from '../StartServiceOptions';
import Bluebird from 'bluebird';
import { ClientOptions } from '../ClientOptions';
import { Duplex } from 'stream';
import { SocketOptions } from '../SocketOptions';
import Stats from './sync/stats';
import Entry from './sync/entry';
import PushTransfer from './sync/pushtransfer';
import { ReadStream } from 'fs';
import PullTransfer from './sync/pulltransfer';
import { Properties } from '../Properties';
import { Features } from '../Features';
import { FramebufferStreamWithMeta } from '../FramebufferStreamWithMeta';
import { WithToString } from '../WithToString';
import Tracker from './tracker';
import JdwpTracker from './jdwptracker';
import { DeviceWithPath } from '../DeviceWithPath';
declare class Client extends EventEmitter {
    readonly options: ClientOptions;
    readonly host: string;
    readonly port: number | string;
    readonly bin: string;
    constructor({ host, port, bin }?: ClientOptions);
    createTcpUsbBridge(serial: string, options: SocketOptions): TcpUsbServer;
    connection(): Bluebird<Connection>;
    version(callback?: Callback<number>): Bluebird<number>;
    connect(host: string, port?: number | typeof callback, callback?: Callback<string>): Bluebird<string>;
    disconnect(host: string, port?: number | typeof callback, callback?: Callback<string>): Bluebird<string>;
    listDevices(callback?: Callback<Device[]>): Bluebird<Device[]>;
    listDevicesWithPaths(callback?: Callback<DeviceWithPath[]>): Bluebird<DeviceWithPath[]>;
    trackDevices(callback?: Callback<Tracker>): Bluebird<Tracker>;
    kill(callback?: Callback<boolean>): Bluebird<boolean>;
    getSerialNo(serial: string, callback?: Callback<string>): Bluebird<string>;
    getDevicePath(serial: string, callback?: Callback<DeviceWithPath['path']>): Bluebird<DeviceWithPath['path']>;
    getState(serial: string, callback?: Callback<string>): Bluebird<string>;
    getProperties(serial: string, callback?: Callback<Properties>): Bluebird<Properties>;
    getFeatures(serial: string, callback?: Callback<Features>): Bluebird<Features>;
    getPackages(serial: string, flags: string | typeof callback, callback?: Callback<string[]>): Bluebird<string[]>;
    getDHCPIpAddress(serial: string, iface?: string | typeof callback, callback?: Callback<string>): Bluebird<string>;
    forward(serial: string, local: string, remote: string, callback?: Callback<boolean>): Bluebird<boolean>;
    listForwards(serial: string, callback?: Callback<Forward[]>): Bluebird<Forward[]>;
    reverse(serial: string, remote: string, local: string, callback?: Callback<boolean>): Bluebird<boolean>;
    listReverses(serial: string, callback?: Callback<Reverse[]>): Bluebird<Reverse[]>;
    transport(serial: string, callback?: Callback<Connection>): Bluebird<Connection>;
    shell(serial: string, command: string | ArrayLike<WithToString>, callback?: Callback<Duplex>): Bluebird<Duplex>;
    reboot(serial: string, callback?: Callback<boolean>): Bluebird<boolean>;
    remount(serial: string, callback?: Callback<boolean>): Bluebird<boolean>;
    root(serial: string, callback?: Callback<boolean>): Bluebird<boolean>;
    trackJdwp(serial: string, callback?: Callback<JdwpTracker>): Bluebird<JdwpTracker>;
    framebuffer(serial: string, format?: string | typeof callback, callback?: Callback<FramebufferStreamWithMeta>): Bluebird<FramebufferStreamWithMeta>;
    screencap(serial: string, callback?: Callback<Duplex>): Bluebird<Duplex>;
    openLocal(serial: string, path: string, callback?: Callback<Duplex>): Bluebird<Duplex>;
    openLog(serial: string, name: string, callback?: Callback<Duplex>): Bluebird<Duplex>;
    openTcp(serial: string, port: number, host?: string | typeof callback, callback?: Callback<Duplex>): Bluebird<Duplex>;
    openMonkey(serial: string, port?: number | typeof callback, callback?: Callback<Duplex>): Bluebird<Duplex>;
    openLogcat(serial: string, options?: {
        clear?: boolean;
    } | typeof callback, callback?: Callback<Logcat>): Bluebird<Logcat>;
    openProcStat(serial: string, callback?: Callback<ProcStat>): Bluebird<ProcStat>;
    clear(serial: string, pkg: string, callback?: Callback<boolean>): Bluebird<boolean>;
    install(serial: string, apk: string, callback?: Callback<boolean>): Bluebird<boolean>;
    installRemote(serial: string, apk: string, callback?: Callback<boolean>): Bluebird<boolean>;
    uninstall(serial: string, pkg: string, callback?: Callback<boolean>): Bluebird<boolean>;
    isInstalled(serial: string, pkg: string, callback?: Callback<boolean>): Bluebird<boolean>;
    startActivity(serial: string, options: StartActivityOptions, callback?: Callback<boolean>): Bluebird<boolean>;
    startService(serial: string, options: StartServiceOptions, callback?: Callback<boolean>): Bluebird<boolean>;
    syncService(serial: string, callback?: Callback<Sync>): Bluebird<Sync>;
    stat(serial: string, path: string, callback?: Callback<Stats>): Bluebird<Stats>;
    readdir(serial: string, path: string, callback?: Callback<Entry[]>): Bluebird<Entry[]>;
    pull(serial: string, path: string, callback?: Callback<PullTransfer>): Bluebird<PullTransfer>;
    push(serial: string, contents: string | ReadStream, path: string, mode?: number | typeof callback, callback?: Callback<PushTransfer>): Bluebird<PushTransfer>;
    tcpip(serial: string, port?: number | typeof callback, callback?: Callback<number>): Bluebird<number>;
    usb(serial: string, callback?: Callback<boolean>): Bluebird<boolean>;
    waitBootComplete(serial: string, callback?: Callback<boolean>): Bluebird<boolean>;
    waitForDevice(serial: string, callback?: Callback<string>): Bluebird<string>;
}
export = Client;
