/**
 * Options for command execution
 */
export interface CommandOptions {
    /** Working directory for command execution */
    cwd?: string;
    /** Environment variables */
    env?: Record<string, string>;
    /** Timeout in milliseconds */
    timeout?: number;
    /** Whether to reject on non-zero exit code (default: true) */
    reject?: boolean;
}
/**
 * Result of command execution
 */
export interface CommandExecutionResult {
    /** Whether the command succeeded (exit code 0) */
    success: boolean;
    /** Standard output */
    stdout: string;
    /** Standard error */
    stderr: string;
    /** Exit code */
    exitCode: number;
    /** Combined output (stdout + stderr) */
    output: string;
    /** Error message if command failed */
    error?: string;
}
/**
 * Execute a shell command with better error handling and cross-platform support
 *
 * @param command - Command to execute
 * @param args - Command arguments
 * @param options - Execution options
 * @returns Promise resolving to command result
 *
 * @example
 * const result = await executeCommand('cdk', ['bootstrap'], { cwd: '/path/to/cdk' });
 * if (result.success) {
 *   console.log('Bootstrap succeeded:', result.stdout);
 * } else {
 *   console.error('Bootstrap failed:', result.error);
 * }
 */
export declare function executeCommand(command: string, args?: string[], options?: CommandOptions): Promise<CommandExecutionResult>;
/**
 * Execute a shell command string (e.g., "npm install")
 * This is a convenience wrapper that splits the command string
 *
 * @param commandString - Full command string (e.g., "cdk bootstrap")
 * @param options - Execution options
 * @returns Promise resolving to command result
 *
 * @example
 * const result = await executeCommandString('cdk bootstrap', { cwd: '/path/to/cdk' });
 */
export declare function executeCommandString(commandString: string, options?: CommandOptions): Promise<CommandExecutionResult>;
/**
 * Check if a command is available in the system PATH
 *
 * @param command - Command to check (e.g., 'cdk', 'npm', 'node')
 * @returns Promise resolving to true if command exists
 *
 * @example
 * const hasCdk = await commandExists('cdk');
 * if (!hasCdk) {
 *   console.error('CDK CLI not found. Please install it first.');
 * }
 */
export declare function commandExists(command: string): Promise<boolean>;
