/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

declare module 'vscode' {
    // https://github.com/microsoft/vscode/issues/145234

    export interface TerminalExecutedCommand {
        /**
         * The {@link Terminal} the command was executed in.
         */
        terminal: Terminal;
        /**
         * The full command line that was executed, including both the command and the arguments.
         */
        commandLine: string | undefined;
        /**
         * The current working directory that was reported by the shell. This will be a {@link Uri}
         * if the string reported by the shell can reliably be mapped to the connected machine.
         */
        cwd: Uri | string | undefined;
        /**
         * The exit code reported by the shell.
         */
        exitCode: number | undefined;
        /**
         * The output of the command when it has finished executing. This is the plain text shown in
         * the terminal buffer and does not include raw escape sequences. Depending on the shell
         * setup, this may include the command line as part of the output.
         */
        output: string | undefined;
    }

    export namespace window {
        /**
         * An event that is emitted when a terminal with shell integration activated has completed
         * executing a command.
         *
         * Note that this event will not fire if the executed command exits the shell, listen to
         * {@link onDidCloseTerminal} to handle that case.
         */
        export const onDidExecuteTerminalCommand: Event<TerminalExecutedCommand>;
    }
}
