import Connection from './connection';
import Parser from './parser';
import WithToString from '../models/WithToString';
import { DeviceClientOptions } from '../models/DeviceClientOptions';
export default abstract class Command<T> {
    connection: Connection;
    readonly options: Partial<DeviceClientOptions>;
    private lastCmd;
    get lastCommand(): string;
    constructor(connection: Connection, options?: Partial<DeviceClientOptions>);
    get parser(): Parser;
    abstract execute(...args: any[]): Promise<T>;
    /**
     * encode message and send it to ADB socket
     * @returns byte write count
     */
    _send(data: string): Promise<number>;
    escape(arg: number | WithToString): number | string;
    escapeCompat(arg: number | WithToString): number | string;
    /**
     * called once per command, only affect shell based command.
     * @returns sent data
     */
    protected sendCommand(data: string): Promise<string>;
    /**
     * most common action: read for Okey
     */
    protected readOKAY(): Promise<void>;
}
//# sourceMappingURL=command.d.ts.map