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

import { IProcessEnvironment } from '@sussudio/base/common/platform.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IProductService } from '../../product/common/productService.mjs';
import { IShellLaunchConfig, ITerminalEnvironment, ITerminalProcessOptions } from '../common/terminal.mjs';
export declare function getWindowsBuildNumber(): number;
export declare function findExecutable(
	command: string,
	cwd?: string,
	paths?: string[],
	env?: IProcessEnvironment,
	exists?: (path: string) => Promise<boolean>,
): Promise<string | undefined>;
export interface IShellIntegrationConfigInjection {
	/**
	 * A new set of arguments to use.
	 */
	newArgs: string[] | undefined;
	/**
	 * An optional environment to mixing to the real environment.
	 */
	envMixin?: IProcessEnvironment;
	/**
	 * An optional array of files to copy from `source` to `dest`.
	 */
	filesToCopy?: {
		source: string;
		dest: string;
	}[];
}
/**
 * For a given shell launch config, returns arguments to replace and an optional environment to
 * mixin to the SLC's environment to enable shell integration. This must be run within the context
 * that creates the process to ensure accuracy. Returns undefined if shell integration cannot be
 * enabled.
 */
export declare function getShellIntegrationInjection(
	shellLaunchConfig: IShellLaunchConfig,
	options: Pick<ITerminalProcessOptions, 'shellIntegration' | 'windowsEnableConpty'>,
	env: ITerminalEnvironment | undefined,
	logService: ILogService,
	productService: IProductService,
): IShellIntegrationConfigInjection | undefined;
