/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
/// <reference types="node" />
import * as cp from 'child_process';
import { IExternalTerminalMainService, IExternalTerminalSettings, ITerminalForPlatform } from "../common/externalTerminal.mjs";
import { ITerminalEnvironment } from "../../terminal/common/terminal.mjs";
declare abstract class ExternalTerminalService {
    _serviceBrand: undefined;
    getDefaultTerminalForPlatforms(): Promise<ITerminalForPlatform>;
}
export declare class WindowsExternalTerminalService extends ExternalTerminalService implements IExternalTerminalMainService {
    private static readonly CMD;
    private static _DEFAULT_TERMINAL_WINDOWS;
    openTerminal(configuration: IExternalTerminalSettings, cwd?: string): Promise<void>;
    spawnTerminal(spawner: typeof cp, configuration: IExternalTerminalSettings, command: string, cwd?: string): Promise<void>;
    runInTerminal(title: string, dir: string, args: string[], envVars: ITerminalEnvironment, settings: IExternalTerminalSettings): Promise<number | undefined>;
    static getDefaultTerminalWindows(): string;
}
export declare class MacExternalTerminalService extends ExternalTerminalService implements IExternalTerminalMainService {
    private static readonly OSASCRIPT;
    openTerminal(configuration: IExternalTerminalSettings, cwd?: string): Promise<void>;
    runInTerminal(title: string, dir: string, args: string[], envVars: ITerminalEnvironment, settings: IExternalTerminalSettings): Promise<number | undefined>;
    spawnTerminal(spawner: typeof cp, configuration: IExternalTerminalSettings, cwd?: string): Promise<void>;
}
export declare class LinuxExternalTerminalService extends ExternalTerminalService implements IExternalTerminalMainService {
    private static readonly WAIT_MESSAGE;
    openTerminal(configuration: IExternalTerminalSettings, cwd?: string): Promise<void>;
    runInTerminal(title: string, dir: string, args: string[], envVars: ITerminalEnvironment, settings: IExternalTerminalSettings): Promise<number | undefined>;
    private static _DEFAULT_TERMINAL_LINUX_READY;
    static getDefaultTerminalLinuxReady(): Promise<string>;
    spawnTerminal(spawner: typeof cp, configuration: IExternalTerminalSettings, cwd?: string): Promise<void>;
}
export {};
