import type { Client as AdbClient, DeviceClient } from "@devicefarmer/adbkit";
import * as adbkit from "@devicefarmer/adbkit";
declare const deviceProps: {
    Manufacturer: string;
    Name: string;
    Model: string;
    "Android Version": string;
    Platform: string;
    CPU: string;
    "CPU.abi2": string;
    Description: string;
    Fingerprint: string;
    Brand: string;
    Device: string;
    "GSM Flexversion": string;
    "Locale Language": string;
    "Locale Region": string;
    "Wifi Channels": string;
    "Board Platform": string;
    "Product Board": string;
    "Display ID": string;
    "GSM IMEI": string;
    "Version Incremental": string;
    "Version SDK": string;
    "Version Codename": string;
    "Version Release": string;
    "Build Date": string;
    "Build Type": string;
    "Build User": string;
};
export type DeviceProperty = keyof typeof deviceProps;
export declare class AdbDeviceKit {
    private readonly port;
    private client;
    private device;
    private deviceId;
    private devicePort;
    constructor(deviceId: string, port: number);
    private connect;
    listDevices(): Promise<Bluebird<adbkit.Device[]>>;
    private getProperty;
    getAllDeviceProperties(): Promise<Bluebird<adbkit.Properties>>;
    getDeviceProperties(properties: DeviceProperty[]): Promise<any>;
    installApp(appPath: string): Promise<void>;
    uninstallApp(packageName: string): Promise<void>;
    isAppInstalled(packageName: string): Promise<Bluebird<boolean>>;
    /**
     * Applications have life of their own, so we need to get the client to use it in other parts of the code.
     * @returns The adb client
     */
    getClient(): Promise<AdbClient>;
    hasUsbDebugging(): Promise<boolean>;
    /**
     * Creates an isolated ADB client for tracking operations.
     * This client is separate from the main client so connection errors
     * during tracking don't affect other operations.
     */
    private createTrackingClient;
    waitForUsbDebugging(timeout?: number, _numberOfAllowedAttempts?: number): Promise<boolean>;
    startPortForward(serviceName: string): Promise<number | null>;
    getDeviceId(): string;
    getPort(): number;
    getDeviceClient(): Promise<DeviceClient>;
}
export {};
//# sourceMappingURL=adbDeviceKit.d.ts.map