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

import { MessagePortMain } from 'electron';
import { Event } from '@sussudio/base/common/event.mjs';
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { IProcessEnvironment } from '@sussudio/base/common/platform.mjs';
import { IEnvironmentMainService } from '../../environment/electron-main/environmentMainService.mjs';
import { ILifecycleMainService } from '../../lifecycle/electron-main/lifecycleMainService.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IProtocolMainService } from '../../protocol/electron-main/protocol.mjs';
import { ISharedProcess } from '../node/sharedProcess.mjs';
import { IThemeMainService } from '../../theme/electron-main/themeMainService.mjs';
import { WindowError } from '../../window/electron-main/window.mjs';
import { IUserDataProfilesService } from '../../userDataProfile/common/userDataProfile.mjs';
import { IPolicyService } from '../../policy/common/policy.mjs';
export declare class SharedProcess extends Disposable implements ISharedProcess {
	private readonly machineId;
	private userEnv;
	private readonly environmentMainService;
	private readonly userDataProfilesService;
	private readonly lifecycleMainService;
	private readonly logService;
	private readonly policyService;
	private readonly themeMainService;
	private readonly protocolMainService;
	private readonly firstWindowConnectionBarrier;
	private window;
	private windowCloseListener;
	private readonly _onDidError;
	readonly onDidError: Event<{
		type: WindowError;
		details?:
			| {
					reason: string;
					exitCode: number;
			  }
			| undefined;
	}>;
	constructor(
		machineId: string,
		userEnv: IProcessEnvironment,
		environmentMainService: IEnvironmentMainService,
		userDataProfilesService: IUserDataProfilesService,
		lifecycleMainService: ILifecycleMainService,
		logService: ILogService,
		policyService: IPolicyService,
		themeMainService: IThemeMainService,
		protocolMainService: IProtocolMainService,
	);
	private registerListeners;
	private onWindowConnection;
	private onWorkerConnection;
	private onWillShutdown;
	private send;
	private _whenReady;
	whenReady(): Promise<void>;
	private _whenIpcReady;
	private get whenIpcReady();
	private createWindow;
	private registerWindowListeners;
	connect(): Promise<MessagePortMain>;
	toggle(): Promise<void>;
	isVisible(): boolean;
	private isAlive;
}
