/// <reference types="node" />
import { TaskConfig } from "../task";
import { Result } from '../result';
import { ExecOptions } from "child_process";
declare type execConfigType = ExecConfigCallback | TaskExecOptions;
interface TaskExecOptions extends ExecOptions {
    output: boolean;
}
interface ExecConfigCallback {
    (cfg: ExecConfig): void;
}
/**
 * Executes shell command and returns a promise.
 *
 * ```js
 * await exec('ls -ll');
 * ```
 * A second parameter can be used to pass in [ExecOptions](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) from "child_process" module:
 *
 * ```js
 * await exec('rails s', { env: { RAILS_ENV: 'production' } })
 * ```
 *
 * To hide output pass in `output: false`:
 *
 * ```js
 * await exec('docker build', { output: false });
 * ```
 *
 */
export default function exec(command: string, config?: execConfigType): Promise<Result>;
export declare class ExecConfig extends TaskConfig {
    TASK: string;
    command: string;
    hasOutput: boolean;
    execOptions: ExecOptions;
    constructor(command: any);
    applyOptions(opts: TaskExecOptions): void;
    prefix(prefix: any): void;
    opt(option: any, value?: string): void;
    env(variable: any, value: any): this;
    arg(arg?: string): this;
    silent(silent?: boolean): this;
}
export {};
//# sourceMappingURL=exec.d.ts.map