///
import * as execa from 'execa';
import { Writable } from 'stream';
export { execa };
export declare function exec(command: string, options?: execa.Options): execa.ExecaChildProcess;
export declare function exec(commands: string[], options?: execa.Options): Promise;
export declare const spawn: execa.ExecaStatic;
export declare class ShellContext {
private _cwdStack;
private _env;
logCommand: boolean;
sleep: (ms: number) => Promise;
redirectLog?: boolean | string | Writable;
readonly cwd: string;
private readonly _logger;
cd(dir: string): this;
pushd(dir: string): this;
popd(): this;
exec(command: string, options?: execa.Options): execa.ExecaChildProcess;
exec(commands: string[], options?: execa.Options): Promise;
spawn(file: string, args?: string[], options?: execa.Options): execa.ExecaChildProcess;
env(key: string): string | undefined;
env(key: string, val: string | undefined): this;
resetEnv(): this;
private _getRedirectLogFile;
private _logCmd;
}
export declare function shell(callback: (ctx: ShellContext) => Promise): Promise;